tvout/tvoutengine/src/glxtvconnectionmonitor.cpp
changeset 43 72396548277c
parent 42 5e1df1b52eb3
child 52 a3a4c0de738e
equal deleted inserted replaced
42:5e1df1b52eb3 43:72396548277c
    66 //-----------------------------------------------------------------------------
    66 //-----------------------------------------------------------------------------
    67 //
    67 //
    68 CGlxTvConnectionMonitor::CGlxTvConnectionMonitor(
    68 CGlxTvConnectionMonitor::CGlxTvConnectionMonitor(
    69 		MGlxTvConnectionObserver& aConnectionObserver) :
    69 		MGlxTvConnectionObserver& aConnectionObserver) :
    70 	CActive(EPriorityStandard), iConnectionObserver(aConnectionObserver),
    70 	CActive(EPriorityStandard), iConnectionObserver(aConnectionObserver),
    71 			iIsTvOutConnected(EFalse), iIsHDMIConnected(EFalse)
    71 			iIsTvOutConnected(EFalse), iIsHDMIConnected(EFalse),
       
    72 			iIsHeadSetConnected(EFalse)
    72 
    73 
    73 	{
    74 	{
    74 	TRACER("CGlxTvConnectionMonitor");
    75 	TRACER("CGlxTvConnectionMonitor");
    75 	CActiveScheduler::Add(this);
    76 	CActiveScheduler::Add(this);
    76 	}
    77 	}
   177 void CGlxTvConnectionMonitor::IssueNotificationL()
   178 void CGlxTvConnectionMonitor::IssueNotificationL()
   178 	{
   179 	{
   179 	TRACER("CGlxTvConnectionMonitor::IssueNotificationL");
   180 	TRACER("CGlxTvConnectionMonitor::IssueNotificationL");
   180 	TBool previousTvState = iIsTvOutConnected;
   181 	TBool previousTvState = iIsTvOutConnected;
   181 	TBool previousHDMIState = iIsHDMIConnected;
   182 	TBool previousHDMIState = iIsHDMIConnected;
   182 
   183 	TBool previousHeadSetState = iIsHeadSetConnected;
       
   184 	TTvChangeType changeType = EDisconnected;
       
   185 	
   183 	// Update the connection status
   186 	// Update the connection status
   184 	UpdateConnectionStatusL();
   187 	UpdateConnectionStatusL();
   185 
   188 
   186 	// trigger tvstatus change only when there is actually a change the in the connection and not 
   189 	// trigger tvstatus change only when there is actually a change the in the connection and not 
   187 	// for spurious events
   190 	// for spurious events
   188 	if (previousTvState != iIsTvOutConnected || previousHDMIState
   191 	if (previousTvState != iIsTvOutConnected)
   189 			!= iIsHDMIConnected)
       
   190 		{
   192 		{
   191 		GLX_LOG_INFO("CGlxTvConnectionMonitor::IssueNotificationL - Connection Altered");
   193 		changeType = iIsTvOutConnected == EFalse ? EDisconnected : ETvConnectionChanged;
   192 		iConnectionObserver.HandleTvConnectionStatusChangedL();
   194 		GLX_LOG_INFO1("CGlxTvConnectionMonitor::IssueNotificationL - TVOut Connection Changed %d", changeType);
       
   195 		iConnectionObserver.HandleTvConnectionStatusChangedL(changeType);	
       
   196 		}
       
   197 	else if (previousHDMIState != iIsHDMIConnected)
       
   198 		{
       
   199 		changeType = iIsHDMIConnected == EFalse ? EDisconnected : ETvConnectionChanged;
       
   200 		GLX_LOG_INFO1("CGlxTvConnectionMonitor::IssueNotificationL - HDMI Connection Changed %d", changeType);
       
   201 		iConnectionObserver.HandleTvConnectionStatusChangedL(changeType);	
       
   202 		}
       
   203 	else if (previousHeadSetState != iIsHeadSetConnected)
       
   204 		{
       
   205 		changeType = iIsHeadSetConnected == EFalse ? EDisconnected : ETvConnectionChanged;
       
   206 		GLX_LOG_INFO1("CGlxTvConnectionMonitor::IssueNotificationL - Headset Connection Changed %d", changeType);
       
   207 		iConnectionObserver.HandleTvConnectionStatusChangedL(changeType);	
   193 		}
   208 		}
   194 	}
   209 	}
   195 
   210 
   196 //-----------------------------------------------------------------------------
   211 //-----------------------------------------------------------------------------
   197 // UpdateConnectionStatusL()
   212 // UpdateConnectionStatusL()
   199 //
   214 //
   200 void CGlxTvConnectionMonitor::UpdateConnectionStatusL()
   215 void CGlxTvConnectionMonitor::UpdateConnectionStatusL()
   201     {
   216     {
   202     TRACER("CGlxTvConnectionMonitor::UpdateConnectionStatusL()");
   217     TRACER("CGlxTvConnectionMonitor::UpdateConnectionStatusL()");
   203 
   218 
   204     GLX_LOG_INFO2("CGlxTvConnectionMonitor::UpdateConnectionStatusL previousTvState = %d , previousHDMIState = %d",
   219     GLX_LOG_INFO3("CGlxTvConnectionMonitor::UpdateConnectionStatusL previousTvState = %d , previousHDMIState = %d iIsHeadSetConnected=%d",
   205             iIsTvOutConnected,iIsHDMIConnected);
   220             iIsTvOutConnected,iIsHDMIConnected,iIsHeadSetConnected);
   206 
   221 
   207     // reset the states
   222     // reset the states
   208     iIsHDMIConnected = EFalse;
   223     iIsHDMIConnected = EFalse;
   209     iIsTvOutConnected = EFalse;
   224     iIsTvOutConnected = EFalse;
       
   225     iIsHeadSetConnected = EFalse;
   210 
   226 
   211     //gets the TV status in to the iCurrentAccArray and haves the Latest Accesory in 0-index
   227     //gets the TV status in to the iCurrentAccArray and haves the Latest Accesory in 0-index
   212     User::LeaveIfError(iTvAccCon.GetAccessoryConnectionStatus(iCurrentAccArray));
   228     User::LeaveIfError(iTvAccCon.GetAccessoryConnectionStatus(iCurrentAccArray));
   213 
   229 
   214     CAccPolSubblockNameArray* nameArray = CAccPolSubblockNameArray::NewL();
   230     CAccPolSubblockNameArray* nameArray = CAccPolSubblockNameArray::NewL();
   255                     GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL Tv is connected");
   271                     GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL Tv is connected");
   256                     iIsTvOutConnected = ETrue;
   272                     iIsTvOutConnected = ETrue;
   257                     }
   273                     }
   258                 }
   274                 }
   259             }
   275             }
   260         }
   276 		else if (genId.DeviceTypeCaps(KDTHeadset)
       
   277 				&& genId.PhysicalConnectionCaps(KPCWired))
       
   278 			{
       
   279 			GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL HeadSet connect");
       
   280 			iIsHeadSetConnected = ETrue;
       
   281 			}
       
   282 		}
   261     CleanupStack::PopAndDestroy(nameArray);
   283     CleanupStack::PopAndDestroy(nameArray);
   262 
   284 
   263     GLX_LOG_INFO2("CGlxTvConnectionMonitor::UpdateConnectionStatusL CurrentTvState = %d , CurrentHDMIState = %d",
   285     GLX_LOG_INFO3("CGlxTvConnectionMonitor::UpdateConnectionStatusL CurrentTvState = %d , CurrentHDMIState = %d, iIsHeadSetConnected=%d",
   264             iIsTvOutConnected,iIsHDMIConnected);
   286             iIsTvOutConnected,iIsHDMIConnected,iIsHeadSetConnected);
   265     }
   287     }