--- a/tvout/tvoutengine/src/glxtvconnectionmonitor.cpp Fri May 14 15:52:22 2010 +0300
+++ b/tvout/tvoutengine/src/glxtvconnectionmonitor.cpp Thu May 27 12:51:42 2010 +0300
@@ -17,10 +17,6 @@
-/**
- * @internal reviewed 24/08/2007 by D Holland
- */
-
// CLASS HEADER
#include "glxtvconnectionmonitor.h"
@@ -69,17 +65,15 @@
// Default C++ constructor
//-----------------------------------------------------------------------------
//
-CGlxTvConnectionMonitor::CGlxTvConnectionMonitor
- ( MGlxTvConnectionObserver& aConnectionObserver )
- :CActive(EPriorityStandard),
- iConnectionObserver ( aConnectionObserver ),
- iTvOutConnectionState(EFalse),
- iHDMIConnectionState(EFalse)
+CGlxTvConnectionMonitor::CGlxTvConnectionMonitor(
+ MGlxTvConnectionObserver& aConnectionObserver) :
+ CActive(EPriorityStandard), iConnectionObserver(aConnectionObserver),
+ iIsTvOutConnected(EFalse), iIsHDMIConnected(EFalse)
- {
- TRACER("CGlxTvConnectionMonitor");
- CActiveScheduler::Add( this );
- }
+ {
+ TRACER("CGlxTvConnectionMonitor");
+ CActiveScheduler::Add(this);
+ }
//-----------------------------------------------------------------------------
@@ -146,8 +140,8 @@
TBool CGlxTvConnectionMonitor::IsConnected() const
{
TRACER("CGlxTvConnectionMonitor::IsConnected");
- GLX_LOG_INFO1("CGlxTvConnectionMonitor::IsConnected iTvOutConnectionState=%d",iTvOutConnectionState);
- return iTvOutConnectionState;
+ GLX_LOG_INFO1("CGlxTvConnectionMonitor::IsConnected iIsTvOutConnected=%d",iIsTvOutConnected);
+ return iIsTvOutConnected;
}
//-----------------------------------------------------------------------------
@@ -158,8 +152,8 @@
TBool CGlxTvConnectionMonitor::IsHDMIConnected() const
{
TRACER("CGlxTvConnectionMonitor::IsHDMIConnected");
- GLX_LOG_INFO1("CGlxTvConnectionMonitor::IsHDMIConnected iHDMIConnectionState=%d",iHDMIConnectionState);
- return iHDMIConnectionState;
+ GLX_LOG_INFO1("CGlxTvConnectionMonitor::IsHDMIConnected iIsHDMIConnected=%d",iIsHDMIConnected);
+ return iIsHDMIConnected;
}
//-----------------------------------------------------------------------------
@@ -181,21 +175,22 @@
//-----------------------------------------------------------------------------
//
void CGlxTvConnectionMonitor::IssueNotificationL()
- {
- TRACER("CGlxTvConnectionMonitor::IssueNotificationL");
- TBool previousTvState = iTvOutConnectionState;
- TBool previousHDMIState = iHDMIConnectionState;
-
+ {
+ TRACER("CGlxTvConnectionMonitor::IssueNotificationL");
+ TBool previousTvState = iIsTvOutConnected;
+ TBool previousHDMIState = iIsHDMIConnected;
+
// 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 !=iTvOutConnectionState || previousHDMIState != iHDMIConnectionState)
- {
- GLX_LOG_INFO("CGlxTvConnectionMonitor::IssueNotificationL - Connection Altered");
- iConnectionObserver.HandleTvConnectionStatusChangedL();
- }
+ if (previousTvState != iIsTvOutConnected || previousHDMIState
+ != iIsHDMIConnected)
+ {
+ GLX_LOG_INFO("CGlxTvConnectionMonitor::IssueNotificationL - Connection Altered");
+ iConnectionObserver.HandleTvConnectionStatusChangedL();
+ }
}
//-----------------------------------------------------------------------------
@@ -207,47 +202,64 @@
TRACER("CGlxTvConnectionMonitor::UpdateConnectionStatusL()");
GLX_LOG_INFO2("CGlxTvConnectionMonitor::UpdateConnectionStatusL previousTvState = %d , previousHDMIState = %d",
- iTvOutConnectionState,iHDMIConnectionState);
+ iIsTvOutConnected,iIsHDMIConnected);
+
+ // reset the states
+ iIsHDMIConnected = EFalse;
+ iIsTvOutConnected = EFalse;
//gets the TV status in to the iCurrentAccArray and haves the Latest Accesory in 0-index
User::LeaveIfError(iTvAccCon.GetAccessoryConnectionStatus(iCurrentAccArray));
CAccPolSubblockNameArray* nameArray = CAccPolSubblockNameArray::NewL();
CleanupStack::PushL(nameArray);
+
// Get the number of currently connected accessories
// Loop through each connected accessory looking for
// the desired capabilities
//
const TInt count = iCurrentAccArray.Count();
GLX_LOG_INFO1("CGlxTvConnectionMonitor::UpdateConnectionStatusL current count value is %d",count);
- for (TInt index = 0; index <count; index++)
+ for (TInt index = 0; index < count; index++)
{
- TAccPolGenericID genId = iCurrentAccArray.GetGenericIDL(index);
- // Get all supported capabilities for this connected accessory.
- iTvAccCon.GetSubblockNameArrayL(genId, *nameArray);
+ const TAccPolGenericID genId = iCurrentAccArray.GetGenericIDL(index);
// Check if this connected accessory supports TV-Out capabality.
GLX_LOG_INFO1("CGlxTvConnectionMonitor::UpdateConnectionStatusL current index value is %d",index);
- if (nameArray->HasName(KAccVideoOut))
+ GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL Video Accessory Supported");
+ TAccPolNameRecord nameRecord;
+ nameRecord.SetNameL(KAccVideoOut);
+
+ if (genId.DeviceTypeCaps( KDTAVDevice ) &&
+ genId.PhysicalConnectionCaps( KPCHDMI ))
{
- GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL Video Accessory Supported");
- TAccPolNameRecord nameRecord;
- nameRecord.SetNameL(KAccVideoOut);
TAccValueTypeTInt value;
- iTvAccCon.GetValueL(genId, nameRecord, value);
- if (value.iValue == EAccVideoOutEHDMI)
+ TInt err = iTvAccCon.GetValueL(genId, nameRecord, value);
+ if (err ==KErrNone)
{
- GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL HDMI is connected");
- iHDMIConnectionState = ETrue;
+ if (value.iValue == EAccVideoOutEHDMI)
+ {
+ GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL HDMI is connected");
+ iIsHDMIConnected = ETrue;
+ }
}
- else if (value.iValue == EAccVideoOutCVideo)
+ }
+ else if (genId.DeviceTypeCaps( KDTAVDevice ) &&
+ genId.PhysicalConnectionCaps( KPCWired ))
+ {
+ TAccValueTypeTInt value;
+ TInt err = iTvAccCon.GetValueL(genId, nameRecord, value);
+ if (err ==KErrNone)
{
- GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL TV is connected");
- iTvOutConnectionState = ETrue;
+ if (value.iValue == EAccVideoOutCVideo)
+ {
+ GLX_LOG_INFO("CGlxTvConnectionMonitor::UpdateConnectionStatusL Tv is connected");
+ iIsTvOutConnected = ETrue;
+ }
}
}
}
CleanupStack::PopAndDestroy(nameArray);
GLX_LOG_INFO2("CGlxTvConnectionMonitor::UpdateConnectionStatusL CurrentTvState = %d , CurrentHDMIState = %d",
- iTvOutConnectionState,iHDMIConnectionState);
+ iIsTvOutConnected,iIsHDMIConnected);
}