epoc32/include/mw/absolutevolumeapitarget.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@4
     1
// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@4
     2
// All rights reserved.
williamr@4
     3
// This component and the accompanying materials are made available
williamr@4
     4
// under the terms of "Eclipse Public License v1.0"
williamr@4
     5
// which accompanies this distribution, and is available
williamr@4
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@4
     7
//
williamr@4
     8
// Initial Contributors:
williamr@4
     9
// Nokia Corporation - initial contribution.
williamr@4
    10
//
williamr@4
    11
// Contributors:
williamr@4
    12
//
williamr@4
    13
// Description:
williamr@4
    14
//
williamr@4
    15
williamr@4
    16
williamr@4
    17
williamr@4
    18
/**
williamr@4
    19
 @file
williamr@4
    20
 @publishedAll
williamr@4
    21
 @released
williamr@4
    22
*/
williamr@4
    23
williamr@4
    24
#ifndef REMCONABSOLUTEVOLUMEAPITARGET_H
williamr@4
    25
#define REMCONABSOLUTEVOLUMEAPITARGET_H
williamr@4
    26
williamr@4
    27
#include <remcon/remconinterfacebase.h>
williamr@4
    28
#include <remcon/remconinterfaceif.h>
williamr@4
    29
williamr@4
    30
_LIT(KAbsoluteVolumeTargetPanicName, "AbsoluteVolumeTarget");
williamr@4
    31
enum TAbsoluteVolumeTargetPanics
williamr@4
    32
    {
williamr@4
    33
    ETargetInvalidMaxVolume = 0,
williamr@4
    34
    ETargetVolumeBeyondMaxVolume = 1,
williamr@4
    35
    };
williamr@4
    36
williamr@4
    37
class MRemConAbsoluteVolumeTargetObserver;
williamr@4
    38
williamr@4
    39
/**
williamr@4
    40
Client-instantiable type supporting sending absolute volume API responses for
williamr@4
    41
Set Absolute Volume and Register Absolute Volume Change Notification. This API
williamr@4
    42
should be used in preference to the extapi.
williamr@4
    43
*/
williamr@4
    44
NONSHARABLE_CLASS(CRemConAbsoluteVolumeTarget) : public CRemConInterfaceBase,
williamr@4
    45
                                                 public MRemConInterfaceIf2
williamr@4
    46
	{
williamr@4
    47
public:
williamr@4
    48
	IMPORT_C static CRemConAbsoluteVolumeTarget* NewL(
williamr@4
    49
			CRemConInterfaceSelector& aInterfaceSelector, 
williamr@4
    50
			MRemConAbsoluteVolumeTargetObserver& aObserver,
williamr@4
    51
			TUint32 aVolume, 
williamr@4
    52
			TUint32 aMaxVolume);
williamr@4
    53
	
williamr@4
    54
	IMPORT_C ~CRemConAbsoluteVolumeTarget();
williamr@4
    55
williamr@4
    56
public:
williamr@4
    57
	IMPORT_C void SetAbsoluteVolumeResponse(TUint32 aVolume, 
williamr@4
    58
			TInt aErr);
williamr@4
    59
	
williamr@4
    60
	IMPORT_C void AbsoluteVolumeChanged(TUint32 aVolume);
williamr@4
    61
	
williamr@4
    62
private:
williamr@4
    63
    CRemConAbsoluteVolumeTarget(CRemConInterfaceSelector& aInterfaceSelector,
williamr@4
    64
    		MRemConAbsoluteVolumeTargetObserver& aObserver,
williamr@4
    65
    		TUint32 aVolume, 
williamr@4
    66
    		TUint32 aMaxVolume);
williamr@4
    67
williamr@4
    68
	void ConstructL();
williamr@4
    69
williamr@4
    70
private: // From CRemConInterfaceBase
williamr@4
    71
	TAny* GetInterfaceIf(TUid aUid);
williamr@4
    72
williamr@4
    73
private: // From MRemConInterfaceIf2
williamr@4
    74
	void MrcibNewMessage(TUint aOperationId, 
williamr@4
    75
			const TDesC8& aData, 
williamr@4
    76
			TRemConMessageSubType aMsgSubType);
williamr@4
    77
williamr@4
    78
private: // Utility Funtions
williamr@4
    79
	void SendError(TInt aError, TUint aOperationId);
williamr@4
    80
	void SendNotificationResponse(TRemConMessageSubType aMsgSubType);
williamr@4
    81
	void ProcessGetStatus();
williamr@4
    82
	void ProcessGetStatusAndBeginObserving();
williamr@4
    83
	void ProcessSetAbsoluteVolume(const TDesC8& aData);
williamr@4
    84
williamr@4
    85
private: // Unowned
williamr@4
    86
    MRemConAbsoluteVolumeTargetObserver& iObserver;
williamr@4
    87
williamr@4
    88
private: // Owned
williamr@4
    89
	// ETrue indicates a request for absolute volume change notification has 
williamr@4
    90
	// been received.
williamr@4
    91
	TBool                     iAbsoluteVolumeNotificationRequest;
williamr@4
    92
	RBuf8                     iOutBuf;
williamr@4
    93
	TUint32                   iClientVolume;
williamr@4
    94
	TUint32                   iClientMaxVolume;
williamr@4
    95
	};
williamr@4
    96
#endif // ABSOLUTEVOLUMEAPITARGET_H