--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/bluetoothengine/btsac/btrcc/inc/btrccplayerstarter.h Mon Jan 18 20:28:57 2010 +0200
@@ -0,0 +1,152 @@
+/*
+* 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 implements starting Music play
+*
+*
+*/
+
+
+#ifndef BTRCCPLAYERSTATER_H
+#define BTRCCPLAYERSTATER_H
+
+// INCLUDES
+#include <e32base.h>
+#include <remconcoreapitargetobserver.h>
+
+// FORWARD DECLARATIONS
+class CRemConCoreApiTarget;
+
+/**
+* This class listens to AVRCP PLAY command by headset,if music player is not running
+* when such a command is received, it will be launched and requested to start playing.
+* */
+NONSHARABLE_CLASS(CPlayerStarter) :
+ public CActive, public MRemConCoreApiTargetObserver
+ {
+
+public:
+
+ /**
+ * Two-phased constructor.
+ *
+ */
+ static CPlayerStarter* NewL();
+
+ /**
+ * Set the reference for AVRCP Core API command receiving and
+ * responses to those command.
+ */
+ void SetCoreTarget(CRemConCoreApiTarget& aTarget);
+
+ /**
+ * Destructor.
+ */
+ ~CPlayerStarter();
+
+private: // From CActive
+
+ /**
+ * Informs the observer that an accessory has created a control
+ * connection to our device.
+ * @param None.
+ * @return None.
+ */
+ void RunL();
+
+ /**
+ * Handles a possible leave from RunL().
+ * @param aError The leave code from RunL().
+ * @return KErrNone.
+ */
+ TInt RunError(TInt aError);
+
+ /**
+ * Cancels the volume change operation.
+ * @param None.
+ * @return None.
+ */
+ void DoCancel();
+
+ // from base class MRemConCoreApiTargetObserver
+
+ /**
+ * From MRemConCoreApiTargetObserver
+ * A 'play' command has been received.
+ *
+ * @param aSpeed The playback speed.
+ * @param aButtonAct The button action associated with the command.
+ */
+ void MrccatoPlay(
+ TRemConCoreApiPlaybackSpeed aSpeed,
+ TRemConCoreApiButtonAction aButtonAct );
+
+ /**
+ * From MRemConCoreApiTargetObserver
+ * A command has been received.
+ *
+ * @param aOperationId The operation ID of the command.
+ * @param aButtonAct The button action associated with the command.
+ */
+ void MrccatoCommand(
+ TRemConCoreApiOperationId aOperationId,
+ TRemConCoreApiButtonAction aButtonAct );
+
+private:
+
+ /**
+ * C++ default constructor.
+ */
+ CPlayerStarter();
+
+ /**
+ * Symbian 2nd phase constructor.
+ */
+ void ConstructL();
+
+ /**
+ * Start music player if it is not running yet.
+ */
+ void StartPlayIfNeeded();
+
+ /**
+ * Tells if MPX music player is running or not.
+ */
+ TBool IsMusicPlayerRunning();
+
+ /**
+ * Launch MPX player.
+ */
+ void LaunchMusicPlayerL();
+
+private:
+ enum TOpState
+ {
+ EIdle = 0,
+ ERespondPlayOk , // responding OK to play command is outstanding
+ ERespondPlayNok, // responding NOT OK to play command is outstanding
+ EPlayMusicTiming, // scheduling internal PLAY command to player
+ };
+
+private: // Data
+
+ CRemConCoreApiTarget* iCoreTarget; // not own
+
+ RTimer iTimer;
+
+ TOpState iState;
+ };
+
+#endif // BTRCCACLLINKLISTENER_H
+
+// End of File