devsoundextensions/audiorouting/Output/AudioOutputProxy/src/AudioOutputProxyAO.cpp
author hgs
Tue, 02 Nov 2010 12:28:51 +0000
changeset 6 fe9d1bf55678
parent 0 b8ed18f6c07b
permissions -rw-r--r--
2010wk46_02
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) 2005-2006 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:   AudioOutput Proxy Active Object
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
#include "AudioOutput.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
#include "AudioOutputMessageTypes.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
#include <e32svr.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
#include "AudioOutputProxyAO.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
#include <CustomCommandUtility.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
#include <MAudioOutputObserver.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
// Two-phased constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
CAudioOutputProxyAO* CAudioOutputProxyAO::NewL(CAudioOutput *aOutputProxy,MAudioOutputObserver& aObserver,MCustomCommand* aUtility)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
	CAudioOutputProxyAO* self = new(ELeave) CAudioOutputProxyAO(aOutputProxy,aObserver,aUtility);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
    CleanupStack::PushL(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
    self->ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
    CleanupStack::Pop(self);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
    return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
// Destructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
CAudioOutputProxyAO::~CAudioOutputProxyAO()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
	Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
// C++ default constructor can NOT contain any code, that
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
// might leave.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
CAudioOutputProxyAO::CAudioOutputProxyAO(CAudioOutput *aOutputProxy,MAudioOutputObserver& aObserver,MCustomCommand* aUtility):
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
	CActive(CActive::EPriorityStandard),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
		iAudioOutputProxy(aOutputProxy),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
		iCustomCommandUtility(aUtility),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
		iObserver(&aObserver)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
void CAudioOutputProxyAO::ConstructL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
	CActiveScheduler::Add(this);
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
// CAudioOutputProxyAO::RunL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
// ?implementation_description
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
// ---------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
void CAudioOutputProxyAO::RunL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
#ifdef _DEBUG
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
	RDebug::Print(_L("CAudioOutputProxyAO::RunL"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
	if ( iRegistered != EFalse )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
		iCustomCommandUtility->CustomCommandAsync( *iDestination,iFunction,KNullDesC8,KNullDesC8,iCallbackData,iStatus );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
		SetActive();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
		iObserver->DefaultAudioOutputChanged(*iAudioOutputProxy,iCallbackData());
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
// ---------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
// CAudioOutputProxyAO::DoCancel
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
// ?implementation_description
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
// ---------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
void CAudioOutputProxyAO::DoCancel()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
       if ( iRegistered != EFalse )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
       	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
       	iCustomCommandUtility->CustomCommandSync( *iDestination, EAofUnregisterObserver, KNullDesC8, KNullDesC8);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
       	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
// ---------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
// CAudioOutputProxyAO::SendAsyncMessage
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
// ?implementation_description
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
// ---------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
void CAudioOutputProxyAO::SendAsyncMessage(const TMMFMessageDestinationPckg& aDestination,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
	                                      TInt aFunction)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
	iDestination = &aDestination;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
	iFunction = aFunction;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
	iCustomCommandUtility->CustomCommandAsync( aDestination,aFunction,KNullDesC8,KNullDesC8,iCallbackData,iStatus );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
	SetActive();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
// ---------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
// CAudioOutputProxyAO::SetRegisterFlag
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
// ?implementation_description
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
// ---------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
void CAudioOutputProxyAO::SetRegisterFlag(TBool aFlag)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
	iRegistered = aFlag;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
// ---------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
// CAudioOutputProxyAO::SetObserver
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
// ?implementation_description
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
// ---------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
void CAudioOutputProxyAO::SetObserver(MAudioOutputObserver& aObserver)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
    iObserver = &aObserver;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
    }