satengine/SatServer/Commands/SetUpCallCmd/src/CSetUpCallHandler.cpp
branchRCL_3
changeset 19 7d48bed6ce0c
parent 6 1b9ee3c7442d
child 20 987c9837762f
--- a/satengine/SatServer/Commands/SetUpCallCmd/src/CSetUpCallHandler.cpp	Thu Aug 19 10:28:14 2010 +0300
+++ b/satengine/SatServer/Commands/SetUpCallCmd/src/CSetUpCallHandler.cpp	Tue Aug 31 15:45:17 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2002-2009 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2002-2010 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"
@@ -14,13 +14,9 @@
 * Description:  Handles SetUpCall command
 *
 */
-
-
-#include    <aiwinternaldialdata.h>
-#include    <aiwdialdataext.h>
-
+#include    <e32base.h>
+#include    <etelmm.h>
 #include    <exterror.h>
-#include    <ccpdefs.h>
 
 #include    "MSatApi.h"
 #include    "MSatUtils.h"
@@ -28,6 +24,7 @@
 #include    "MSatUiSession.h"
 #include    "SatSOpcodes.h"
 #include    "MSatSUiClientHandler.h"
+#include    "csetupcallrequesthandler.h"
 #include    "CSetUpCallHandler.h"
 #include    "TSatExtErrorUtils.h"
 #include    "SatLog.h"
@@ -44,10 +41,21 @@
 const TUint8 KWildChar( 0x77 );
 const TUint8 KExpansionChar( 0x2E );
 
+/** Maximum name length. */ 
+const TInt KSatMaximumNameLength = 50;
+
+/** Maximum phone number length same as  used by phone. */ 
+const TInt KSatMaximumPhoneNumberLength = 100;
+
+/** The subaddress length, see ITU-T I.330 and 3GPP TS 11.14. */ 
+const TInt KSatSubAddressLength = 21;
+
+/** The maximum bearer length. The bearer capabilities as 
+defined in GSM 04.08. */ 
+const TInt KSatBearerLength = 14;
+
+
 _LIT( KFixedSimEmergencyNumber, "112" );
-_LIT8( KContentType, "*" );
-// 3GPP TS 24.008
-const TInt KMaximumPhoneNumberLength( 80 );
 
 // ======== MEMBER FUNCTIONS ========
 
@@ -79,18 +87,9 @@
     LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::~CSetUpCallHandler calling" )
 
     Cancel();
-
-    if ( iServiceHandler )
-        {
-        delete iServiceHandler;
-        iServiceHandler = NULL;
-        }
-
-    if ( iEmergencyCallApi )
-        {
-        delete iEmergencyCallApi;
-        iEmergencyCallApi = NULL;
-        }
+    
+    delete iRequestHandler;
+    iRequestHandler = NULL;
 
     LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::~CSetUpCallHandler exiting" )
     }
@@ -145,15 +144,15 @@
     if ( iQueryRsp.iAccepted )
         {
         // User accepted the call, make the call
-        TRAPD( error, DoSetupCallL() );
-
-        if ( KErrNone != error )
+        if( iRequestHandler )
             {
-            LOG2( NORMAL, 
-            "SETUPCALL: CSetUpCallHandler::ClientResponse Dial failed: %i", 
-            error )
-
-            CompleteSetupCall( RSat::KCmdDataNotUnderstood );
+            DoSetupCall( *iRequestHandler );
+            }
+        else
+            {
+            CompleteSetupCall(
+                RSat::KMeUnableToProcessCmd,
+                RSat::KNoSpecificMeProblem );
             }
         }
     else
@@ -188,6 +187,10 @@
     LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::DoCancel calling" )
 
     iUtils->USatAPI().NotifySetUpCallCancel();
+    if( iRequestHandler )
+        {
+        iRequestHandler->Cancel();
+        }
 
     LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::DoCancel exiting" )
     }
