37 #include <cpeloghandlingproxy.h> |
37 #include <cpeloghandlingproxy.h> |
38 #include <featmgr.h> |
38 #include <featmgr.h> |
39 #include <mccedtmfinterface.h> |
39 #include <mccedtmfinterface.h> |
40 #include <mpecontacthandling.h> |
40 #include <mpecontacthandling.h> |
41 #include <mpeloghandling.h> |
41 #include <mpeloghandling.h> |
|
42 // <-- QT PHONE START --> |
|
43 #include "phoneservices.h" |
|
44 #include "parserrecognizer.h" |
|
45 // <-- QT PHONE END --> |
42 |
46 |
43 // CONSTANTS |
47 // CONSTANTS |
44 const TInt KDriveProfile ( 6 ); |
48 const TInt KDriveProfile ( 6 ); |
45 const TInt KPECallTimerOff = 0; |
49 const TInt KPECallTimerOff = 0; |
46 |
50 |
157 delete iConvergedCallEngine; |
161 delete iConvergedCallEngine; |
158 if ( iIdleStatusMonitor ) |
162 if ( iIdleStatusMonitor ) |
159 { |
163 { |
160 delete iIdleStatusMonitor; |
164 delete iIdleStatusMonitor; |
161 } |
165 } |
|
166 // <-- QT PHONE START --> |
|
167 delete iPhoneServices; |
|
168 delete iParserRecognizer; |
|
169 // <-- QT PHONE END --> |
162 }// ~CPEPhoneModel |
170 }// ~CPEPhoneModel |
163 |
171 |
164 // ----------------------------------------------------------------------------- |
172 // ----------------------------------------------------------------------------- |
165 // CPEPhoneModel::EngineInfo |
173 // CPEPhoneModel::EngineInfo |
166 // Returns the pointer of the CPEEngineInfo object. |
174 // Returns the pointer of the CPEEngineInfo object. |
227 return MESSAGE("EPEMessageAnswer"); |
235 return MESSAGE("EPEMessageAnswer"); |
228 case MPEPhoneModel::EPEMessageClientDial: |
236 case MPEPhoneModel::EPEMessageClientDial: |
229 return MESSAGE("EPEMessageClientDial"); |
237 return MESSAGE("EPEMessageClientDial"); |
230 case MPEPhoneModel::EPEMessageClientDialEmergency: |
238 case MPEPhoneModel::EPEMessageClientDialEmergency: |
231 return MESSAGE("EPEMessageClientDialEmergency"); |
239 return MESSAGE("EPEMessageClientDialEmergency"); |
|
240 // <-- QT PHONE START --> |
|
241 case MPEPhoneModel::EPEMessageDialServiceCall: |
|
242 return MESSAGE("EPEMessageDialServiceCall"); |
|
243 // <-- QT PHONE END --> |
232 case MPEPhoneModel::EPEMessageContinueEmergencyCallInitialization: |
244 case MPEPhoneModel::EPEMessageContinueEmergencyCallInitialization: |
233 return MESSAGE("EPEMessageContinueEmergencyCallInitialization"); |
245 return MESSAGE("EPEMessageContinueEmergencyCallInitialization"); |
234 case MPEPhoneModel::EPEMessageContinueDTMFSending: |
246 case MPEPhoneModel::EPEMessageContinueDTMFSending: |
235 return MESSAGE("EPEMessageContinueDTMFSending"); |
247 return MESSAGE("EPEMessageContinueDTMFSending"); |
236 case MPEPhoneModel::EPEMessageDial: |
248 case MPEPhoneModel::EPEMessageDial: |
578 case MEngineMonitor::EPEMessageALSLineChanged: |
590 case MEngineMonitor::EPEMessageALSLineChanged: |
579 return MESSAGE("EPEMessageALSLineChanged"); |
591 return MESSAGE("EPEMessageALSLineChanged"); |
580 case MEngineMonitor::EPEMessageCallBarred: |
592 case MEngineMonitor::EPEMessageCallBarred: |
581 return MESSAGE("EPEMessageCallBarred"); |
593 return MESSAGE("EPEMessageCallBarred"); |
582 case MEngineMonitor::EPEMessageIncCallIsForw: |
594 case MEngineMonitor::EPEMessageIncCallIsForw: |
583 return MESSAGE("EPEMessageIncCallIsForw"); |
595 return MESSAGE("EPEMessageIncCallIsForw"); |
584 case MEngineMonitor::EPEMessageIncCallForwToC: |
596 case MEngineMonitor::EPEMessageIncCallForwToC: |
585 return MESSAGE("EPEMessageIncCallForwToC"); |
597 return MESSAGE("EPEMessageIncCallForwToC"); |
586 case MEngineMonitor::EPEMessageOutCallForwToC: |
598 case MEngineMonitor::EPEMessageOutCallForwToC: |
587 return MESSAGE("EPEMessageOutCallForwToC"); |
599 return MESSAGE("EPEMessageOutCallForwToC"); |
588 case MEngineMonitor::EPEMessageForwardUnconditionalModeActive: |
600 case MEngineMonitor::EPEMessageForwardUnconditionalModeActive: |
589 return MESSAGE( "EPEMessageForwardUnconditionalModeActive" ); |
601 return MESSAGE( "EPEMessageForwardUnconditionalModeActive" ); |
590 case MEngineMonitor::EPEMessageForwardConditionallyModeActive: |
602 case MEngineMonitor::EPEMessageForwardConditionallyModeActive: |
591 return MESSAGE( "EPEMessageForwardConditionallyModeActive" ); |
603 return MESSAGE( "EPEMessageForwardConditionallyModeActive" ); |
592 case MEngineMonitor::EPEMessageDroppedConferenceMember: |
604 case MEngineMonitor::EPEMessageDroppedConferenceMember: |
593 return MESSAGE("EPEMessageDroppedConferenceMember"); |
605 return MESSAGE("EPEMessageDroppedConferenceMember"); |
594 case MEngineMonitor::EPEMessageGoingOneToOne: |
606 case MEngineMonitor::EPEMessageGoingOneToOne: |
595 return MESSAGE("EPEMessageGoingOneToOne"); |
607 return MESSAGE("EPEMessageGoingOneToOne"); |
596 case MEngineMonitor::EPEMessageIssuedUSSDRequest: |
608 case MEngineMonitor::EPEMessageIssuedUSSDRequest: |
707 { |
719 { |
708 case MPEPhoneModel::EPEMessageTerminateAllConnections: |
720 case MPEPhoneModel::EPEMessageTerminateAllConnections: |
709 errorCode = iMessageHandler->HandleTerminateAllConnections( ); |
721 errorCode = iMessageHandler->HandleTerminateAllConnections( ); |
710 break; |
722 break; |
711 case MPEPhoneModel::EPEMessageDial: |
723 case MPEPhoneModel::EPEMessageDial: |
712 //Make a dial request |
724 //Make a dial request |
713 errorCode = iMessageHandler->HandleDialCall( EFalse ); |
725 errorCode = iMessageHandler->HandleDialCall( EFalse ); |
714 break; |
726 break; |
715 case MPEPhoneModel::EPEMessageReleaseAll: //Make HangUp requests to all calls |
727 case MPEPhoneModel::EPEMessageReleaseAll: //Make HangUp requests to all calls |
716 errorCode = iMessageHandler->HandleReleaseAll( ); |
728 errorCode = iMessageHandler->HandleReleaseAll( ); |
717 break; |
729 break; |
831 errorCode = iMessageHandler->ForwardCallToAddress(); |
843 errorCode = iMessageHandler->ForwardCallToAddress(); |
832 break; |
844 break; |
833 case MPEPhoneModel::EPEMessageDisableService: |
845 case MPEPhoneModel::EPEMessageDisableService: |
834 iMessageHandler->HandleDisableService(); |
846 iMessageHandler->HandleDisableService(); |
835 break; |
847 break; |
836 |
848 // <-- QT PHONE START --> |
|
849 case MPEPhoneModel::EPEMessageDialServiceCall: //Make Dial request |
|
850 errorCode = iMessageHandler->HandleDialCall( EFalse ); |
|
851 break; |
|
852 // <-- QT PHONE END --> |
837 default: |
853 default: |
838 errorCode = ECCPErrorNotFound; |
854 errorCode = ECCPErrorNotFound; |
839 break; |
855 break; |
840 } |
856 } |
841 |
857 |
842 if( errorCode ) |
858 if( errorCode ) |
843 { |
859 { |
844 TPEErrorInfo errorInfo; |
860 TPEErrorInfo errorInfo; |
845 errorInfo.iErrorCode = errorCode; |
861 errorInfo.iErrorCode = errorCode; |
846 errorInfo.iCallId = KPECallIdNotUsed; |
862 errorInfo.iCallId = KPECallIdNotUsed; |
847 errorInfo.iErrorType = EPECcp; |
863 errorInfo.iErrorType = EPECcp; |
848 iEngineMonitor.HandleError( errorInfo ); |
864 iEngineMonitor.HandleError( errorInfo ); |
849 } |
865 } |
850 }// HandleMessage |
866 }// HandleMessage |
851 |
867 |
852 // ----------------------------------------------------------------------------- |
868 // ----------------------------------------------------------------------------- |
853 // CPEPhoneModel::SendMessage |
869 // CPEPhoneModel::SendMessage |
854 // Reroutes messages to the over loaded SendMessage( TInt aMessage, TInt aCallId ) method. |
870 // Reroutes messages to the over loaded SendMessage( TInt aMessage, TInt aCallId ) method. |
934 } |
950 } |
935 } |
951 } |
936 } |
952 } |
937 |
953 |
938 if ( message == MEngineMonitor::EPEMessageChangedCallDuration ) |
954 if ( message == MEngineMonitor::EPEMessageChangedCallDuration ) |
939 { |
955 { |
940 TInt callTimerSetting( EFalse ); |
956 TInt callTimerSetting( EFalse ); |
941 // safe to ignore error code here, duration display equals to zero == off if it fails |
957 // safe to ignore error code here, duration display equals to zero == off if it fails |
942 iExternalDataHandler->Get( EPECallDurationDisplaySetting, callTimerSetting ); |
958 iExternalDataHandler->Get( EPECallDurationDisplaySetting, callTimerSetting ); |
943 // Message EPEMessageChangedCallDuration send supressed, if duration display is OFF |
959 // Message EPEMessageChangedCallDuration send supressed, if duration display is OFF |
944 if ( callTimerSetting == KPECallTimerOff ) |
960 if ( callTimerSetting == KPECallTimerOff ) |
945 { |
961 { |
946 message = KPEDontSendMessage; |
962 message = KPEDontSendMessage; |
947 } |
963 } |
948 } |
964 } |
949 |
965 |
950 //MessageHandler may return error code |
966 //MessageHandler may return error code |
951 if ( errorCode != ECCPErrorNone && errorCode != KPEDontSendMessage ) |
967 if ( errorCode != ECCPErrorNone && errorCode != KPEDontSendMessage ) |
952 { |
968 { |
953 #ifdef TEF_LOGGING_ENABLED |
969 #ifdef TEF_LOGGING_ENABLED |
958 KTAERROR, |
974 KTAERROR, |
959 "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=%s, CallId=%d", |
975 "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=%s, CallId=%d", |
960 messageName2.Ptr( ), aCallId ); |
976 messageName2.Ptr( ), aCallId ); |
961 #endif |
977 #endif |
962 TPEErrorInfo errorInfo; |
978 TPEErrorInfo errorInfo; |
963 errorInfo.iErrorCode = errorCode; |
979 errorInfo.iErrorCode = errorCode; |
964 errorInfo.iCallId = aCallId; |
980 errorInfo.iCallId = aCallId; |
965 errorInfo.iErrorType = EPECcp; |
981 errorInfo.iErrorType = EPECcp; |
966 iEngineMonitor.HandleError( errorInfo ); |
982 iEngineMonitor.HandleError( errorInfo ); |
967 } |
983 } |
968 else if ( message == MEngineMonitor::EPEMessageCallHandlingError ) |
984 else if ( message == MEngineMonitor::EPEMessageCallHandlingError ) |
969 { |
985 { |
970 TEFLOGSTRING2( |
986 TEFLOGSTRING2( |
971 KTAERROR, |
987 KTAERROR, |
972 "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageCallHandlingError, CallId=%d" |
988 "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageCallHandlingError, CallId=%d" |
973 , aCallId ); |
989 , aCallId ); |
974 TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo(); |
990 TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo(); |
975 errorInfo.iCallId = aCallId; |
991 errorInfo.iCallId = aCallId; |
976 errorInfo.iErrorType = EPECcp; |
992 errorInfo.iErrorType = EPECcp; |
977 iEngineMonitor.HandleError( errorInfo ); |
993 iEngineMonitor.HandleError( errorInfo ); |
978 } |
994 } |
979 else if ( message == MEngineMonitor::EPEMessageServiceHandlingError ) |
995 else if ( message == MEngineMonitor::EPEMessageServiceHandlingError ) |
980 { |
996 { |
981 TEFLOGSTRING( |
997 TEFLOGSTRING( |
982 KTAERROR, |
998 KTAERROR, |
983 "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageServiceHandlingError" ); |
999 "PE cpephonemodel::sendmessage > iEngineMonitor.HandleError: messageName=EPEMessageServiceHandlingError" ); |
984 TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo(); |
1000 TPEErrorInfo errorInfo = iEngineInfo->ErrorInfo(); |
985 errorInfo.iCallId = aCallId; |
1001 errorInfo.iCallId = aCallId; |
986 errorInfo.iErrorType = EPECch; |
1002 errorInfo.iErrorType = EPECch; |
987 iEngineMonitor.HandleError( errorInfo ); |
1003 iEngineMonitor.HandleError( errorInfo ); |
988 } |
1004 } |
989 else if ( message != KPEDontSendMessage && errorCode != KPEDontSendMessage ) |
1005 else if ( message != KPEDontSendMessage && errorCode != KPEDontSendMessage ) |
990 { |
1006 { |
991 // Map message for PhoneApplication, since it doesn't use |
1007 // Map message for PhoneApplication, since it doesn't use |
992 // EPEMessageDisconnectingWithInband message |
1008 // EPEMessageDisconnectingWithInband message |
993 if( message == MEngineMonitor::EPEMessageDisconnectingWithInband ) |
1009 if( message == MEngineMonitor::EPEMessageDisconnectingWithInband ) |
1013 Panic( EPEPanicIllegalCommand ) ); |
1029 Panic( EPEPanicIllegalCommand ) ); |
1014 iEngineMonitor.HandleMessage( |
1030 iEngineMonitor.HandleMessage( |
1015 static_cast<MEngineMonitor::TPEMessagesFromPhoneEngine>( message ), |
1031 static_cast<MEngineMonitor::TPEMessagesFromPhoneEngine>( message ), |
1016 aCallId ); |
1032 aCallId ); |
1017 } |
1033 } |
|
1034 |
|
1035 // <-- QT PHONE START --> |
|
1036 if( iParserRecognizer ) |
|
1037 { |
|
1038 iParserRecognizer->sendMessage( aMessage, aCallId ); |
|
1039 } |
|
1040 // <-- QT PHONE END --> |
|
1041 |
|
1042 |
1018 }// SendMessage( 2 params ) |
1043 }// SendMessage( 2 params ) |
1019 |
1044 |
1020 // ----------------------------------------------------------------------------- |
1045 // ----------------------------------------------------------------------------- |
1021 // CPEPhoneModel::ProcessMessage |
1046 // CPEPhoneModel::ProcessMessage |
1022 // Process messages from the subsystems by passing them to message handlder. |
1047 // Process messages from the subsystems by passing them to message handlder. |
1383 break; |
1408 break; |
1384 } |
1409 } |
1385 case CPEPhoneModel::EPEContactHandlingPhaseTwo: |
1410 case CPEPhoneModel::EPEContactHandlingPhaseTwo: |
1386 { |
1411 { |
1387 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 15.1" ); |
1412 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 15.1" ); |
|
1413 // <-- QT PHONE START --> |
1388 // Start Idle State monitor to finalize ContactHandling contruction |
1414 // Start Idle State monitor to finalize ContactHandling contruction |
1389 iIdleStatusMonitor = CPEIdleStatusMonitor::NewL (*this ); |
1415 //iIdleStatusMonitor = CPEIdleStatusMonitor::NewL (*this ); |
|
1416 static_cast< CPEContactHandlingProxy* >( iContactHandling )-> |
|
1417 CreateSecondPhaseL( *this, iFsSession ); |
1390 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 15.2" ); |
1418 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 15.2" ); |
1391 |
1419 |
|
1420 // This should be set after the last case |
|
1421 |
|
1422 // continueStepping = EFalse; |
|
1423 // <-- QT PHONE END --> |
|
1424 break; |
|
1425 } |
|
1426 case CPEPhoneModel::EPEMediatorCommandHandler: |
|
1427 { |
|
1428 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.1" ); |
|
1429 // Start Mediator command listener |
|
1430 // <-- QT PHONE START --> |
|
1431 iMediatorCommunicationHandler = CPERemotePartyInfoMediator::NewL( *this ); |
1392 |
1432 |
1393 break; |
1433 break; |
1394 } |
1434 } |
1395 case CPEPhoneModel::EPEMediatorCommandHandler: |
1435 case CPEPhoneModel::EPEPhoneServices: |
1396 { |
1436 { |
1397 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.1" ); |
1437 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.1" ); |
1398 // Start Mediator command listener |
1438 __ASSERT_DEBUG( iMessageHandler, Panic( EPEPanicNullPointer ) ); |
1399 iMediatorCommunicationHandler = CPERemotePartyInfoMediator::NewL( *this ); |
1439 __ASSERT_DEBUG( iEngineInfo, Panic( EPEPanicNullPointer ) ); |
1400 |
1440 iPhoneServices = new PhoneServices (*iMessageHandler, *iEngineInfo); |
1401 // This should be set after the last case |
1441 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 16.2" ); |
|
1442 break; |
|
1443 } |
|
1444 |
|
1445 case CPEPhoneModel::EPEParserRecognizer: |
|
1446 { |
|
1447 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 17.1" ); |
|
1448 iParserRecognizer = new ParserRecognizer; |
|
1449 TEFLOGSTRING( KTAOBJECT, "CPEPhoneModel::StepL: 17.2" ); |
1402 continueStepping = EFalse; |
1450 continueStepping = EFalse; |
1403 break; |
1451 break; |
1404 } |
1452 } |
|
1453 // <-- QT PHONE END --> |
1405 default: |
1454 default: |
1406 { |
1455 { |
1407 Panic( EPEPanicIndexOutOfRange ); |
1456 Panic( EPEPanicIndexOutOfRange ); |
1408 break; |
1457 break; |
1409 } |
1458 } |