mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/src/mmfmediaclientextdisplaytestprovider.cpp
changeset 4 9d4397b300d1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/tsrc/mmfintegrationtest/mmfmediaclienttestplugin/src/mmfmediaclientextdisplaytestprovider.cpp	Mon Oct 18 12:47:26 2010 +0100
@@ -0,0 +1,210 @@
+// Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+/**
+ @file
+ @internalComponent
+*/
+
+#include "mmfmediaclientextdisplaytestprovider.h"
+#include "mmfmediaclientextdisplaytesttrace.h"
+
+#include <f32file.h>
+#include <bautils.h>
+
+static const TInt KExternalDisplayTestNumber = 0;
+
+_LIT(KInitExtDisplayHDMI, "C:\\vclntavi\\InitExtDisplayHDMI.txt");
+_LIT(KInitExtDisplayAnalog, "C:\\vclntavi\\InitExtDisplayAnalog.txt");
+_LIT(KConnectExtDisplayOverHDMI, "C:\\vclntavi\\ConnectExtDisplayOverHDMI.txt");
+_LIT(KConnectExtDisplayOverAnalog, "C:\\vclntavi\\ConnectExtDisplayOverAnalog.txt");
+_LIT(KDisconnectExtDisplay, "C:\\vclntavi\\DisconnectExtDisplay.txt");
+
+CExtDisplayTestConnectionProvider* CExtDisplayTestConnectionProvider::NewL()
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::NewL +++");
+    CExtDisplayTestConnectionProvider* self = new(ELeave) CExtDisplayTestConnectionProvider();
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::NewL ---");
+    return self;
+    }
+
+CExtDisplayTestConnectionProvider::CExtDisplayTestConnectionProvider()
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::CExtDisplayTestConnectionProvider +++");
+    
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::CExtDisplayTestConnectionProvider ---");
+    }
+
+void CExtDisplayTestConnectionProvider::ConstructL()
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::ConstructL +++");
+    
+    ReadConnectionInfoL();
+    InitialiseConnectionChangeTimerL();
+   
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::ConstructL ---");
+    }
+
+CExtDisplayTestConnectionProvider::~CExtDisplayTestConnectionProvider()
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::~CExtDisplayTestConnectionProvider +++");
+    
+    if(iExtDisplayConnectionTimer != NULL)
+        {
+        iExtDisplayConnectionTimer->Cancel();
+        delete iExtDisplayConnectionTimer;
+        }
+    
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::~CExtDisplayTestConnectionProvider ---");
+    }
+
+TExtDisplayConnectionProviderConnType CExtDisplayTestConnectionProvider::ExtDisplayConnType()
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::ExtDisplayConnType +++");
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::ExtDisplayConnType ---");
+    return iInitialConnectionType;
+    }
+
+TInt CExtDisplayTestConnectionProvider::ExtDisplayId()
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::ExtDisplayId +++");
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::ExtDisplayId ---");
+    return KExternalDisplayTestNumber;
+    }
+
+void CExtDisplayTestConnectionProvider::SetExtDisplayConnectionProviderCallback(MExtDisplayConnectionProviderCallback& aCallback)
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::SetExtDisplayConnectionProviderCallback +++");
+    
+    iCallback = &aCallback;
+    
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::SetExtDisplayConnectionProviderCallback ---");
+    }
+
+void CExtDisplayTestConnectionProvider::ReadConnectionInfoL()
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::ReadConnectionInfoL +++");
+
+    RFs fs;
+    User::LeaveIfError(fs.Connect());
+    CleanupClosePushL(fs);
+
+    // determine initial connection type
+    if(BaflUtils::FileExists(fs, KInitExtDisplayHDMI))
+        {
+        iInitialConnectionType = EExtDisplayConnectionProviderConnTypeHdmi;
+        }
+    else if(BaflUtils::FileExists(fs, KInitExtDisplayAnalog))
+        {
+        iInitialConnectionType = EExtDisplayConnectionProviderConnTypeAnalog;
+        }
+    else
+        {
+        iInitialConnectionType = EExtDisplayConnectionProviderConnTypeDisconnected;
+        }
+
+    // determine change connection type
+    if(BaflUtils::FileExists(fs, KConnectExtDisplayOverHDMI))
+        {
+        iConnectionTypeToBeNotified = EExtDisplayConnectionProviderConnTypeHdmi;
+        }
+    else if(BaflUtils::FileExists(fs, KConnectExtDisplayOverAnalog))
+        {
+        iConnectionTypeToBeNotified = EExtDisplayConnectionProviderConnTypeAnalog;
+        }
+    else if(BaflUtils::FileExists(fs, KDisconnectExtDisplay))
+        {
+        iConnectionTypeToBeNotified = EExtDisplayConnectionProviderConnTypeDisconnected;
+        }
+    else
+        {
+        iConnectionTypeToBeNotified = iInitialConnectionType;
+        }
+
+    CleanupStack::PopAndDestroy(1, &fs);
+    
+    DEBUG_PRINTF3("CExtDisplayTestConnectionProvider::ReadConnectionInfoL Initial = %d, Next = %d",
+            iInitialConnectionType, iConnectionTypeToBeNotified);    
+    
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::ReadConnectionInfoL ---");
+    }
+
+void CExtDisplayTestConnectionProvider::InitialiseConnectionChangeTimerL()
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::InitialiseConnectionChangeTimerL +++");
+
+    if(iInitialConnectionType != iConnectionTypeToBeNotified)
+        {
+        iExtDisplayConnectionTimer = CExtDisplayConnectionTimer::NewL(this, 2000000);
+        iExtDisplayConnectionTimer->Start();
+        }
+    
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::InitialiseConnectionChangeTimerL ---");
+    }
+
+void CExtDisplayTestConnectionProvider::TimerExpired()
+    {
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::TimerExpired +++");
+
+    iCallback->MedcpcExtDisplayNotifyConnected(iConnectionTypeToBeNotified);
+    
+    DEBUG_PRINTF("CExtDisplayTestConnectionProvider::TimerExpired ---");
+    }
+
+
+CExtDisplayConnectionTimer* CExtDisplayConnectionTimer::NewL(CExtDisplayTestConnectionProvider* aParent, TTimeIntervalMicroSeconds32 aInterval)
+    {
+    DEBUG_PRINTF("CExtDisplayConnectionTimer::NewL +++");
+
+    CExtDisplayConnectionTimer* self = new (ELeave) CExtDisplayConnectionTimer(aParent, aInterval);
+    CleanupStack::PushL(self);
+    self->ConstructL(); // inherited
+    CleanupStack::Pop(self);
+
+    DEBUG_PRINTF("CExtDisplayConnectionTimer::NewL ---");
+    return self;    
+    }
+    
+CExtDisplayConnectionTimer::CExtDisplayConnectionTimer(CExtDisplayTestConnectionProvider* aParent, TTimeIntervalMicroSeconds32 aInterval)
+    : CTimer(EPriorityNormal), iParent(aParent), iInterval(aInterval)
+    {
+    DEBUG_PRINTF("CExtDisplayConnectionTimer::CExtDisplayConnectionTimer +++");
+
+    CActiveScheduler::Add(this);
+    
+    DEBUG_PRINTF("CExtDisplayConnectionTimer::CExtDisplayConnectionTimer ---");
+    }
+    
+void CExtDisplayConnectionTimer::Start()
+    {
+    DEBUG_PRINTF("CExtDisplayConnectionTimer::Start +++");
+    
+    After(iInterval);
+    
+    DEBUG_PRINTF("CExtDisplayConnectionTimer::Start ---");
+    }
+
+void CExtDisplayConnectionTimer::RunL()
+    {        
+    DEBUG_PRINTF("CExtDisplayConnectionTimer::RunL +++");
+
+    iParent->TimerExpired();
+
+    DEBUG_PRINTF("CExtDisplayConnectionTimer::RunL ---");
+
+    }