os/mm/devsoundextensions/effects/AudioEqualizer/AudioEqualizerProxy/Src/AudioEqualizerEventObserver.cpp
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/mm/devsoundextensions/effects/AudioEqualizer/AudioEqualizerProxy/Src/AudioEqualizerEventObserver.cpp Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,151 @@
1.4 +/*
1.5 +* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies).
1.6 +* All rights reserved.
1.7 +* This component and the accompanying materials are made available
1.8 +* under the terms of "Eclipse Public License v1.0"
1.9 +* which accompanies this distribution, and is available
1.10 +* at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.11 +*
1.12 +* Initial Contributors:
1.13 +* Nokia Corporation - initial contribution.
1.14 +*
1.15 +* Contributors:
1.16 +*
1.17 +* Description: Implementation of the active event observer.
1.18 +*
1.19 +*/
1.20 +
1.21 +
1.22 +
1.23 +
1.24 +// INCLUDE FILES
1.25 +#ifdef _DEBUG
1.26 +#include <e32svr.h>
1.27 +#endif
1.28 +
1.29 +#include "AudioEqualizerEventObserver.h"
1.30 +
1.31 +
1.32 +// ============================ MEMBER FUNCTIONS ===============================
1.33 +
1.34 +// -----------------------------------------------------------------------------
1.35 +// CAudioEqualizerEventObserver::CAudioEqualizerEventObserver
1.36 +// C++ default constructor can NOT contain any code, that
1.37 +// might leave.
1.38 +// -----------------------------------------------------------------------------
1.39 +//
1.40 +CAudioEqualizerEventObserver::CAudioEqualizerEventObserver()
1.41 + : CActive(CActive::EPriorityStandard),
1.42 + iStopped(EFalse)
1.43 + {
1.44 + }
1.45 +
1.46 +// -----------------------------------------------------------------------------
1.47 +// CAudioEqualizerEventObserver::ConstructL
1.48 +// Symbian 2nd phase constructor can leave.
1.49 +// -----------------------------------------------------------------------------
1.50 +//
1.51 +void CAudioEqualizerEventObserver::ConstructL(
1.52 + TMMFMessageDestinationPckg aMessageHandler,
1.53 + MCustomCommand& aCustomCommand,
1.54 + MAudioEqualizerCallback& aCallback )
1.55 + {
1.56 + CActiveScheduler::Add(this);
1.57 + iMessageHandler = aMessageHandler;
1.58 + iCustomCommand = &aCustomCommand;
1.59 + iCallback = &aCallback;
1.60 + }
1.61 +
1.62 +// -----------------------------------------------------------------------------
1.63 +// CAudioEqualizerEventObserver::NewL
1.64 +// Two-phased constructor.
1.65 +// -----------------------------------------------------------------------------
1.66 +//
1.67 +CAudioEqualizerEventObserver* CAudioEqualizerEventObserver::NewL(
1.68 + TMMFMessageDestinationPckg aMessageHandler,
1.69 + MCustomCommand& aCustomCommand,
1.70 + MAudioEqualizerCallback& aCallback )
1.71 + {
1.72 + CAudioEqualizerEventObserver* self = new(ELeave) CAudioEqualizerEventObserver();
1.73 + CleanupStack::PushL(self);
1.74 + self->ConstructL(aMessageHandler, aCustomCommand, aCallback);
1.75 + CleanupStack::Pop(self);
1.76 + return self;
1.77 + }
1.78 +
1.79 +
1.80 +// -----------------------------------------------------------------------------
1.81 +// CAudioEqualizerEventObserver::~CAudioEqualizerEventObserver
1.82 +// Destructor
1.83 +// -----------------------------------------------------------------------------
1.84 +//
1.85 +CAudioEqualizerEventObserver::~CAudioEqualizerEventObserver()
1.86 + {
1.87 + // We should not have to cancel the outstanding request because the message
1.88 + // handler will complete our request with KErrCancel in its destructor.
1.89 + Cancel();
1.90 + }
1.91 +
1.92 +// -----------------------------------------------------------------------------
1.93 +// CAudioEqualizerEventObserver::Start
1.94 +// Kickoff the event observer by issuing the first observation message.
1.95 +// -----------------------------------------------------------------------------
1.96 +//
1.97 +void CAudioEqualizerEventObserver::Start()
1.98 + {
1.99 + if( !iStopped && !IsActive() )
1.100 + {
1.101 + iCustomCommand->CustomCommandAsync(iMessageHandler, (TInt)EAefObserve, KNullDesC8, KNullDesC8, iDataPckgFrom, iStatus);
1.102 + iStopped = EFalse;
1.103 + SetActive();
1.104 + }
1.105 + }
1.106 +
1.107 +// -----------------------------------------------------------------------------
1.108 +// CAudioEqualizerEventObserver::Stop
1.109 +// -----------------------------------------------------------------------------
1.110 +//
1.111 +void CAudioEqualizerEventObserver::Stop()
1.112 + {
1.113 + iStopped = ETrue;
1.114 + }
1.115 +
1.116 +// -----------------------------------------------------------------------------
1.117 +// CAudioEqualizerEventObserver::RunL
1.118 +// Invoke by the active scheduler when a request completes, In this case, our
1.119 +// observation message has completed.
1.120 +// The proxy is notified. Afterwards, reissue the request to continue observation.
1.121 +// -----------------------------------------------------------------------------
1.122 +//
1.123 +void CAudioEqualizerEventObserver::RunL()
1.124 + {
1.125 +#ifdef _DEBUG
1.126 + RDebug::Print(_L("CAudioEqualizerEventObserver::RunL()\n"));
1.127 +#endif
1.128 +
1.129 + if( iStatus == KErrNone )
1.130 + {
1.131 + iCallback->AudioEqualizerEventL(iDataPckgFrom);
1.132 + Start();
1.133 + }
1.134 + else
1.135 + {
1.136 + iStopped = ETrue;
1.137 + }
1.138 + }
1.139 +
1.140 +// -----------------------------------------------------------------------------
1.141 +// CAudioEqualizerEventObserver::DoCancel
1.142 +// Cancels the current and any on going requests/tasks.
1.143 +// -----------------------------------------------------------------------------
1.144 +//
1.145 +void CAudioEqualizerEventObserver::DoCancel()
1.146 + {
1.147 +#ifdef _DEBUG
1.148 + RDebug::Print(_L("CAudioEqualizerEventObserver::DoCancel()\n"));
1.149 +#endif
1.150 + iStopped = ETrue;
1.151 + }
1.152 +
1.153 +// End of file
1.154 +