phoneengine/phonemodel/src/cpemessagehandler.cpp
changeset 21 92ab7f8d0eab
parent 4 c84cf270c54f
child 22 6bb1b21d2484
equal deleted inserted replaced
4:c84cf270c54f 21:92ab7f8d0eab
    48 #include <bldvariant.hrh>
    48 #include <bldvariant.hrh>
    49 #include <ccpdefs.h>
    49 #include <ccpdefs.h>
    50 #include <coreapplicationuisdomainpskeys.h>
    50 #include <coreapplicationuisdomainpskeys.h>
    51 #include <cpeclientinformation.h>
    51 #include <cpeclientinformation.h>
    52 #include <cpegsmaudiodata.h>
    52 #include <cpegsmaudiodata.h>
    53 #include <CPhoneGsmHandlerContainer.h>
    53 #include <cphonegsmhandlercontainer.h>
    54 #include <CPhoneGsmOptionContainerBase.h>
    54 #include <cphonegsmoptioncontainerbase.h>
    55 #include <CPhoneGsmParserBase.h>
    55 #include <cphonegsmparserbase.h>
    56 #include <CPhoneGsmParserResult.h>
    56 #include <cphonegsmparserresult.h>
    57 #include <featmgr.h>
    57 #include <featmgr.h>
    58 #include <mccecall.h>
    58 #include <mccecall.h>
    59 #include <mpeaudiodata.h>
    59 #include <mpeaudiodata.h>
    60 #include <mpecallhandling.h>
    60 #include <mpecallhandling.h>
    61 #include <mpecontacthandling.h>
    61 #include <mpecontacthandling.h>
    62 #include <mpedatastore.h>
    62 #include <mpedatastore.h>
    63 #include <mpeloghandling.h>
    63 #include <mpeloghandling.h>
    64 #include <pathinfo.h>
    64 #include <pathinfo.h>
    65 #include <pepanic.pan>
    65 #include <pepanic.pan>
    66 #include <PhCltTypes.h>
    66 #include <phclttypes.h>
    67 #include <PhoneGsmParser.h>
    67 #include <phonegsmparser.h>
    68 #include <ProfileEngineDomainConstants.h>
    68 #include <ProfileEngineDomainConstants.h>
    69 #include <talogger.h>
    69 #include <talogger.h>
    70 #include <w32std.h>
    70 #include <w32std.h>
    71 
    71 
    72 // EXTERNAL DATA STRUCTURES
    72 // EXTERNAL DATA STRUCTURES
  1374     if ( iCallInfo->iEmergency || aCallId == KPEEmergencyCallId ) 
  1374     if ( iCallInfo->iEmergency || aCallId == KPEEmergencyCallId ) 
  1375         {
  1375         {
  1376         iDataStore.SetRemotePhoneNumberType( EPEEmergencyNumber, aCallId );
  1376         iDataStore.SetRemotePhoneNumberType( EPEEmergencyNumber, aCallId );
  1377         }
  1377         }
  1378     else if( iDataStore.CallDirection( aCallId ) != RMobileCall::EMobileOriginated )
  1378     else if( iDataStore.CallDirection( aCallId ) != RMobileCall::EMobileOriginated )
  1379 		{
  1379         {
  1380 		switch( tempIdentity )
  1380         switch( tempIdentity )
  1381 			{
  1381             {
  1382 			case RMobileCall::ERemoteIdentitySuppressed:
  1382             case RMobileCall::ERemoteIdentitySuppressed:
  1383 				{
  1383                 {
  1384 				// It is neccessary to perform an additional check for available
  1384                 // It is neccessary to perform an additional check for available
  1385 				// remote party phone number to comply with Italian operator
  1385                 // remote party phone number to comply with Italian operator
  1386 				// requirement: "If CLIR is active but network still provides
  1386                 // requirement: "If CLIR is active but network still provides
  1387 				// the device with a phone number, it should not be blocked
  1387                 // the device with a phone number, it should not be blocked
  1388 				// but passed to a client when requested."
  1388                 // but passed to a client when requested."
  1389 				if( iDataStore.RemotePhoneNumber( aCallId ).Length() == 0 )
  1389                 if( iDataStore.RemotePhoneNumber( aCallId ).Length() == 0 )
  1390 					{
  1390                     {
  1391 					HideIdentification( EPEPrivateNumber, aCallId );
  1391                     HideIdentification( EPEPrivateNumber, aCallId );
  1392 					}
  1392                     }
  1393 				else
  1393                 else
  1394 				    {
  1394                     {
  1395 				    // Align remote identity with remote phone number availability.
  1395                     // Align remote identity with remote phone number availability.
  1396 				    iDataStore.SetRemoteIdentity( RMobileCall::ERemoteIdentityAvailable, aCallId );
  1396                     iDataStore.SetRemoteIdentity( RMobileCall::ERemoteIdentityAvailable, aCallId );
  1397 				    }
  1397                     }
  1398 				break;
  1398                 break;
  1399 				}
  1399                 }
  1400 			case RMobileCall::ERemoteIdentityAvailableNoCliRejectedByUser:
  1400             case RMobileCall::ERemoteIdentityAvailableNoCliRejectedByUser:
  1401 				{
  1401                 {
  1402 				HideIdentification( EPEPrivateNumber, aCallId );
  1402                 HideIdentification( EPEPrivateNumber, aCallId );
  1403 				break;
  1403                 break;
  1404 				}
  1404                 }
  1405 			case RMobileCall::ERemoteIdentityUnknown:
  1405             case RMobileCall::ERemoteIdentityUnknown:
  1406 			case RMobileCall::ERemoteIdentityAvailableNoCliInteractionWithOtherService:
  1406             case RMobileCall::ERemoteIdentityAvailableNoCliInteractionWithOtherService:
  1407 			case RMobileCall::ERemoteIdentityUnavailableNoCliInteractionWithOtherService:
  1407             case RMobileCall::ERemoteIdentityUnavailableNoCliInteractionWithOtherService:
  1408 			case RMobileCall::ERemoteIdentityAvailableNoCliCoinOrPayphone:
  1408             case RMobileCall::ERemoteIdentityAvailableNoCliCoinOrPayphone:
  1409 			case RMobileCall::ERemoteIdentityUnavailableNoCliCoinOrPayphone:
  1409             case RMobileCall::ERemoteIdentityUnavailableNoCliCoinOrPayphone:
  1410 			case RMobileCall::ERemoteIdentityAvailableNoCliUnavailable:
  1410             case RMobileCall::ERemoteIdentityAvailableNoCliUnavailable:
  1411 				{
  1411                 {
  1412 				HideIdentification( EPEUnknownNumber, aCallId );
  1412                 HideIdentification( EPEUnknownNumber, aCallId );
  1413 				break;
  1413                 break;
  1414 				}
  1414                 }
  1415 			case RMobileCall::ERemoteIdentityAvailable:
  1415             case RMobileCall::ERemoteIdentityAvailable:
  1416 			default:
  1416             default:
  1417 				{
  1417                 {
  1418 				TEFLOGSTRING( KTAINT,
  1418                 TEFLOGSTRING( KTAINT,
  1419 					"PE CPEMessageHandler::CheckAndHideIdentity, CLI available" );
  1419                     "PE CPEMessageHandler::CheckAndHideIdentity, CLI available" );
  1420 				break;
  1420                 break;
  1421 				}
  1421                 }
  1422 			}
  1422             }
  1423 		}
  1423         }
  1424 	}
  1424     }
  1425     
  1425     
  1426 // -----------------------------------------------------------------------------
  1426 // -----------------------------------------------------------------------------
  1427 // CPEMessageHandler::FindCallInfo
  1427 // CPEMessageHandler::FindCallInfo
  1428 // Return callInfo from Etel/TSY.
  1428 // Return callInfo from Etel/TSY.
  1429 // -----------------------------------------------------------------------------
  1429 // -----------------------------------------------------------------------------
  1513                 &number, aCallId );
  1513                 &number, aCallId );
  1514                                          
  1514                                          
  1515             RemovePreAndPostFix( number );
  1515             RemovePreAndPostFix( number );
  1516   
  1516   
  1517             iDataStore.SetRemotePhoneNumber( number, aCallId );
  1517             iDataStore.SetRemotePhoneNumber( number, aCallId );
  1518             }            
  1518             }
       
  1519         
       
  1520         // The Colp number is stored to remoteparty in connected state.
       
  1521         TPEPhoneNumber colpNumber = iCallInfo->iRemoteParty.iRemoteNumber.iTelNumber;
       
  1522         RemovePreAndPostFix( colpNumber );
       
  1523         iDataStore.SetRemoteColpNumber( colpNumber, aCallId ); 
       
  1524         TEFLOGSTRING3( 
       
  1525             KTAMESINT, 
       
  1526             "PE CPEMessageHandler::SetPhoneNumberForCallLogging, colp number: '%S', call id: %d", 
       
  1527             &colpNumber, aCallId );
  1519         }
  1528         }
  1520     else if ( iDataStore.CallDirection( aCallId ) == RMobileCall::EMobileTerminated )
  1529     else if ( iDataStore.CallDirection( aCallId ) == RMobileCall::EMobileTerminated )
  1521         {
  1530         {
  1522         iDataStore.SetRemotePhoneNumber( iCallInfo->iRemoteParty.iRemoteNumber.iTelNumber, aCallId );
  1531         iDataStore.SetRemotePhoneNumber( iCallInfo->iRemoteParty.iRemoteNumber.iTelNumber, aCallId );
  1523         TEFLOGSTRING2( 
  1532         TEFLOGSTRING2( 
  1721                 }
  1730                 }
  1722              else 
  1731              else 
  1723                 {
  1732                 {
  1724 
  1733 
  1725                 dtmfString = iDataStore.DtmfPostFix( aCallId );
  1734                 dtmfString = iDataStore.DtmfPostFix( aCallId );
  1726 				
  1735                 
  1727                 if ( dtmfString.Length() > 0 )
  1736                 if ( dtmfString.Length() > 0 )
  1728                     {
  1737                     {
  1729                     iDataStore.SetDtmfStringCommand( dtmfString );
  1738                     iDataStore.SetDtmfStringCommand( dtmfString );
  1730                     errorCode = HandleSendDtmf();
  1739                     errorCode = HandleSendDtmf();
  1731                     }
  1740                     }
  1739     
  1748     
  1740     // Reset Phonenumber from engine info, this is necessary so that call number
  1749     // Reset Phonenumber from engine info, this is necessary so that call number
  1741     // logging works OK (see CPEMessageHandler::SetPhoneNumberForCallLogging).  
  1750     // logging works OK (see CPEMessageHandler::SetPhoneNumberForCallLogging).  
  1742     iDataStore.SetPhoneNumber( KNullDesC() );
  1751     iDataStore.SetPhoneNumber( KNullDesC() );
  1743     
  1752     
       
  1753     // COLP number is updated in connected state 
       
  1754     UpdateRemotePartyInfo();
       
  1755    
  1744     return ECCPErrorNone;
  1756     return ECCPErrorNone;
  1745     }
  1757     }
  1746 
  1758 
  1747 // -----------------------------------------------------------------------------
  1759 // -----------------------------------------------------------------------------
  1748 // CPEMessageHandler::HandleDialCall
  1760 // CPEMessageHandler::HandleDialCall
  2888 
  2900 
  2889 // -----------------------------------------------------------------------------
  2901 // -----------------------------------------------------------------------------
  2890 // CPEMessageHandler::HandleRemotePartyInfoChanged
  2902 // CPEMessageHandler::HandleRemotePartyInfoChanged
  2891 // -----------------------------------------------------------------------------
  2903 // -----------------------------------------------------------------------------
  2892 //
  2904 //
  2893 void CPEMessageHandler::HandleRemotePartyInfoChanged( const TInt aCallId )
  2905 void CPEMessageHandler::HandleRemotePartyInfoChanged()
  2894     {        
  2906     {
  2895     UpdateRemotePartyInfo(); 
  2907     UpdateRemotePartyInfo();      
  2896     
       
  2897     if ( iDataStore.RemoteColpNumber( aCallId ).Length() )
       
  2898         {
       
  2899         iModel.SendMessage( MEngineMonitor::EPEMessageColpNumberAvailable );
       
  2900         }
       
  2901     }
  2908     }
  2902 
  2909 
  2903 
  2910 
  2904 // -----------------------------------------------------------------------------
  2911 // -----------------------------------------------------------------------------
  2905 // CPEMessageHandler::HandleUnattendedTransferRequestResponse
  2912 // CPEMessageHandler::HandleUnattendedTransferRequestResponse
  2929     {
  2936     {
  2930     TEFLOGSTRING( KTAINT, "PE CPEMessageHandler::HandleUnattendedTransfer ");
  2937     TEFLOGSTRING( KTAINT, "PE CPEMessageHandler::HandleUnattendedTransfer ");
  2931     TInt errorCode = iCallHandling.DoUnattendedTransfer( 
  2938     TInt errorCode = iCallHandling.DoUnattendedTransfer( 
  2932             iDataStore.TransferTargetCommand() );
  2939             iDataStore.TransferTargetCommand() );
  2933      
  2940      
  2934     iDataStore.SetErrorCode( errorCode );
       
  2935     
       
  2936     return errorCode;
  2941     return errorCode;
  2937     }
  2942     }
  2938 
  2943 
  2939 // -----------------------------------------------------------------------------
  2944 // -----------------------------------------------------------------------------
  2940 // CPEMessageHandler::ForwardCallToAddress
  2945 // CPEMessageHandler::ForwardCallToAddress
  2988     if ( mediatorUpdater ) 
  2993     if ( mediatorUpdater ) 
  2989         {
  2994         {
  2990         mediatorUpdater->UpdateRemotePartyInfo();
  2995         mediatorUpdater->UpdateRemotePartyInfo();
  2991         }
  2996         }
  2992     }
  2997     }
  2993 	
  2998 
       
  2999     // <-- QT PHONE START -->
       
  3000 // -----------------------------------------------------------------------------
       
  3001 // CPEMessageHandler::HandleDialCall
       
  3002 // Handles dial message from dial service
       
  3003 // 
       
  3004 // -----------------------------------------------------------------------------
       
  3005 // 
       
  3006 TInt CPEMessageHandler::HandleDialServiceCall(
       
  3007     const TBool /*aClientCall*/ )
       
  3008     {
       
  3009     TEFLOGSTRING( KTAINT, "PE CPEMessageHandler::HandleDialCall" );
       
  3010     TInt errorCode( ECCPErrorNone );
       
  3011     //TODO 
       
  3012     iModel.HandleInternalMessage( MPEPhoneModel::EPEMessageDialServiceCall );
       
  3013     return errorCode;
       
  3014     }
       
  3015 // <-- QT PHONE END -->
       
  3016 
  2994 //  End of File  
  3017 //  End of File