diff -r d7fc66ccd6fb -r e44a8c097b15 satengine/SatServer/Commands/SetUpCallCmd/src/CSetUpCallHandler.cpp --- a/satengine/SatServer/Commands/SetUpCallCmd/src/CSetUpCallHandler.cpp Mon May 03 13:01:45 2010 +0300 +++ b/satengine/SatServer/Commands/SetUpCallCmd/src/CSetUpCallHandler.cpp Fri May 14 16:24:46 2010 +0300 @@ -41,6 +41,20 @@ 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" ); // ======== MEMBER FUNCTIONS ======== @@ -606,70 +620,60 @@ // Performs the request to dial // ----------------------------------------------------------------------------- // -//ETel MM API Usage for SAT Todo -// -//2 RSAT::TSetUpCallV6 iCapabilityConfigParams we only have one TCcp and there -// are two in RMobilePhone::TMobileCallParamsV7 ( according the study of tommi -// the second TCcp in in TMobileCallParamsV7 will be ignored ) -//3 RMobilePhone::TMobileCallParamsV7 has TBCRepeatIndicator iBCRepeatIndicator -// RSat::TSetUpCallV6 don't have it. Does it needed from RSat -//4 RMobilePhone::TMobileCallParamsV7 has TMobileCallMulticallBearerMode -// iBearerMode, RSat::TSetUpCallV6 does not have it. can we just use the -// default value? -//5 SetShowNumber in AIW not provided by ETel MM, support needed? -//6 SetAllowMach in AIW not provided by ETel MM, support needed? -//8 Convert the return value from RMobilePhone::DialNoFdnCheck to the SAT error -// code, the return value is not enough, we need get more information from -// GetLineInfo. - - void CSetUpCallHandler::DoSetupCall( CSetupCallRequestHandler& aHandler ) { LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::DoSetupCallL calling" ) - - RSat::TSetUpCallType callType( iSetUpCallData.iType ); - - TDes& telNumber( iSetUpCallData.iAddress.iTelNumber ); - CheckNumber( telNumber ); - - RMobileCall::TMobileCallParamsV7 dialParams; - RMobileCall::TMobileCallParamsV7Pckg package( dialParams ); + + if( CheckSetupCallParam () ) + { - //Redail has been removed from MCL, no redail support. - dialParams.iAutoRedial = EFalse; - //TODO: check do we need to set bearer model - dialParams.iBearerMode = RMobileCall::EMulticallNewBearer; - dialParams.iCallParamOrigin = RMobileCall::EOriginatorSIM; - dialParams.iSubAddress = iSetUpCallData.iSubAddress; - dialParams.iBearerCap1 = iSetUpCallData.iCapabilityConfigParams; + RSat::TSetUpCallType callType( iSetUpCallData.iType ); - dialParams.iBCRepeatIndicator = RMobileCall::EBCAlternateMode; - - dialParams.iIconId.iQualifier = RMobileCall::ENoIconId; - + TDes& telNumber( iSetUpCallData.iAddress.iTelNumber ); + CheckNumber( telNumber ); + + RMobileCall::TMobileCallParamsV7 dialParams; + RMobileCall::TMobileCallParamsV7Pckg package( dialParams ); - 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 ) ) + //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 end other call" ) - terminateOtherCall = ETrue ; + CompleteSetupCallWithStatus( KErrArgument ); } - aHandler.DialNumber( package, iSetUpCallData.iAddress.iTelNumber, - terminateOtherCall, iUtils->CreateAsyncToSyncHelper() ); - LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::DoSetupCallL exiting" ) } @@ -733,6 +737,7 @@ } case KErrGeneral: + case KErrArgument: { LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CompleteSetupCallWithStatus Data \ @@ -895,7 +900,7 @@ void CSetUpCallHandler::CheckNumber( TDes& aNumber ) const { LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CheckNumber calling" ) - + for ( TInt i = 0; i < aNumber.Length(); i++ ) { // check values @@ -954,4 +959,42 @@ LOG( SIMPLE, "SETUPCALL: CSetUpCallHandler::CreateEmergencyCall exiting" ) } +// ----------------------------------------------------------------------------- +// check setup call param. +// ----------------------------------------------------------------------------- +// +TBool CSetUpCallHandler::CheckSetupCallParam() + { + 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::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 ) + return valid; + } + + // End Of File