tvout/tvoutengine/src/glxtvconnectionmonitor.cpp
changeset 36 6481344a6d67
parent 33 1ee2af37811f
child 52 a3a4c0de738e
--- a/tvout/tvoutengine/src/glxtvconnectionmonitor.cpp	Thu May 27 12:51:42 2010 +0300
+++ b/tvout/tvoutengine/src/glxtvconnectionmonitor.cpp	Fri Jun 11 13:38:23 2010 +0300
@@ -68,7 +68,8 @@
 CGlxTvConnectionMonitor::CGlxTvConnectionMonitor(
 		MGlxTvConnectionObserver& aConnectionObserver) :
 	CActive(EPriorityStandard), iConnectionObserver(aConnectionObserver),
-			iIsTvOutConnected(EFalse), iIsHDMIConnected(EFalse)
+			iIsTvOutConnected(EFalse), iIsHDMIConnected(EFalse),
+			iIsHeadSetConnected(EFalse)
 
 	{
 	TRACER("CGlxTvConnectionMonitor");
@@ -179,17 +180,31 @@
 	TRACER("CGlxTvConnectionMonitor::IssueNotificationL");
 	TBool previousTvState = iIsTvOutConnected;
 	TBool previousHDMIState = iIsHDMIConnected;
-
+	TBool previousHeadSetState = iIsHeadSetConnected;
+	TTvChangeType changeType = EDisconnected;
+	
 	// Update the connection status
 	UpdateConnectionStatusL();
 
 	// trigger tvstatus change only when there is actually a change the in the connection and not 
 	// for spurious events
-	if (previousTvState != iIsTvOutConnected || previousHDMIState
-			!= iIsHDMIConnected)
+	if (previousTvState != iIsTvOutConnected)
+		{
+		changeType = iIsTvOutConnected == EFalse ? EDisconnected : ETvConnectionChanged;
+		GLX_LOG_INFO1("CGlxTvConnectionMonitor::IssueNotificationL - TVOut Connection Changed %d", changeType);
+		iConnectionObserver.HandleTvConnectionStatusChangedL(changeType);	
+		}
+	else if (previousHDMIState != iIsHDMIConnected)
 		{
-		GLX_LOG_INFO("CGlxTvConnectionMonitor::IssueNotificationL - Connection Altered");
-		iConnectionObserver.HandleTvConnectionStatusChangedL();
+		changeType = iIsHDMIConnected == EFalse ? EDisconnected : ETvConnectionChanged;
+		GLX_LOG_INFO1("CGlxTvConnectionMonitor::IssueNotificationL - HDMI Connection Changed %d", changeType);
+		iConnectionObserver.HandleTvConnectionStatusChangedL(changeType);	
+		}
+	else if (previousHeadSetState != iIsHeadSetConnected)
+		{
+		changeType = iIsHeadSetConnected == EFalse ? EDisconnected : ETvConnectionChanged;
+		GLX_LOG_INFO1("CGlxTvConnectionMonitor::IssueNotificationL - Headset Connection Changed %d", changeType);
+		iConnectionObserver.HandleTvConnectionStatusChangedL(changeType);	
 		}
 	}
 
@@ -201,12 +216,13 @@
     {
     TRACER("CGlxTvConnectionMonitor::UpdateConnectionStatusL()");
 
-    GLX_LOG_INFO2("CGlxTvConnectionMonitor::UpdateConnectionStatusL previousTvState = %d , previousHDMIState = %d",
-            iIsTvOutConnected,iIsHDMIConnected);
+    GLX_LOG_INFO3("CGlxTvConnectionMonitor::UpdateConnectionStatusL previousTvState = %d , previousHDMIState = %d iIsHeadSetConnected=%d",
+            iIsTvOutConnected,iIsHDMIConnected,iIsHeadSetConnected);
 
     // reset the states
     iIsHDMIConnected = EFalse;
     iIsTvOutConnected = EFalse;
+    iIsHeadSetConnected = EFalse;
 
     //gets the TV status in to the iCurrentAccArray and haves the Latest Accesory in 0-index
     User::LeaveIfError(iTvAccCon.GetAccessoryConnectionStatus(iCurrentAccArray));
@@ -257,9 +273,15 @@
                     }
                 }
             }
-        }
+		else if (genId.DeviceTypeCaps(KDTHeadset)
+				&& genId.PhysicalConnectionCaps(KPCWired))
+			{
+			GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL HeadSet connect");
+			iIsHeadSetConnected = ETrue;
+			}
+		}
     CleanupStack::PopAndDestroy(nameArray);
 
-    GLX_LOG_INFO2("CGlxTvConnectionMonitor::UpdateConnectionStatusL CurrentTvState = %d , CurrentHDMIState = %d",
-            iIsTvOutConnected,iIsHDMIConnected);
+    GLX_LOG_INFO3("CGlxTvConnectionMonitor::UpdateConnectionStatusL CurrentTvState = %d , CurrentHDMIState = %d, iIsHeadSetConnected=%d",
+            iIsTvOutConnected,iIsHDMIConnected,iIsHeadSetConnected);
     }