bluetoothengine/btsac/btrcc/src/btrccplayerstarter.cpp
branchRCL_3
changeset 61 269724087bed
parent 56 9386f31cc85b
child 64 1934667b0e2b
--- a/bluetoothengine/btsac/btrcc/src/btrccplayerstarter.cpp	Wed Sep 01 12:20:04 2010 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,303 +0,0 @@
-/*
-* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  This class launchs music player, then send play command
-*                to the player at 2 seconds timeout.
-*
-*/
-
-
-// INCLUDE FILES
-#include <apacmdln.h>
-#include <apgcli.h>
-#include <e32property.h>
-#include <remconcoreapitarget.h>
-#include "btrccplayerstarter.h"
-#include "btaudioremconpskeys.h"
-#include "debug.h"
-
-// MODULE DATA STRUCTURES
-
-// mpx playeris name is mpx.exe in 5.0.
-// it is musicplayer.exe in 3.2.
-_LIT(KMpxPlayerExeName, "mpx.exe");
-
-_LIT(KMpxPlayerSearchPatternBySID, "*102072c3*");
-_LIT(KVideoPlayerSearchPatternBySID, "*200159B2*");
-
-static const TInt KPlayCmdToPlayerDelay = 6000000; // value will be tuned later 
-
-// ================= MEMBER FUNCTIONS =======================
-
-// -----------------------------------------------------------------------------
-// CPlayerStarter::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CPlayerStarter* CPlayerStarter::NewL()
-	{
-	CPlayerStarter* self = new (ELeave) CPlayerStarter();
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop(self);
-	return self;
-	}
-
-void CPlayerStarter::SetCoreTarget(CRemConCoreApiTarget& aTarget)
-    {
-    iCoreTarget = &aTarget;
-    }
-
-// -----------------------------------------------------------------------------
-// CPlayerStarter::CPlayerStarter
-// C++ constructor.
-// -----------------------------------------------------------------------------
-//
-CPlayerStarter::CPlayerStarter()
-  :CActive(EPriorityNormal)
-    {
-    CActiveScheduler::Add(this);
-    }
-
-// -----------------------------------------------------------------------------
-// CPlayerStarter::ConstructL
-// Symbian 2nd phase constructor.
-// -----------------------------------------------------------------------------
-//
-void CPlayerStarter::ConstructL()
-    {
-    TRACE_FUNC
-    iTimer.CreateLocal();
-    }
-
-// -----------------------------------------------------------------------------
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CPlayerStarter::~CPlayerStarter()
-	{
-	TRACE_FUNC
-	// Starting player is not finished yet, send play command. Just wish the player 
-	// can receive it.
-	if (IsActive() && iState != ERespondPlayNok)
-	    {
-        RProperty::Set(KBTAudioRemCon, KBTAudioPlayerControl, 
-                EBTAudioResumePlayer);	    
-	    }
-	Cancel();
-	iTimer.Close();
-	}
-
-// -----------------------------------------------------------------------------
-// CPlayerStarter::RunL
-// -----------------------------------------------------------------------------
-//
-void CPlayerStarter::RunL()
-    {
-    TRACE_INFO((_L("CPlayerStarter::RunL() state %d, status %d"), iState, iStatus.Int()));
-    if (iStatus != KErrNone)
-        {
-        iState = EIdle;
-        return;
-        }
-    switch (iState)
-        {
-        case ERespondPlayOk:
-            {
-            // Response OK has been sent to the remote device, start timer waiting
-            // for player's initialization.
-            iTimer.After(iStatus, KPlayCmdToPlayerDelay);
-            SetActive();
-            iState = EPlayMusicTiming;
-            TRACE_INFO(_L("schedule PLAY command ..."));
-            break;
-            }
-        case EPlayMusicTiming:
-            {
-            // Player should have fully up and running. Send PLAY command to it
-            // through our internal Play API.
-            RProperty::Set(KBTAudioRemCon, KBTAudioPlayerControl, 
-                    EBTAudioResumePlayer);
-            TRACE_INFO(_L("PLAY command sent to btmonobearer"));
-            iState = EIdle;
-            break;
-            }
-        default:
-            {
-            iState = EIdle;
-            break;
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CPlayerStarter::RunError
-// -----------------------------------------------------------------------------
-//
-TInt CPlayerStarter::RunError(TInt aError)
-    {
-    TRACE_FUNC
-    (void) aError;
-    return KErrNone;
-    }
-
-// -----------------------------------------------------------------------------
-// CPlayerStarter::DoCancel
-// -----------------------------------------------------------------------------
-//
-void CPlayerStarter::DoCancel()
-    {
-    TRACE_FUNC
-    switch (iState)
-        {
-        case ERespondPlayOk:
-        case ERespondPlayNok:
-            {
-            // This cancel won't cancel the response sending to the remote 
-            // device. (RemCon FW's cancel mechanism is only completing client's request.
-            // the real operation in its server side won't be stopped.)
-            iCoreTarget->Cancel();
-            break;
-            }
-        case EPlayMusicTiming:
-            {
-            iTimer.Cancel();
-            break;
-            }
-        }
-    }
-// ---------------------------------------------------------------------------
-// A 'play' command has been received.
-// ---------------------------------------------------------------------------
-//
-void CPlayerStarter::MrccatoPlay(
-    TRemConCoreApiPlaybackSpeed /* aSpeed */,
-    TRemConCoreApiButtonAction aButtonAct )
-    {
-    TRACE_FUNC
-    if ( ( aButtonAct == ERemConCoreApiButtonClick ) ||
-        ( aButtonAct == ERemConCoreApiButtonPress ) )
-        {
-        StartPlayIfNeeded();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// A command has been received.
-// ---------------------------------------------------------------------------
-//
-void CPlayerStarter::MrccatoCommand(
-    TRemConCoreApiOperationId aOperationId,
-    TRemConCoreApiButtonAction aButtonAct )
-    {
-    TRACE_INFO((_L("CPlayerStarter::MrccatoCommand opId %d, button %d"), 
-        aOperationId, aButtonAct));
-    switch (aOperationId)
-        {
-        case ERemConCoreApiPlay:
-            {
-            if ( ( aButtonAct == ERemConCoreApiButtonClick ) ||
-                ( aButtonAct == ERemConCoreApiButtonPress ) )
-                {
-                StartPlayIfNeeded();
-                }
-            break;
-            }
-        case ERemConCoreApiStop:
-        case ERemConCoreApiPause:
-            {
-            if ( ( aButtonAct == ERemConCoreApiButtonClick ) ||
-                ( aButtonAct == ERemConCoreApiButtonPress ) )
-                {
-                // if starting player is ongoing, possibly PLAY command has been scheduled
-                // need to abort it.
-                Cancel();
-                }
-            break;
-            }
-        default:
-            {
-            break;
-            }
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CPlayerStarter::StartPlayIfNeeded
-// -----------------------------------------------------------------------------
-//
-void CPlayerStarter::StartPlayIfNeeded() 
-    {
-    TRACE_FUNC
-    // unfinished business ongoing, eat the event.
-    if (IsActive())
-        {
-        return;
-        }
-    if (!IsMusicPlayerRunning() && !IsVideoPlayerRunning())
-         {
-         TRAPD(err, LaunchMusicPlayerL());
-         // Send the response of play command to remote device
-         iCoreTarget->PlayResponse(iStatus, err);
-         SetActive();
-         iState = (err) ? ERespondPlayNok : ERespondPlayOk;
-         }
-    }
-
-TBool CPlayerStarter::IsMusicPlayerRunning()
-    {
-    TRACE_FUNC
-    // Music player is running if we can find a thread whose name contains 
-    // S60 Music Player's SID.
-    TFindThread findt(KMpxPlayerSearchPatternBySID);
-    TFullName result;
-    TBool running(EFalse);
-    if (!findt.Next(result))
-        {
-        TRACE_INFO((_L("Thread '%S'is found"), &result));
-        running = ETrue;
-        }
-    return running;
-    }
-
-TBool CPlayerStarter::IsVideoPlayerRunning()
-    {
-    TRACE_FUNC
-    // Video player is running if we can find a thread whose name contains 
-    // Video Player's SID.
-    TFindThread findt(KVideoPlayerSearchPatternBySID);
-    TFullName result;
-    TBool running(EFalse);
-    if (!findt.Next(result))
-        {
-        TRACE_INFO((_L("Thread '%S'is found"), &result));
-        running = ETrue;
-        }
-    return running;
-    }
-
-void CPlayerStarter::LaunchMusicPlayerL()
-    {
-    RApaLsSession ls;
-    User::LeaveIfError(ls.Connect());
-    CleanupClosePushL(ls);
-    CApaCommandLine* cmd = CApaCommandLine::NewL();
-    CleanupStack::PushL(cmd);
-    cmd->SetExecutableNameL( KMpxPlayerExeName );
-    cmd->SetCommandL( EApaCommandOpen );
-    User::LeaveIfError(ls.StartApp( *cmd ));
-    CleanupStack::PopAndDestroy(2); // cmd, ls
-    }
-
-
-//  End of File