devsoundextensions/effects/BassBoost/BassBoostProxy/Src/BassBoostEventObserver.cpp
author hgs
Mon, 18 Oct 2010 12:47:26 +0100
changeset 4 9d4397b300d1
parent 0 b8ed18f6c07b
permissions -rw-r--r--
2010wk44_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     1
/*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     2
* Copyright (c) 2004 Nokia Corporation and/or its subsidiary(-ies). 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     3
* All rights reserved.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     8
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     9
* Initial Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    11
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    12
* Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    13
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    14
* Description:   Implementation of the active event observer.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    15
*
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    16
*/
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    17
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    18
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    19
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
// INCLUDE FILES
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
#ifdef _DEBUG
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
#include 	<e32svr.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
#include 	"BassBoostEventObserver.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
// ============================ MEMBER FUNCTIONS ===============================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
// CBassBoostEventObserver::CBassBoostEventObserver
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
// C++ default constructor can NOT contain any code, that
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
// might leave.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
CBassBoostEventObserver::CBassBoostEventObserver()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
    :   CActive(CActive::EPriorityStandard),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
    	iStopped(EFalse)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
// CBassBoostEventObserver::ConstructL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
// Symbian 2nd phase constructor can leave.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
void CBassBoostEventObserver::ConstructL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
	TMMFMessageDestinationPckg aMessageHandler,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
	MCustomCommand& aCustomCommand,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
	MBassBoostCallback& aCallback )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
    CActiveScheduler::Add(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
	iMessageHandler = aMessageHandler;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
	iCustomCommand = &aCustomCommand;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
	iCallback = &aCallback;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
// CBassBoostEventObserver::NewL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
// Two-phased constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
CBassBoostEventObserver* CBassBoostEventObserver::NewL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
	TMMFMessageDestinationPckg aMessageHandler,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
	MCustomCommand& aCustomCommand,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
	MBassBoostCallback& aCallback )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
    CBassBoostEventObserver* self = new(ELeave) CBassBoostEventObserver();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
    CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
    self->ConstructL(aMessageHandler, aCustomCommand, aCallback);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
    CleanupStack::Pop(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
    return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
// CBassBoostEventObserver::~CBassBoostEventObserver
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
// Destructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
CBassBoostEventObserver::~CBassBoostEventObserver()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
    // We should not have to cancel the outstanding request because the message
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
    // handler will complete our request with KErrCancel in its destructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
    Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
// CBassBoostEventObserver::Start
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
// Kickoff the event observer by issuing the first observation message.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
void CBassBoostEventObserver::Start()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
	if( !iStopped && !IsActive() )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
    	iCustomCommand->CustomCommandAsync(iMessageHandler, (TInt)EBfObserve, KNullDesC8, KNullDesC8, iDataPckgFrom, iStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
    	iStopped = EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
    	SetActive();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
// CBassBoostEventObserver::Stop
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
void CBassBoostEventObserver::Stop()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
	iStopped = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
// CBassBoostEventObserver::RunL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
// Invoke by the active scheduler when a request completes, In this case, our
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
// observation message has completed.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
// The proxy is notified. Afterwards, reissue the request to continue observation.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
void CBassBoostEventObserver::RunL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
#ifdef _DEBUG
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
    RDebug::Print(_L("CBassBoostEventObserver::RunL()\n"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
	if( iStatus == KErrNone )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
		iCallback->BassBoostEvent(iDataPckgFrom);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
		Start();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
		iStopped = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
// CBassBoostEventObserver::DoCancel
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
// Cancels the current and any on going requests/tasks.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
void CBassBoostEventObserver::DoCancel()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
#ifdef _DEBUG
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
    RDebug::Print(_L("CBassBoostEventObserver::DoCancel()\n"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
    iStopped = ETrue;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
// End of file
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151