devsoundextensions/telephonyaudiorouting/Session/src/TelephonyAudioRoutingPolicyRequest.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) 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:   Active object for each asynchronous request in RTelephonyAudioRoutingSession.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    15
*				 Notifies MTelephonyAudioRoutingPolicyObserver upon request completion.
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
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
// INCLUDE FILES
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
#include "TelephonyAudioRoutingPolicyRequest.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
#include "MTelephonyAudioRoutingPolicyObserver.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
#include "TelephonyAudioRoutingClientServer.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
// ============================ MEMBER FUNCTIONS ===============================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
// CTelephonyAudioRoutingPolicyRequest::CTelephonyAudioRoutingPolicyRequest
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
// C++ default constructor can NOT contain any code, that
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
// might leave.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
CTelephonyAudioRoutingPolicyRequest::CTelephonyAudioRoutingPolicyRequest( 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
	RTelephonyAudioRoutingManagerSession& aManagerSession, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
	MTelephonyAudioRoutingPolicyObserver& aObserver, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
	CTelephonyAudioRoutingManager& aAudioRouting, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
	TTelAudRtngServRqst aRequest )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
	:	CActive(EPriorityStandard),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
		iManagerSession(aManagerSession),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
		iPolicyObserver(aObserver),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
		iAudioRoutingManager(aAudioRouting),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
		iRequest(aRequest)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
	  
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
// CTelephonyAudioRoutingPolicyRequest::ConstructL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
// Symbian 2nd phase constructor can leave.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
void CTelephonyAudioRoutingPolicyRequest::ConstructL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
	TELAUDRTNG_RDEBUG(_L("[TELAUDRTNG]\t CTelephonyAudioRoutingPolicyRequest::ConstructL"));    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
	CActiveScheduler::Add(this);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
// CTelephonyAudioRoutingPolicyRequest::NewL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
// Two-phased constructor.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
   
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
CTelephonyAudioRoutingPolicyRequest* CTelephonyAudioRoutingPolicyRequest::NewL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
	RTelephonyAudioRoutingManagerSession& aManagerSession,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
	MTelephonyAudioRoutingPolicyObserver& aObserver,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
	CTelephonyAudioRoutingManager& aAudioRouting,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
	TTelAudRtngServRqst aRequest )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
	CTelephonyAudioRoutingPolicyRequest* self = new( ELeave ) CTelephonyAudioRoutingPolicyRequest(aManagerSession, aObserver, aAudioRouting, aRequest);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
	CleanupStack::PushL( self );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
	self->ConstructL();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
	CleanupStack::Pop();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
	return self;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
// Destructor
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
CTelephonyAudioRoutingPolicyRequest::~CTelephonyAudioRoutingPolicyRequest()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
	TELAUDRTNG_RDEBUG(_L("[TELAUDRTNG]\t CTelephonyAudioRoutingPolicyRequest::~CTelephonyAudioRoutingPolicyRequest"));    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
	Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
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
// CTelephonyAudioRoutingPolicyRequest::CompleteRequest
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
// This method completes the request status and sets the object active
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
// to provide asynchronous behavior.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
void CTelephonyAudioRoutingPolicyRequest::CompleteRequest(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
	TTelAudRtngServRqst aRequest,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
	TInt aError )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
	iRequest = aRequest;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
	TRequestStatus* stat = &iStatus;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
	User::RequestComplete(stat, aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
	SetActive();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
// CTelephonyAudioRoutingPolicyRequest::DoCancel
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
void CTelephonyAudioRoutingPolicyRequest::DoCancel()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
	iManagerSession.CancelRequest(iRequest);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
// CTelephonyAudioRoutingPolicyRequest::RunL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
void CTelephonyAudioRoutingPolicyRequest::RunL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
    TELAUDRTNG_RDEBUG1(_L("[TELAUDRTNG]\t CTelephonyAudioRoutingPolicyRequest::RunL with %d "), iStatus.Int());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
	CTelephonyAudioRouting::TAudioOutput aResponse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
	switch( iStatus.Int() )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
	case ETelAudRtngServOutputChangeRequested:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
		aResponse = (iManagerSession.AudioOutputPkg())(); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
		TELAUDRTNG_RDEBUG1(_L("[TELAUDRTNG]\t CTelephonyAudioRoutingPolicyRequest::RunL, Calling OutputChangeRequested With: %d "), aResponse);		         
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
        iPolicyObserver.OutputChangeRequested(iAudioRoutingManager, aResponse);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
        iManagerSession.MonitorOutputChangeRequest();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
						
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
	default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
		User::Panic(_L("TelephonyAudioRouting"), KErrGeneral );
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
		break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
//  End of File
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146