97 { |
97 { |
98 FUNC_LOG; |
98 FUNC_LOG; |
99 if ( KCRUidTvoutSettings == aRepositoryId ) |
99 if ( KCRUidTvoutSettings == aRepositoryId ) |
100 { |
100 { |
101 if ( KSettingsTvoutVerticalOverscan == aId ) |
101 if ( KSettingsTvoutVerticalOverscan == aId ) |
102 { |
102 { |
103 Input( EPDEIfCentralRepositoryWatch, EPDEIfCentralRepositoryWatchEventKeyChanged ); |
103 INFO("Cenrep Value Changed"); |
|
104 if( iEDIDHandler.UpdateOverscanValues() ) |
|
105 { |
|
106 INFO( "There is a real change" ); |
|
107 Input( EPDEIfCentralRepositoryWatch, EPDEIfCentralRepositoryWatchEventKeyChanged ); |
|
108 } |
104 } |
109 } |
105 else |
110 else |
106 { |
111 { |
107 INFO_1("Unexpected CR key ID, aId 0x%x", aId ); |
112 INFO_1("Unexpected CR key ID, aId 0x%x", aId ); |
108 } |
113 } |
109 } |
114 } |
110 else |
115 else |
111 { |
116 { |
112 INFO_1("Unexpected Central Repository ID, aRepositoryId 0x%x", aRepositoryId); |
117 INFO_1("Unexpected Central Repository ID, aRepositoryId 0x%x", aRepositoryId); |
113 } |
118 } |
|
119 |
114 } |
120 } |
115 |
121 |
116 // --------------------------------------------------------------------------- |
122 // --------------------------------------------------------------------------- |
117 // From MCentralRepositoryObserver. |
123 // From MCentralRepositoryObserver. |
118 // --------------------------------------------------------------------------- |
124 // --------------------------------------------------------------------------- |
148 // |
154 // |
149 void CHDMICableStateConnected::Enter( ) |
155 void CHDMICableStateConnected::Enter( ) |
150 { |
156 { |
151 FUNC_LOG; |
157 FUNC_LOG; |
152 TInt retVal( KErrNone ); |
158 TInt retVal( KErrNone ); |
153 iOverScanSettingsChanged = EFalse; |
159 |
|
160 // Get the current overscan value |
|
161 iEDIDHandler.UpdateOverscanValues(); |
|
162 iEDIDHandler.GetCurrentOverscanValue( iHOverscanValue, iVOverscanValue ); |
|
163 |
154 iCopyProtectListenFailCounter.iCount = 0; |
164 iCopyProtectListenFailCounter.iCount = 0; |
155 iTVOutConfigForCopyProtect->ResetLatestRecordedCopyProtectionStatus(); |
165 iTVOutConfigForCopyProtect->ResetLatestRecordedCopyProtectionStatus(); |
156 retVal = iEDIDHandler.FetchEDIDData(); |
166 retVal = iEDIDHandler.FetchEDIDData(); |
157 if ( KErrNone != retVal ) |
167 if ( KErrNone != retVal ) |
158 { |
168 { |
391 iTVOutConfigForSettingChanges->Cancel(); |
401 iTVOutConfigForSettingChanges->Cancel(); |
392 iHDMICableStatusFSM.Transit( EHDMICableStateRejected ); |
402 iHDMICableStatusFSM.Transit( EHDMICableStateRejected ); |
393 } |
403 } |
394 else |
404 else |
395 { |
405 { |
|
406 // Update the current overscan value |
|
407 iEDIDHandler.GetCurrentOverscanValue( iHOverscanValue, iVOverscanValue ); |
|
408 |
396 TFSMEventId event = iTVOutConfigForHDMI.ListenHDMICableStatusIfNoMissedEvents(); |
409 TFSMEventId event = iTVOutConfigForHDMI.ListenHDMICableStatusIfNoMissedEvents(); |
397 if ( EIfTVOutConfigEventCableDisconnected == event ) |
410 if ( EIfTVOutConfigEventCableDisconnected == event ) |
398 { |
411 { |
399 INFO( "Retreating back to <Idle> since cable was disconnected while not listening!" ); |
412 INFO( "Retreating back to <Idle> since cable was disconnected while not listening!" ); |
400 iTVOutConfigForSettingChanges->Cancel(); |
413 iTVOutConfigForSettingChanges->Cancel(); |
513 } |
526 } |
514 else |
527 else |
515 { |
528 { |
516 iSubState = ESubStateConnected; |
529 iSubState = ESubStateConnected; |
517 |
530 |
518 if( !iOverScanSettingsChanged ) |
531 TRAPD( err, iHDMICableStatusFSM.SettingsChangedL() ); |
519 { |
532 if ( KErrNone != err ) |
520 TRAPD( err, iHDMICableStatusFSM.SettingsChangedL() ); |
533 { |
521 if ( KErrNone != err ) |
534 INFO_1( "iHDMICableStatusFSM.SettingsChangedL() failed, error code %i", err ); |
522 { |
535 } |
523 INFO_1( "iHDMICableStatusFSM.SettingsChangedL() failed, error code %i", err ); |
|
524 } |
|
525 } |
|
526 else |
|
527 { |
|
528 iOverScanSettingsChanged = EFalse; |
|
529 } |
|
530 ListenCopyProtectionStatusChanges(); |
536 ListenCopyProtectionStatusChanges(); |
531 iTVOutConfigForSettingChanges->ListenSettingsChanges(); |
537 iTVOutConfigForSettingChanges->ListenSettingsChanges(); |
532 iCRWatchForVOverScan->Watch(); |
538 iCRWatchForVOverScan->Watch(); |
533 } |
539 } |
534 } |
540 } |
570 if ( EIfTVOutConfigEventDisabled == aEvent ) |
576 if ( EIfTVOutConfigEventDisabled == aEvent ) |
571 { |
577 { |
572 INFO( "Event: EIfTVOutConfigEventDisabled" ); |
578 INFO( "Event: EIfTVOutConfigEventDisabled" ); |
573 iSubState = ESubStateIdlingDisconnectAccessory; |
579 iSubState = ESubStateIdlingDisconnectAccessory; |
574 iAccessoryControlIf.DisconnectAccessory(); |
580 iAccessoryControlIf.DisconnectAccessory(); |
|
581 ClearAvailableTvOutConfig(); |
575 } |
582 } |
576 else if ( EIfTVOutConfigEventDisableFailed == aEvent ) |
583 else if ( EIfTVOutConfigEventDisableFailed == aEvent ) |
577 { |
584 { |
578 INFO( "Event: EIfTVOutConfigEventDisableFailed" ); |
585 INFO( "Event: EIfTVOutConfigEventDisableFailed" ); |
579 iSubState = ESubStateIdlingDisconnectAccessory; |
586 iSubState = ESubStateIdlingDisconnectAccessory; |
580 iAccessoryControlIf.DisconnectAccessory(); |
587 iAccessoryControlIf.DisconnectAccessory(); |
|
588 ClearAvailableTvOutConfig(); |
581 } |
589 } |
582 else |
590 else |
583 { |
591 { |
584 INFO_1( "Unknown/unexpected Event Id: %i", aEvent ); |
592 INFO_1( "Unknown/unexpected Event Id: %i", aEvent ); |
585 } |
593 } |
950 { |
958 { |
951 iSubState = ESubStateResettingEnable; |
959 iSubState = ESubStateResettingEnable; |
952 iTVOutConfigForHDMI.Enable(); |
960 iTVOutConfigForHDMI.Enable(); |
953 } |
961 } |
954 } |
962 } |
955 else if ( EIfTVOutConfigEventSettingsChangesListenStarted ) |
963 else if ( EIfTVOutConfigEventSettingsChangesListenStarted == aEvent ) |
956 { |
964 { |
957 INFO( "Event: EIfTVOutConfigEventSettingsChangesListenStarted" ); |
965 INFO( "Event: EIfTVOutConfigEventSettingsChangesListenStarted" ); |
958 // Everything is OK. Stay in the same state. |
966 // Everything is OK. Stay in the same state. |
|
967 // Should not miss the cenrep value change |
|
968 TInt newOverScanValue = 0; |
|
969 iCRWatchForVOverScan->GetCurrentValue(newOverScanValue); |
|
970 if( iVOverscanValue != newOverScanValue ) |
|
971 { |
|
972 Input( EPDEIfCentralRepositoryWatch, EPDEIfCentralRepositoryWatchEventKeyChanged ); |
|
973 } |
959 } |
974 } |
960 else if ( EIfTVOutConfigEventSettingsChangesListenFailed == aEvent ) |
975 else if ( EIfTVOutConfigEventSettingsChangesListenFailed == aEvent ) |
961 { |
976 { |
962 INFO( "Event: EIfTVOutConfigEventSettingsChangesListenFailed" ); |
977 INFO( "Event: EIfTVOutConfigEventSettingsChangesListenFailed" ); |
963 INFO( "Going to state <Rejected> since setting changes listening failed!" ); |
978 INFO( "Going to state <Rejected> since setting changes listening failed!" ); |
979 { |
994 { |
980 INFO( "Interface: EPDEIfCentralRepositoryWatch" ); |
995 INFO( "Interface: EPDEIfCentralRepositoryWatch" ); |
981 if ( EPDEIfCentralRepositoryWatchEventKeyChanged == aEvent ) |
996 if ( EPDEIfCentralRepositoryWatchEventKeyChanged == aEvent ) |
982 { |
997 { |
983 INFO( "Event: EPDEIfCentralRepositoryWatchEventKeyChanged" ); |
998 INFO( "Event: EPDEIfCentralRepositoryWatchEventKeyChanged" ); |
984 |
999 |
985 // Get the available config |
1000 // Get the available config |
986 THdmiDviTimings curConfig; |
1001 THdmiDviTimings curConfig; |
987 |
1002 |
988 iTVOutConfigForHDMI.GetTvOutConfig()->GetConfig( curConfig ); |
1003 iTVOutConfigForHDMI.GetTvOutConfig()->GetConfig( curConfig ); |
989 |
1004 |
990 if( (TTvSettings::EHDMI == curConfig.iConnector) && (!curConfig.iUnderscanEnabled) ) |
1005 if( (TTvSettings::EHDMI == curConfig.iConnector) && (!curConfig.iUnderscanEnabled) ) |
991 { |
1006 { |
992 // Clear the available config |
1007 |
993 ClearAvailableTvOutConfig(); |
|
994 |
|
995 TInt retVal = iEDIDHandler.SetVideoParameters(); |
1008 TInt retVal = iEDIDHandler.SetVideoParameters(); |
996 if ( KErrNone != retVal ) |
1009 if ( KErrNone != retVal ) |
997 { |
1010 { |
998 INFO( "Going to state <Rejected> since video parameter setting failed!" ); |
1011 INFO( "Going to state <Rejected> since video parameter setting failed!" ); |
999 iTVOutConfigForSettingChanges->Cancel(); |
1012 iTVOutConfigForSettingChanges->Cancel(); |
1000 iCRWatchForVOverScan->Cancel(); |
1013 iCRWatchForVOverScan->Cancel(); |
1001 iHDMICableStatusFSM.Transit( EHDMICableStateRejected ); |
1014 iSubState = ESubStateIdlingDisable; |
|
1015 iTVOutConfigForHDMI.Disable(); |
1002 } |
1016 } |
1003 else |
1017 else |
1004 { |
1018 { |
|
1019 // Update the current overscan value |
|
1020 iEDIDHandler.GetCurrentOverscanValue( iHOverscanValue, iVOverscanValue ); |
|
1021 |
1005 TFSMEventId event = iTVOutConfigForHDMI.ListenHDMICableStatusIfNoMissedEvents(); |
1022 TFSMEventId event = iTVOutConfigForHDMI.ListenHDMICableStatusIfNoMissedEvents(); |
1006 if ( EIfTVOutConfigEventCableDisconnected == event ) |
1023 if ( EIfTVOutConfigEventCableDisconnected == event ) |
1007 { |
1024 { |
1008 INFO( "Retreating back to <Idle> since cable was disconnected while not listening!" ); |
1025 INFO( "Retreating back to <Idle> since cable was disconnected while not listening!" ); |
1009 iTVOutConfigForSettingChanges->Cancel(); |
1026 iTVOutConfigForSettingChanges->Cancel(); |
1010 iCRWatchForVOverScan->Cancel(); |
1027 iCRWatchForVOverScan->Cancel(); |
1011 iHDMICableStatusFSM.Transit( EHDMICableStateIdle ); |
1028 iSubState = ESubStateIdlingDisable; |
1012 } |
1029 iTVOutConfigForHDMI.Disable(); |
1013 else |
|
1014 { |
|
1015 iOverScanSettingsChanged = ETrue; |
|
1016 iSubState = ESubStateWaitForSettingsChanged; |
|
1017 } |
1030 } |
1018 } |
1031 } |
1019 } |
1032 } |
1020 } |
1033 } |
1021 else |
1034 else |
1022 { |
1035 { |
1023 INFO_1( "Unknown Event Id: %i", aEvent ); |
1036 INFO_1( "Unknown Event Id: %i", aEvent ); |
1024 } |
1037 } |
1051 INFO( "Event: EIfTVOutConfigEventCableConnected" ); |
1064 INFO( "Event: EIfTVOutConfigEventCableConnected" ); |
1052 TFSMEventId event = iTVOutConfigForHDMI.ListenHDMICableStatusIfNoMissedEvents(); |
1065 TFSMEventId event = iTVOutConfigForHDMI.ListenHDMICableStatusIfNoMissedEvents(); |
1053 if ( EIfTVOutConfigEventCableDisconnected == event ) |
1066 if ( EIfTVOutConfigEventCableDisconnected == event ) |
1054 { |
1067 { |
1055 INFO( "Retreating back to <Idle> since cable was disconnected while WF setting changes!" ); |
1068 INFO( "Retreating back to <Idle> since cable was disconnected while WF setting changes!" ); |
|
1069 |
|
1070 // Stop listening Copy Protection status |
|
1071 iTVOutConfigForCopyProtect->Cancel(); |
|
1072 // Stop listen setting changes |
1056 iTVOutConfigForSettingChanges->Cancel(); |
1073 iTVOutConfigForSettingChanges->Cancel(); |
1057 iHDMICableStatusFSM.Transit( EHDMICableStateIdle ); |
1074 iCRWatchForVOverScan->Cancel(); |
|
1075 |
|
1076 if( iTVOutConfigForHDMI.GetTvOutConfig()->Enabled() ) |
|
1077 { |
|
1078 iSubState = ESubStateIdlingDisable; |
|
1079 iTVOutConfigForHDMI.Disable(); |
|
1080 } |
|
1081 else |
|
1082 { |
|
1083 iHDMICableStatusFSM.Transit( EHDMICableStateIdle ); |
|
1084 } |
1058 } |
1085 } |
1059 } |
1086 } |
1060 else if ( EIfTVOutConfigEventCableDisconnected == aEvent ) |
1087 else if ( EIfTVOutConfigEventCableDisconnected == aEvent ) |
1061 { |
1088 { |
1062 INFO( "Event: EIfTVOutConfigEventCableDisconnected" ); |
1089 INFO( "Event: EIfTVOutConfigEventCableDisconnected" ); |
1063 INFO( "Retreating back to <Idle> since cable was disconnected while WF setting changes!" ); |
1090 INFO( "Retreating back to <Idle> since cable was disconnected while WF setting changes!" ); |
1064 iTVOutConfigForSettingChanges->Cancel(); |
1091 // Stop listening Copy Protection status |
1065 iHDMICableStatusFSM.Transit( EHDMICableStateIdle ); |
1092 iTVOutConfigForCopyProtect->Cancel(); |
1066 } |
1093 // Stop listen setting changes |
1067 else if ( EIfTVOutConfigEventSettingsChanged == aEvent ) |
1094 iTVOutConfigForSettingChanges->Cancel(); |
1068 { |
1095 iCRWatchForVOverScan->Cancel(); |
1069 INFO( "Event: EIfTVOutConfigEventSettingsChanged" ); |
1096 |
1070 if( iOverScanSettingsChanged ) |
1097 if( iTVOutConfigForHDMI.GetTvOutConfig()->Enabled() ) |
1071 { |
1098 { |
1072 if ( iTVOutConfigForHDMI.GetTvOutConfig()->Enabled() ) |
1099 iSubState = ESubStateIdlingDisable; |
1073 { |
1100 iTVOutConfigForHDMI.Disable(); |
1074 iSubState = ESubStateResettingDisable; |
|
1075 iTVOutConfigForHDMI.Disable(); |
|
1076 } |
|
1077 else |
|
1078 { |
|
1079 iSubState = ESubStateResettingEnable; |
|
1080 iTVOutConfigForHDMI.Enable(); |
|
1081 } |
|
1082 } |
1101 } |
1083 else |
1102 else |
1084 { |
1103 { |
1085 iSubState = ESubStateEnable; |
1104 iHDMICableStatusFSM.Transit( EHDMICableStateIdle ); |
1086 iTVOutConfigForHDMI.Enable(); |
|
1087 } |
1105 } |
|
1106 } |
|
1107 else if ( EIfTVOutConfigEventSettingsChanged == aEvent ) |
|
1108 { |
|
1109 INFO( "Event: EIfTVOutConfigEventSettingsChanged" ); |
|
1110 iSubState = ESubStateEnable; |
|
1111 iTVOutConfigForHDMI.Enable(); |
1088 } |
1112 } |
1089 else if ( EIfTVOutConfigEventSettingsChangesListenFailed == aEvent ) |
1113 else if ( EIfTVOutConfigEventSettingsChangesListenFailed == aEvent ) |
1090 { |
1114 { |
1091 INFO( "Event: EIfTVOutConfigEventSettingsChangesListenFailed" ); |
1115 INFO( "Event: EIfTVOutConfigEventSettingsChangesListenFailed" ); |
1092 INFO( "Going to state <Rejected> since setting changes listening failed!" ); |
1116 INFO( "Going to state <Rejected> since setting changes listening failed!" ); |
1093 iHDMICableStatusFSM.Transit( EHDMICableStateRejected ); |
1117 // Stop listening Copy Protection status |
|
1118 iTVOutConfigForCopyProtect->Cancel(); |
|
1119 // Stop listen setting changes |
|
1120 iCRWatchForVOverScan->Cancel(); |
|
1121 |
|
1122 if( iTVOutConfigForHDMI.GetTvOutConfig()->Enabled() ) |
|
1123 { |
|
1124 iSubState = ESubStateIdlingDisable; |
|
1125 iTVOutConfigForHDMI.Disable(); |
|
1126 } |
|
1127 else |
|
1128 { |
|
1129 iHDMICableStatusFSM.Transit( EHDMICableStateRejected ); |
|
1130 } |
1094 } |
1131 } |
1095 else |
1132 else |
1096 { |
1133 { |
1097 INFO_1( "Unknown/unexpected Event Id: %i", aEvent ); |
1134 INFO_1( "Unknown/unexpected Event Id: %i", aEvent ); |
1098 } |
1135 } |