accessoryservices/pluggeddisplay/pluggeddisplayengine/src/hdmicablestateconnected.cpp
branchGCC_SURGE
changeset 49 00076e39386f
parent 45 c6215323ad55
child 60 ccb4f6b3db21
equal deleted inserted replaced
38:61516c5786af 49:00076e39386f
    26 #include "hdmicablestatusfsm.h"
    26 #include "hdmicablestatusfsm.h"
    27 #include "hdmicablestateconnected.h"
    27 #include "hdmicablestateconnected.h"
    28 #include "tvoutconfigforhdmi.h"
    28 #include "tvoutconfigforhdmi.h"
    29 #include "edidhandler.h"
    29 #include "edidhandler.h"
    30 #include "trace.h"
    30 #include "trace.h"
       
    31 #include <centralrepository.h>
       
    32 #include <accessoriescrkeys.h>
       
    33 #include <tvoutconfig.h>
    31 
    34 
    32 
    35 
    33 
    36 
    34 
    37 
    35 // ======== LOCAL FUNCTIONS ========
    38 // ======== LOCAL FUNCTIONS ========
    75     if ( iTVOutConfigForSettingChanges )
    78     if ( iTVOutConfigForSettingChanges )
    76         {
    79         {
    77         iTVOutConfigForSettingChanges->Cancel();
    80         iTVOutConfigForSettingChanges->Cancel();
    78         delete iTVOutConfigForSettingChanges;
    81         delete iTVOutConfigForSettingChanges;
    79         }
    82         }
    80     }
    83     if ( iCRWatchForVOverScan )
    81 
    84         {
       
    85         iCRWatchForVOverScan->Cancel();
       
    86         delete iCRWatchForVOverScan;        
       
    87         }
       
    88     }
       
    89 
       
    90 // ---------------------------------------------------------------------------
       
    91 // From MCentralRepositoryObserver.
       
    92 // ---------------------------------------------------------------------------
       
    93 //
       
    94 void CHDMICableStateConnected::CentRepKeyChanged(
       
    95         TUid    aRepositoryId,
       
    96         TUint32 aId )
       
    97     {
       
    98     FUNC_LOG;
       
    99     if ( KCRUidTvoutSettings == aRepositoryId )
       
   100         {
       
   101         if ( KSettingsTvoutVerticalOverscan == aId  )
       
   102             {            
       
   103 			INFO("Cenrep Value Changed");
       
   104 			if( iEDIDHandler.UpdateOverscanValues() )
       
   105 				{
       
   106 				INFO( "There is a real change" );
       
   107             	Input( EPDEIfCentralRepositoryWatch, EPDEIfCentralRepositoryWatchEventKeyChanged );
       
   108 				}
       
   109             }
       
   110         else
       
   111             {
       
   112             INFO_1("Unexpected CR key ID, aId 0x%x", aId );            
       
   113             }       
       
   114         }
       
   115     else
       
   116         {
       
   117         INFO_1("Unexpected Central Repository ID, aRepositoryId 0x%x", aRepositoryId);
       
   118         }
       
   119 
       
   120     }
       
   121 
       
   122 // ---------------------------------------------------------------------------
       
   123 // From MCentralRepositoryObserver.
       
   124 // ---------------------------------------------------------------------------
       
   125 //
       
   126 void CHDMICableStateConnected::CentRepGetKeyValueFailed(
       
   127         TUid    aRepositoryId,
       
   128         TUint32 aId,
       
   129         TInt    aError )
       
   130     {
       
   131     FUNC_LOG;
       
   132     // Make use of aError argument top get rid of compiler warning.
       
   133     TInt error( aError );
       
   134     if ( ( KCRUidTvoutSettings == aRepositoryId ) && ( KErrNone != error ) )
       
   135         {
       
   136         if ( KSettingsTvoutVerticalOverscan == aId  )
       
   137             {
       
   138             INFO_1(" Getting KSettingsTvoutVerticalOverscan from CR failed, aError %d", error );                                    
       
   139             }
       
   140         else
       
   141             {
       
   142             INFO_1("Unexpected CR key ID, aId 0x%x", aId );            
       
   143             }       
       
   144         }
       
   145     else
       
   146         {
       
   147         INFO_1("Unexpected Central Repository ID, aRepositoryId 0x%x", aRepositoryId);
       
   148         }    
       
   149     }
    82 
   150 
    83 // ---------------------------------------------------------------------------
   151 // ---------------------------------------------------------------------------
    84 // From MFSMState.
   152 // From MFSMState.
    85 // ---------------------------------------------------------------------------
   153 // ---------------------------------------------------------------------------
    86 //
   154 //
    87 void CHDMICableStateConnected::Enter( )
   155 void CHDMICableStateConnected::Enter( )
    88     {
   156     {
    89     FUNC_LOG;
   157     FUNC_LOG;
    90     TInt retVal( KErrNone );
   158     TInt retVal( KErrNone );
       
   159 	
       
   160 	// Get the current overscan value
       
   161 	iEDIDHandler.UpdateOverscanValues();
       
   162 	iEDIDHandler.GetCurrentOverscanValue( iHOverscanValue, iVOverscanValue );
       
   163 	
    91     iCopyProtectListenFailCounter.iCount = 0;
   164     iCopyProtectListenFailCounter.iCount = 0;
    92     iTVOutConfigForCopyProtect->ResetLatestRecordedCopyProtectionStatus();
   165     iTVOutConfigForCopyProtect->ResetLatestRecordedCopyProtectionStatus();
    93     retVal = iEDIDHandler.FetchEDIDData();
   166     retVal = iEDIDHandler.FetchEDIDData();
    94     if ( KErrNone != retVal )
   167     if ( KErrNone != retVal )
    95         {
   168         {
   328                         iTVOutConfigForSettingChanges->Cancel();
   401                         iTVOutConfigForSettingChanges->Cancel();
   329                         iHDMICableStatusFSM.Transit( EHDMICableStateRejected );         
   402                         iHDMICableStatusFSM.Transit( EHDMICableStateRejected );         
   330                         }
   403                         }
   331                     else
   404                     else
   332                         {
   405                         {
       
   406 						// Update the current overscan value
       
   407 						iEDIDHandler.GetCurrentOverscanValue( iHOverscanValue, iVOverscanValue );
       
   408 						
   333                         TFSMEventId event = iTVOutConfigForHDMI.ListenHDMICableStatusIfNoMissedEvents();
   409                         TFSMEventId event = iTVOutConfigForHDMI.ListenHDMICableStatusIfNoMissedEvents();
   334                         if ( EIfTVOutConfigEventCableDisconnected == event )
   410                         if ( EIfTVOutConfigEventCableDisconnected == event )
   335                             {
   411                             {
   336                             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!" );        
   337                             iTVOutConfigForSettingChanges->Cancel();
   413                             iTVOutConfigForSettingChanges->Cancel();
   449                 iTVOutConfigForHDMI.Disable();            
   525                 iTVOutConfigForHDMI.Disable();            
   450                 }
   526                 }
   451             else
   527             else
   452                 {
   528                 {
   453                 iSubState = ESubStateConnected;
   529                 iSubState = ESubStateConnected;
       
   530 
   454                 TRAPD( err, iHDMICableStatusFSM.SettingsChangedL() );
   531                 TRAPD( err, iHDMICableStatusFSM.SettingsChangedL() );
   455                 if ( KErrNone != err )
   532                 if ( KErrNone != err )
   456                     {
   533                     {
   457                     INFO_1( "iHDMICableStatusFSM.SettingsChangedL() failed, error code %i", err ); 
   534                     INFO_1( "iHDMICableStatusFSM.SettingsChangedL() failed, error code %i", err ); 
   458                     }
   535                     }
   459                 ListenCopyProtectionStatusChanges();
   536                 ListenCopyProtectionStatusChanges();
   460                 iTVOutConfigForSettingChanges->ListenSettingsChanges();
   537                 iTVOutConfigForSettingChanges->ListenSettingsChanges();
       
   538 				iCRWatchForVOverScan->Watch();
   461                 }
   539                 }
   462             }
   540             }
   463         else if ( EIfTVOutConfigEventEnableFailed == aEvent )
   541         else if ( EIfTVOutConfigEventEnableFailed == aEvent )
   464             {
   542             {
   465             INFO( "Event: EIfTVOutConfigEventEnableFailed" );        
   543             INFO( "Event: EIfTVOutConfigEventEnableFailed" );        
   498         if ( EIfTVOutConfigEventDisabled == aEvent )
   576         if ( EIfTVOutConfigEventDisabled == aEvent )
   499             {
   577             {
   500             INFO( "Event: EIfTVOutConfigEventDisabled" );
   578             INFO( "Event: EIfTVOutConfigEventDisabled" );
   501             iSubState = ESubStateIdlingDisconnectAccessory;
   579             iSubState = ESubStateIdlingDisconnectAccessory;
   502             iAccessoryControlIf.DisconnectAccessory();                    
   580             iAccessoryControlIf.DisconnectAccessory();                    
       
   581 			ClearAvailableTvOutConfig();
   503             }
   582             }
   504         else if ( EIfTVOutConfigEventDisableFailed == aEvent )
   583         else if ( EIfTVOutConfigEventDisableFailed == aEvent )
   505             {
   584             {
   506             INFO( "Event: EIfTVOutConfigEventDisableFailed" );        
   585             INFO( "Event: EIfTVOutConfigEventDisableFailed" );        
   507             iSubState = ESubStateIdlingDisconnectAccessory;
   586             iSubState = ESubStateIdlingDisconnectAccessory;
   508             iAccessoryControlIf.DisconnectAccessory();                    
   587             iAccessoryControlIf.DisconnectAccessory();                    
       
   588 			ClearAvailableTvOutConfig();
   509             }
   589             }
   510         else
   590         else
   511             {
   591             {
   512             INFO_1( "Unknown/unexpected Event Id: %i", aEvent );        
   592             INFO_1( "Unknown/unexpected Event Id: %i", aEvent );        
   513             }
   593             }
   630             else
   710             else
   631                 {
   711                 {
   632                 iSubState = ESubStateConnected;
   712                 iSubState = ESubStateConnected;
   633                 ListenCopyProtectionStatusChanges();
   713                 ListenCopyProtectionStatusChanges();
   634                 iTVOutConfigForSettingChanges->ListenSettingsChanges();
   714                 iTVOutConfigForSettingChanges->ListenSettingsChanges();
       
   715 				iCRWatchForVOverScan->Watch();				
   635                 }
   716                 }
   636             }
   717             }
   637         else if ( EPDEIfAccessoryControlEventConnectFailed == aEvent )
   718         else if ( EPDEIfAccessoryControlEventConnectFailed == aEvent )
   638             {
   719             {
   639             INFO( "Event: EPDEIfAccessoryControlEventConnectFailed" ); 
   720             INFO( "Event: EPDEIfAccessoryControlEventConnectFailed" ); 
   778                 INFO( "Event: EIfTVOutConfigEventCableDisconnected occurred while not listening" );
   859                 INFO( "Event: EIfTVOutConfigEventCableDisconnected occurred while not listening" );
   779                 // Stop listening Copy Protection status
   860                 // Stop listening Copy Protection status
   780                 iTVOutConfigForCopyProtect->Cancel();
   861                 iTVOutConfigForCopyProtect->Cancel();
   781                 // Stop listen setting changes
   862                 // Stop listen setting changes
   782                 iTVOutConfigForSettingChanges->Cancel();
   863                 iTVOutConfigForSettingChanges->Cancel();
       
   864 				iCRWatchForVOverScan->Cancel();
   783                 iSubState = ESubStateIdlingDisable;
   865                 iSubState = ESubStateIdlingDisable;
   784                 iTVOutConfigForHDMI.Disable();            
   866                 iTVOutConfigForHDMI.Disable();            
   785                 }
   867                 }
   786              }
   868              }
   787         else if ( EIfTVOutConfigEventCableDisconnected == aEvent )
   869         else if ( EIfTVOutConfigEventCableDisconnected == aEvent )
   790             iSubState = ESubStateIdlingDisable;
   872             iSubState = ESubStateIdlingDisable;
   791             // Stop listening Copy Protection status
   873             // Stop listening Copy Protection status
   792             iTVOutConfigForCopyProtect->Cancel();
   874             iTVOutConfigForCopyProtect->Cancel();
   793             // Stop listen setting changes
   875             // Stop listen setting changes
   794             iTVOutConfigForSettingChanges->Cancel();
   876             iTVOutConfigForSettingChanges->Cancel();
       
   877 			iCRWatchForVOverScan->Cancel();
   795             // Disable tv out
   878             // Disable tv out
   796             iTVOutConfigForHDMI.Disable();            
   879             iTVOutConfigForHDMI.Disable();            
   797             }
   880             }
   798         else if ( EIfTVOutConfigEventCableStatusListenFailed == aEvent )
   881         else if ( EIfTVOutConfigEventCableStatusListenFailed == aEvent )
   799             {
   882             {
   806                 iCableStatusListenFailCounter.iCounter = 0;
   889                 iCableStatusListenFailCounter.iCounter = 0;
   807                 // Stop listening Copy Protection status
   890                 // Stop listening Copy Protection status
   808                 iTVOutConfigForCopyProtect->Cancel();
   891                 iTVOutConfigForCopyProtect->Cancel();
   809                 // Stop listen setting changes
   892                 // Stop listen setting changes
   810                 iTVOutConfigForSettingChanges->Cancel();
   893                 iTVOutConfigForSettingChanges->Cancel();
       
   894 				iCRWatchForVOverScan->Cancel();
   811                 iTVOutConfigForHDMI.Disable();                       
   895                 iTVOutConfigForHDMI.Disable();                       
   812                 }
   896                 }
   813             else
   897             else
   814                 {
   898                 {
   815                 // Try once again
   899                 // Try once again
   819                     INFO( "Event: EIfTVOutConfigEventCableDisconnected occurred while not listening" );
   903                     INFO( "Event: EIfTVOutConfigEventCableDisconnected occurred while not listening" );
   820                     // Stop listening Copy Protection status
   904                     // Stop listening Copy Protection status
   821                     iTVOutConfigForCopyProtect->Cancel();
   905                     iTVOutConfigForCopyProtect->Cancel();
   822                     // Stop listen setting changes
   906                     // Stop listen setting changes
   823                     iTVOutConfigForSettingChanges->Cancel();
   907                     iTVOutConfigForSettingChanges->Cancel();
       
   908 					iCRWatchForVOverScan->Cancel();
   824                     iSubState = ESubStateIdlingDisable;
   909                     iSubState = ESubStateIdlingDisable;
   825                     iTVOutConfigForHDMI.Disable();            
   910                     iTVOutConfigForHDMI.Disable();            
   826                     }
   911                     }
   827                 }
   912                 }
   828             }
   913             }
   849                 iCopyProtectListenFailCounter.iCount = 0;
   934                 iCopyProtectListenFailCounter.iCount = 0;
   850                 // Stop listening cable status changes while disabling.
   935                 // Stop listening cable status changes while disabling.
   851                 iTVOutConfigForHDMI.Cancel();
   936                 iTVOutConfigForHDMI.Cancel();
   852                 // Stop listening Copy Protection status
   937                 // Stop listening Copy Protection status
   853                 iTVOutConfigForCopyProtect->Cancel();
   938                 iTVOutConfigForCopyProtect->Cancel();
       
   939 				iCRWatchForVOverScan->Cancel();
   854                 iSubState = ESubStateRejectingDisable;
   940                 iSubState = ESubStateRejectingDisable;
   855                 iTVOutConfigForHDMI.Disable();            
   941                 iTVOutConfigForHDMI.Disable();            
   856                 }
   942                 }
   857             }
   943             }
   858         else if ( EIfTVOutConfigEventSettingsChanged == aEvent )
   944         else if ( EIfTVOutConfigEventSettingsChanged == aEvent )
   860             INFO( "Event: EIfTVOutConfigEventSettingsChanged" );
   946             INFO( "Event: EIfTVOutConfigEventSettingsChanged" );
   861             // Stop listening cable connection status
   947             // Stop listening cable connection status
   862             iTVOutConfigForHDMI.Cancel();
   948             iTVOutConfigForHDMI.Cancel();
   863             // Stop listening Copy Protection status
   949             // Stop listening Copy Protection status
   864             iTVOutConfigForCopyProtect->Cancel();
   950             iTVOutConfigForCopyProtect->Cancel();
       
   951 			iCRWatchForVOverScan->Cancel();
   865             if ( iTVOutConfigForHDMI.GetTvOutConfig()->Enabled() )
   952             if ( iTVOutConfigForHDMI.GetTvOutConfig()->Enabled() )
   866                 {
   953                 {
   867                 iSubState = ESubStateResettingDisable;
   954                 iSubState = ESubStateResettingDisable;
   868                 iTVOutConfigForHDMI.Disable();
   955                 iTVOutConfigForHDMI.Disable();
   869                 }
   956                 }
   871                 {
   958                 {
   872                 iSubState = ESubStateResettingEnable;
   959                 iSubState = ESubStateResettingEnable;
   873                 iTVOutConfigForHDMI.Enable();                
   960                 iTVOutConfigForHDMI.Enable();                
   874                 }
   961                 }
   875             }
   962             }
   876         else if ( EIfTVOutConfigEventSettingsChangesListenStarted )
   963         else if ( EIfTVOutConfigEventSettingsChangesListenStarted == aEvent )
   877             {
   964             {
   878             INFO( "Event: EIfTVOutConfigEventSettingsChangesListenStarted" );
   965             INFO( "Event: EIfTVOutConfigEventSettingsChangesListenStarted" );
   879             // 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 				}
   880             }
   974             }
   881         else if ( EIfTVOutConfigEventSettingsChangesListenFailed == aEvent )
   975         else if ( EIfTVOutConfigEventSettingsChangesListenFailed == aEvent )
   882             {
   976             {
   883             INFO( "Event: EIfTVOutConfigEventSettingsChangesListenFailed" );
   977             INFO( "Event: EIfTVOutConfigEventSettingsChangesListenFailed" );
   884             INFO( "Going to state <Rejected> since setting changes listening failed!" );        
   978             INFO( "Going to state <Rejected> since setting changes listening failed!" );        
   885             iSubState = ESubStateRejectingDisable;
   979             iSubState = ESubStateRejectingDisable;
   886             // Stop listening cable connection status
   980             // Stop listening cable connection status
   887             iTVOutConfigForHDMI.Cancel();
   981             iTVOutConfigForHDMI.Cancel();
   888             // Stop listening Copy Protection status
   982             // Stop listening Copy Protection status
   889             iTVOutConfigForCopyProtect->Cancel();
   983             iTVOutConfigForCopyProtect->Cancel();
       
   984 			iCRWatchForVOverScan->Cancel();
   890             iTVOutConfigForHDMI.Disable();            
   985             iTVOutConfigForHDMI.Disable();            
   891             }
   986             }
   892         else
   987         else
   893             {
   988             {
   894             INFO_1( "Unknown/unexpected Event Id: %i", aEvent );        
   989             INFO_1( "Unknown/unexpected Event Id: %i", aEvent );        
   895             }
   990             }
   896         break;
   991         break;
   897         }
   992         }
       
   993     case EPDEIfCentralRepositoryWatch:
       
   994         {       
       
   995         INFO( "Interface: EPDEIfCentralRepositoryWatch" );
       
   996         if ( EPDEIfCentralRepositoryWatchEventKeyChanged == aEvent )
       
   997             {
       
   998             INFO( "Event: EPDEIfCentralRepositoryWatchEventKeyChanged" );
       
   999 			
       
  1000 			// Get the available config
       
  1001 			THdmiDviTimings curConfig;
       
  1002 			
       
  1003 			iTVOutConfigForHDMI.GetTvOutConfig()->GetConfig( curConfig );
       
  1004 
       
  1005 			if( (TTvSettings::EHDMI == curConfig.iConnector) && (!curConfig.iUnderscanEnabled) )
       
  1006 				{									
       
  1007 				
       
  1008 				TInt retVal = iEDIDHandler.SetVideoParameters();
       
  1009 				if ( KErrNone != retVal )
       
  1010 					{
       
  1011 					INFO( "Going to state <Rejected> since video parameter setting failed!" );		  
       
  1012 					iTVOutConfigForSettingChanges->Cancel();
       
  1013 					iCRWatchForVOverScan->Cancel();
       
  1014 					iSubState = ESubStateIdlingDisable;
       
  1015 					iTVOutConfigForHDMI.Disable();			  
       
  1016 					}
       
  1017 				else
       
  1018 					{
       
  1019 					// Update the current overscan value
       
  1020 					iEDIDHandler.GetCurrentOverscanValue( iHOverscanValue, iVOverscanValue );
       
  1021 					
       
  1022 					TFSMEventId event = iTVOutConfigForHDMI.ListenHDMICableStatusIfNoMissedEvents();
       
  1023 					if ( EIfTVOutConfigEventCableDisconnected == event )
       
  1024 						{
       
  1025 						INFO( "Retreating back to <Idle> since cable was disconnected while not listening!" );		  
       
  1026 						iTVOutConfigForSettingChanges->Cancel();
       
  1027 						iCRWatchForVOverScan->Cancel();
       
  1028 						iSubState = ESubStateIdlingDisable;
       
  1029 						iTVOutConfigForHDMI.Disable();			  
       
  1030 						}
       
  1031 					}				
       
  1032 				}			
       
  1033             }
       
  1034         else
       
  1035             {
       
  1036             INFO_1( "Unknown Event Id: %i", aEvent );        
       
  1037             }
       
  1038         break;
       
  1039         }       
   898     default:
  1040     default:
   899         {
  1041         {
   900         INFO_1( "Event received from unknown/unexpected interface Id: %i", aInterfaceId );        
  1042         INFO_1( "Event received from unknown/unexpected interface Id: %i", aInterfaceId );        
   901         break;
  1043         break;
   902         }
  1044         }
   922             INFO( "Event: EIfTVOutConfigEventCableConnected" );        
  1064             INFO( "Event: EIfTVOutConfigEventCableConnected" );        
   923             TFSMEventId event = iTVOutConfigForHDMI.ListenHDMICableStatusIfNoMissedEvents();
  1065             TFSMEventId event = iTVOutConfigForHDMI.ListenHDMICableStatusIfNoMissedEvents();
   924             if ( EIfTVOutConfigEventCableDisconnected == event )
  1066             if ( EIfTVOutConfigEventCableDisconnected == event )
   925                 {
  1067                 {
   926                 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
   927                 iTVOutConfigForSettingChanges->Cancel();
  1073                 iTVOutConfigForSettingChanges->Cancel();
   928                 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 					}
   929                 }            
  1085                 }            
   930              }
  1086              }
   931         else if ( EIfTVOutConfigEventCableDisconnected == aEvent )
  1087         else if ( EIfTVOutConfigEventCableDisconnected == aEvent )
   932             {
  1088             {
   933             INFO( "Event: EIfTVOutConfigEventCableDisconnected" );
  1089             INFO( "Event: EIfTVOutConfigEventCableDisconnected" );
   934             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!" );
   935             iTVOutConfigForSettingChanges->Cancel();
  1091 			// Stop listening Copy Protection status
   936             iHDMICableStatusFSM.Transit( EHDMICableStateIdle );         
  1092 			iTVOutConfigForCopyProtect->Cancel();
       
  1093 			// Stop listen setting changes
       
  1094 			iTVOutConfigForSettingChanges->Cancel();
       
  1095 			iCRWatchForVOverScan->Cancel();
       
  1096 			
       
  1097 			if( iTVOutConfigForHDMI.GetTvOutConfig()->Enabled() )
       
  1098 				{
       
  1099 				iSubState = ESubStateIdlingDisable;
       
  1100 				iTVOutConfigForHDMI.Disable();			  
       
  1101 				}
       
  1102 			else
       
  1103 				{
       
  1104 				iHDMICableStatusFSM.Transit( EHDMICableStateIdle ); 		
       
  1105 				}
   937             }
  1106             }
   938         else if ( EIfTVOutConfigEventSettingsChanged == aEvent )
  1107         else if ( EIfTVOutConfigEventSettingsChanged == aEvent )
   939             {
  1108             {
   940             INFO( "Event: EIfTVOutConfigEventSettingsChanged" );
  1109             INFO( "Event: EIfTVOutConfigEventSettingsChanged" );
   941             iSubState = ESubStateEnable;
  1110             iSubState = ESubStateEnable;
   943             }
  1112             }
   944         else if ( EIfTVOutConfigEventSettingsChangesListenFailed == aEvent )
  1113         else if ( EIfTVOutConfigEventSettingsChangesListenFailed == aEvent )
   945             {
  1114             {
   946             INFO( "Event: EIfTVOutConfigEventSettingsChangesListenFailed" );
  1115             INFO( "Event: EIfTVOutConfigEventSettingsChangesListenFailed" );
   947             INFO( "Going to state <Rejected> since setting changes listening failed!" );        
  1116             INFO( "Going to state <Rejected> since setting changes listening failed!" );        
   948             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 				}
   949             }
  1131             }
   950         else
  1132         else
   951             {
  1133             {
   952             INFO_1( "Unknown/unexpected Event Id: %i", aEvent );        
  1134             INFO_1( "Unknown/unexpected Event Id: %i", aEvent );        
   953             }
  1135             }
   960         }
  1142         }
   961     }
  1143     }
   962     }
  1144     }
   963 
  1145 
   964 // ---------------------------------------------------------------------------
  1146 // ---------------------------------------------------------------------------
       
  1147 // ClearAvailableConfig
       
  1148 // ---------------------------------------------------------------------------
       
  1149 //
       
  1150 void CHDMICableStateConnected::ClearAvailableTvOutConfig()
       
  1151     {
       
  1152     FUNC_LOG;
       
  1153     
       
  1154     if( iTVOutConfigForHDMI.GetTvOutConfig() )
       
  1155         {
       
  1156         RArray<THdmiDviTimings> HdmiSettingsArray;        
       
  1157     	RArray<TTvSettings> TvSettingsArray;       
       
  1158     
       
  1159         TInt err = iTVOutConfigForHDMI.GetTvOutConfig()->SetAvailableTvConfigList( TvSettingsArray, HdmiSettingsArray );
       
  1160         
       
  1161         HdmiSettingsArray.Close();
       
  1162     	TvSettingsArray.Close();
       
  1163         }              
       
  1164     }
       
  1165 
       
  1166 
       
  1167 // ---------------------------------------------------------------------------
   965 // ConstructL
  1168 // ConstructL
   966 // ---------------------------------------------------------------------------
  1169 // ---------------------------------------------------------------------------
   967 //
  1170 //
   968 void CHDMICableStateConnected::ConstructL()
  1171 void CHDMICableStateConnected::ConstructL()
   969     {
  1172     {
   970     FUNC_LOG;
  1173     FUNC_LOG;
       
  1174     // Create Central Repository Watchers
       
  1175     iCRWatchForVOverScan = CCentralRepositoryWatch::NewL(*this, KCRUidTvoutSettings, KSettingsTvoutVerticalOverscan );
       
  1176 	
   971     iTVOutConfigForCopyProtect = CTVOutConfigForHDMI::NewL( iHDMICableStatusFSM );
  1177     iTVOutConfigForCopyProtect = CTVOutConfigForHDMI::NewL( iHDMICableStatusFSM );
   972     iTVOutConfigForSettingChanges = CTVOutConfigForHDMI::NewL( iHDMICableStatusFSM );
  1178     iTVOutConfigForSettingChanges = CTVOutConfigForHDMI::NewL( iHDMICableStatusFSM );	
   973     }
  1179     }
   974 
  1180 
   975 
  1181 
   976 // ---------------------------------------------------------------------------
  1182 // ---------------------------------------------------------------------------
   977 //  C++ constructor
  1183 //  C++ constructor