@@ -391,15 +394,13 @@
         {
         LOG( SIMPLE, 
         "SETUPCALL: CSetUpCallHandler::HandleCommand iEmergencyCall true" )
-        TRAPD( err, CreateEmergencyCallL() );
-        if ( KErrNone != err )
+        if ( iRequestHandler )
             {
-            LOG2( SIMPLE, 
-            "SETUPCALL: CSetUpCallHandler::HandleCommand DialEmergencyCallL \
-            failed: %d", err )
-
+            CreateEmergencyCall( *iRequestHandler );
+            }
+        else
+            {
             iEmergencyCall = EFalse;
-
             // Set the terminal response info.
             CompleteSetupCall(
                 RSat::KMeUnableToProcessCmd,
@@ -520,122 +521,49 @@
     }
 
 // -----------------------------------------------------------------------------
-// From class MAiwNotifyCallback.
-// Called when dial request is completed.
+// CSetUpCallHandler::SetupCallRequestComplete
+// (other items were commented in a header).
 // -----------------------------------------------------------------------------
 //
-TInt CSetUpCallHandler::HandleNotifyL(
-    const TInt aCmdId,
-    const TInt aEventId,
-    CAiwGenericParamList& aEventParamList,
-    const CAiwGenericParamList& /*aInParamList*/ )
+void CSetUpCallHandler::SetupCallRequestComplete( TInt aErrCode )
     {
-    LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::HandleNotifyL calling" )
-
-    if ( KAiwCmdCall == aCmdId )
-        {
-        LOG2( SIMPLE, 
-        "SETUPCALL: CSetUpCallHandler::HandleNotifyL  event: %d", aEventId )
-        switch ( aEventId )
-            {
-            case KAiwEventError:
-            case KAiwEventCompleted:
-            case EGenericParamError: // This is due CCaUiPlugin behaviour.
-                                     // Also overlaps event KAiwEventStarted.
-                {
-                LOG( SIMPLE, 
-                "SETUPCALL: CSetUpCallHandler::HandleNotifyL SetupCall \
-                Completed" )
-
-                // Fetch completion status.
-                TInt index( 0 );
-                const TAiwGenericParam* param = aEventParamList.FindFirst(
-                    index, EGenericParamError );
-
-                if ( param )
-                    {
-                    LOG( SIMPLE, 
-                    "SETUPCALL: CSetUpCallHandler::HandleNotifyL param true" )
-                    
-                    // Converts error number to symbian-formatted before 
-                    // calling CompleteSetupCallWithStatus.
-                    TInt error = TccpErrorToSymbianError( 
-                        param->Value().AsTInt32() );
-                    CompleteSetupCallWithStatus( error );
-                    }
-                else
-                    {
-                    CompleteSetupCall( RSat::KSuccess );
-                    }
-                }
-                break;
+    LOG( SIMPLE,
+    "SETUPCALL: CSetUpCallHandler::SetupCallRequestComplete calling" )
 
-            case KAiwEventCanceled:
-            case KAiwEventStopped:
-            case KAiwEventQueryExit:
-                {
-                LOG( SIMPLE, 
-                "SETUPCALL: CSetUpCallHandler::HandleNotifyL SetupCall \
-                cancelled" )
-
-                CompleteSetupCallWithStatus( KErrAbort );
-                }
-                break;
-
-            case KAiwEventOutParamCheck:
-            case KAiwEventInParamCheck:
-                {
-                LOG( SIMPLE, 
-                "SETUPCALL: CSetUpCallHandler::HandleNotifyL SetupCall param \
-                fail" )
-
-                CompleteSetupCall( RSat::KCmdDataNotUnderstood );
-                }
-                break;
-
-            default:
-                {
-                LOG( SIMPLE, 
-                "SETUPCALL: CSetUpCallHandler::HandleNotifyL Unknown event \
-                id" )
-                }
-                break;
-
-            }
-        }
-
-    LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::HandleNotifyL exiting" )
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// From class MAiwNotifyCallback.
-// Called when dial request is completed.
-// -----------------------------------------------------------------------------
-//
-void CSetUpCallHandler::HandleEmergencyDialL( const TInt aStatus )
-    {
-    LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::HandleEmergencyDialL calling" )
-
-    iEmergencyCall = EFalse;
-
-    if ( KErrNone == aStatus )
+    LOG2( NORMAL,
+    "SETUPCALL: CSetUpCallHandler::SetupCallRequestComplete aErrCode %d",
+    aErrCode )
+    
+    if( !iEmergencyCall )
         {
-        // Set result
-        CompleteSetupCall( RSat::KSuccess );
+        CompleteSetupCallWithStatus( aErrCode );
         }
     else
         {
-        CompleteSetupCall(
-            RSat::KNetworkUnableToProcessCmd,
-            RSat::KNoSpecificMeProblem );
+        iEmergencyCall = EFalse;
 
-        LOG( SIMPLE, 
-        "SETUPCALL: CSetUpCallHandler::HandleEmergencyDialL Network unable \
-        to process this" )
+        if ( KErrNone == aErrCode )
+            {
+            // Set result
+            CompleteSetupCall( RSat::KSuccess );
+            }
+        else
+            {
+            // The emergency call implementation 
+            // before S60 SAT migration from AIW to EtelMM
+            // According current information, no requirement for this.
+            // We don't return extended network error.
+            CompleteSetupCall(
+                RSat::KNetworkUnableToProcessCmd,
+                RSat::KNoSpecificMeProblem );
+
+            LOG( SIMPLE,
+            "SETUPCALL: CSetUpCallHandler::HandleEmergencyDialL Network unable \
+            to process this" )
+            }
         }
-
-    LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::HandleEmergencyDialL exiting" )
+    LOG2( NORMAL,
+        "SETUPCALL: CSetUpCallHandler::SetupCallRequestComplete exiting %d", aErrCode )
     }
 
 // -----------------------------------------------------------------------------
@@ -669,6 +597,9 @@
     {
     LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::ConstructL calling" )
 
+    
+    iRequestHandler = CSetupCallRequestHandler::NewL( iUtils->MultiModeApi(),
+            this ); 
     // Create request handler. This is same that LaunchBrowser uses, so this
     // is needed also in HandleCommand - function.
     iUtils->RegisterServiceRequestL(
@@ -679,27 +610,6 @@
     iUtils->RegisterL( this, MSatUtils::ECallControlExecuting );
     iUtils->RegisterL( this, MSatUtils::ECallControlDone );
 
-    // Create service handler for normal call setup.
-    iServiceHandler = CAiwServiceHandler::NewL();
-
-    // Create dynamic resource to attach service handler.
-    RCriteriaArray interest;
-    CAiwCriteriaItem* item = CAiwCriteriaItem::NewLC(
-        KAiwCmdCall,
-        KAiwCmdCall,
-        KContentType );
-
-    TUid serviceClassBase;
-    serviceClassBase.iUid = KAiwClassBase;
-    item->SetServiceClass( serviceClassBase );
-
-    interest.AppendL( item );
-
-    // Attach to call service.
-    iServiceHandler->AttachL( interest );
-
-    CleanupStack::PopAndDestroy( item );
-
     LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::ConstructL exiting" )
     }
 
@@ -707,103 +617,60 @@
 // Performs the request to dial
 // -----------------------------------------------------------------------------
 //
-void CSetUpCallHandler::DoSetupCallL()
+void CSetUpCallHandler::DoSetupCall( CSetupCallRequestHandler& aHandler )
     {
     LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::DoSetupCallL calling" )
-
-    RSat::TSetUpCallType callType( iSetUpCallData.iType );
-
-    TDes& telNumber( iSetUpCallData.iAddress.iTelNumber );
-    CheckNumber( telNumber );
-
-    // 80 is max length in SAT calls, AIW max length is 100
-    if ( telNumber.Length() > KMaximumPhoneNumberLength )
+    
+    if( CheckSetupCallParam() )
         {
-        LOG( SIMPLE, 
-        "SETUPCALL: CSetUpCallHandler::DoSetupCallL telNumber too long" )
-        User::Leave( KErrArgument );
-        }
+
+        RSat::TSetUpCallType callType( iSetUpCallData.iType );
+    
+        TDes& telNumber( iSetUpCallData.iAddress.iTelNumber );
+        CheckNumber( telNumber );
 
-    TBuf< AIWDialDataExt::KMaximumNameLength > name;
-    if ( RSat::EAlphaIdProvided ==
-         iSetUpCallData.iAlphaIdCallSetUpPhase.iStatus )
-        {
-        LOG( SIMPLE, 
-        "SETUPCALL: CSetUpCallHandler::DoSetupCallL EAlphaIdProvided" )
-        name = iSetUpCallData.iAlphaIdCallSetUpPhase.iAlphaId;
+        RMobileCall::TMobileCallParamsV7 dialParams;
+        RMobileCall::TMobileCallParamsV7Pckg package( dialParams );
+    
+        //Redail has been removed from MCL, no redail support.
+        dialParams.iAutoRedial = EFalse;
+        dialParams.iBearerMode = RMobileCall::EMulticallNewBearer;
+        dialParams.iCallParamOrigin = RMobileCall::EOriginatorSIM;
+        dialParams.iSubAddress = iSetUpCallData.iSubAddress;
+        dialParams.iBearerCap1 = iSetUpCallData.iCapabilityConfigParams;
+        
+        dialParams.iBCRepeatIndicator = RMobileCall::EBCAlternateMode;
+        
+        dialParams.iIconId.iQualifier = RMobileCall::ENoIconId;
+        
+        
+        dialParams.iAlphaId = iSetUpCallData.iAlphaIdCallSetUpPhase.iAlphaId;
+        LOG2( NORMAL, 
+            "SETUPCALL: CSetUpCallHandler::DoSetupCallL id:%S",
+            &dialParams.iAlphaId )
+        
+        LOG2( NORMAL, 
+            "SETUPCALL: CSetUpCallHandler::DoSetupCallL number:%S",
+            &iSetUpCallData.iAddress.iTelNumber )
+        
+        TBool terminateOtherCall( EFalse );
+        // check if we need to disconnect other calls
+        if ( ( RSat::EDisconnectOtherCalls == callType ) ||
+             ( RSat::EDisconnectOtherCallsWithRedial == callType ) )
+            {
+            LOG( SIMPLE, 
+            "SETUPCALL: CSetUpCallHandler::DoSetupCallL end other call" )
+            terminateOtherCall = ETrue ;
+            }
+        
+        aHandler.DialNumber( package, iSetUpCallData.iAddress.iTelNumber,
+                terminateOtherCall, iUtils->CreateAsyncToSyncHelper() );
         }
     else
         {
-        LOG( SIMPLE, 
-        "SETUPCALL: CSetUpCallHandler::DoSetupCallL set AlphaId" )
-        name = iUtils->SatAppName();
-        }
-
-    // Make the phone call parameters.
-    CAiwInternalDialData* dialData = CAiwInternalDialData::NewLC();
-
-    dialData->SetCallType( CAiwDialData::EAIWVoice );
-    dialData->SetWindowGroup( AIWDialData::KAiwGoToIdle );
-    // coverity static analysis tool generates a false finding here 
-    // eliminating that 
-    // coverity[use_after_free]
-    dialData->SetPhoneNumberL( telNumber );
-    dialData->SetSATCall( ETrue );
-    dialData->SetShowNumber( EFalse );
-    // coverity static analysis tool generates a false finding here 
-    // eliminating that 
-    // coverity[use_after_free]
-    dialData->SetNameL( name );
-    dialData->SetAllowMatch( EFalse );
-    // Remove the redial mechanism from S60 5.x.
-    dialData->SetRedial( AIWDialDataExt::KAIWRedialOff );
-
-    // check if we need to disconnect other calls
-    if ( ( RSat::EDisconnectOtherCalls == callType ) ||
-         ( RSat::EDisconnectOtherCallsWithRedial == callType ) )
-        {
-        LOG( SIMPLE, 
-        "SETUPCALL: CSetUpCallHandler::DoSetupCallL end other call" )
-        dialData->SetEndOtherCalls( ETrue );
+        CompleteSetupCallWithStatus( KErrArgument );
         }
-
-    if ( AIWInternalDialData::KAiwBearerLength >=
-         iSetUpCallData.iCapabilityConfigParams.Length() )
-        {
-        LOG( NORMAL, 
-        "SETUPCALL: CSetUpCallHandler::DoSetupCallL SetBearerL" )
-        // coverity static analysis tool generates a false finding here 
-        // eliminating that
-        // coverity[use_after_free]
-        dialData->SetBearerL( iSetUpCallData.iCapabilityConfigParams );
-        }
-
-    if ( AIWInternalDialData::KAiwSubAddressLength >=
-         iSetUpCallData.iSubAddress.Length() )
-        {
-        LOG( NORMAL, 
-        "SETUPCALL: CSetUpCallHandler::DoSetupCallL SetSubAddressL" )
-        // coverity static analysis tool generates a false finding here 
-        // eliminating that 
-        // coverity[use_after_free]
-        dialData->SetSubAddressL( iSetUpCallData.iSubAddress );
-        }
-
-    CAiwGenericParamList& paramList = iServiceHandler->InParamListL();
-    // coverity static analysis tool generates a false finding here 
-    // eliminating that
-    // coverity[use_after_free]
-    dialData->FillInParamListL( paramList );
-
-    iServiceHandler->ExecuteServiceCmdL(
-        KAiwCmdCall,
-        paramList,
-        iServiceHandler->OutParamListL(),
-        0,
-        this );
-
-    CleanupStack::PopAndDestroy( dialData );
-
+    
     LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::DoSetupCallL exiting" )
     }
 
@@ -867,6 +734,7 @@
                 }
 
             case KErrGeneral:
+            case KErrArgument:
                 {
                 LOG( SIMPLE, 
                 "SETUPCALL: CSetUpCallHandler::CompleteSetupCallWithStatus Data \
@@ -945,6 +813,8 @@
         else if ( ( RSat::ESelfExplanatory == qualifier2 ) ||
                   ( RSat::ENotSelfExplanatory == qualifier2 ) )
             {
+            // Until 2009-10 the phone and NTSY not support the icon.
+            // to be updated after the updating of the phone and NTSY
             result = RSat::KSuccessRequestedIconNotDisplayed;
             LOG( SIMPLE, 
             "SETUPCALL: CSetUpCallHandler::CompleteSetupCallWithStatus Icon \
@@ -966,7 +836,6 @@
                 result = RSat::KSuccessRequestedIconNotDisplayed;
                 }
             }
-
         // Set result
         CompleteSetupCall( result );
         }
@@ -1028,7 +897,7 @@
 void CSetUpCallHandler::CheckNumber( TDes& aNumber ) const
     {
     LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CheckNumber calling" )
-
+    
     for ( TInt i = 0; i < aNumber.Length(); i++ )
         {
         // check values
@@ -1067,6 +936,7 @@
             aNumber[i] = KExpansionChar;
             }
         }
+    
     LOG2( SIMPLE, 
     "SETUPCALL: CSetUpCallHandler::CheckNumber length of aNumber: %d",
      aNumber.Length() )
@@ -1074,297 +944,54 @@
     }
 
 // -----------------------------------------------------------------------------
-// Converts a TCCP error to the corresponding symbian error.
+// Create emergency call
 // -----------------------------------------------------------------------------
 //
-TInt CSetUpCallHandler::TccpErrorToSymbianError( const TInt aTccpError ) const
+void CSetUpCallHandler::CreateEmergencyCall( 
+        CSetupCallRequestHandler& aHandler )
     {
-    LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::TccpErrorToSymbianError \
-        calling" )
-    
-    // Error to be returned after mapped from aTccpError;
-    // Initialized with default value KErrAccessDenied.
-    TInt retValue( KErrAccessDenied );
+    LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CreateEmergencyCall calling" )
+   
+    aHandler.DialEmergencyCall( iSetUpCallData.iAddress.iTelNumber );
     
-    // Convert TCCP Error to Symbian Error in the switch braces.
-    switch ( aTccpError )
-        {
-        case ECCPErrorNone:
-        case ECCPErrorNotFound:
-        case ECCPErrorGeneral:
-        case ECCPErrorCancel:
-        case ECCPErrorNoMemory:
-        case ECCPErrorNotSupported:
-        case ECCPErrorAlreadyInUse:
-        case ECCPErrorNotReady:
-            {
-            retValue = aTccpError;
-            break;
-            }
-            
-        case ECCPErrorCCCallRejected:
-            {
-            retValue = KErrGsmCCCallRejected;
-            break;
-            }
-            
-        case ECCPRequestFailure:
-            {
-            retValue = KErrGsmMMCongestion;
-            break;
-            }
-            
-        case ECCPErrorCCBearerCapabilityNotAuthorised:
-        case ECCPErrorBadRequest:
-            {
-            retValue = KErrGsmCCBearerCapabilityNotAuthorised;
-            break;
-            }
-            
-        case ECCPErrorAccessDenied:
-            {
-            retValue = KErrAccessDenied;
-            break;
-            }
-        
-         //The following are KErrGsmCallControlBase group.
-        case ECCPErrorNotReached:
-            {
-            retValue = KErrGsmCCUnassignedNumber;
-            break;
-            }
-            
-        case ECCPErrorBusy:
-            {
-            retValue = KErrGsmCCUserBusy;
-            break;
-            }
-            
-        case ECCPErrorMovedPermanently:
-            {
-            retValue = KErrGsmCCNumberChanged;
-            break;
-            }
-            
-        case ECCPErrorInvalidURI:
-            {
-            retValue = KErrGsmCCInvalidNumberFormat;
-            break;
-            }
-            
-        case ECCPErrorNetworkOutOfOrder:
-            {
-            retValue = KErrGsmCCNetworkOutOfOrder;
-            break;
-            }
-            
-        case ECCPErrorCCNoRouteToDestination:
-            {
-            retValue = KErrGsmCCNoRouteToDestination;
-            break;
-            }
-
-        case ECCPErrorCCDestinationOutOfOrder:
-            {
-            retValue = KErrGsmCCDestinationOutOfOrder;
-            break;
-            }
-            
-        case ECCPErrorCCResourceNotAvailable:
-            {
-            retValue = KErrGsmCCResourceNotAvailable;
-            break;
-            }
-            
-
-        case ECCPErrorCCInvalidTransitNetworkSelection:
-            {
-            retValue = KErrGsmCCInvalidTransitNetworkSelection;
-            break;
-            }
-            
-        case ECCPErrorCCIncompatibleDestination:
-            {
-            retValue = KErrGsmCCIncompatibleDestination;
-            break;
-            }
-            
-        case ECCPErrorCCIncompatibleMessageInCallState:
-            {
-            retValue = KErrGsmCCIncompatibleMessageInCallState;
-            break;
-            }
-
-        case ECCPErrorCCIncompatibleMessageInProtocolState:
-            {
-            retValue = KErrGsmCCIncompatibleMessageInProtocolState;
-            break;
-            }
-            
-        case ECCPErrorCCNormalCallClearing:
-            {
-            retValue = KErrGsmCCNormalCallClearing;
-            break;
-            }
-            
-        case ECCPErrorCCUserAlertingNoAnswer:
-            {
-            retValue = KErrGsmCCUserAlertingNoAnswer;
-            break;
-            }
-
-        case ECCPErrorCCUserNotResponding:
-            {
-            retValue = KErrGsmCCUserNotResponding;
-            break;
-            }
-
-        case ECCPErrorCCPreemption:
-            {
-            retValue = KErrGsmCCPreemption;
-            break;
-            }
-            
-        case ECCPErrorCCFacilityRejected:
-            {
-            retValue = KErrGsmCCFacilityRejected;
-            break;
-            }
-
-        case ECCPErrorCCResponseToStatusEnquiry:
-            {
-            retValue = KErrGsmCCResponseToStatusEnquiry;
-            break;
-            }
-            
-        case ECCPErrorCCInvalidMandatoryInformation:
-            {
-            retValue = KErrGsmCCInvalidMandatoryInformation;
-            break;
-            }
-            
-        case ECCPErrorCCNonExistentMessageType:
-            {
-            retValue = KErrGsmCCNonExistentMessageType;
-            break;
-            }
-
-        case ECCPErrorCCNonExistentInformationElement:
-            {
-            retValue = KErrGsmCCNonExistentInformationElement;
-            break;
-            }
-
-        case ECCPErrorCCNoChannelAvailable:
-            {
-            retValue = KErrGsmCCNoChannelAvailable;
-            break;
-            }
-
-        case ECCPErrorCCRequestedFacilityNotSubscribed:
-            {
-            retValue = KErrGsmCCRequestedFacilityNotSubscribed;
-            break;
-            }
-
-        case ECCPErrorCCIncomingCallsBarredInCug:
-            {
-            retValue = KErrGsmCCIncomingCallsBarredInCug;
-            break;
-            }
-            
-        case ECCPErrorUserNotInCug:
-            {
-            retValue = KErrGsmCCUserNotInCug;
-            break;
-            }
-            
-        case ECCPErrorCCRecoveryOnTimerExpiry:
-            {
-            retValue = KErrGsmCCRecoveryOnTimerExpiry;
-            break;
-            }
-
-        case ECCPErrorCCBearerCapabilityNotCurrentlyAvailable:
-            {
-            retValue = KErrGsmCCBearerCapabilityNotCurrentlyAvailable;
-            break;
-            }
-
-        case ECCPErrorCCServiceNotAvailable:
-            {
-            retValue = KErrGsmCCServiceNotAvailable;
-            break;
-            }
-
-        case ECCPErrorCCBearerServiceNotImplemented:
-            {
-            retValue = KErrGsmCCBearerServiceNotImplemented;
-            break;
-            }
-
-        case ECCPErrorCCOnlyRestrictedDigitalInformationBCAvailable:
-            {
-            retValue = KErrGsmCCOnlyRestrictedDigitalInformationBCAvailable;
-            break;
-            }
-            
-        case ECCPErrorCCServiceNotImplemented:
-            {
-            retValue = KErrGsmCCServiceNotImplemented;
-            break;
-            }
-            
-        case ECCPErrorCCUnspecifiedInterworkingError:
-            {
-            retValue = KErrGsmCCUnspecifiedInterworkingError;
-            break;
-            }
-            
-        case ECCPErrorSatControl:
-            {
-            retValue = KErrSatControl;
-            break;
-            }
-                
-        default:
-            {
-            retValue = KErrAccessDenied;
-            break;
-            }
-        }
-        
-    LOG2( SIMPLE, 
-        "SETUPCALL: CSetUpCallHandler::TccpErrorToSymbianError TCCP error:%d",
-         aTccpError)
-    LOG2( SIMPLE, 
-        "SETUPCALL: CSetUpCallHandler::TccpErrorToSymbianError \
-        mapped Symbian Error:%d", retValue)
-    LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::TccpErrorToSymbianError \
-        exiting" )
-    
-    return retValue;
+    LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CreateEmergencyCall exiting" )    
     }
 
 // -----------------------------------------------------------------------------
-// Create emergency call
+// check setup call param.
 // -----------------------------------------------------------------------------
 //
-void CSetUpCallHandler::CreateEmergencyCallL()
+TBool CSetUpCallHandler::CheckSetupCallParam()
     {
-    LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CreateEmergencyCallL calling" )
-    
-    if( !iEmergencyCallApi )
+    LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CheckSetupCallParam calling" )
+
+    TBool valid( ETrue );
+    if ( iSetUpCallData.iAddress.iTelNumber.Length()
+          > KSatMaximumPhoneNumberLength )
+        {
+        LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CheckSetupCallParam num" )
+        valid = EFalse;
+        }    
+    else if ( iSetUpCallData.iAlphaIdCallSetUpPhase.iAlphaId.Length()
+               > KSatMaximumNameLength )
         {
-        // Create service handler for emergency call setup..
-        LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CreateEmergencyCallL\
-         create emergency call handler" )
-        iEmergencyCallApi = CPhCltEmergencyCall::NewL( this );
-        }
+        LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CheckSetupCallParam name" )
+        valid = EFalse;
+        }    
+    else if ( iSetUpCallData.iSubAddress.Length() > KSatSubAddressLength )
+        {
+        LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CheckSetupCallParam sub" )
+        valid = EFalse;
+        }    
+    else if ( iSetUpCallData.iCapabilityConfigParams.Length()
+               > KSatBearerLength )
+        {
+        LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CheckSetupCallParam bear" )
+        valid = EFalse;
+        }    
+    LOG2( SIMPLE, 
+    "SETUPCALL: CSetUpCallHandler::CheckSetupCallParam exiting %d", valid )
     
-    iEmergencyCallApi->DialEmergencyCallL( 
-        iSetUpCallData.iAddress.iTelNumber );
-    LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CreateEmergencyCallL exiting" )    
+    return valid;        
     }
-
 // End Of File