accessoryservices/pluggeddisplay/pluggeddisplayengine/src/hdmicablestateconnected.cpp
changeset 41 c87e5f80c17d
parent 35 f7565e9c9ce8
child 59 0f7422b6b602
equal deleted inserted replaced
35:f7565e9c9ce8 41:c87e5f80c17d
    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             }
   702             else
   710             else
   703                 {
   711                 {
   704                 iSubState = ESubStateConnected;
   712                 iSubState = ESubStateConnected;
   705                 ListenCopyProtectionStatusChanges();
   713                 ListenCopyProtectionStatusChanges();
   706                 iTVOutConfigForSettingChanges->ListenSettingsChanges();
   714                 iTVOutConfigForSettingChanges->ListenSettingsChanges();
   707 				iCRWatchForVOverScan->Watch();
   715 				iCRWatchForVOverScan->Watch();				
   708                 }
   716                 }
   709             }
   717             }
   710         else if ( EPDEIfAccessoryControlEventConnectFailed == aEvent )
   718         else if ( EPDEIfAccessoryControlEventConnectFailed == aEvent )
   711             {
   719             {
   712             INFO( "Event: EPDEIfAccessoryControlEventConnectFailed" ); 
   720             INFO( "Event: EPDEIfAccessoryControlEventConnectFailed" ); 
   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             }