18 |
18 |
19 |
19 |
20 // INCLUDE FILES |
20 // INCLUDE FILES |
21 #include "cpeactivestarter.h" |
21 #include "cpeactivestarter.h" |
22 #include "cpeexternaldatahandler.h" |
22 #include "cpeexternaldatahandler.h" |
|
23 #include "cpeidlestatusmonitor.h" |
23 #include "cpemessagehandler.h" |
24 #include "cpemessagehandler.h" |
24 #include "cpephonemodel.h" |
25 #include "cpephonemodel.h" |
25 #include "cpeservicehandling.h" |
26 #include "cpeservicehandling.h" |
26 #include "cpesimstatemonitor.h" |
27 #include "cpesimstatemonitor.h" |
27 #include "pepanic.pan" |
28 #include "pepanic.pan" |
36 #include <cpeloghandlingproxy.h> |
37 #include <cpeloghandlingproxy.h> |
37 #include <featmgr.h> |
38 #include <featmgr.h> |
38 #include <mccedtmfinterface.h> |
39 #include <mccedtmfinterface.h> |
39 #include <mpecontacthandling.h> |
40 #include <mpecontacthandling.h> |
40 #include <mpeloghandling.h> |
41 #include <mpeloghandling.h> |
41 #include <xqservicerequest.h> |
|
42 #include <xqappmgr.h> |
|
43 #include "phoneservices.h" |
|
44 |
42 |
45 // CONSTANTS |
43 // CONSTANTS |
46 const TInt KDriveProfile ( 6 ); |
44 const TInt KDriveProfile ( 6 ); |
47 const TInt KPECallTimerOff = 0; |
45 const TInt KPECallTimerOff = 0; |
48 const TInt KTimesToSplitValue = 16; |
|
49 |
46 |
50 // ==================== LOCAL FUNCTIONS ==================== |
47 // ==================== LOCAL FUNCTIONS ==================== |
51 |
48 |
52 // ================= MEMBER FUNCTIONS ======================= |
49 // ================= MEMBER FUNCTIONS ======================= |
53 |
50 |
97 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 4" ); |
94 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 4" ); |
98 iActiveStarter = CPEActiveStarter::NewL( this ); |
95 iActiveStarter = CPEActiveStarter::NewL( this ); |
99 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 5" ); |
96 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 5" ); |
100 iActiveStarter->StartUp(); |
97 iActiveStarter->StartUp(); |
101 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 6" ); |
98 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::ConstructL: 6" ); |
102 // Reserve needed callinfo and remoteinfo from heap. |
|
103 iCallInfo = new ( ELeave ) RMobileCall::TMobileCallInfoV3; |
|
104 }// ConstructL |
99 }// ConstructL |
105 |
100 |
106 // ----------------------------------------------------------------------------- |
101 // ----------------------------------------------------------------------------- |
107 // CPEPhoneModel::NewL |
102 // CPEPhoneModel::NewL |
108 // Two-phased constructor. |
103 // Two-phased constructor. |
148 delete iLogHandling; |
143 delete iLogHandling; |
149 delete iAudioData; |
144 delete iAudioData; |
150 delete iCallHandling; |
145 delete iCallHandling; |
151 delete iExternalDataHandler; |
146 delete iExternalDataHandler; |
152 delete iCallStackCutter; |
147 delete iCallStackCutter; |
153 delete iCallInfo; |
|
154 |
148 |
155 if ( iActiveStarter ) |
149 if ( iActiveStarter ) |
156 { |
150 { |
157 delete iActiveStarter; |
151 delete iActiveStarter; |
158 } |
152 } |
159 |
153 |
160 FeatureManager::UnInitializeLib(); |
154 FeatureManager::UnInitializeLib(); |
161 iFsSession.Close(); |
155 iFsSession.Close(); |
162 delete iEngineInfo; |
156 delete iEngineInfo; |
163 delete iConvergedCallEngine; |
157 delete iConvergedCallEngine; |
164 delete iPhoneServices; |
158 if ( iIdleStatusMonitor ) |
|
159 { |
|
160 delete iIdleStatusMonitor; |
|
161 } |
165 }// ~CPEPhoneModel |
162 }// ~CPEPhoneModel |
166 |
163 |
167 // ----------------------------------------------------------------------------- |
164 // ----------------------------------------------------------------------------- |
168 // CPEPhoneModel::EngineInfo |
165 // CPEPhoneModel::EngineInfo |
169 // Returns the pointer of the CPEEngineInfo object. |
166 // Returns the pointer of the CPEEngineInfo object. |
230 return MESSAGE("EPEMessageAnswer"); |
227 return MESSAGE("EPEMessageAnswer"); |
231 case MPEPhoneModel::EPEMessageClientDial: |
228 case MPEPhoneModel::EPEMessageClientDial: |
232 return MESSAGE("EPEMessageClientDial"); |
229 return MESSAGE("EPEMessageClientDial"); |
233 case MPEPhoneModel::EPEMessageClientDialEmergency: |
230 case MPEPhoneModel::EPEMessageClientDialEmergency: |
234 return MESSAGE("EPEMessageClientDialEmergency"); |
231 return MESSAGE("EPEMessageClientDialEmergency"); |
235 case MPEPhoneModel::EPEMessageDialServiceCall: |
|
236 return MESSAGE("EPEMessageDialServiceCall"); |
|
237 case MPEPhoneModel::EPEMessageContinueEmergencyCallInitialization: |
232 case MPEPhoneModel::EPEMessageContinueEmergencyCallInitialization: |
238 return MESSAGE("EPEMessageContinueEmergencyCallInitialization"); |
233 return MESSAGE("EPEMessageContinueEmergencyCallInitialization"); |
239 case MPEPhoneModel::EPEMessageContinueDTMFSending: |
234 case MPEPhoneModel::EPEMessageContinueDTMFSending: |
240 return MESSAGE("EPEMessageContinueDTMFSending"); |
235 return MESSAGE("EPEMessageContinueDTMFSending"); |
241 case MPEPhoneModel::EPEMessageDial: |
236 case MPEPhoneModel::EPEMessageDial: |
431 return MESSAGE("EPEMessageIncoming"); |
426 return MESSAGE("EPEMessageIncoming"); |
432 case MEngineMonitor::EPEMessageInitiatedEmergencyCall: |
427 case MEngineMonitor::EPEMessageInitiatedEmergencyCall: |
433 return MESSAGE("EPEMessageInitiatedEmergencyCall"); |
428 return MESSAGE("EPEMessageInitiatedEmergencyCall"); |
434 case MEngineMonitor::EPEMessageInitiatedEmergencyWhileActiveVideo: |
429 case MEngineMonitor::EPEMessageInitiatedEmergencyWhileActiveVideo: |
435 return MESSAGE("EPEMessageInitiatedEmergencyWhileActiveVideo"); |
430 return MESSAGE("EPEMessageInitiatedEmergencyWhileActiveVideo"); |
|
431 case MEngineMonitor::EPEMessageInitiatedMoCall: |
|
432 return MESSAGE("EPEMessageInitiatedMoCall"); |
436 case MEngineMonitor::EPEMessagePacketNetworkDetached: |
433 case MEngineMonitor::EPEMessagePacketNetworkDetached: |
437 return MESSAGE("EPEMessagePacketNetworkDetached"); |
434 return MESSAGE("EPEMessagePacketNetworkDetached"); |
438 case MEngineMonitor::EPEMessageRemoteBusy: |
435 case MEngineMonitor::EPEMessageRemoteBusy: |
439 return MESSAGE("EPEMessageRemoteBusy"); |
436 return MESSAGE("EPEMessageRemoteBusy"); |
440 case MEngineMonitor::EPEMessageSendingDTMF: |
437 case MEngineMonitor::EPEMessageSendingDTMF: |
457 return MESSAGE("EPEMessageContinuingDTMFSending"); |
454 return MESSAGE("EPEMessageContinuingDTMFSending"); |
458 case MEngineMonitor::EPEMessageCallAdded: |
455 case MEngineMonitor::EPEMessageCallAdded: |
459 return MESSAGE("EPEMessageCallAdded"); |
456 return MESSAGE("EPEMessageCallAdded"); |
460 case MEngineMonitor::EPEMessageRemoteTerminated: |
457 case MEngineMonitor::EPEMessageRemoteTerminated: |
461 return MESSAGE("EPEMessageRemoteTerminated"); |
458 return MESSAGE("EPEMessageRemoteTerminated"); |
|
459 case MEngineMonitor::EPEMessageShowIMEI: |
|
460 return MESSAGE("EPEMessageShowIMEI"); |
462 case MEngineMonitor::EPEMessageUnknown: |
461 case MEngineMonitor::EPEMessageUnknown: |
463 return MESSAGE("EPEMessageUnknown"); |
462 return MESSAGE("EPEMessageUnknown"); |
|
463 case MEngineMonitor::EPEMessagePromptSpeedDial: |
|
464 return MESSAGE("EPEMessagePromptSpeedDial"); |
|
465 case MEngineMonitor::EPEMessageSpeedDialNotAssigned: |
|
466 return MESSAGE("EPEMessageSpeedDialNotAssigned"); |
|
467 case MEngineMonitor::EPEMessageInvalidSpeedDial: |
|
468 return MESSAGE("EPEMessageInvalidSpeedDial"); |
464 case MEngineMonitor::EPEMessageDataPortLoaned: |
469 case MEngineMonitor::EPEMessageDataPortLoaned: |
465 return MESSAGE("EPEMessageDataPortLoaned"); |
470 return MESSAGE("EPEMessageDataPortLoaned"); |
466 |
471 |
467 case MEngineMonitor::EPEMessageUnattendedTransferRequest: |
472 case MEngineMonitor::EPEMessageUnattendedTransferRequest: |
468 return MESSAGE("EPEMessageUnattendedTransferRequest"); |
473 return MESSAGE("EPEMessageUnattendedTransferRequest"); |
473 case MEngineMonitor::EPEMessageMultipleChoices: |
478 case MEngineMonitor::EPEMessageMultipleChoices: |
474 return MESSAGE("EPEMessageMultipleChoices"); |
479 return MESSAGE("EPEMessageMultipleChoices"); |
475 case MEngineMonitor::EPEMessageRemotePartyInfoChanged: |
480 case MEngineMonitor::EPEMessageRemotePartyInfoChanged: |
476 return MESSAGE("EPEMessageRemotePartyInfoChanged"); |
481 return MESSAGE("EPEMessageRemotePartyInfoChanged"); |
477 case MEngineMonitor::EPEMessageConnectingWithInband: |
482 case MEngineMonitor::EPEMessageConnectingWithInband: |
478 return MESSAGE("EPEMessageConnectingWithInband"); |
483 return MESSAGE("EPEMessageConnectingWithInband"); |
479 |
484 case MEngineMonitor::EPEMessageColpNumberAvailable: |
|
485 return MESSAGE("EPEMessageColpNumberAvailable"); |
|
486 case MEngineMonitor::EPEMessageTransferCallBackRequest: |
|
487 return MESSAGE("EPEMessageTransferCallBackRequest"); |
|
488 |
480 // Contact messages 3000 - 3999 |
489 // Contact messages 3000 - 3999 |
481 case MEngineMonitor::EPEMessageThumbnailLoadingCompleted: |
490 case MEngineMonitor::EPEMessageThumbnailLoadingCompleted: |
482 return MESSAGE("EPEMessageThumbnailLoadingCompleted"); |
491 return MESSAGE("EPEMessageThumbnailLoadingCompleted"); |
483 |
492 |
484 // Error messages 4000 - 4999 |
493 // Error messages 4000 - 4999 |
550 // Miscellaneous messages 10000 - 10999 |
559 // Miscellaneous messages 10000 - 10999 |
551 case MEngineMonitor::EPEMessageInValidEmergencyNumber: |
560 case MEngineMonitor::EPEMessageInValidEmergencyNumber: |
552 return MESSAGE("EPEMessageInValidEmergencyNumber"); |
561 return MESSAGE("EPEMessageInValidEmergencyNumber"); |
553 case MEngineMonitor::EPEMessageValidEmergencyNumber: |
562 case MEngineMonitor::EPEMessageValidEmergencyNumber: |
554 return MESSAGE("EPEMessageValidEmergencyNumber"); |
563 return MESSAGE("EPEMessageValidEmergencyNumber"); |
|
564 case MEngineMonitor::EPEMessagePhoneIdentityReady: |
|
565 return MESSAGE("EPEMessagePhoneIdentityReady"); |
555 case MEngineMonitor::EPEMessageStartATDialing: |
566 case MEngineMonitor::EPEMessageStartATDialing: |
556 return MESSAGE("EPEMessageStartATDialing"); |
567 return MESSAGE("EPEMessageStartATDialing"); |
557 case MEngineMonitor::EPEMessageLogEventSaved: |
568 case MEngineMonitor::EPEMessageLogEventSaved: |
558 return MESSAGE("EPEMessageLogEventSaved"); |
569 return MESSAGE("EPEMessageLogEventSaved"); |
559 case MEngineMonitor::EPEMessageDoNotSendMe: |
570 case MEngineMonitor::EPEMessageDoNotSendMe: |
573 case MEngineMonitor::EPEMessageALSLineChanged: |
584 case MEngineMonitor::EPEMessageALSLineChanged: |
574 return MESSAGE("EPEMessageALSLineChanged"); |
585 return MESSAGE("EPEMessageALSLineChanged"); |
575 case MEngineMonitor::EPEMessageCallBarred: |
586 case MEngineMonitor::EPEMessageCallBarred: |
576 return MESSAGE("EPEMessageCallBarred"); |
587 return MESSAGE("EPEMessageCallBarred"); |
577 case MEngineMonitor::EPEMessageIncCallIsForw: |
588 case MEngineMonitor::EPEMessageIncCallIsForw: |
578 return MESSAGE("EPEMessageIncCallIsForw"); |
589 return MESSAGE("EPEMessageIncCallIsForw"); |
579 case MEngineMonitor::EPEMessageIncCallForwToC: |
590 case MEngineMonitor::EPEMessageIncCallForwToC: |
580 return MESSAGE("EPEMessageIncCallForwToC"); |
591 return MESSAGE("EPEMessageIncCallForwToC"); |
581 case MEngineMonitor::EPEMessageOutCallForwToC: |
592 case MEngineMonitor::EPEMessageOutCallForwToC: |
582 return MESSAGE("EPEMessageOutCallForwToC"); |
593 return MESSAGE("EPEMessageOutCallForwToC"); |
583 case MEngineMonitor::EPEMessageForwardUnconditionalModeActive: |
594 case MEngineMonitor::EPEMessageForwardUnconditionalModeActive: |
584 return MESSAGE( "EPEMessageForwardUnconditionalModeActive" ); |
595 return MESSAGE( "EPEMessageForwardUnconditionalModeActive" ); |
585 case MEngineMonitor::EPEMessageForwardConditionallyModeActive: |
596 case MEngineMonitor::EPEMessageForwardConditionallyModeActive: |
586 return MESSAGE( "EPEMessageForwardConditionallyModeActive" ); |
597 return MESSAGE( "EPEMessageForwardConditionallyModeActive" ); |
587 case MEngineMonitor::EPEMessageDroppedConferenceMember: |
598 case MEngineMonitor::EPEMessageDroppedConferenceMember: |
588 return MESSAGE("EPEMessageDroppedConferenceMember"); |
599 return MESSAGE("EPEMessageDroppedConferenceMember"); |
589 case MEngineMonitor::EPEMessageGoingOneToOne: |
600 case MEngineMonitor::EPEMessageGoingOneToOne: |
590 return MESSAGE("EPEMessageGoingOneToOne"); |
601 return MESSAGE("EPEMessageGoingOneToOne"); |
591 case MEngineMonitor::EPEMessageIssuedUSSDRequest: |
602 case MEngineMonitor::EPEMessageIssuedUSSDRequest: |
594 return MESSAGE("EPEMessageRemoteCreatedConference"); |
605 return MESSAGE("EPEMessageRemoteCreatedConference"); |
595 case MEngineMonitor::EPEMessageRemoteHeld: |
606 case MEngineMonitor::EPEMessageRemoteHeld: |
596 return MESSAGE("EPEMessageRemoteHeld"); |
607 return MESSAGE("EPEMessageRemoteHeld"); |
597 case MEngineMonitor::EPEMessageRemoteResumed: |
608 case MEngineMonitor::EPEMessageRemoteResumed: |
598 return MESSAGE("EPEMessageRemoteResumed"); |
609 return MESSAGE("EPEMessageRemoteResumed"); |
|
610 case MEngineMonitor::EPEMessageShowVersion: |
|
611 return MESSAGE("EPEMessageShowVersion"); |
599 case MEngineMonitor::EPEMessageTempClirSuppressUnsuccessful: |
612 case MEngineMonitor::EPEMessageTempClirSuppressUnsuccessful: |
600 return MESSAGE("EPEMessageTempClirSuppressUnsuccessful"); |
613 return MESSAGE("EPEMessageTempClirSuppressUnsuccessful"); |
601 case MEngineMonitor::EPEMessageTempClirActivationUnsuccessful: |
614 case MEngineMonitor::EPEMessageTempClirActivationUnsuccessful: |
602 return MESSAGE("EPEMessageTempClirActivationUnsuccessful"); |
615 return MESSAGE("EPEMessageTempClirActivationUnsuccessful"); |
603 case MEngineMonitor::EPEMessageOutgoingCallBarred: |
616 |
604 return MESSAGE("EPEMessageOutgoingCallBarred"); |
|
605 |
|
606 // Contact messages 11400 - 11599 |
617 // Contact messages 11400 - 11599 |
607 |
618 |
608 // Error messages 11600 - 11799 |
619 // Error messages 11600 - 11799 |
609 |
620 |
610 // Network messages 11800 - 12999 |
621 // Network messages 11800 - 12999 |
620 // Parser messages 12000 - 12199 |
631 // Parser messages 12000 - 12199 |
621 case MEngineMonitor::EPEMessageActivateRfsDeep: |
632 case MEngineMonitor::EPEMessageActivateRfsDeep: |
622 return MESSAGE("EPEMessageActivateRfsDeep"); |
633 return MESSAGE("EPEMessageActivateRfsDeep"); |
623 case MEngineMonitor::EPEMessageActivateRfsNormal: |
634 case MEngineMonitor::EPEMessageActivateRfsNormal: |
624 return MESSAGE("EPEMessageActivateRfsNormal"); |
635 return MESSAGE("EPEMessageActivateRfsNormal"); |
|
636 case MEngineMonitor::EPEMessageActivateWarrantyMode: |
|
637 return MESSAGE("EPEMessageActivateWarrantyMode"); |
625 case MEngineMonitor::EPEMessageIssuedSSRequest: |
638 case MEngineMonitor::EPEMessageIssuedSSRequest: |
626 return MESSAGE("EPEMessageIssuedSSRequest"); |
639 return MESSAGE("EPEMessageIssuedSSRequest"); |
627 case MEngineMonitor::EPEMessageIssuingSSRequest: |
640 case MEngineMonitor::EPEMessageIssuingSSRequest: |
628 return MESSAGE("EPEMessageIssuingSSRequest"); |
641 return MESSAGE("EPEMessageIssuingSSRequest"); |
629 |
642 |
700 { |
713 { |
701 case MPEPhoneModel::EPEMessageTerminateAllConnections: |
714 case MPEPhoneModel::EPEMessageTerminateAllConnections: |
702 errorCode = iMessageHandler->HandleTerminateAllConnections( ); |
715 errorCode = iMessageHandler->HandleTerminateAllConnections( ); |
703 break; |
716 break; |
704 case MPEPhoneModel::EPEMessageDial: |
717 case MPEPhoneModel::EPEMessageDial: |
705 //Make a dial request |
718 //Make a dial request |
706 errorCode = iMessageHandler->HandleDialCall( EFalse ); |
719 errorCode = iMessageHandler->HandleDialCall( EFalse ); |
707 break; |
720 break; |
708 case MPEPhoneModel::EPEMessageReleaseAll: //Make HangUp requests to all calls |
721 case MPEPhoneModel::EPEMessageReleaseAll: //Make HangUp requests to all calls |
709 errorCode = iMessageHandler->HandleReleaseAll( ); |
722 errorCode = iMessageHandler->HandleReleaseAll( ); |
710 break; |
723 break; |
711 case MPEPhoneModel::EPEMessageRelease: //Make HangUp request |
724 case MPEPhoneModel::EPEMessageRelease: //Make HangUp request |
|
725 errorCode = iMessageHandler->HandleReleaseCall( ); |
|
726 break; |
712 case CPEPhoneModelIF::EPEMessageHangUpConference: |
727 case CPEPhoneModelIF::EPEMessageHangUpConference: |
713 errorCode = iMessageHandler->HandleReleaseCall( ); |
728 errorCode = iMessageHandler->HandleReleaseConference(); |
714 break; |
729 break; |
715 case MPEPhoneModel::EPEMessageAnswer: //Make Answer request |
730 case MPEPhoneModel::EPEMessageAnswer: //Make Answer request |
716 errorCode = iMessageHandler->HandleAnswerCall( EFalse ); |
731 errorCode = iMessageHandler->HandleAnswerCall( EFalse ); |
717 break; |
732 break; |
718 case MPEPhoneModel::EPEMessageReject: //Make Reject request |
733 case MPEPhoneModel::EPEMessageReject: //Make Reject request |
824 errorCode = iMessageHandler->ForwardCallToAddress(); |
839 errorCode = iMessageHandler->ForwardCallToAddress(); |
825 break; |
840 break; |
826 case MPEPhoneModel::EPEMessageDisableService: |
841 case MPEPhoneModel::EPEMessageDisableService: |
827 iMessageHandler->HandleDisableService(); |
842 iMessageHandler->HandleDisableService(); |
828 break; |
843 break; |
829 case MPEPhoneModel::EPEMessageDialServiceCall: //Make Dial request |
844 |
830 errorCode = iMessageHandler->HandleDialCall( EFalse ); |
|
831 break; |
|
832 default: |
845 default: |
833 errorCode = ECCPErrorNotFound; |
846 errorCode = ECCPErrorNotFound; |
834 break; |
847 break; |
835 } |
848 } |
836 |
849 |
837 if( errorCode ) |
850 if( errorCode ) |
838 { |
851 { |
839 TPEErrorInfo errorInfo; |
852 TPEErrorInfo errorInfo; |
840 errorInfo.iErrorCode = errorCode; |
853 errorInfo.iErrorCode = errorCode; |
841 errorInfo.iCallId = KPECallIdNotUsed; |
854 errorInfo.iCallId = KPECallIdNotUsed; |
842 errorInfo.iErrorType = EPECcp; |
855 errorInfo.iErrorType = EPECcp; |
843 iEngineMonitor.HandleError( errorInfo ); |
856 iEngineMonitor.HandleError( errorInfo ); |
844 } |
857 } |
845 }// HandleMessage |
858 }// HandleMessage |
846 |
859 |
847 // ----------------------------------------------------------------------------- |
860 // ----------------------------------------------------------------------------- |
848 // CPEPhoneModel::SendMessage |
861 // CPEPhoneModel::SendMessage |
849 // Reroutes messages to the over loaded SendMessage( TInt aMessage, TInt aCallId ) method. |
862 // Reroutes messages to the over loaded SendMessage( TInt aMessage, TInt aCallId ) method. |
915 { |
928 { |
916 iEngineInfo->SetCallState( EPEStateUnknown, aCallId ); |
929 iEngineInfo->SetCallState( EPEStateUnknown, aCallId ); |
917 } |
930 } |
918 } |
931 } |
919 |
932 |
920 if ( message == MEngineMonitor::EPEMessageOutgoingCallBarred ) |
|
921 { |
|
922 iEngineInfo->SetOutgoingCallBarringActivated( ETrue ); |
|
923 message = KPEDontSendMessage; |
|
924 } |
|
925 |
|
926 if ( ( message == MEngineMonitor::EPEMessageIncoming ) ) |
933 if ( ( message == MEngineMonitor::EPEMessageIncoming ) ) |
927 { |
934 { |
928 if ( FeatureManager::FeatureSupported( KFeatureIdDriveMode ) ) |
935 if ( FeatureManager::FeatureSupported( KFeatureIdDriveMode ) ) |
929 { |
936 { |
930 //Check for Drive mode |
937 //Check for Drive mode |
935 } |
942 } |
936 } |
943 } |
937 } |
944 } |
938 |
945 |
939 if ( message == MEngineMonitor::EPEMessageChangedCallDuration ) |
946 if ( message == MEngineMonitor::EPEMessageChangedCallDuration ) |
940 { |
947 { |
941 TInt callTimerSetting( EFalse ); |
948 TInt callTimerSetting( EFalse ); |
942 // safe to ignore error code here, duration display equals to zero == off if it fails |
949 // safe to ignore error code here, duration display equals to zero == off if it fails |
943 iExternalDataHandler->Get( EPECallDurationDisplaySetting, callTimerSetting ); |
950 iExternalDataHandler->Get( EPECallDurationDisplaySetting, callTimerSetting ); |
944 // Message EPEMessageChangedCallDuration send supressed, if duration display is OFF |
951 // Message EPEMessageChangedCallDuration send supressed, if duration display is OFF |
945 if ( callTimerSetting == KPECallTimerOff ) |
952 if ( callTimerSetting == KPECallTimerOff ) |
946 { |
953 { |
947 message = KPEDontSendMessage; |
954 message = KPEDontSendMessage; |
948 } |
955 } |
949 } |
956 } |
950 |
957 |
951 //MessageHandler may return error code |
958 //MessageHandler may return error code |
952 if ( errorCode != ECCPErrorNone && errorCode != KPEDontSendMessage ) |
959 if ( errorCode != ECCPErrorNone && errorCode != KPEDontSendMessage ) |
953 { |
960 { |
954 #ifdef TEF_LOGGING_ENABLED |
961 #ifdef TEF_LOGGING_ENABLED |
958 TEFLOGSTRING3( |
965 TEFLOGSTRING3( |
959 KTAERROR, |
966 KTAERROR, |
960 "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=%s, CallId=%d", |
967 "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=%s, CallId=%d", |
961 messageName2.Ptr( ), aCallId ); |
968 messageName2.Ptr( ), aCallId ); |
962 #endif |
969 #endif |
963 SetCallError( aCallId ); |
|
964 TPEErrorInfo errorInfo; |
970 TPEErrorInfo errorInfo; |
965 errorInfo.iErrorCode = errorCode; |
971 errorInfo.iErrorCode = errorCode; |
966 errorInfo.iCallId = aCallId; |
972 errorInfo.iCallId = aCallId; |
967 errorInfo.iErrorType = EPECcp; |
973 errorInfo.iErrorType = EPECcp; |
968 iEngineMonitor.HandleError( errorInfo ); |
974 iEngineMonitor.HandleError( errorInfo ); |
969 } |
975 } |
970 else if ( message == MEngineMonitor::EPEMessageCallHandlingError ) |
976 else if ( message == MEngineMonitor::EPEMessageCallHandlingError ) |
971 { |
977 { |
972 TEFLOGSTRING2( |
978 TEFLOGSTRING2( |
973 KTAERROR, |
979 KTAERROR, |
974 "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageCallHandlingError, CallId=%d" |
980 "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageCallHandlingError, CallId=%d" |
975 , aCallId ); |
981 , aCallId ); |
976 SetCallError( aCallId ); |
|
977 TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo(); |
982 TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo(); |
978 errorInfo.iCallId = aCallId; |
983 errorInfo.iCallId = aCallId; |
979 errorInfo.iErrorType = EPECcp; |
984 errorInfo.iErrorType = EPECcp; |
980 |
985 |
981 if ( ECCPErrorCCCallRejected == errorInfo.iErrorCode ) |
986 if ( ECCPErrorCCCallRejected == errorInfo.iErrorCode ) |
983 // Call direction is not set if the call was rejected before Dialing-state |
988 // Call direction is not set if the call was rejected before Dialing-state |
984 iEngineInfo->SetCallDirection( RMobileCall::EMobileOriginated, aCallId ); |
989 iEngineInfo->SetCallDirection( RMobileCall::EMobileOriginated, aCallId ); |
985 iMessageHandler->AddSIMRejectedMoCsCallToLog( aCallId ); |
990 iMessageHandler->AddSIMRejectedMoCsCallToLog( aCallId ); |
986 } |
991 } |
987 iEngineMonitor.HandleError( errorInfo ); |
992 iEngineMonitor.HandleError( errorInfo ); |
988 } |
993 } |
989 else if ( message == MEngineMonitor::EPEMessageServiceHandlingError ) |
994 else if ( message == MEngineMonitor::EPEMessageServiceHandlingError ) |
990 { |
995 { |
991 TEFLOGSTRING( |
996 TEFLOGSTRING( |
992 KTAERROR, |
997 KTAERROR, |
993 "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageServiceHandlingError" ); |
998 "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageServiceHandlingError" ); |
994 SetCallError( aCallId ); |
|
995 TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo(); |
999 TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo(); |
996 errorInfo.iCallId = aCallId; |
1000 errorInfo.iCallId = aCallId; |
997 errorInfo.iErrorType = EPECch; |
1001 errorInfo.iErrorType = EPECch; |
998 iEngineMonitor.HandleError( errorInfo ); |
1002 iEngineMonitor.HandleError( errorInfo ); |
999 } |
1003 } |
1000 else if ( message != KPEDontSendMessage && errorCode != KPEDontSendMessage ) |
1004 else if ( message != KPEDontSendMessage && errorCode != KPEDontSendMessage ) |
1001 { |
1005 { |
1002 // Map message for PhoneApplication, since it doesn't use |
1006 // Map message for PhoneApplication, since it doesn't use |
1003 // EPEMessageDisconnectingWithInband message |
1007 // EPEMessageDisconnectingWithInband message |
1004 if( message == MEngineMonitor::EPEMessageDisconnectingWithInband ) |
1008 if( message == MEngineMonitor::EPEMessageDisconnectingWithInband ) |
1164 |
1166 |
1165 case MEngineMonitor::EPEMessageSentDTMF: |
1167 case MEngineMonitor::EPEMessageSentDTMF: |
1166 errorCode = iMessageHandler->HandleDtmfSent(); |
1168 errorCode = iMessageHandler->HandleDtmfSent(); |
1167 break; |
1169 break; |
1168 |
1170 |
|
1171 case MEngineMonitor::EPEMessageActivateWarrantyMode: |
|
1172 errorCode = iMessageHandler->HandleGetLifeTimerData( ); |
|
1173 break; |
|
1174 |
1169 case MEngineMonitor::EPEMessageStartATDialing: |
1175 case MEngineMonitor::EPEMessageStartATDialing: |
1170 errorCode = iMessageHandler->HandleDialCall( EFalse ); |
1176 errorCode = iMessageHandler->HandleDialCall( EFalse ); |
1171 iMessageHandler->HandleATDialingStarted( errorCode ? EFalse : ETrue ); |
1177 iMessageHandler->HandleATDialingStarted( errorCode ? EFalse : ETrue ); |
1172 break; |
1178 break; |
1173 |
1179 |
1409 break; |
1420 break; |
1410 } |
1421 } |
1411 case CPEPhoneModel::EPEContactHandlingPhaseTwo: |
1422 case CPEPhoneModel::EPEContactHandlingPhaseTwo: |
1412 { |
1423 { |
1413 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 15.1" ); |
1424 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 15.1" ); |
1414 static_cast< CPEContactHandlingProxy* >( iContactHandling )-> |
1425 // Start Idle State monitor to finalize ContactHandling contruction |
1415 CreateSecondPhaseL( *this, iFsSession ); |
1426 iIdleStatusMonitor = CPEIdleStatusMonitor::NewL (*this ); |
1416 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 15.2" ); |
1427 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 15.2" ); |
|
1428 |
|
1429 |
1417 break; |
1430 break; |
1418 } |
1431 } |
1419 case CPEPhoneModel::EPEMediatorCommandHandler: |
1432 case CPEPhoneModel::EPEMediatorCommandHandler: |
1420 { |
1433 { |
1421 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.1" ); |
1434 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.1" ); |
1422 // Start Mediator command listener |
1435 // Start Mediator command listener |
1423 iMediatorCommunicationHandler = CPERemotePartyInfoMediator::NewL( *this ); |
1436 iMediatorCommunicationHandler = CPERemotePartyInfoMediator::NewL( *this ); |
|
1437 |
|
1438 // This should be set after the last case |
|
1439 continueStepping = EFalse; |
1424 break; |
1440 break; |
1425 } |
1441 } |
1426 case CPEPhoneModel::EPEPhoneServices: |
|
1427 { |
|
1428 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.1" ); |
|
1429 __ASSERT_DEBUG( iMessageHandler, Panic( EPEPanicNullPointer ) ); |
|
1430 __ASSERT_DEBUG( iEngineInfo, Panic( EPEPanicNullPointer ) ); |
|
1431 iPhoneServices = new PhoneServices(*iMessageHandler, *iEngineInfo); |
|
1432 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.2" ); |
|
1433 break; |
|
1434 } |
|
1435 |
|
1436 case CPEPhoneModel::EPENetworkHandling: |
|
1437 { |
|
1438 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 18.1" ); |
|
1439 continueStepping = EFalse; |
|
1440 QString service("networkhandlingstarter"); |
|
1441 QString interface("com.nokia.symbian.IStart"); |
|
1442 QString operation("start()"); |
|
1443 XQApplicationManager appManager; |
|
1444 |
|
1445 QScopedPointer<XQAiwRequest> request( |
|
1446 appManager.create(service, interface, operation, false)); |
|
1447 if (request == NULL) { |
|
1448 TEFLOGSTRING(KTAOBJECT, |
|
1449 "CPEPhoneModel::StepL 18.2 error, service not found"); |
|
1450 break; |
|
1451 } |
|
1452 XQRequestInfo info; |
|
1453 info.setForeground(false); |
|
1454 request->setInfo(info); |
|
1455 request->setSynchronous(false); |
|
1456 if (!request->send()) { |
|
1457 int error = request->lastError(); |
|
1458 TEFLOGSTRING2(KTAOBJECT, |
|
1459 "CPEPhoneModel::StepL 18.3 error %d", error); |
|
1460 break; |
|
1461 } |
|
1462 TEFLOGSTRING(KTAOBJECT, "CPEPhoneModel::StepL: 18.4"); |
|
1463 break; |
|
1464 } |
|
1465 |
|
1466 default: |
1442 default: |
1467 { |
1443 { |
1468 Panic( EPEPanicIndexOutOfRange ); |
1444 Panic( EPEPanicIndexOutOfRange ); |
1469 break; |
1445 break; |
1470 } |
1446 } |
1506 static_cast< CPEContactHandlingProxy* >( iContactHandling )-> |
1482 static_cast< CPEContactHandlingProxy* >( iContactHandling )-> |
1507 CreateSecondPhaseL( *this, iFsSession ); |
1483 CreateSecondPhaseL( *this, iFsSession ); |
1508 TEFLOGSTRING( KTAOBJECT, |
1484 TEFLOGSTRING( KTAOBJECT, |
1509 "PE CPEPhoneModel::ConstructContactHandlingPhaseTwo, complete" ); |
1485 "PE CPEPhoneModel::ConstructContactHandlingPhaseTwo, complete" ); |
1510 SendMessage( MEngineMonitor::EPEMessagePEConstructionTwoPhaseReady ); |
1486 SendMessage( MEngineMonitor::EPEMessagePEConstructionTwoPhaseReady ); |
|
1487 // not need any more |
|
1488 delete iIdleStatusMonitor; |
|
1489 iIdleStatusMonitor = NULL; |
1511 } |
1490 } |
1512 |
1491 |
1513 // ----------------------------------------------------------------------------- |
1492 // ----------------------------------------------------------------------------- |
1514 // CallBackSendMessage |
1493 // CallBackSendMessage |
1515 // ----------------------------------------------------------------------------- |
1494 // ----------------------------------------------------------------------------- |
1524 self->iEngineMonitor.HandleMessage( self->iCallBackMessage, self->iCallBackCallId ); |
1503 self->iEngineMonitor.HandleMessage( self->iCallBackMessage, self->iCallBackCallId ); |
1525 |
1504 |
1526 return KErrNone; |
1505 return KErrNone; |
1527 } |
1506 } |
1528 |
1507 |
1529 // ----------------------------------------------------------------------------- |
|
1530 // SetCallError |
|
1531 // ----------------------------------------------------------------------------- |
|
1532 // |
|
1533 void CPEPhoneModel::SetCallError( TInt aCallId ) |
|
1534 { |
|
1535 TInt callError = KErrNone; |
|
1536 if ( iCallHandling ) |
|
1537 { |
|
1538 TInt err = iCallHandling->GetCallInfo( *iCallInfo, aCallId ); |
|
1539 |
|
1540 if ( err == KErrNone && ( iCallInfo->iExitCode & 0xFFFF0000 ) ) |
|
1541 { |
|
1542 callError = ( iCallInfo->iExitCode >> KTimesToSplitValue ); |
|
1543 //Set protocol spesific error code to TPEErrorInfo |
|
1544 EngineInfo()->SetProtocolError( callError, aCallId ); |
|
1545 } |
|
1546 } |
|
1547 } |
|
1548 // End of File |
1508 // End of File |