--- a/satengine/SatServer/Commands/SetUpCallCmd/src/CSetUpCallHandler.cpp Tue Aug 31 15:45:17 2010 +0300
+++ b/satengine/SatServer/Commands/SetUpCallCmd/src/CSetUpCallHandler.cpp Wed Sep 01 12:15:03 2010 +0100
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2002-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"
@@ -14,9 +14,13 @@
* Description: Handles SetUpCall command
*
*/
-#include <e32base.h>
-#include <etelmm.h>
+
+
+#include <aiwinternaldialdata.h>
+#include <aiwdialdataext.h>
+
#include <exterror.h>
+#include <ccpdefs.h>
#include "MSatApi.h"
#include "MSatUtils.h"
@@ -24,7 +28,6 @@
#include "MSatUiSession.h"
#include "SatSOpcodes.h"
#include "MSatSUiClientHandler.h"
-#include "csetupcallrequesthandler.h"
#include "CSetUpCallHandler.h"
#include "TSatExtErrorUtils.h"
#include "SatLog.h"
@@ -41,21 +44,10 @@
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 ========
@@ -87,9 +79,18 @@
LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::~CSetUpCallHandler calling" )
Cancel();
-
- delete iRequestHandler;
- iRequestHandler = NULL;
+
+ if ( iServiceHandler )
+ {
+ delete iServiceHandler;
+ iServiceHandler = NULL;
+ }
+
+ if ( iEmergencyCallApi )
+ {
+ delete iEmergencyCallApi;
+ iEmergencyCallApi = NULL;
+ }
LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::~CSetUpCallHandler exiting" )
}
@@ -144,15 +145,15 @@
if ( iQueryRsp.iAccepted )
{
// User accepted the call, make the call
- if( iRequestHandler )
+ TRAPD( error, DoSetupCallL() );
+
+ if ( KErrNone != error )
{
- DoSetupCall( *iRequestHandler );
- }
- else
- {
- CompleteSetupCall(
- RSat::KMeUnableToProcessCmd,
- RSat::KNoSpecificMeProblem );
+ LOG2( NORMAL,
+ "SETUPCALL: CSetUpCallHandler::ClientResponse Dial failed: %i",
+ error )
+
+ CompleteSetupCall( RSat::KCmdDataNotUnderstood );
}
}
else
@@ -187,10 +188,6 @@
LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::DoCancel calling" )
iUtils->USatAPI().NotifySetUpCallCancel();
- if( iRequestHandler )
- {
- iRequestHandler->Cancel();
- }
LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::DoCancel exiting" )
}
@@ -394,13 +391,15 @@
{
LOG( SIMPLE,
"SETUPCALL: CSetUpCallHandler::HandleCommand iEmergencyCall true" )
- if ( iRequestHandler )
+ TRAPD( err, CreateEmergencyCallL() );
+ if ( KErrNone != err )
{
- CreateEmergencyCall( *iRequestHandler );
- }
- else
- {
+ LOG2( SIMPLE,
+ "SETUPCALL: CSetUpCallHandler::HandleCommand DialEmergencyCallL \
+ failed: %d", err )
+
iEmergencyCall = EFalse;
+
// Set the terminal response info.
CompleteSetupCall(
RSat::KMeUnableToProcessCmd,
@@ -521,49 +520,122 @@
}
// -----------------------------------------------------------------------------
-// CSetUpCallHandler::SetupCallRequestComplete
-// (other items were commented in a header).
+// From class MAiwNotifyCallback.
+// Called when dial request is completed.
// -----------------------------------------------------------------------------
//
-void CSetUpCallHandler::SetupCallRequestComplete( TInt aErrCode )
+TInt CSetUpCallHandler::HandleNotifyL(
+ const TInt aCmdId,
+ const TInt aEventId,
+ CAiwGenericParamList& aEventParamList,
+ const CAiwGenericParamList& /*aInParamList*/ )
{
- LOG( SIMPLE,
- "SETUPCALL: CSetUpCallHandler::SetupCallRequestComplete calling" )
+ 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;
- LOG2( NORMAL,
- "SETUPCALL: CSetUpCallHandler::SetupCallRequestComplete aErrCode %d",
- aErrCode )
-
- if( !iEmergencyCall )
+ 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 )
{
- CompleteSetupCallWithStatus( aErrCode );
+ // Set result
+ CompleteSetupCall( RSat::KSuccess );
}
else
{
- iEmergencyCall = EFalse;
+ CompleteSetupCall(
+ RSat::KNetworkUnableToProcessCmd,
+ RSat::KNoSpecificMeProblem );
- 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 Network unable \
- to process this" )
- }
- }
- LOG2( NORMAL,
- "SETUPCALL: CSetUpCallHandler::SetupCallRequestComplete exiting %d", aErrCode )
+ LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::HandleEmergencyDialL exiting" )
}
// -----------------------------------------------------------------------------
@@ -597,9 +669,6 @@
{
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(
@@ -610,6 +679,27 @@
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" )
}
@@ -617,60 +707,103 @@
// Performs the request to dial
// -----------------------------------------------------------------------------
//
-void CSetUpCallHandler::DoSetupCall( CSetupCallRequestHandler& aHandler )
+void CSetUpCallHandler::DoSetupCallL()
{
LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::DoSetupCallL calling" )
-
- if( CheckSetupCallParam() )
- {
+
+ RSat::TSetUpCallType callType( iSetUpCallData.iType );
- RSat::TSetUpCallType callType( iSetUpCallData.iType );
-
- TDes& telNumber( iSetUpCallData.iAddress.iTelNumber );
- CheckNumber( telNumber );
+ TDes& telNumber( iSetUpCallData.iAddress.iTelNumber );
+ CheckNumber( telNumber );
- 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() );
+ // 80 is max length in SAT calls, AIW max length is 100
+ if ( telNumber.Length() > KMaximumPhoneNumberLength )
+ {
+ LOG( SIMPLE,
+ "SETUPCALL: CSetUpCallHandler::DoSetupCallL telNumber too long" )
+ User::Leave( KErrArgument );
+ }
+
+ TBuf< AIWDialDataExt::KMaximumNameLength > name;
+ if ( RSat::EAlphaIdProvided ==
+ iSetUpCallData.iAlphaIdCallSetUpPhase.iStatus )
+ {
+ LOG( SIMPLE,
+ "SETUPCALL: CSetUpCallHandler::DoSetupCallL EAlphaIdProvided" )
+ name = iSetUpCallData.iAlphaIdCallSetUpPhase.iAlphaId;
}
else
{
- CompleteSetupCallWithStatus( KErrArgument );
+ 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 );
}
-
+
+ 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" )
}
@@ -734,7 +867,6 @@
}
case KErrGeneral:
- case KErrArgument:
{
LOG( SIMPLE,
"SETUPCALL: CSetUpCallHandler::CompleteSetupCallWithStatus Data \
@@ -813,8 +945,6 @@
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 \
@@ -836,6 +966,7 @@
result = RSat::KSuccessRequestedIconNotDisplayed;
}
}
+
// Set result
CompleteSetupCall( result );
}
@@ -897,7 +1028,7 @@
void CSetUpCallHandler::CheckNumber( TDes& aNumber ) const
{
LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CheckNumber calling" )
-
+
for ( TInt i = 0; i < aNumber.Length(); i++ )
{
// check values
@@ -936,7 +1067,6 @@
aNumber[i] = KExpansionChar;
}
}
-
LOG2( SIMPLE,
"SETUPCALL: CSetUpCallHandler::CheckNumber length of aNumber: %d",
aNumber.Length() )
@@ -944,54 +1074,297 @@
}
// -----------------------------------------------------------------------------
-// Create emergency call
+// Converts a TCCP error to the corresponding symbian error.
// -----------------------------------------------------------------------------
//
-void CSetUpCallHandler::CreateEmergencyCall(
- CSetupCallRequestHandler& aHandler )
+TInt CSetUpCallHandler::TccpErrorToSymbianError( const TInt aTccpError ) const
{
- LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CreateEmergencyCall calling" )
-
- aHandler.DialEmergencyCall( iSetUpCallData.iAddress.iTelNumber );
+ 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 exiting" )
+ // 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;
}
// -----------------------------------------------------------------------------
-// check setup call param.
+// Create emergency call
// -----------------------------------------------------------------------------
//
-TBool CSetUpCallHandler::CheckSetupCallParam()
+void CSetUpCallHandler::CreateEmergencyCallL()
{
- 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 )
+ LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CreateEmergencyCallL calling" )
+
+ if( !iEmergencyCallApi )
{
- 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 )
+ // Create service handler for emergency call setup..
+ LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CreateEmergencyCallL\
+ create emergency call handler" )
+ iEmergencyCallApi = CPhCltEmergencyCall::NewL( this );
+ }
- return valid;
+ iEmergencyCallApi->DialEmergencyCallL(
+ iSetUpCallData.iAddress.iTelNumber );
+ LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CreateEmergencyCallL exiting" )
}
+
// End Of File