diff -r 510c70acdbf6 -r 8ccc39f9d787 adaptationlayer/tsy/nokiatsy_dll/src/cmmcallmesshandler.cpp --- a/adaptationlayer/tsy/nokiatsy_dll/src/cmmcallmesshandler.cpp Mon Nov 09 10:36:19 2009 +0000 +++ b/adaptationlayer/tsy/nokiatsy_dll/src/cmmcallmesshandler.cpp Thu Jan 14 10:44:58 2010 +0200 @@ -26,9 +26,9 @@ #include "tsylogger.h" #include "cmmdataporthandler.h" // dataport includes #include "cmmdtmfmesshandler.h" //DTMF includes -#include "osttracedefinitions.h" +#include "OstTraceDefinitions.h" #ifdef OST_TRACE_COMPILER_IN_USE -#include "cmmcallmesshandlertraces.h" +#include "cmmcallmesshandlerTraces.h" #endif // ISI message coding/decoding functions @@ -40,6 +40,8 @@ #include #include #include +#include +#include // EXTERNAL DATA STRUCTURES // None @@ -83,16 +85,16 @@ // Second PEP const TUint8 KSecondPepDevice = PN_DEV_MODEM; // Device Id of second PEP -const TUint8 KSecondPepObject = 54; // PN_OBJ_CSD_SRV // Object Id of second PEP +const TUint8 KSecondPepObject = PN_OBJ_CSD_SRV; // Object Id of second PEP const TUint8 KSecondPepType = PN_PEP_TYPE_GPRS; // Second PEP type -// Redirect PEP -const TUint8 KRedirectPepObject = 59; //PN_OBJ_CSD_WTB; // Object Id of redirected PEP - const TUint8 KPipeTransID = EIscNokiaDataport1; const TUint8 KInvalidPipeHandle = 0xFF; +// From 3GPP TS 31.111, 7.3.1.6 Structure of ENVELOPE (CALL CONTROL) +const TUint8 KCcResultAllowedNoModification = 0x00; +const TUint8 KCcResultNotAllowed = 0x01; // MACROS // None @@ -239,11 +241,10 @@ // Read "HSDPA Disabled" status from product profile InfoPpDataReadReq(); - iSecondPepDeviceId = KSecondPepDevice; - iSecondPepObjectId = KSecondPepObject; - iCallOperationID = CSD_CALL_CREATE; - iVideoCallMtReleased = EFalse; + iVideoCallReleased = EFalse; + iCallControlCallId = CALL_MODEM_ID_NONE; + iCcResult = KCcResultAllowedNoModification; } // ----------------------------------------------------------------------------- @@ -283,8 +284,6 @@ aPhoNetReceiver->RegisterL( callMessHandler, PN_CSD ); aPhoNetReceiver->RegisterL( callMessHandler, PN_PIPE, PNS_PIPE_CREATE_RESP ); - aPhoNetReceiver->RegisterL( callMessHandler, PN_PIPE, PNS_PIPE_ENABLE_RESP ); - aPhoNetReceiver->RegisterL( callMessHandler, PN_PIPE, PNS_PIPE_RESET_RESP ); aPhoNetReceiver->RegisterL( callMessHandler, PN_PIPE, PNS_PIPE_REMOVE_RESP ); callMessHandler->iDtmfMessHandler = aDtmfMessHandler; @@ -486,25 +485,11 @@ PnsPipeCreateResp( aIsiMessage ); break; } - case PNS_PIPE_ENABLE_RESP: - { - PnsPipeEnableResp( aIsiMessage ); - break; - } - case PNS_PIPE_RESET_RESP: - { - PnsPipeResetResp( aIsiMessage ); - break; - } case PNS_PIPE_REMOVE_RESP: { PnsPipeRemoveResp( aIsiMessage ); break; } - case PNS_PIPE_REDIRECT_RESP: - { - PnsPipeRedirectResp( aIsiMessage ); - } default: { TFLOGSTRING("TSY: CMmCallMessHandler::ReceiveMessageL, switch resource - case PN_PIPE, switch messageId - default.\n" ); @@ -545,341 +530,351 @@ TBool requestDirectedToDataPort( EFalse ); TBool callCreatedAlready( EFalse ); - const CCallDataPackage* callData( - reinterpret_cast( aDataPackage ) ); - - // In case of emergency call CMmDataPackage is used and it doesn't contain - // call ID or call mode. CCallDataPackage is used in case of normal call. - if ( EMobileCallDialEmergencyCall != aIpc ) + if ( ESatNotifyCallControlRequest == aIpc ) { - callData->GetCallIdAndMode( callId, callMode ); -TFLOGSTRING2("TSY: CMmCallMessHandler::ExtFuncL. CallMode:%d", callMode ); -OstTrace1( TRACE_NORMAL, DUP1_CMMCALLMESSHANDLER_EXTFUNCL, "CMmCallMessHandler::ExtFuncL;callMode=%d", callMode ); - } - - if ( KSymbianCallIdNone == callId ) - { - dosCallId = CALL_MODEM_ID_NONE; + // simatktsy uses this IPC to inform NTSY about call controlled CALL_ID + // and call control result + aDataPackage->UnPackData ( iCallControlCallId, iCcResult ); } else { - dosCallId = static_cast( callId ); - } - - TIsiSend callReq( iPhoNetSender->SendBufferDes() ); - - // Resource ID - callReq.Set8bit( ISI_HEADER_OFFSET_RESOURCEID, PN_MODEM_CALL ); - - // Transaction ID - callReq.Set8bit( ISI_HEADER_OFFSET_TRANSID, KCallTransId ); - - switch( aIpc ) - { - case EMobileCallDialEmergencyCall: + const CCallDataPackage* callData( + reinterpret_cast( aDataPackage ) ); + + // In case of emergency call CMmDataPackage is used and it doesn't contain + // call ID or call mode. CCallDataPackage is used in case of normal call. + if ( EMobileCallDialEmergencyCall != aIpc ) + { + callData->GetCallIdAndMode( callId, callMode ); +TFLOGSTRING2("TSY: CMmCallMessHandler::ExtFuncL. CallMode:%d", callMode ); +OstTrace1( TRACE_NORMAL, DUP1_CMMCALLMESSHANDLER_EXTFUNCL, "CMmCallMessHandler::ExtFuncL;callMode=%d", callMode ); + } + + if ( KSymbianCallIdNone == callId ) { - aDataPackage->UnPackData( iTelEmergNumber ); + dosCallId = CALL_MODEM_ID_NONE; + } + else + { + dosCallId = static_cast( callId ); + } + + TIsiSend callReq( iPhoNetSender->SendBufferDes() ); + + // Resource ID + callReq.Set8bit( ISI_HEADER_OFFSET_RESOURCEID, PN_MODEM_CALL ); + + // Transaction ID + callReq.Set8bit( ISI_HEADER_OFFSET_TRANSID, KCallTransId ); + + switch( aIpc ) + { + case EMobileCallDialEmergencyCall: + { + aDataPackage->UnPackData( iTelEmergNumber ); TFLOGSTRING2("TSY: CMmCallMessHandler::ExtFuncL - emergency dial number is %S", &iTelEmergNumber); OstTraceExt1( TRACE_NORMAL, DUP4_CMMCALLMESSHANDLER_EXTFUNCL, "CMmCallMessHandler::ExtFuncL - emergency dial number is=%S", iTelEmergNumber ); #ifdef NCP_COMMON_HSDPA_EMERGCALL_WORKAROUND - if ( iHSDPADisabledInPp ) - { - // HSPDA is disabled in PP; no need to delay the emergency - // call setup. + if ( iHSDPADisabledInPp ) + { + // HSPDA is disabled in PP; no need to delay the emergency + // call setup. #endif //NCP_COMMON_HSDPA_EMERGCALL_WORKAROUND - dosCallId = CALL_MODEM_ID_NONE; - // In the case when emergency number checking is needed to be ignored - // the destination address is delivered - EmergencyCallCreateReq( &callReq ); - // Emergency calls are created immediately, without - // setting properties - messageId = CALL_MODEM_CREATE_REQ; - isiCallId = CALL_MODEM_CREATE_REQ_OFFSET_CALLID; + dosCallId = CALL_MODEM_ID_NONE; + // In the case when emergency number checking is needed to be ignored + // the destination address is delivered + EmergencyCallCreateReq( &callReq ); + // Emergency calls are created immediately, without + // setting properties + messageId = CALL_MODEM_CREATE_REQ; + isiCallId = CALL_MODEM_CREATE_REQ_OFFSET_CALLID; #ifdef NCP_COMMON_HSDPA_EMERGCALL_WORKAROUND - } - else - { - // Destroy all data connections before attempting emergency - // call. The call will be set up in GpdsContextsClearResp. + } + else + { + // Destroy all data connections before attempting emergency + // call. The call will be set up in GpdsContextsClearResp. TFLOGSTRING( "TSY: CMmCallMessHandler::ExtFuncL - HSDPA workaround. Emergency call delayed, data connections have to be closed first." ); OstTrace0( TRACE_NORMAL, DUP2_CMMCALLMESSHANDLER_EXTFUNCL, "CMmCallMessHandler::ExtFuncL - HSDPA workaround. Emergency call delayed, data connections have to be closed first." ); - iEmergCallDelayed = ETrue; - GpdsContextsClearReq(); - } + iEmergCallDelayed = ETrue; + GpdsContextsClearReq(); + } #endif //NCP_COMMON_HSDPA_EMERGCALL_WORKAROUND - break; - } - case EEtelCallDial: - case EMobileCallDialISV: - case EMobileCallDialNoFdnCheck: - { - // Set iNoFDNDial flag in correct state - if ( EMobileCallDialNoFdnCheck == aIpc ) - { - iNoFdnDial = ETrue; + break; } - else - { - iNoFdnDial = EFalse; - } - if ( RMobilePhone::ECircuitDataService == callMode ) - { - iFDNErrorAlredyNotified = EFalse; - ret = DialDataCall( callData ); - requestDirectedToDataPort = ETrue; - } - else if ( RMobilePhone::EVoiceService == callMode ) - { - iCallMode = CALL_MODEM_MODE_SPEECH; - } - else + case EEtelCallDial: + case EMobileCallDialISV: + case EMobileCallDialNoFdnCheck: { - iCallMode = CALL_MODEM_MODE_ALS_LINE_2; - } - - if ( ! requestDirectedToDataPort ) - { - iIs3rdPartyDial = EFalse; - - // If 3rd party client - if ( EMobileCallDialISV == aIpc ) + // Set iNoFDNDial flag in correct state + if ( EMobileCallDialNoFdnCheck == aIpc ) + { + iNoFdnDial = ETrue; + } + else + { + iNoFdnDial = EFalse; + } + if ( RMobilePhone::ECircuitDataService == callMode ) { - iIs3rdPartyDial = ETrue; + iFDNErrorAlredyNotified = EFalse; + ret = DialDataCall( callData ); + requestDirectedToDataPort = ETrue; + } + else if ( RMobilePhone::EVoiceService == callMode ) + { + iCallMode = CALL_MODEM_MODE_SPEECH; + } + else + { + iCallMode = CALL_MODEM_MODE_ALS_LINE_2; } - // No else - - // Check if CUG info is needed - RMobileCall::TMobileCallParamsV1Pckg* callParams( NULL ); - RMobileCall::TMobileCallInfoV1* callInfo( NULL ); - - aDataPackage->UnPackData( &callParams, &callInfo ); - - RMobileCall::TMobileCallParamsV1Pckg* paramsPckgV1( - reinterpret_cast - ( callParams ) ); - - RMobileCall::TMobileCallParamsV1 recentCallParams( - ( *paramsPckgV1 )() ); - - if ( RMmCustomAPI::KETelCustomExtCustomCallParamsV3 == - recentCallParams.ExtensionId() ) + + if ( ! requestDirectedToDataPort ) { + iIs3rdPartyDial = EFalse; + + // If 3rd party client + if ( EMobileCallDialISV == aIpc ) + { + iIs3rdPartyDial = ETrue; + } + // No else + + // Check if CUG info is needed + RMobileCall::TMobileCallParamsV1Pckg* callParams( NULL ); + RMobileCall::TMobileCallInfoV1* callInfo( NULL ); + + aDataPackage->UnPackData( &callParams, &callInfo ); + + RMobileCall::TMobileCallParamsV1Pckg* paramsPckgV1( + reinterpret_cast + ( callParams ) ); + + RMobileCall::TMobileCallParamsV1 recentCallParams( + ( *paramsPckgV1 )() ); + + if ( RMmCustomAPI::KETelCustomExtCustomCallParamsV3 == + recentCallParams.ExtensionId() ) + { TFLOGSTRING("TSY: CMmCallMessHandler::ExtFuncL - Custom API call params in use "); OstTrace0( TRACE_NORMAL, DUP7_CMMCALLMESSHANDLER_EXTFUNCL, "CMmCallMessHandler::ExtFuncL - Custom API call params in use" ); - // Unpack custom call parameters - RMmCustomAPI::TCustomCallParamsPckg* customparamsPckgV1( - reinterpret_cast - ( paramsPckgV1 ) ); - - RMmCustomAPI::TCustomCallParams& aCustomParams( - ( *customparamsPckgV1 )() ); - iSubAddress.Copy( aCustomParams.iSubAddress ); - iBearer.Copy( aCustomParams.iBearer ); - } - #if ( NCP_COMMON_S60_VERSION_SUPPORT >= S60_VERSION_50 ) - else if ( RMobileCall::KETelMobileCallParamsV7 == recentCallParams.ExtensionId() ) - { + // Unpack custom call parameters + RMmCustomAPI::TCustomCallParamsPckg* customparamsPckgV1( + reinterpret_cast + ( paramsPckgV1 ) ); + + RMmCustomAPI::TCustomCallParams& aCustomParams( + ( *customparamsPckgV1 )() ); + iSubAddress.Copy( aCustomParams.iSubAddress ); + iBearer.Copy( aCustomParams.iBearer ); + } +#if ( NCP_COMMON_S60_VERSION_SUPPORT >= S60_VERSION_50 ) + else if ( RMobileCall::KETelMobileCallParamsV7 == recentCallParams.ExtensionId() ) + { TFLOGSTRING("TSY: CMmCallMessHandler::ExtFuncL - V7 call params in use "); OstTrace0( TRACE_NORMAL, DUP8_CMMCALLMESSHANDLER_EXTFUNCL, "CMmCallMessHandler::ExtFuncL - V7 call params in use" ); - RMobileCall::TMobileCallParamsV7Pckg* paramsPckgV7( - reinterpret_cast - ( callParams ) ); - - RMobileCall::TMobileCallParamsV7 recentCallParamsV7( - ( *paramsPckgV7 )() ); - - iSubAddress.Copy( recentCallParamsV7.iSubAddress ); - // At the moment only 1 bearer capability is supported in SET UP CALL PCmd - iBearer.Copy( recentCallParamsV7.iBearerCap1 ); - - // Prevent FDN check if call is SIM originated (SET UP CALL) - if ( RMobileCall::EOriginatorSIM == recentCallParamsV7.iCallParamOrigin ) - { - iNoFdnCheck = ETrue; + RMobileCall::TMobileCallParamsV7Pckg* paramsPckgV7( + reinterpret_cast + ( callParams ) ); + + RMobileCall::TMobileCallParamsV7 recentCallParamsV7( + ( *paramsPckgV7 )() ); + + iSubAddress.Copy( recentCallParamsV7.iSubAddress ); + // At the moment only 1 bearer capability is supported in SET UP CALL PCmd + iBearer.Copy( recentCallParamsV7.iBearerCap1 ); + + // Prevent FDN check if call is SIM originated (SET UP CALL) + if ( RMobileCall::EOriginatorSIM == recentCallParamsV7.iCallParamOrigin ) + { + iNoFdnCheck = ETrue; + } + else + { + iNoFdnCheck = EFalse; + } } +#endif else { - iNoFdnCheck = EFalse; + iSubAddress.Zero(); + iBearer.Zero(); } - } - #endif - else - { - iSubAddress.Zero(); - iBearer.Zero(); - } TFLOGSTRING2("TSY: CMmCallMessHandler::ExtFuncL - Cug explicit invoked: %d", recentCallParams.iCug.iExplicitInvoke ); OstTrace1( TRACE_NORMAL, DUP5_CMMCALLMESSHANDLER_EXTFUNCL, "CMmCallMessHandler::ExtFuncL - Cug explicit invoked: %d", recentCallParams.iCug.iExplicitInvoke ); - // if CUG is explicitly invoked by - // the other entries in this structure will be filled in - // function CallPropertySetReq. - if ( recentCallParams.iCug.iExplicitInvoke ) + // if CUG is explicitly invoked by + // the other entries in this structure will be filled in + // function CallPropertySetReq. + if ( recentCallParams.iCug.iExplicitInvoke ) + { + // Non-emergency calls set properties first. CallCreateReq will + // be called after CallPropertySetResp response has come. + messageId = CALL_MODEM_PROPERTY_SET_REQ; + dosCallId = CALL_MODEM_PROP_CUG_INFO; + + CallPropertySetReq( &callReq, callData ); + } + else + { + // RMobileCall::TMobileCallParamsV1Pckg* callParams( NULL ); + // RMobileCall::TMobileCallInfoV1* callInfo( NULL ); + // aDataPackage->UnPackData( &callParams, &callInfo ); + iTelNumber = callInfo->iDialledParty.iTelNumber; +TFLOGSTRING2("TSY: CMmCallMessHandlerExtFuncL - iTelNumber: %S", &iTelNumber); +OstTraceExt1( TRACE_NORMAL, DUP6_CMMCALLMESSHANDLER_EXTFUNCL, "CMmCallMessHandler::ExtFuncL - iTelNumber=%s", iTelNumber ); + iIdRestrict = recentCallParams.iIdRestrict; + + CallCreateReq(); + callCreatedAlready = ETrue; + // Reset information + iSubAddress.Zero(); + iBearer.Zero(); + } + } + // No else + break; + } + case EMobileCallSwap: + { + // Set special call Id + dosCallId = CALL_MODEM_ID_ACTIVE; + messageId = CALL_MODEM_CONTROL_REQ; + isiCallId = CALL_MODEM_CONTROL_REQ_OFFSET_CALLID; + CallControlReq( &callReq, aIpc ); + break; + } + case EMobileCallHold: + case EMobileCallResume: + case EMobileCallGoOneToOne: + case EMobileCallTransfer: + case EMobileCallActivateCCBS: + case EMobilePhoneAcceptCCBSRecall: + { + messageId = CALL_MODEM_CONTROL_REQ; + isiCallId = CALL_MODEM_CONTROL_REQ_OFFSET_CALLID; + CallControlReq( &callReq, aIpc ); + break; + } + case EMobileCallAnswerISV: + case EEtelCallAnswer: + { + if ( RMobilePhone::ECircuitDataService == callMode ) { - // Non-emergency calls set properties first. CallCreateReq will - // be called after CallPropertySetResp response has come. - messageId = CALL_MODEM_PROPERTY_SET_REQ; - dosCallId = CALL_MODEM_PROP_CUG_INFO; - - CallPropertySetReq( &callReq, callData ); + ret = AnswerIncomingDataCall( callData ); + requestDirectedToDataPort = ETrue; } else { -// RMobileCall::TMobileCallParamsV1Pckg* callParams( NULL ); -// RMobileCall::TMobileCallInfoV1* callInfo( NULL ); -// aDataPackage->UnPackData( &callParams, &callInfo ); - iTelNumber = callInfo->iDialledParty.iTelNumber; -TFLOGSTRING2("TSY: CMmCallMessHandlerExtFuncL - iTelNumber: %S", &iTelNumber); -OstTraceExt1( TRACE_NORMAL, DUP6_CMMCALLMESSHANDLER_EXTFUNCL, "CMmCallMessHandler::ExtFuncL - iTelNumber=%s", iTelNumber ); - iIdRestrict = recentCallParams.iIdRestrict; - - CallCreateReq(); - callCreatedAlready = ETrue; - // Reset information - iSubAddress.Zero(); - iBearer.Zero(); + iIs3rdPartyAnswerIncomingCall = EFalse; + + // Is it from a 3rd party client or not + if ( EMobileCallAnswerISV == aIpc ) + { + iIs3rdPartyAnswerIncomingCall = ETrue; + } + // No else + messageId = CALL_MODEM_ANSWER_REQ; + isiCallId = CALL_MODEM_ANSWER_REQ_OFFSET_CALLID; + callReq.Set8bit( + ISI_HEADER_SIZE + CALL_MODEM_ANSWER_REQ_OFFSET_SUBBLOCKS, + KCallPadding ); } + break; } - // No else - break; - } - case EMobileCallSwap: - { - // Set special call Id - dosCallId = CALL_MODEM_ID_ACTIVE; - messageId = CALL_MODEM_CONTROL_REQ; - isiCallId = CALL_MODEM_CONTROL_REQ_OFFSET_CALLID; - CallControlReq( &callReq, aIpc ); - break; - } - case EMobileCallHold: - case EMobileCallResume: - case EMobileCallGoOneToOne: - case EMobileCallTransfer: - case EMobileCallActivateCCBS: - case EMobilePhoneAcceptCCBSRecall: - { - messageId = CALL_MODEM_CONTROL_REQ; - isiCallId = CALL_MODEM_CONTROL_REQ_OFFSET_CALLID; - CallControlReq( &callReq, aIpc ); - break; - } - case EMobileCallAnswerISV: - case EEtelCallAnswer: - { - if ( RMobilePhone::ECircuitDataService == callMode ) + case EEtelCallHangUp: { - ret = AnswerIncomingDataCall( callData ); - requestDirectedToDataPort = ETrue; - } - else - { - iIs3rdPartyAnswerIncomingCall = EFalse; - - // Is it from a 3rd party client or not - if ( EMobileCallAnswerISV == aIpc ) + // Call mode for emergency call is voice + if ( RMobilePhone::EVoiceService == callMode ) + { + iEmergCallDelayed = EFalse; + } + + if ( RMobilePhone::ECircuitDataService == callMode ) { - iIs3rdPartyAnswerIncomingCall = ETrue; + ret = HangUp( callId ); + requestDirectedToDataPort = ETrue; + } + else + { + messageId = CALL_MODEM_RELEASE_REQ; + isiCallId = CALL_MODEM_RELEASE_REQ_OFFSET_CALLID; + CallReleaseReq( &callReq, callData ); } // No else - messageId = CALL_MODEM_ANSWER_REQ; - isiCallId = CALL_MODEM_ANSWER_REQ_OFFSET_CALLID; - callReq.Set8bit( - ISI_HEADER_SIZE + CALL_MODEM_ANSWER_REQ_OFFSET_SUBBLOCKS, - KCallPadding ); + break; + } + case EMobilePhoneClearBlacklist: + { + messageId = CALL_MODEM_BLACKLIST_CLEAR_REQ; + break; } - break; - } - case EEtelCallHangUp: - { - // Call mode for emergency call is voice - if ( RMobilePhone::EVoiceService == callMode ) + // CSD fearures + case EEtelCallLoanDataPort: + { + if ( iDataPortHandler ) + { + ret = iDataPortHandler->LoanDataPort( callData ); + } + else + { + ret = KErrNotReady; + } + requestDirectedToDataPort = ETrue; + break; + } + case EEtelCallRecoverDataPort: { - iEmergCallDelayed = EFalse; - } - - if ( RMobilePhone::ECircuitDataService == callMode ) - { - ret = HangUp( callId ); + if ( iDataPortHandler ) + { + ret = iDataPortHandler->RecoverDataPort( callData ); + } + else + { + ret = KErrNotReady; + } requestDirectedToDataPort = ETrue; + break; } - else + case EMobileCallActivateUUS: + { + ret = ActivateUUS( aDataPackage ); + break; + } + default: { - messageId = CALL_MODEM_RELEASE_REQ; - isiCallId = CALL_MODEM_RELEASE_REQ_OFFSET_CALLID; - CallReleaseReq( &callReq, callData ); +TFLOGSTRING2("TSY: CMmCallMessHandler::ExtFuncL - Unknown IPC: %d", aIpc); +OstTrace1( TRACE_NORMAL, DUP3_CMMCALLMESSHANDLER_EXTFUNCL, "CMmCallMessHandler::ExtFuncL; - Unknown IPC=%d", aIpc ); + ret = KErrNotSupported; + break; + } + } + + if ( ! requestDirectedToDataPort && !callCreatedAlready +#ifdef NCP_COMMON_HSDPA_EMERGCALL_WORKAROUND + && !iEmergCallDelayed +#endif //NCP_COMMON_HSDPA_EMERGCALL_WORKAROUND + ) + { + // Create ISI message + callReq.Set8bit( ISI_HEADER_OFFSET_MESSAGEID, messageId ); + + // Every message definition doesn't contains call ID + if ( 0 != isiCallId ) + { + callReq.Set8bit( ISI_HEADER_SIZE + isiCallId, dosCallId ); } // No else - break; - } - case EMobilePhoneClearBlacklist: - { - messageId = CALL_MODEM_BLACKLIST_CLEAR_REQ; - break; - } - // CSD fearures - case EEtelCallLoanDataPort: - { - if ( iDataPortHandler ) + + if ( KErrNone == ret ) { - ret = iDataPortHandler->LoanDataPort( callData ); - } - else - { - ret = KErrNotReady; - } - requestDirectedToDataPort = ETrue; - break; - } - case EEtelCallRecoverDataPort: - { - if ( iDataPortHandler ) - { - ret = iDataPortHandler->RecoverDataPort( callData ); - } - else - { - ret = KErrNotReady; + // Send message to PhoNet + ret = iPhoNetSender->Send( callReq.Complete() ); } - requestDirectedToDataPort = ETrue; - break; - } - case EMobileCallActivateUUS: - { - ret = ActivateUUS( aDataPackage ); - break; - } - default: - { -TFLOGSTRING2("TSY: CMmCallMessHandler::ExtFuncL - Unknown IPC: %d", aIpc); -OstTrace1( TRACE_NORMAL, DUP3_CMMCALLMESSHANDLER_EXTFUNCL, "CMmCallMessHandler::ExtFuncL; - Unknown IPC=%d", aIpc ); - ret = KErrNotSupported; - break; - } - } - - if ( ! requestDirectedToDataPort && !callCreatedAlready -#ifdef NCP_COMMON_HSDPA_EMERGCALL_WORKAROUND - && !iEmergCallDelayed -#endif //NCP_COMMON_HSDPA_EMERGCALL_WORKAROUND - ) - { - // Create ISI message - callReq.Set8bit( ISI_HEADER_OFFSET_MESSAGEID, messageId ); - - // Every message definition doesn't contains call ID - if ( 0 != isiCallId ) - { - callReq.Set8bit( ISI_HEADER_SIZE + isiCallId, dosCallId ); - } - // No else - - if ( KErrNone == ret ) - { - // Send message to PhoNet - ret = iPhoNetSender->Send( callReq.Complete() ); + // No else } // No else } @@ -1184,12 +1179,6 @@ TUint8 causeValue( aIsiMessage.Get8bit( sbStartOffSet + CALL_MODEM_SB_CAUSE_OFFSET_CAUSE ) ); - // Map error value to Symbian OS error value - mobileCallInfo.iExitCode = CMmStaticUtility::CSCauseToEpocError( - PN_MODEM_CALL, - causeType, - causeValue ); - // To prevent FDN error to be completed again from CallServiceDeniedInd if ( CALL_MODEM_CAUSE_FDN_NOT_OK == causeValue ) { @@ -1202,6 +1191,39 @@ ISI_HEADER_SIZE + CALL_MODEM_CREATE_RESP_OFFSET_CALLID ) & KMaskBits1to3 ); + // Check if the call request has been call controlled + if ( iCallControlCallId == mobileCallInfo.iCallId + && iCcResult != KCcResultAllowedNoModification ) + { + // call controlled requests have always different call id than + // CALL_MODEM_ID_NONE. If the original request is not changed, + // no need for specific error values + if ( KCcResultNotAllowed == iCcResult ) + { + // call control rejected the request + mobileCallInfo.iExitCode = + CMmStaticUtility::EpocErrorCode( KErrGeneral, + KErrGsmCCCallRejected ); + } + else + { + // call control modified the request + mobileCallInfo.iExitCode = + CMmStaticUtility::EpocErrorCode( KErrAccessDenied, + KErrSatControl ); + } + // reset the values + iCallControlCallId = CALL_MODEM_ID_NONE; + iCcResult = KCcResultAllowedNoModification; + } + else + { + // Map error value to Symbian OS error value + mobileCallInfo.iExitCode = CMmStaticUtility::CSCauseToEpocError( + PN_MODEM_CALL, + causeType, + causeValue ); + } // Create call package CCallDataPackage callData; // Pack the data for sending to the manager @@ -3257,9 +3279,10 @@ // Check if Video Call is MT Released. // Pipe have to remove to make next call possible. // Have to wait that Csd videoCall is disconnected. - if ( CALL_MODEM_STATUS_MT_RELEASE == callStatusISA ) + if ( CALL_MODEM_STATUS_MT_RELEASE == callStatusISA || + CALL_MODEM_STATUS_MO_RELEASE == callStatusISA ) { - iVideoCallMtReleased = ETrue; + iVideoCallReleased = ETrue; } // Read call mode @@ -3284,229 +3307,225 @@ if( CALL_MODEM_STATUS_IDLE == callStatusISA && mobileCallInfo.iCallId == iIncomingCallInfo.iCallId ) { -TFLOGSTRING("TSY: CMmCallMessHandler::CallStatusIndL:NOTE! Can't complete to CTSY!, because call is terminated before it is indicated to CTSY"); -OstTrace0( TRACE_NORMAL, DUP19_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL:NOTE! Can't complete to CTSY!, because call is terminated before it is indicated to CTSY" ); // reset temporary call info ResetIncomingCallInfo( iIncomingCallInfo ); } - else - { TFLOGSTRING("TSY: CMmCallMessHandler::CallStatusIndL:Normal completion of call status ind (no termination of calls which haven't been indicated to CTSY yet)"); OstTrace0( TRACE_NORMAL, DUP20_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL:Normal completion of call status ind (no termination of calls which haven't been indicated to CTSY yet)" ); - // Create call package (used for all completions) - CCallDataPackage callData; - // Pack the data for sending to the manager - callData.SetCallIdAndMode( - mobileCallInfo.iCallId, - mobileCallInfo.iService ); - - CheckCallIsaStatus( mobileCallInfo, callStatusISA ); - - // Store UUI data when the call is coming - if ( KErrNone == aIsiMessage.FindSubBlockOffsetById( - ISI_HEADER_SIZE + SIZE_CALL_MODEM_STATUS_IND, - CALL_MODEM_SB_USER_TO_USER, - EIsiSubBlockTypeId8Len8, - sbStartOffSet ) && - ( CALL_MODEM_STATUS_COMING == callStatusISA ) ) - { + // Create call package (used for all completions) + CCallDataPackage callData; + // Pack the data for sending to the manager + callData.SetCallIdAndMode( + mobileCallInfo.iCallId, + mobileCallInfo.iService ); + + CheckCallIsaStatus( mobileCallInfo, callStatusISA ); + + // Store UUI data when the call is coming + if ( KErrNone == aIsiMessage.FindSubBlockOffsetById( + ISI_HEADER_SIZE + SIZE_CALL_MODEM_STATUS_IND, + CALL_MODEM_SB_USER_TO_USER, + EIsiSubBlockTypeId8Len8, + sbStartOffSet ) && + ( CALL_MODEM_STATUS_COMING == callStatusISA ) ) + { TFLOGSTRING("TSY: CMmCallMessHandler::CallStatusIndL: Receive UUI."); OstTrace0( TRACE_NORMAL, DUP3_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL: Receive UUI" ); - // Get data length - TUint8 userToUserDataLen( aIsiMessage.Get8bit( - sbStartOffSet + CALL_MODEM_SB_USER_TO_USER_OFFSET_UTOULEN ) ); - - // Get UUIE data - TPtrC8 data( aIsiMessage.GetData( - sbStartOffSet + CALL_MODEM_SB_USER_TO_USER_OFFSET_UTOU, - userToUserDataLen ) ); - - // Copy UUS data to member variable. Receive UUI will be completed - // after EEtelLineNotifyIncomingCall is completed. - iReceivedUusData.Zero(); - iReceivedUusData.Copy( data.Left( RMobileCall::KMaxUUISize ) ); + // Get data length + TUint8 userToUserDataLen( aIsiMessage.Get8bit( + sbStartOffSet + CALL_MODEM_SB_USER_TO_USER_OFFSET_UTOULEN ) ); + + // Get UUIE data + TPtrC8 data( aIsiMessage.GetData( + sbStartOffSet + CALL_MODEM_SB_USER_TO_USER_OFFSET_UTOU, + userToUserDataLen ) ); + + // Copy UUS data to member variable. Receive UUI will be completed + // after EEtelLineNotifyIncomingCall is completed. + iReceivedUusData.Zero(); + iReceivedUusData.Copy( data.Left( RMobileCall::KMaxUUISize ) ); + } + // No else + + // If status is valid in Symbian OS + if ( RMobileCall::EStatusUnknown != statusETel ) + { + TUint8 causeType( 0 ); + TUint8 causeValue( 0 ); + // Introduce target + TBuf16 targetOrig; + TBuf16 targetOrigName; + + // Copy some data previously received to current MobileCallInfo + if ( mobileCallInfo.iCallId == iIncomingCallInfo.iCallId ) + { + mobileCallInfo.iForwarded = iIncomingCallInfo.iForwarded; + mobileCallInfo.iValid |= RMobileCall::KCallForwarded; + mobileCallInfo.iRemoteParty = iIncomingCallInfo.iRemoteParty; + mobileCallInfo.iValid |= RMobileCall::KCallRemoteParty; } // No else - // If status is valid in Symbian OS - if ( RMobileCall::EStatusUnknown != statusETel ) + // Read gsm redirecting address + if ( KErrNone == aIsiMessage.FindSubBlockOffsetById( + ISI_HEADER_SIZE + SIZE_CALL_MODEM_STATUS_IND, + CALL_MODEM_SB_REDIRECTING_ADDRESS, + EIsiSubBlockTypeId8Len8, + sbStartOffSet ) ) { - TUint8 causeType( 0 ); - TUint8 causeValue( 0 ); - // Introduce target - TBuf16 targetOrig; - TBuf16 targetOrigName; - - // Copy some data previously received to current MobileCallInfo - if ( mobileCallInfo.iCallId == iIncomingCallInfo.iCallId ) +TFLOGSTRING("TSY: CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_REDIRECTING_ADDRESS subblock"); +OstTrace0( TRACE_NORMAL, DUP4_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_REDIRECTING_ADDRESS subblock" ); + + // Get address length + TUint8 redirectingAddressLength( aIsiMessage.Get8bit( + sbStartOffSet + + CALL_MODEM_SB_REDIRECTING_ADDRESS_OFFSET_ADDRLEN ) ); + + // If there is a redirection address, the call has been forwarded + // (but not vice versa; this information can come with another + // indication) + if ( 0 != redirectingAddressLength ) { - mobileCallInfo.iForwarded = iIncomingCallInfo.iForwarded; + mobileCallInfo.iForwarded = ETrue; mobileCallInfo.iValid |= RMobileCall::KCallForwarded; - mobileCallInfo.iRemoteParty = iIncomingCallInfo.iRemoteParty; - mobileCallInfo.iValid |= RMobileCall::KCallRemoteParty; } + // No else + } // No else - // Read gsm redirecting address + // Read CALL_MODEM_SB_LINE_ID + if ( KErrNone == aIsiMessage.FindSubBlockOffsetById( + ISI_HEADER_SIZE + SIZE_CALL_MODEM_STATUS_IND, + CALL_MODEM_SB_LINE_ID, + EIsiSubBlockTypeId8Len8, + sbStartOffSet )) + { +TFLOGSTRING("TSY: CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_LINE_ID subblock"); +OstTrace0( TRACE_NORMAL, DUP21_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_LINE_ID subblock" ); + + origPresentInd = aIsiMessage.Get8bit( + sbStartOffSet + CALL_MODEM_SB_LINE_ID_OFFSET_LINEID ); + } + // Read all destination address + if ( KErrNone == aIsiMessage.FindSubBlockOffsetById( + ISI_HEADER_SIZE + SIZE_CALL_MODEM_STATUS_IND, + CALL_MODEM_SB_DESTINATION_ADDRESS, + EIsiSubBlockTypeId8Len8, + sbStartOffSet ) ) + { +TFLOGSTRING("TSY: CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_DESTINATION_ADDRESS subblock"); +OstTrace0( TRACE_NORMAL, DUP5_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_DESTINATION_ADDRESS subblock" ); + + ReadAllAddressDestination( mobileCallInfo, targetOrig, aIsiMessage, sbStartOffSet, origPresentInd ); + } + // No else + + if ( CALL_MODEM_STATUS_CREATE == callStatusISA ) + { + // Reset orginator address information. Destination address + // contents in CALL_MODEM_STATUS_IND are same as in CALL_MODEM_CREATE_REQ + // when call is in create state. + mobileCallInfo.iRemoteParty.iRemoteNumber.iTelNumber.Zero(); + mobileCallInfo.iValid &= ~RMobileCall::KCallRemoteParty; + } + // No else + + // Read call origin info if ( KErrNone == aIsiMessage.FindSubBlockOffsetById( ISI_HEADER_SIZE + SIZE_CALL_MODEM_STATUS_IND, - CALL_MODEM_SB_REDIRECTING_ADDRESS, + CALL_MODEM_SB_ORIGIN_INFO, EIsiSubBlockTypeId8Len8, sbStartOffSet ) ) { -TFLOGSTRING("TSY: CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_REDIRECTING_ADDRESS subblock"); -OstTrace0( TRACE_NORMAL, DUP4_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_REDIRECTING_ADDRESS subblock" ); - - // Get address length - TUint8 redirectingAddressLength( aIsiMessage.Get8bit( - sbStartOffSet + - CALL_MODEM_SB_REDIRECTING_ADDRESS_OFFSET_ADDRLEN ) ); - - // If there is a redirection address, the call has been forwarded - // (but not vice versa; this information can come with another - // indication) - if ( 0 != redirectingAddressLength ) - { - mobileCallInfo.iForwarded = ETrue; - mobileCallInfo.iValid |= RMobileCall::KCallForwarded; - } - // No else +TFLOGSTRING("TSY: CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_ORIGIN_INFO subblock"); +OstTrace0( TRACE_NORMAL, DUP6_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_ORIGIN_INFO subblock" ); + + ReadCallInfo( + mobileCallInfo, + targetOrigName, + aIsiMessage, + sbStartOffSet ); } // No else - // Read CALL_MODEM_SB_LINE_ID + // Get error value if ( KErrNone == aIsiMessage.FindSubBlockOffsetById( ISI_HEADER_SIZE + SIZE_CALL_MODEM_STATUS_IND, - CALL_MODEM_SB_LINE_ID, - EIsiSubBlockTypeId8Len8, - sbStartOffSet )) - { -TFLOGSTRING("TSY: CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_LINE_ID subblock"); -OstTrace0( TRACE_NORMAL, DUP21_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_LINE_ID subblock" ); - - origPresentInd = aIsiMessage.Get8bit( - sbStartOffSet + CALL_MODEM_SB_LINE_ID_OFFSET_LINEID ); - } - // Read all destination address - if ( KErrNone == aIsiMessage.FindSubBlockOffsetById( - ISI_HEADER_SIZE + SIZE_CALL_MODEM_STATUS_IND, - CALL_MODEM_SB_DESTINATION_ADDRESS, + CALL_MODEM_SB_CAUSE, EIsiSubBlockTypeId8Len8, sbStartOffSet ) ) { -TFLOGSTRING("TSY: CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_DESTINATION_ADDRESS subblock"); -OstTrace0( TRACE_NORMAL, DUP5_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_DESTINATION_ADDRESS subblock" ); - - ReadAllAddressDestination( mobileCallInfo, targetOrig, aIsiMessage, sbStartOffSet, origPresentInd ); +TFLOGSTRING("TSY: CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_CAUSE subblock"); +OstTrace0( TRACE_NORMAL, DUP7_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_CAUSE subblock" ); + + // Get cause type and value + causeType = aIsiMessage.Get8bit( + sbStartOffSet + CALL_MODEM_SB_CAUSE_OFFSET_CAUSETYPE ); + + // Get call cause value + causeValue = aIsiMessage.Get8bit( + sbStartOffSet + CALL_MODEM_SB_CAUSE_OFFSET_CAUSE ); } // No else - if ( CALL_MODEM_STATUS_CREATE == callStatusISA ) + // If iDestPostAddressIncluded flag is (ETrue) we don't handle + // CALL_MODEM_SB_DESTINATION_POST_ADDRESS subblock here + if ( !iDestPostAddressIncluded ) { - // Reset orginator address information. Destination address - // contents in CALL_MODEM_STATUS_IND are same as in CALL_MODEM_CREATE_REQ - // when call is in create state. - mobileCallInfo.iRemoteParty.iRemoteNumber.iTelNumber.Zero(); - mobileCallInfo.iValid &= ~RMobileCall::KCallRemoteParty; - } - // No else - - // Read call origin info + // CALL_MODEM_SB_DESTINATION_POST_ADDRESS + // If Destination post address is found, save it. + // It will be sent later when this call is active if ( KErrNone == aIsiMessage.FindSubBlockOffsetById( ISI_HEADER_SIZE + SIZE_CALL_MODEM_STATUS_IND, - CALL_MODEM_SB_ORIGIN_INFO, + CALL_MODEM_SB_DESTINATION_POST_ADDRESS, EIsiSubBlockTypeId8Len8, sbStartOffSet ) ) { -TFLOGSTRING("TSY: CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_ORIGIN_INFO subblock"); -OstTrace0( TRACE_NORMAL, DUP6_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_ORIGIN_INFO subblock" ); - - ReadCallInfo( - mobileCallInfo, - targetOrigName, - aIsiMessage, - sbStartOffSet ); - } - // No else - - // Get error value - if ( KErrNone == aIsiMessage.FindSubBlockOffsetById( - ISI_HEADER_SIZE + SIZE_CALL_MODEM_STATUS_IND, - CALL_MODEM_SB_CAUSE, - EIsiSubBlockTypeId8Len8, - sbStartOffSet ) ) - { -TFLOGSTRING("TSY: CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_CAUSE subblock"); -OstTrace0( TRACE_NORMAL, DUP7_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_CAUSE subblock" ); - - // Get cause type and value - causeType = aIsiMessage.Get8bit( - sbStartOffSet + CALL_MODEM_SB_CAUSE_OFFSET_CAUSETYPE ); - - // Get call cause value - causeValue = aIsiMessage.Get8bit( - sbStartOffSet + CALL_MODEM_SB_CAUSE_OFFSET_CAUSE ); - } - // No else - - // If iDestPostAddressIncluded flag is (ETrue) we don't handle - // CALL_MODEM_SB_DESTINATION_POST_ADDRESS subblock here - if ( !iDestPostAddressIncluded ) - { - // CALL_MODEM_SB_DESTINATION_POST_ADDRESS - // If Destination post address is found, save it. - // It will be sent later when this call is active - if ( KErrNone == aIsiMessage.FindSubBlockOffsetById( - ISI_HEADER_SIZE + SIZE_CALL_MODEM_STATUS_IND, - CALL_MODEM_SB_DESTINATION_POST_ADDRESS, - EIsiSubBlockTypeId8Len8, - sbStartOffSet ) ) - { TFLOGSTRING("TSY: CMmCallMessHandler::CallStatusIndL:CALL_MODEM_SB_DESTINATION_POST_ADDRESS"); OstTrace0( TRACE_NORMAL, DUP8_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL: CALL_MODEM_SB_DESTINATION_POST_ADDRESS" ); - // Get address length - TUint8 destinationPostAddressLength( aIsiMessage.Get8bit( - sbStartOffSet + CALL_MODEM_SB_DESTINATION_POST_ADDRESS_OFFSET_ADDRLEN ) ); - - // Get address - TPtrC8 postAddr( aIsiMessage.GetData( - sbStartOffSet + CALL_MODEM_SB_DESTINATION_POST_ADDRESS_OFFSET_ADDR, - destinationPostAddressLength * 2 ) ); - - // Do not handle post address which lenght is over 15 chars - if ( ( KDestPostAddressMaxLength * 2 ) >= postAddr.Length() ) - { + // Get address length + TUint8 destinationPostAddressLength( aIsiMessage.Get8bit( + sbStartOffSet + CALL_MODEM_SB_DESTINATION_POST_ADDRESS_OFFSET_ADDRLEN ) ); + + // Get address + TPtrC8 postAddr( aIsiMessage.GetData( + sbStartOffSet + CALL_MODEM_SB_DESTINATION_POST_ADDRESS_OFFSET_ADDR, + destinationPostAddressLength * 2 ) ); + + // Do not handle post address which lenght is over 15 chars + if ( ( KDestPostAddressMaxLength * 2 ) >= postAddr.Length() ) + { TFLOGSTRING("TSY: CMmCallMessHandler::CallStatusIndL:lenght less than 15 char"); OstTrace0( TRACE_NORMAL, DUP9_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL: Lenght less than 15 char" ); - // Copy 8-bit name to the 16-bit target using correct endianess - TIsiUtility::CopyFromBigEndian( - postAddr, - iDestPostAddress ); - - TInt postAddrLength( iDestPostAddress.Length() ); - - // Store call ID to identify SIM ATK call - iDtmfPostAddressCallId = mobileCallInfo.iCallId; - - // Check that there is not "w" char. "w" will mess up internal - // DTMF sending process - for ( TInt i( 0 ); i < postAddrLength; i++ ) + // Copy 8-bit name to the 16-bit target using correct endianess + TIsiUtility::CopyFromBigEndian( + postAddr, + iDestPostAddress ); + + TInt postAddrLength( iDestPostAddress.Length() ); + + // Store call ID to identify SIM ATK call + iDtmfPostAddressCallId = mobileCallInfo.iCallId; + + // Check that there is not "w" char. "w" will mess up internal + // DTMF sending process + for ( TInt i( 0 ); i < postAddrLength; i++ ) + { + if ( 'w' == iDestPostAddress[ i ] ) { - if ( 'w' == iDestPostAddress[ i ] ) - { TFLOGSTRING("TSY: CMmCallMessHandler::CallStatusIndL:w found"); OstTrace0( TRACE_NORMAL, DUP10_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL: w found" ); - iDestPostAddress.SetLength( 0 ); - iDtmfPostAddressCallId = 0; - break; - } + iDestPostAddress.SetLength( 0 ); + iDtmfPostAddressCallId = 0; + break; } } } + } TFLOGSTRING2("TSY: CMmCallMessHandler::CallStatusIndL:callStatusISA: %d", callStatusISA); TFLOGSTRING2("TSY: CMmCallMessHandler::CallStatusIndL:mobileCallInfo.iCallId: %d", mobileCallInfo.iCallId); @@ -3515,38 +3534,38 @@ OstTraceExt1( TRACE_NORMAL, DUP13_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL;mobileCallInfo.iCallId=%hhu", mobileCallInfo.iCallId ); OstTraceExt1( TRACE_NORMAL, DUP12_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL;iDtmfPostAddressCallId=%hhu", iDtmfPostAddressCallId ); - // When call is active, send post address - // DTMF sending in case this is SIMATK call - if ( CALL_MODEM_STATUS_ACTIVE == callStatusISA && - iDtmfPostAddressCallId == mobileCallInfo.iCallId && - 0 < iDtmfPostAddressCallId ) - { + // When call is active, send post address + // DTMF sending in case this is SIMATK call + if ( CALL_MODEM_STATUS_ACTIVE == callStatusISA && + iDtmfPostAddressCallId == mobileCallInfo.iCallId && + 0 < iDtmfPostAddressCallId ) + { TFLOGSTRING("TSY: CMmCallMessHandler::CallStatusIndL:Dtmf post address sending (ACTIVE)"); OstTrace0( TRACE_NORMAL, DUP17_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL, Dtmf post address sending (ACTIVE)" ); - iDtmfMessHandler->SendPostAddressL ( &iDestPostAddress ); - - // Reset iDestPostAddress and iDtmfPostAddressCallId to prevent multiple - // requests - iDestPostAddress.SetLength( 0 ); - iDtmfPostAddressCallId = 0; - } - - // If call fails for some reason, and goes to idle, reset - // iDestPostAddress and iDtmfPostAddressCallId - if ( CALL_MODEM_STATUS_IDLE == callStatusISA && - iDtmfPostAddressCallId == mobileCallInfo.iCallId && - 0 < iDtmfPostAddressCallId ) - { + iDtmfMessHandler->SendPostAddressL ( &iDestPostAddress ); + + // Reset iDestPostAddress and iDtmfPostAddressCallId to prevent multiple + // requests + iDestPostAddress.SetLength( 0 ); + iDtmfPostAddressCallId = 0; + } + + // If call fails for some reason, and goes to idle, reset + // iDestPostAddress and iDtmfPostAddressCallId + if ( CALL_MODEM_STATUS_IDLE == callStatusISA && + iDtmfPostAddressCallId == mobileCallInfo.iCallId && + 0 < iDtmfPostAddressCallId ) + { TFLOGSTRING("TSY: CMmCallMessHandler::CallStatusIndL:If call fails for some reason (IDLE)"); OstTrace0( TRACE_NORMAL, DUP14_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL: If call fails for some reason (IDLE)" ); - iDestPostAddress.SetLength( 0 ); - iDtmfPostAddressCallId = 0; - } + iDestPostAddress.SetLength( 0 ); + iDtmfPostAddressCallId = 0; + } TFLOGSTRING2("TSY: CMmCallMessHandler::CallStatusIndL:iDtmfPostAddressCallId: %d After value",iDtmfPostAddressCallId); OstTraceExt1( TRACE_NORMAL, DUP18_CMMCALLMESSHANDLER_CALLSTATUSINDL, "CMmCallMessHandler::CallStatusIndL;iDtmfPostAddressCallId=%hhu After value", iDtmfPostAddressCallId ); - } - // No else + } + // No else if ( CALL_MODEM_SSD_NO_CUG == ( iDiagnosticOctet & KMaskBits1to7 ) && CALL_MODEM_NW_CAUSE_FACILITY_REJECTED == causeValue ) @@ -3579,14 +3598,15 @@ CompleteIncomingCallNotif( mobileCallInfo, statusETel ); // MT calls which went waiting can alert twice // reset stored incoming call information only after they actually rang - if ( CALL_MODEM_STATUS_MT_ALERTING == callStatusISA ) + // or when MT call is answered + if ( CALL_MODEM_STATUS_MT_ALERTING == callStatusISA || + CALL_MODEM_STATUS_ANSWERED == callStatusISA ) { ResetIncomingCallInfo( iIncomingCallInfo ); } // Update mobile call info to data port handler also - if ( ( CALL_MODEM_MODE_MULTIMEDIA == callModeISA ) && - CALL_MODEM_STATUS_WAITING != callStatusISA ) + if ( CALL_MODEM_MODE_MULTIMEDIA == callModeISA ) { TBool isMultimedia( CALL_MODEM_MODE_MULTIMEDIA == callModeISA ); TBool isWaitingCall( iWaitingCall == mobileCallInfo.iCallId ); @@ -3659,10 +3679,8 @@ iWaitingCall = KSymbianCallIdNone; } // No else - } + } // No else - - }//end of if(incoming call && status == idle) } // ----------------------------------------------------------------------------- @@ -4991,9 +5009,6 @@ { result = CMmStaticUtility::CSCauseToEpocError( PN_CSD, 0x00, causeValue ); - //Remove Pipe for wideo telephony - PnsPipeRemoveReq(); - // set call id and mode if ( iMobileCallInfo.iCallId < 0 ) { @@ -5033,6 +5048,7 @@ break; } case CSD_CALL_RELEASE: + case CSD_CALL_REJECT: { // Complete failed HangUp request iMessageRouter->Complete( @@ -5041,7 +5057,6 @@ result ); break; } - case CSD_CALL_REJECT: default: { TFLOGSTRING("TSY: CMmCallMessHandler::CsdCallControlResp. Switch oper_Id case default."); @@ -5050,14 +5065,6 @@ } } } - else - { - if ( CSD_CALL_RELEASE == oper_Id ) - { - //Remove Pipe for wideo telephony - PnsPipeRemoveReq(); - } - } } // ----------------------------------------------------------------------------- @@ -5098,14 +5105,14 @@ } else { - // MT video call case we have to remove pipe - if ( iVideoCallMtReleased ) + // MO/MT video call released. we have to remove pipe. + if ( iVideoCallReleased ) { -TFLOGSTRING("TSY: CMmCallMessHandler::CsdVideoCallStatusInd: call MT releated"); -OstTrace0( TRACE_NORMAL, DUP4_CMMCALLMESSHANDLER_CSDVIDEOCALLSTATUSIND, "CMmCallMessHandler::CsdVideoCallStatusInd: call MT released" ); +TFLOGSTRING("TSY: CMmCallMessHandler::CsdVideoCallStatusInd: call MO/MT releated"); +OstTrace0( TRACE_NORMAL, DUP4_CMMCALLMESSHANDLER_CSDVIDEOCALLSTATUSIND, "CMmCallMessHandler::CsdVideoCallStatusInd: call MO/MT released" ); //Remove Pipe for wideo telephony PnsPipeRemoveReq(); - iVideoCallMtReleased = EFalse; + iVideoCallReleased = EFalse; } } // CSD_VIDEO_CALL_STATUS_DISCONNECT arrives also when call establishment @@ -5316,6 +5323,18 @@ TFLOGSTRING("TSY: CMmCallMessHandler::DialDataCall. callParams and callInfo ok." ); OstTrace0( TRACE_NORMAL, DUP1_CMMCALLMESSHANDLER_DIALDATACALL, "CMmCallMessHandler::DialDataCall;callParams and callInfo ok." ); + // if CTSY does not set call id as valid we need to copy it from + // data package + if ( 0 == callInfo->iValid & RMobileCall::KCallId ) + { +TFLOGSTRING("TSY: CMmCallMessHandler::DialDataCall. Copy call mode into call info"); +OstTrace0( TRACE_NORMAL, DUP2_CMMCALLMESSHANDLER_DIALDATACALL, "CMmCallMessHandler::DialDataCall. Copy call mode into call info" ); + aDataPackage->GetCallIdAndMode( + callInfo->iCallId, callInfo->iService ); + // service is always valid + callInfo->iValid |= RMobileCall::KCallId; + } + SetMobileCallInfo( *callInfo ); iIdRestrict = recentCallParams.iIdRestrict; @@ -5323,6 +5342,7 @@ // Dial the call iCallOperationID = CSD_CALL_CREATE; + iCallDirection = RMobileCall::EMobileOriginated; // Create Pipe for wideo telephony // If creation succeed, then CsdCallControlReq( CSD_CALL_CREATE ) @@ -5405,7 +5425,15 @@ if ( 0 < aCallId ) { // Hangup the call - ret = CsdCallControlReq( CSD_CALL_RELEASE ); + if( iMobileCallInfo.iCallId == aCallId && + RMobileCall::EStatusRinging == iMobileCallInfo.iStatus ) + { + ret = CsdCallControlReq( CSD_CALL_REJECT ); + } + else + { + ret = CsdCallControlReq( CSD_CALL_RELEASE ); + } } else if ( RMobileCall::EStatusIdle == iMobileCallInfo.iStatus ) { @@ -5422,7 +5450,6 @@ // TInt CMmCallMessHandler::PnsPipeCreateReq( const TUint8 aPipeStateAfter ) const { - TFLOGSTRING("TSY: CMmCallMessHandler::PnsPipeCreateReq" ); OstTrace0( TRACE_NORMAL, CMMCALLMESSHANDLER_PNSPIPECREATEREQ, "CMmCallMessHandler::PnsPipeCreateReq" ); @@ -5439,8 +5466,8 @@ data.Append( EIscNokiaDataport1 ); data.Append( KFirstPepType ); data.Append( KCallPadding ); - data.Append( iSecondPepDeviceId ); - data.Append( iSecondPepObjectId ); + data.Append( KSecondPepDevice ); + data.Append( KSecondPepObject ); data.Append( KSecondPepType ); data.Append( KCallPadding ); @@ -5487,161 +5514,34 @@ // Dial or Answer the call CsdCallControlReq( iCallOperationID ); } - else if ( PN_PIPE_ERR_GENERAL == errorCode ) // Check PIPE Error Code + else { - TUint8 pep1ErrorCode( aIsiMessage.Get8bit( -#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING - ISI_HEADER_SIZE + PNS_PIPE_CREATE_RESP_OFFSET_PEP1ERRORCODE ) ); -#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - ISI_HEADER_SIZE + CM_PIPE_CREATE_RESP_OFFSET_PEP1ERRORCODE ) ); -#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - - TUint8 pep2ErrorCode( aIsiMessage.Get8bit( -#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING - ISI_HEADER_SIZE + PNS_PIPE_CREATE_RESP_OFFSET_PEP2ERRORCODE ) ); -#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - ISI_HEADER_SIZE + CM_PIPE_CREATE_RESP_OFFSET_PEP2ERRORCODE ) ); -#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - - // Check PEP Error Codes - if ( pep1ErrorCode == PN_PIPE_ERR_PEP_IN_USE || - pep1ErrorCode == PN_PIPE_ERR_ALL_PIPES_IN_USE || - pep2ErrorCode == PN_PIPE_ERR_PEP_IN_USE || - pep2ErrorCode == PN_PIPE_ERR_ALL_PIPES_IN_USE ) + CCallDataPackage callData; + // set call id and mode + callData.SetCallIdAndMode( + iMobileCallInfo.iCallId, iMobileCallInfo.iService ); + TInt err = CMmStaticUtility::PacketDataCSCauseToEpocError( + errorCode, PN_PIPE ); + if ( RMobileCall::EMobileTerminated == iCallDirection ) { - // PEP can't create more pipes (all pipes in use), - // error value is updated here -TFLOGSTRING("TSY: CMmCallMessHandler::PnsPipeCreateResp. ErrorCode changed to PN_PIPE_ERR_ALL_PIPES_IN_USE" ); -OstTrace0( TRACE_NORMAL, DUP2_CMMCALLMESSHANDLER_PNSPIPECREATERESP, "CMmCallMessHandler::PnsPipeCreateResp, ErrorCode changed to PN_PIPE_ERR_ALL_PIPES_IN_USE" ); + // answering video call fails + iMessageRouter->Complete( + EEtelCallAnswer, + &callData, + err ); } + else + { + // dialling video call fails + // for MO calls pipe is created before iCallDirection is set + iMessageRouter->Complete( + EEtelCallDial, + &callData, + err ); + } + iCallDirection = RMobileCall::EDirectionUnknown; } - //no else } - //no else - } - -// ---------------------------------------------------------------------------- -// CMmCallMessHandler::PnsPipeEnableReq -// Construct a PNS_PIPE_ENABLE_REQ ISI-message. -// ---------------------------------------------------------------------------- -// -TInt CMmCallMessHandler::PnsPipeEnableReq() const - { - TFLOGSTRING2("TSY: CMmCallMessHandler::PnsPipeEnableReq. PipeHandle: %d", iPipeHandle ); -OstTraceExt1( TRACE_NORMAL, DUP2_CMMCALLMESSHANDLER_PNSPIPEENABLEREQ, "CMmCallMessHandler::PnsPipeEnableReq;pipehandle=%hhu", iPipeHandle ); - - // TODO: this method is not called. See TelAd-110 -#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING - TBuf8 data; -#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - TBuf8 data; -#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - - data.Append( iPipeHandle ); - data.Append( KCallPadding ); - - // Send Isi message via phonet - return iPhoNetSender->Send( - PN_PIPE, KPipeTransID, PNS_PIPE_ENABLE_REQ, data ); - } - -// ---------------------------------------------------------------------------- -// CMmCallMessHandler::PnsPipeEnableResp -// Breaks a PNS_PIPE_ENABLE_RESP ISI-message. -// ---------------------------------------------------------------------------- -// -void CMmCallMessHandler::PnsPipeEnableResp( - const TIsiReceiveC& aIsiMessage ) - { -TFLOGSTRING("TSY: CMmCallMessHandler::PnsPipeEnableResp"); -OstTrace0( TRACE_NORMAL, DUP1_CMMCALLMESSHANDLER_PNSPIPEENABLERESP, "CMmCallMessHandler::PnsPipeEnableResp" ); - // Get Transaction Id from the ISI message - TUint8 transId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_TRANSID ) ); - - // TODO: this code makes no sense. See TelAd-110 - if ( KPipeTransID == transId ) - { - // Get Errorcode from the ISI message - TUint8 errorCode( aIsiMessage.Get8bit( -#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING - ISI_HEADER_SIZE + PNS_PIPE_ENABLE_RESP_OFFSET_ERRORCODE ) ); -#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - ISI_HEADER_SIZE + CM_PIPE_ENABLE_RESP_OFFSET_ERRORCODE ) ); -#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - -TFLOGSTRING4("TSY: CMmCallMessHandler::PnsPipeEnableResp - traId: %d, PipeHandle: %d, ErrorCode: %d", transId, iPipeHandle, errorCode ); -OstTraceExt3( TRACE_NORMAL, CMMCALLMESSHANDLER_PNSPIPEENABLERESP, "CMmCallMessHandler::PnsPipeEnableResp;transId=%hhu;pipeHandle=%hhu;errorCode=%hhu", transId, iPipeHandle, errorCode ); - } - // no else - } - -// ---------------------------------------------------------------------------- -// CMmCallMessHandler::PnsPipeResetReq -// Construct a PNS_PIPE_RESET_REQ ISI-message. -// ---------------------------------------------------------------------------- -// -TInt CMmCallMessHandler::PnsPipeResetReq( - const TUint8 aStateAfterReset ) - { - TFLOGSTRING2("TSY: CMmCallMessHandler::PnsPipeResetReq. PipeHandle: %d", iPipeHandle ); -OstTraceExt1( TRACE_NORMAL, CMMCALLMESSHANDLER_PNSPIPERESETREQ, "CMmCallMessHandler::PnsPipeResetReq;aPipeHandle=%hhu", iPipeHandle ); - - // TODO: this method is not called. See TelAd-110 - // Create buffer for isi msg data -#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING - TBuf8 data; -#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - TBuf8 data; -#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - - data.Append( iPipeHandle ); - data.Append( aStateAfterReset ); - - // Send Isi message via phonet - return iPhoNetSender->Send( - PN_PIPE, KPipeTransID, PNS_PIPE_RESET_REQ, data ); - } - -// ---------------------------------------------------------------------------- -// CMmCallMessHandler::PnsPipeResetResp -// Breaks a PNS_PIPE_RESET_RESP ISI-message. -// ---------------------------------------------------------------------------- -// -void CMmCallMessHandler::PnsPipeResetResp( - const TIsiReceiveC& aIsiMessage ) - { -TFLOGSTRING("TSY: CMmCallMessHandler::PnsPipeResetResp"); -OstTrace0( TRACE_NORMAL, DUP2_CMMCALLMESSHANDLER_PNSPIPERESETRESP, "CMmCallMessHandler::PnsPipeResetResp" ); - // Get Transaction Id from the ISI message - TUint8 transId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_TRANSID ) ); - - // TODO: this code makes no sense. See TelAd-110 - if ( KPipeTransID == transId ) - { - // Get Pipehandle from the ISI message - TUint8 pipeHandle( aIsiMessage.Get8bit( -#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING - ISI_HEADER_SIZE + PNS_PIPE_REDIRECT_RESP_OFFSET_PIPEHANDLE ) ); -#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - ISI_HEADER_SIZE + CM_PIPE_REDIRECT_RESP_OFFSET_PIPEHANDLE ) ); -#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - - iPipeHandle = pipeHandle; - -TFLOGSTRING3("TSY: CMmCallMessHandler::PnsPipeResetResp - traId: %d, pipe handle: %d", transId, pipeHandle); -OstTraceExt2( TRACE_NORMAL, CMMCALLMESSHANDLER_PNSPIPERESETRESP, "CMmCallMessHandler::PnsPipeResetResp;transId=%hhu;pipeHandle=%hhu", transId, pipeHandle ); - - TUint8 errorCode( aIsiMessage.Get8bit( -#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING - ISI_HEADER_SIZE + PNS_PIPE_RESET_RESP_OFFSET_ERRORCODE ) ); -#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - ISI_HEADER_SIZE + CM_PIPE_RESET_RESP_OFFSET_ERRORCODE ) ); -#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - -TFLOGSTRING3("TSY: CMmCallMessHandler::PnsPipeResetResp. PipeHandle: %d ErrorCode: %d", pipeHandle, errorCode ); -OstTraceExt2( TRACE_NORMAL, DUP1_CMMCALLMESSHANDLER_PNSPIPERESETRESP, "CMmCallMessHandler::PnsPipeResetResp;pipeHandle=%hhu;errorCode=%hhu", pipeHandle, errorCode ); - } - // no else } // ---------------------------------------------------------------------------- @@ -5685,7 +5585,6 @@ // Get Transaction Id from the ISI message TUint8 transId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_TRANSID ) ); - // TODO: this code makes no sense. See TelAd-110 if ( KPipeTransID == transId ) { // Get Errorcode from the ISI message @@ -5698,80 +5597,8 @@ TFLOGSTRING4("TSY: CMmCallMessHandler::PnsPipeRemoveResp - traId: %d, PipeHandle: %d, ErrorCode: %d", transId, iPipeHandle, errorCode ); OstTraceExt3( TRACE_NORMAL, CMMCALLMESSHANDLER_PNSPIPEREMOVERESP, "CMmCallMessHandler::PnsPipeRemoveResp;transId=%hhu;pipeHandle=%hhu;errorCode=%hhu", transId, iPipeHandle, errorCode ); - } - // no else - } - -// ---------------------------------------------------------------------------- -// CMmCallMessHandler::PnsPipeRedirectReq -// Construct a PNS_PIPE_REDIRECT_REQ ISI-message. -// ---------------------------------------------------------------------------- -// -TInt CMmCallMessHandler::PnsPipeRedirectReq() - { - TFLOGSTRING2("TSY: CMmCallMessHandler::PnsPipeRedirectReq. PipeHandle: %d", iPipeHandle ); -OstTraceExt1( TRACE_NORMAL, CMMCALLMESSHANDLER_PNSPIPEREDIRECTREQ, "CMmCallMessHandler::PnsPipeRedirectReq;aPipeHandle=%hhu", iPipeHandle ); - - // TODO: this method is not called. See TelAd-110 - // Create buffer for isi msg data -#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING - TBuf8 data; -#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - TBuf8 data; -#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - data.Append( iPipeHandle ); - data.Append( PN_PIPE_ENABLE ); - data.Append( iSecondPepDeviceId ); - data.Append( iSecondPepObjectId ); - data.Append( KSecondPepType ); - data.Append( KCallPadding ); - data.Append( KSecondPepDevice ); - data.Append( KRedirectPepObject ); - data.Append( KSecondPepType ); - - // Send Isi message via phonet - return iPhoNetSender->Send( - PN_PIPE, - KPipeTransID, - PNS_PIPE_REDIRECT_REQ, - data ); - } - -// ---------------------------------------------------------------------------- -// CMmCallMessHandler::PnsPipeRedirectResp -// Breaks a PNS_PIPE_REDIRECT_RESP ISI-message. -// ---------------------------------------------------------------------------- -// -void CMmCallMessHandler::PnsPipeRedirectResp( - const TIsiReceiveC& aIsiMessage ) - { -TFLOGSTRING("TSY: CMmCallMessHandler::PnsPipeRedirectResp"); -OstTrace0( TRACE_NORMAL, DUP1_CMMCALLMESSHANDLER_PNSPIPEREDIRECTRESP, "CMmCallMessHandler::PnsPipeRedirectResp" ); - // Get Transaction Id from the ISI message - TUint8 transId( aIsiMessage.Get8bit( ISI_HEADER_OFFSET_TRANSID ) ); - - if ( KPipeTransID == transId ) - { - // Get Pipehandle from the ISI message - TUint8 pipeHandle( aIsiMessage.Get8bit( -#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING - ISI_HEADER_SIZE + PNS_PIPE_REDIRECT_RESP_OFFSET_PIPEHANDLE ) ); -#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - ISI_HEADER_SIZE + CM_PIPE_REDIRECT_RESP_OFFSET_PIPEHANDLE ) ); -#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - - iPipeHandle = pipeHandle; - - // Get Errorcode from the ISI message - TUint8 errorCode( aIsiMessage.Get8bit( -#ifdef INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING - ISI_HEADER_SIZE + PNS_PIPE_REDIRECT_RESP_OFFSET_ERRORCODE ) ); -#else /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - ISI_HEADER_SIZE + CM_PIPE_REDIRECT_RESP_OFFSET_ERRORCODE ) ); -#endif /* INTERNAL_TESTING_OLD_IMPLEMENTATION_FOR_UICC_TESTING */ - -TFLOGSTRING4("TSY: CMmCallMessHandler::PnsPipeRedirectResp - traId: %d, PipeHandle: %d, ErrorCode: %d", transId, pipeHandle, errorCode ); -OstTraceExt3( TRACE_NORMAL, CMMCALLMESSHANDLER_PNSPIPEREDIRECTRESP, "CMmCallMessHandler::PnsPipeRedirectResp;transId=%hhu;pipeHandle=%hhu;errorCode=%hhu", transId, pipeHandle, errorCode ); + + iPipeHandle = KInvalidPipeHandle; } // no else }