devsound/a3fdevsound/src/mmfdevsoundproxy/mmfdevsoundproxy.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
// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     2
// All rights reserved.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     7
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     8
// Initial Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    10
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    11
// Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    12
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    13
// Description:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    14
//
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
// INCLUDE FILES
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    19
#include "mmfdevsoundproxy.h"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
#ifdef _DEBUG
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
#include <e32debug.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
#define SYMBIAN_DEBPRN0(str)                RDebug::Print(str, this)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
#define SYMBIAN_DEBPRN1(str, val1)          RDebug::Print(str, this, val1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
#define SYMBIAN_DEBPRN2(str, val1, val2)    RDebug::Print(str, this, val1, val2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
#define SYMBIAN_DEBPRN0(str)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
#define SYMBIAN_DEBPRN1(str, val1)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
#define SYMBIAN_DEBPRN2(str, val1, val2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
#endif //_DEBUG
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
// SYMBIAN_CHECK used to add extra asserts when MACRO is added - helps debugging overall A3F
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
#ifdef SYMBIAN_FULL_STATE_CHECK
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
   #define SYMBIAN_CHECK(c,p) __ASSERT_ALWAYS(c,p)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
#else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
   #define SYMBIAN_CHECK(c,p)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
#endif 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
const TInt KMaxMessageQueueItems = 8;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
const TMMFCapabilities KZeroCapabilities = 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
	0,0,0,0 // all zero's
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
	};
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
// ============================ LOCAL FUNCTIONS ================================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
// This function raises a panic
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
// @param	aError
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
// 		one of the several panic codes that may be raised by this dll
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
// @panic	EMMFDevSoundProxyPlayDataWithoutInitialize is raised when playdata
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
//          is called without initialization
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
// @panic	EMMFDevSoundProxyRecordDataWithoutInitialize is raised when
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
//          recorddata is called without initialization
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
GLDEF_C void Panic(TMMFDevSoundProxyPanicCodes aPanicCode)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
	User::Panic(KMMFDevSoundProxyPanicCategory, aPanicCode);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
// ============================ MEMBER FUNCTIONS ===============================
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
// RMMFDevsoundProxy::RMMFDevsoundProxy
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
// C++ default constructor can NOT contain any code, that
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
// might leave.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
EXPORT_C RMMFDevSoundProxy::RMMFDevSoundProxy() :
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
	iBuffer(NULL),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
	iSeqName(NULL),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
	iDestinationPckg(TMMFMessageDestination(KUidInterfaceMMFDevSound,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
											KMMFObjectHandleDevSound)),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
	iState(EIdle),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
	iAudioServerProxy(NULL),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
	iDevSoundObserver(NULL),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
	iMsgQueueHandler(NULL),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
	iCustIntPckg()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
// RMMFDevSoundProxy::Close
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
// Close the server session
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
EXPORT_C void RMMFDevSoundProxy::Close()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::Close - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
	if (iAudioServerProxy)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
		if (iAudioServerProxy->Handle() != NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
			TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
			TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
			TInt err = SendReceive(EMMFDevSoundProxyClose,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
						iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
						pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
		iAudioServerProxy->Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
		delete iAudioServerProxy;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
		iAudioServerProxy = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
	RMmfSessionBase::Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
	iState = EIdle;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
	if (iMsgQueueHandler)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
		iMsgQueueHandler->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
		delete iMsgQueueHandler;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
		iMsgQueueHandler = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
	iMsgQueue.Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::Close - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
// RMMFDevSoundProxy::Open
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
// Open a DevSound server session
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
EXPORT_C TInt RMMFDevSoundProxy::Open()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::Open - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
	TInt err = iMsgQueue.CreateGlobal(KNullDesC, KMaxMessageQueueItems, EOwnerThread);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
	// global, accessible to all that have its handle
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
	if (err == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
		iAudioServerProxy = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
		iMsgQueueHandler = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
		iBuffer = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
		iAudioServerProxy = new RMMFAudioServerProxy();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
		if (iAudioServerProxy == NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
			err = KErrNoMemory;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
	if (err == KErrNone)	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
		err = iAudioServerProxy->Open();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
	if (err == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
		err = SetReturnedHandle(iAudioServerProxy->GetDevSoundSessionHandle());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
	if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
		{	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
		Close();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::Open - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   160
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   161
// RMMFDevSoundProxy::PostOpen
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
// Finish opening process
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
EXPORT_C TInt RMMFDevSoundProxy::PostOpen()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   166
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   167
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PostOpen - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   168
	TInt err = SendReceive(EMMFDevSoundProxyPostOpen, iDestinationPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   169
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::PostOpen - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   170
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   171
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   172
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   173
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   174
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   175
// RMMFDevSoundProxy::SetDevSoundInfo
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   176
// Launch DevSound that might have been waiting for audio policy.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   177
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   178
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   179
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   180
EXPORT_C TInt RMMFDevSoundProxy::SetDevSoundInfo()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   181
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   182
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SetDevSoundInfo - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   183
	TInt err = SendReceive(EMMFAudioLaunchRequests);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   184
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::SetDevSoundInfo - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   185
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   186
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   187
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   188
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   189
// RMMFDevSoundProxy::InitializeL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   190
// Initialize DevSound for a specific mode.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   191
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   192
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   193
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   194
EXPORT_C void RMMFDevSoundProxy::InitializeL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   195
							MDevSoundObserver& aDevSoundObserver,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   196
							TMMFState aMode,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   197
							MMMFDevSoundCustomInterfaceObserver& aDevSoundCIObserver)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   198
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   199
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::InitializeL - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   200
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   201
	iDevSoundObserver = &aDevSoundObserver;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   202
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   203
	if (!(iState==EIdle || iState==EInitialized))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   204
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   205
		err = KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   206
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   207
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   208
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   209
		TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   210
		set.iMode = aMode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   211
		TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   212
		TIpcArgs args(&iDestinationPckg, &pckg, iMsgQueue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   213
		err = RSessionBase::SendReceive(EMMFDevSoundProxyInitialize1, args);		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   214
		if (err == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   215
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   216
			StartReceivingMsgQueueHandlerEventsL(aDevSoundCIObserver);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   217
			iState = EInitializing;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   218
			}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   219
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   220
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::InitializeL - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   221
	User::LeaveIfError(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   222
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   223
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   224
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   225
// RMMFDevSoundProxy::InitializeL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   226
// Initialize DevSound with specific HwDevice id and mode.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   227
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   228
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   229
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   230
EXPORT_C void RMMFDevSoundProxy::InitializeL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   231
								MDevSoundObserver& /*aDevSoundObserver*/,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   232
								TUid /*aHWDev*/,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   233
								TMMFState /*aMode*/,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   234
								MMMFDevSoundCustomInterfaceObserver& /*aDevSoundCIObserver*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   235
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   236
	TInt err = KErrNotSupported;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   237
	User::LeaveIfError(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   238
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   239
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   240
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   241
// RMMFDevSoundProxy::InitializeL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   242
// Initialize DevSound for the specific FourCC and mode.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   243
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   244
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   245
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   246
EXPORT_C void RMMFDevSoundProxy::InitializeL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   247
								MDevSoundObserver& aDevSoundObserver,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   248
								TFourCC aDesiredFourCC,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   249
								TMMFState aMode,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   250
								MMMFDevSoundCustomInterfaceObserver& aDevSoundCIObserver)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   251
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   252
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::InitializeL - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   253
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   254
	if(aMode == EMMFStateTonePlaying)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   255
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   256
		User::Leave(KErrNotSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   257
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   258
	iDevSoundObserver = &aDevSoundObserver;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   259
	if (!(iState==EIdle || iState==EInitialized))
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   260
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   261
		err = KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   262
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   263
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   264
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   265
		TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   266
		set.iDesiredFourCC = aDesiredFourCC;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   267
		set.iMode = aMode;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   268
		TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   269
		TIpcArgs args(&iDestinationPckg, &pckg, iMsgQueue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   270
		err = RSessionBase::SendReceive(EMMFDevSoundProxyInitialize4, args);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   271
		if (err == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   272
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   273
			StartReceivingMsgQueueHandlerEventsL(aDevSoundCIObserver);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   274
			iState = EInitializing;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   275
			}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   276
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   277
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::InitializeL - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   278
	User::LeaveIfError(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   279
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   280
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   281
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   282
// RMMFDevSoundProxy::Capabilities
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   283
// Returns the capabilities of the DevSound server.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   284
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   285
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   286
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   287
EXPORT_C TMMFCapabilities RMMFDevSoundProxy::Capabilities()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   288
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   289
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::Capabilities - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   290
	// TODO should we use the following ? SYMBIAN_CHECK(iState>=EInitialized, Panic(EMMFDevSoundProxyCapabilitiesInWrongState));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   291
	if (iState < EInitialized)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   292
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   293
		// call has been made before we are initialized. Not much we can do, so return
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   294
		// dummy values but hit debugger on the emulator
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   295
		__DEBUGGER()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   296
		RDebug::Print(_L("BRDBG:CapabilitiesCalledWhenNotInitialised")); // TODO Remove or redo as trace
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   297
		SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::Capabilities - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   298
		return KZeroCapabilities;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   299
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   300
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   301
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   302
	TInt err = SendReceiveResult(EMMFDevSoundProxyCapabilities,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   303
					iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   304
					KNullDesC8,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   305
					pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   306
	if (err == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   307
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   308
		SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::Capabilities - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   309
		return pckg().iCaps;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   310
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   311
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   312
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   313
		SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::Capabilities - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   314
		return KZeroCapabilities;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   315
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   316
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   317
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   318
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   319
// TMMFCapabilities RMMFDevSoundProxy::Config
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   320
// Returns the current configuration of the DevSound.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   321
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   322
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   323
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   324
EXPORT_C TMMFCapabilities RMMFDevSoundProxy::Config()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   325
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   326
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::Config - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   327
	// TODO should we use the following ? SYMBIAN_CHECK(iState>=EInitialized, Panic(EMMFDevSoundProxyConfigInWrongState));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   328
	if (iState < EInitialized)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   329
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   330
		// call has been made before we are initialized. Not much we can do, so return
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   331
		// dummy values but hit debugger on the emulator
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   332
		__DEBUGGER()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   333
		RDebug::Print(_L("BRDBG:ConfigCalledWhenNotInitialised")); // TODO Remove or redo as trace
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   334
		SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::Config - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   335
		return KZeroCapabilities;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   336
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   337
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   338
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   339
	SendReceiveResult(EMMFDevSoundProxyConfig,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   340
					iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   341
					KNullDesC8,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   342
					pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   343
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::Config - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   344
	return pckg().iConfig;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   345
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   346
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   347
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   348
// RMMFDevSoundProxy::SetConfigL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   349
// Configures the DevSound server.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   350
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   351
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   352
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   353
EXPORT_C void RMMFDevSoundProxy::SetConfigL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   354
	const TMMFCapabilities& aConfig )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   355
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   356
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SetConfigL - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   357
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   358
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   359
	if (iState==EInitialized)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   360
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   361
		TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   362
		set.iConfig = aConfig;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   363
		TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   364
		err = SendReceive(EMMFDevSoundProxySetConfig,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   365
							iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   366
							pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   367
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   368
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   369
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   370
		RDebug::Print(_L("BRDBG:SetConfigCalledWhenNotInitialised")); // TODO Remove or redo as trace				
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   371
		err = KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   372
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   373
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::SetConfigL - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   374
	User::LeaveIfError(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   375
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   376
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   377
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   378
// RMMFDevSoundProxy::MaxVolume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   379
// Returns the maximum volume supported by DevSound server for playing back..
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   380
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   381
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   382
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   383
EXPORT_C TInt RMMFDevSoundProxy::MaxVolume()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   384
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   385
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::MaxVolume - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   386
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   387
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   388
	SendReceiveResult(EMMFDevSoundProxyMaxVolume,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   389
					iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   390
					KNullDesC8,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   391
					pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   392
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::MaxVolume - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   393
	return pckg().iMaxVolume;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   394
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   395
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   396
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   397
// RMMFDevSoundProxy::Volume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   398
// Returns the current volume.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   399
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   400
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   401
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   402
EXPORT_C TInt RMMFDevSoundProxy::Volume()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   403
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   404
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::Volume - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   405
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   406
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   407
	SendReceiveResult(EMMFDevSoundProxyVolume,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   408
					iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   409
					KNullDesC8,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   410
					pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   411
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::Volume - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   412
	return pckg().iVolume;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   413
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   414
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   415
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   416
// RMMFDevSoundProxy::SetVolume
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   417
// Sets the current volume.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   418
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   419
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   420
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   421
EXPORT_C TInt RMMFDevSoundProxy::SetVolume(TInt aVolume )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   422
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   423
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SetVolume - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   424
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   425
	set.iVolume = aVolume;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   426
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   427
	TInt err = SendReceive(EMMFDevSoundProxySetVolume,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   428
					iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   429
					pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   430
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::SetVolume - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   431
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   432
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   433
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   434
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   435
// RMMFDevSoundProxy::MaxGain
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   436
// Returns maximum gain supported by DevSound server for recording.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   437
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   438
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   439
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   440
EXPORT_C TInt RMMFDevSoundProxy::MaxGain()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   441
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   442
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::MaxGain - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   443
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   444
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   445
	SendReceiveResult(EMMFDevSoundProxyMaxGain,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   446
					iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   447
					KNullDesC8,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   448
					pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   449
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::MaxGain - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   450
	return pckg().iMaxGain;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   451
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   452
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   453
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   454
// RMMFDevSoundProxy::Gain
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   455
// Returns the current gain.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   456
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   457
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   458
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   459
EXPORT_C TInt RMMFDevSoundProxy::Gain()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   460
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   461
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::Gain - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   462
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   463
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   464
	SendReceiveResult(EMMFDevSoundProxyGain,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   465
				iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   466
				KNullDesC8,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   467
				pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   468
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::Gain - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   469
	return pckg().iGain;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   470
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   471
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   472
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   473
// RMMFDevSoundProxy::SetGain
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   474
// Sets the current gain.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   475
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   476
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   477
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   478
EXPORT_C TInt RMMFDevSoundProxy::SetGain(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   479
	TInt aGain )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   480
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   481
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SetGain - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   482
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   483
	set.iGain = aGain;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   484
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   485
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   486
	TInt err = SendReceive(EMMFDevSoundProxySetGain,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   487
					iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   488
					pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   489
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::SetGain - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   490
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   491
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   492
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   493
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   494
// RMMFDevSoundProxy::GetPlayBalanceL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   495
// Returns play balance.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   496
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   497
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   498
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   499
EXPORT_C void RMMFDevSoundProxy::GetPlayBalanceL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   500
		TInt& aLeftPercentage,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   501
		TInt& aRightPercentage )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   502
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   503
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::GetPlayBalanceL - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   504
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   505
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   506
	User::LeaveIfError(SendReceiveResult(EMMFDevSoundProxyPlayBalance,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   507
									iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   508
									KNullDesC8,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   509
									pckg));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   510
	aLeftPercentage = pckg().iLeftPercentage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   511
	aRightPercentage = pckg().iRightPercentage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   512
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::GetPlayBalanceL - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   513
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   514
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   515
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   516
// RMMFDevSoundProxy::SetPlayBalanceL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   517
// Sets playbalance.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   518
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   519
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   520
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   521
EXPORT_C void RMMFDevSoundProxy::SetPlayBalanceL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   522
					TInt aLeftPercentage,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   523
					TInt aRightPercentage )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   524
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   525
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SetPlayBalanceL - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   526
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   527
	set.iLeftPercentage = aLeftPercentage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   528
	set.iRightPercentage = aRightPercentage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   529
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   530
	User::LeaveIfError(SendReceive(EMMFDevSoundProxySetPlayBalance,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   531
								iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   532
								pckg));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   533
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SetPlayBalanceL - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   534
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   535
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   536
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   537
// RMMFDevSoundProxy::GetRecordBalanceL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   538
// Returns record balance.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   539
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   540
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   541
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   542
EXPORT_C void RMMFDevSoundProxy::GetRecordBalanceL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   543
					TInt& aLeftPercentage,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   544
					TInt& aRightPercentage )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   545
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   546
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::GetRecordBalanceL - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   547
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   548
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   549
	User::LeaveIfError(SendReceiveResult(EMMFDevSoundProxyRecordBalance,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   550
										iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   551
										KNullDesC8,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   552
										pckg));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   553
	aLeftPercentage = pckg().iLeftPercentage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   554
	aRightPercentage = pckg().iRightPercentage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   555
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::GetRecordBalanceL - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   556
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   557
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   558
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   559
// RMMFDevSoundProxy::SetRecordBalanceL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   560
// Sets record balance.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   561
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   562
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   563
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   564
EXPORT_C void RMMFDevSoundProxy::SetRecordBalanceL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   565
				TInt aLeftPercentage,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   566
				TInt aRightPercentage )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   567
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   568
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SetRecordBalanceL - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   569
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   570
	set.iLeftPercentage = aLeftPercentage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   571
	set.iRightPercentage = aRightPercentage;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   572
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   573
	User::LeaveIfError(SendReceive(EMMFDevSoundProxySetRecordBalance,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   574
									iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   575
									pckg));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   576
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SetRecordBalanceL - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   577
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   578
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   579
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   580
// RMMFDevSoundProxy::PlayInitL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   581
// Initilaizes DevSound to play digital audio and starts the play process.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   582
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   583
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   584
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   585
EXPORT_C void RMMFDevSoundProxy::PlayInitL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   586
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   587
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayInitL - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   588
	if (!iDevSoundObserver || iState!=EInitialized)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   589
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   590
		if (iState == EPlaying || iState == EPlayingBufferWait)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   591
		    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   592
		    // treat PlayInitL() during play as Resume()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   593
		    User::LeaveIfError(Resume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   594
		    SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayInitL - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   595
		    return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   596
		    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   597
		User::Leave(KErrNotReady);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   598
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   599
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   600
	User::LeaveIfError(SendReceive(EMMFDevSoundProxyPlayInit,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   601
							iDestinationPckg));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   602
	iState = EPlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   603
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayInitL - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   604
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   605
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   606
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   607
// RMMFDevSoundProxy::RecordInitL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   608
// Initilaizes DevSound to record digital audio and starts the record process.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   609
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   610
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   611
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   612
EXPORT_C void RMMFDevSoundProxy::RecordInitL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   613
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   614
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::RecordInitL - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   615
	if (!iDevSoundObserver || iState!=EInitialized)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   616
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   617
		if(iState == ERecording || iState == ERecordingBufferWait || iState == ERecordingInLastBufferCycle 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   618
                                                                  || iState == ERecordingResumingInLastBufferCycle)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   619
		    { 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   620
		    // treat RecordInitL() during record as Resume()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   621
            User::LeaveIfError(Resume());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   622
            SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::RecordInitL - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   623
            return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   624
		    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   625
        User::Leave(KErrNotReady);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   626
        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   627
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   628
	User::LeaveIfError(SendReceive(EMMFDevSoundProxyRecordInit,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   629
								iDestinationPckg));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   630
	iState = ERecording;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   631
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::RecordInitL - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   632
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   633
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   634
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   635
// RMMFDevSoundProxy::PlayData
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   636
// Plays the data in the buffer at the current volume.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   637
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   638
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   639
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   640
EXPORT_C void RMMFDevSoundProxy::PlayData()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   641
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   642
	//SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayData - Enter")); //Uncommenting this will produce a lot of logging!
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   643
	__ASSERT_ALWAYS(iState == EPlaying || iState == EPlayingBufferWait,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   644
				Panic(EMMFDevSoundProxyPlayDataWithoutInitialize));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   645
	ASSERT(iDevSoundObserver);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   646
	SYMBIAN_CHECK( iState == EPlayingBufferWait,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   647
				Panic(EMMFDevSoundProxyPlayDataInWrongState));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   648
	TMMFDevSoundProxyHwBuf set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   649
	set.iLastBuffer = iBuffer->LastBuffer();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   650
	set.iBufferSize = iBuffer->Data().Size();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   651
	TMMFDevSoundProxyHwBufPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   652
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   653
	SendReceive(EMMFDevSoundProxyPlayData, iDestinationPckg, pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   654
	iState = EPlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   655
	//SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayData - Exit")); //Uncommenting this will produce a lot of logging!
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   656
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   657
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   658
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   659
// RMMFDevSoundProxy::RecordData
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   660
// Signals the device to continue recording.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   661
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   662
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   663
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   664
EXPORT_C void RMMFDevSoundProxy::RecordData()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   665
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   666
	//SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::RecordData - Enter")); //Uncommenting this will produce a lot of logging!
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   667
	__ASSERT_ALWAYS(iState == ERecording || iState == ERecordingBufferWait ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   668
                    iState == ERecordingInLastBufferCycle || iState == ERecordingResumingInLastBufferCycle,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   669
					Panic(EMMFDevSoundProxyRecordDataWithoutInitialize));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   670
	ASSERT(iDevSoundObserver);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   671
	SYMBIAN_CHECK(iState == ERecordingBufferWait || iState == ERecordingInLastBufferCycle ||
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   672
                iState == ERecordingResumingInLastBufferCycle,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   673
                    Panic(EMMFDevSoundProxyPlayDataInWrongState));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   674
	switch (iState)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   675
	    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   676
	    case ERecordingBufferWait:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   677
	        // standard case
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   678
	        SendReceive(EMMFDevSoundProxyRecordData, iDestinationPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   679
	        iState = ERecording;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   680
	        break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   681
	    case ERecordingInLastBufferCycle:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   682
	        // ack of the last buffer. Just swallow - the server should not be sent an ack
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   683
	        iState = ERecording; 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   684
	        break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   685
	    case ERecordingResumingInLastBufferCycle:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   686
	        // this is a RecordData() following a Resume() in the last cycle. This is where we do the resume!
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   687
	        SendReceive(EMMFDevSoundProxyResume, iDestinationPckg); // note ignore any error
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   688
	        iState = ERecording;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   689
	        break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   690
	    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   691
	//SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::RecordData - Exit")); //Uncommenting this will produce a lot of logging!
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   692
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   693
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   694
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   695
// RMMFDevSoundProxy::Stop
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   696
// Stops the ongoing opeartion.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   697
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   698
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   699
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   700
EXPORT_C void RMMFDevSoundProxy::Stop()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   701
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   702
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::Stop - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   703
	if (iState > EInitialized)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   704
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   705
		SendReceive(EMMFDevSoundProxyStop, iDestinationPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   706
		iState = EInitialized;	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   707
		iMsgQueueHandler->Finish(); // will delete the buffer
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   708
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   709
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::Stop - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   710
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   711
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   712
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   713
// RMMFDevSoundProxy::Pause
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   714
// Temporarily stops the ongoing operation.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   715
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   716
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   717
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   718
EXPORT_C void RMMFDevSoundProxy::Pause()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   719
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   720
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::Pause - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   721
	if(iState > EInitialized)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   722
	    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   723
	    SendReceive(EMMFDevSoundProxyPause, iDestinationPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   724
	    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   725
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::Pause - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   726
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   727
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   728
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   729
// RMMFDevSoundProxy::PlayToneL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   730
// Plays the simple tone.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   731
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   732
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   733
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   734
EXPORT_C void RMMFDevSoundProxy::PlayToneL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   735
								TInt aFrequency,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   736
								const TTimeIntervalMicroSeconds& aDuration)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   737
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   738
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayToneL - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   739
	if(iState==ETonePlaying)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   740
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   741
		SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayToneL - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   742
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   743
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   744
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   745
	if (!iDevSoundObserver || iState!=EInitialized)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   746
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   747
		User::Leave(KErrNotReady);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   748
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   749
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   750
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   751
	set.iFrequencyOne = aFrequency;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   752
	set.iDuration = aDuration;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   753
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   754
	User::LeaveIfError(SendReceive(EMMFDevSoundProxyPlayTone,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   755
								iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   756
								pckg));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   757
	iState = ETonePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   758
	iToneMode = ESimple;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   759
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayToneL - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   760
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   761
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   762
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   763
// RMMFDevSoundProxy::PlayDualToneL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   764
// Plays the dual tone.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   765
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   766
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   767
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   768
EXPORT_C void RMMFDevSoundProxy::PlayDualToneL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   769
									TInt aFrequencyOne,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   770
									TInt aFrequencyTwo,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   771
									const TTimeIntervalMicroSeconds& aDuration)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   772
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   773
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayDualToneL - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   774
	if(iState==ETonePlaying)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   775
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   776
		SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayDualToneL - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   777
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   778
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   779
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   780
	if (!iDevSoundObserver || iState!=EInitialized)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   781
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   782
		User::Leave(KErrNotReady);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   783
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   784
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   785
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   786
	set.iFrequencyOne = aFrequencyOne;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   787
	set.iFrequencyTwo = aFrequencyTwo;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   788
	set.iDuration = aDuration;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   789
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   790
	User::LeaveIfError(SendReceive(EMMFDevSoundProxyPlayDualTone, iDestinationPckg, pckg));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   791
	iState = ETonePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   792
	iToneMode = EDual;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   793
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayDualToneL - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   794
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   795
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   796
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   797
// RMMFDevSoundProxy::PlayDTMFStringL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   798
// Plays the DTMF string.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   799
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   800
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   801
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   802
EXPORT_C void RMMFDevSoundProxy::PlayDTMFStringL(const TDesC& aDTMFString)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   803
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   804
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayDTMFStringL - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   805
	if(iState==ETonePlaying)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   806
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   807
		SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayDTMFStringL - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   808
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   809
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   810
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   811
	if (!iDevSoundObserver || iState!=EInitialized)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   812
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   813
		User::Leave(KErrNotReady);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   814
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   815
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   816
	TPtr tempPtr(0,0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   817
	tempPtr.Set(CONST_CAST(TUint16*, aDTMFString.Ptr()),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   818
					aDTMFString.Length(),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   819
					aDTMFString.Length());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   820
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   821
	User::LeaveIfError(SendReceiveResult(EMMFDevSoundProxyPlayDTMFString,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   822
						iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   823
						KNullDesC8,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   824
						tempPtr));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   825
	iState = ETonePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   826
	iToneMode = EDTMFString;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   827
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayDTMFStringL - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   828
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   829
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   830
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   831
// RMMFDevSoundProxy::PlayToneSequenceL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   832
// Plays the tone sequence. (NRT/RNG)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   833
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   834
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   835
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   836
EXPORT_C void RMMFDevSoundProxy::PlayToneSequenceL(const TDesC8& aData )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   837
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   838
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayToneSequenceL - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   839
	if(iState==ETonePlaying)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   840
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   841
		SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayToneSequenceL - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   842
		return;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   843
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   844
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   845
	if (!iDevSoundObserver || iState!=EInitialized)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   846
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   847
		User::Leave(KErrNotReady);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   848
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   849
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   850
	User::LeaveIfError(SendReceive(EMMFDevSoundProxyPlayToneSequence,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   851
								iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   852
								aData));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   853
	iState = ETonePlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   854
	iToneMode = ESequence;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   855
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::PlayToneSequenceL - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   856
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   857
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   858
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   859
// RMMFDevSoundProxy::SetDTMFLengths
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   860
// Set attributes for playing DTMF String.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   861
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   862
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   863
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   864
EXPORT_C void RMMFDevSoundProxy::SetDTMFLengths(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   865
									TTimeIntervalMicroSeconds32& aToneOnLength,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   866
									TTimeIntervalMicroSeconds32& aToneOffLength,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   867
									TTimeIntervalMicroSeconds32& aPauseLength )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   868
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   869
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SetDTMFLengths - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   870
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   871
	set.iToneOnLength = aToneOnLength;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   872
	set.iToneOffLength = aToneOffLength;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   873
	set.iPauseLength = aPauseLength;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   874
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   875
	SendReceive(EMMFDevSoundProxySetDTMFLengths, iDestinationPckg, pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   876
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SetDTMFLengths - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   877
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   878
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   879
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   880
// RMMFDevSoundProxy::SetVolumeRamp
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   881
// Sets the volume ramp duration.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   882
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   883
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   884
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   885
EXPORT_C void RMMFDevSoundProxy::SetVolumeRamp(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   886
								const TTimeIntervalMicroSeconds& aRampDuration)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   887
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   888
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SetVolumeRamp - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   889
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   890
	set.iDuration = aRampDuration;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   891
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   892
	SendReceive(EMMFDevSoundProxySetVolumeRamp, iDestinationPckg, pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   893
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SetVolumeRamp - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   894
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   895
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   896
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   897
// RMMFDevSoundProxy::GetSupportedInputDataTypesL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   898
// Returns supported datatypes for playing audio.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   899
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   900
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   901
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   902
EXPORT_C void RMMFDevSoundProxy::GetSupportedInputDataTypesL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   903
								RArray<TFourCC>& aSupportedDataTypes,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   904
								const TMMFPrioritySettings& aPrioritySettings)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   905
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   906
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::GetSupportedInputDataTypesL - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   907
	aSupportedDataTypes.Reset();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   908
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   909
	TMMFPrioritySettings prioritySet = aPrioritySettings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   910
	TMMFPrioritySettingsPckg pckg(prioritySet);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   911
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   912
	TPckgBuf<TInt> numberOfElementsPckg;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   913
	User::LeaveIfError(SendReceiveResult(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   914
							EMMFDevSoundProxyGetSupportedInputDataTypes,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   915
							iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   916
							pckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   917
							numberOfElementsPckg));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   918
							
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   919
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::GetSupportedInputDataTypesL - Exit 1"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   920
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   921
	HBufC8* buf = HBufC8::NewLC(numberOfElementsPckg()*sizeof(TFourCC));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   922
	TPtr8 ptr = buf->Des();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   923
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   924
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   925
	User::LeaveIfError(SendReceiveResult(EMMFDevSoundProxyCopyFourCCArrayData,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   926
										iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   927
										KNullDesC8,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   928
										ptr));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   929
										
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   930
	RDesReadStream stream(ptr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   931
	CleanupClosePushL(stream);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   932
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   933
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   934
	TInt count = numberOfElementsPckg();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   935
	for (TInt i = 0; i < count; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   936
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   937
		TInt err = aSupportedDataTypes.Append(stream.ReadInt32L());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   938
		if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   939
			{//note we don't destroy array because we don't own it
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   940
			//but we do reset it as it is incomplete
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   941
			aSupportedDataTypes.Reset();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   942
			User::Leave(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   943
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   944
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   945
	CleanupStack::PopAndDestroy(&stream);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   946
	CleanupStack::PopAndDestroy(buf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   947
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::GetSupportedInputDataTypesL - Exit 2"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   948
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   949
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   950
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   951
// RMMFDevSoundProxy::GetSupportedOutputDataTypesL
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   952
// Returns supported datatypes for recording audio.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   953
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   954
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   955
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   956
EXPORT_C void RMMFDevSoundProxy::GetSupportedOutputDataTypesL(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   957
								RArray<TFourCC>& aSupportedDataTypes,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   958
								const TMMFPrioritySettings& aPrioritySettings)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   959
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   960
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::GetSupportedOutputDataTypesL - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   961
	aSupportedDataTypes.Reset();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   962
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   963
	TMMFPrioritySettings prioritySet = aPrioritySettings;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   964
	TMMFPrioritySettingsPckg pckg(prioritySet);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   965
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   966
	TPckgBuf<TInt> numberOfElementsPckg;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   967
	User::LeaveIfError(SendReceiveResult(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   968
								EMMFDevSoundProxyGetSupportedOutputDataTypes,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   969
								iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   970
								pckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   971
								numberOfElementsPckg));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   972
								
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   973
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::GetSupportedOutputDataTypesL - Exit 1"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   974
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   975
	HBufC8* buf = HBufC8::NewLC(numberOfElementsPckg()*sizeof(TFourCC));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   976
	TPtr8 ptr = buf->Des();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   977
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   978
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   979
	User::LeaveIfError(SendReceiveResult(EMMFDevSoundProxyCopyFourCCArrayData,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   980
										iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   981
										KNullDesC8,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   982
										ptr));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   983
	RDesReadStream stream(ptr);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   984
	CleanupClosePushL(stream);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   985
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   986
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   987
	TInt count = numberOfElementsPckg();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   988
	for (TInt i = 0; i < count; i++)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   989
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   990
		TInt err = aSupportedDataTypes.Append(stream.ReadInt32L());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   991
		if (err)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   992
			{//note we don't destroy array because we don't own it
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   993
			//but we do reset it as it is incomplete
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   994
			aSupportedDataTypes.Reset();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   995
			User::Leave(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   996
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   997
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   998
	CleanupStack::PopAndDestroy(&stream);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   999
	CleanupStack::PopAndDestroy(buf);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1000
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::GetSupportedOutputDataTypesL - Exit 2"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1001
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1002
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1003
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1004
// RMMFDevSoundProxy::SamplesRecorded
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1005
// Returns samples recorded so far.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1006
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1007
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1008
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1009
EXPORT_C TInt RMMFDevSoundProxy::SamplesRecorded()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1010
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1011
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SamplesRecorded - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1012
	TPckgBuf<TInt> numSamples;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1013
	SendReceiveResult(EMMFDevSoundProxySamplesRecorded,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1014
					iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1015
					KNullDesC8,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1016
					numSamples);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1017
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SamplesRecorded - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1018
	return numSamples();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1019
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1020
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1021
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1022
// RMMFDevSoundProxy::SamplesPlayed
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1023
// Returns samples played so far.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1024
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1025
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1026
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1027
EXPORT_C TInt RMMFDevSoundProxy::SamplesPlayed()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1028
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1029
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SamplesPlayed - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1030
	TPckgBuf<TInt> numSamples;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1031
	SendReceiveResult(EMMFDevSoundProxySamplesPlayed,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1032
					iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1033
					KNullDesC8,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1034
					numSamples);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1035
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SamplesPlayed - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1036
	return numSamples();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1037
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1038
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1039
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1040
// RMMFDevSoundProxy::SetToneRepeats
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1041
// Sets tone repeats
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1042
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1043
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1044
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1045
EXPORT_C void RMMFDevSoundProxy::SetToneRepeats(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1046
								TInt aRepeatCount,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1047
								const TTimeIntervalMicroSeconds&
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1048
									aRepeatTrailingSilence)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1049
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1050
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SetToneRepeats - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1051
	TPckgBuf<TInt> countRepeat(aRepeatCount);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1052
	TPckgBuf<TTimeIntervalMicroSeconds> repeatTS(aRepeatTrailingSilence);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1053
	SendReceive(EMMFDevSoundProxySetToneRepeats,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1054
				iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1055
				countRepeat,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1056
				repeatTS);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1057
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SetToneRepeats - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1058
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1059
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1060
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1061
// RMMFDevSoundProxy::SetPrioritySettings
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1062
// Sets priority settings
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1063
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1064
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1065
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1066
EXPORT_C void RMMFDevSoundProxy::SetPrioritySettings(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1067
								const TMMFPrioritySettings& aPrioritySettings)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1068
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1069
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SetPrioritySettings - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1070
	TPckgBuf<TMMFPrioritySettings> prioritySet(aPrioritySettings);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1071
	SendReceive(EMMFDevSoundProxySetPrioritySettings,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1072
				iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1073
				prioritySet);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1074
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SetPrioritySettings - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1075
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1076
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1077
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1078
// RMMFDevSoundProxy::CustomInterface
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1079
// Returns a pointer to CustomInterface object.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1080
// (other items were commented in a header).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1081
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1082
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1083
EXPORT_C TAny* RMMFDevSoundProxy::CustomInterface(TUid aInterfaceId)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1084
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1085
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::CustomInterface - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1086
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1087
	set.iInterface = aInterfaceId;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1088
	// Added for ask for custom interface
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1089
	TAny* customInterface = NULL;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1090
	if (aInterfaceId == KMmfUidDevSoundCancelInitializeCustomInterface)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1091
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1092
		MMMFDevSoundCancelInitialize* result = this;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1093
		SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::CustomInterface - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1094
		return result;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1095
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1096
	TPckgBuf<TAny*> pckg2(customInterface);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1097
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1098
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1099
	SendReceiveResult(EMMFDevSoundProxyCustomInterface, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1100
							iDestinationPckg, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1101
							pckg, pckg2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1102
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::CustomInterface - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1103
	return reinterpret_cast<TAny*> (customInterface);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1104
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1105
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1106
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1107
// RMMFDevSoundProxy::BufferToBeFilledData
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1108
// Returns data buffer for playback.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1109
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1110
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1111
EXPORT_C TInt RMMFDevSoundProxy::BufferToBeFilledData(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1112
		TBool aRequestChunk, TMMFDevSoundProxyHwBufPckg& aSetPckg)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1113
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1114
	//SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::BufferToBeFilledData - Enter")); //Uncommenting this will produce a lot of logging!
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1115
	// Note that there will only ever be one of these requests outstanding
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1116
	// per session
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1117
	TPckgBuf<TInt> requestChunkBuf (aRequestChunk);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1118
	TInt err = SendReceiveResult(EMMFDevSoundProxyBTBFData,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1119
							iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1120
							requestChunkBuf,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1121
							aSetPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1122
	//SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::BufferToBeFilledData - Exit [%d]"), err); //Uncommenting this will produce a lot of logging!
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1123
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1124
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1125
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1126
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1127
// RMMFDevSoundProxy::BufferToBeEmptiedData
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1128
// Returns data buffer for recording.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1129
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1130
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1131
EXPORT_C TInt RMMFDevSoundProxy::BufferToBeEmptiedData(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1132
							TMMFDevSoundProxyHwBufPckg& aSetPckg)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1133
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1134
	//SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::BufferToBeEmptiedData - Enter")); //Uncommenting this will produce a lot of logging!
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1135
	// Note that there will only ever be one of these requests outstanding
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1136
	// per session
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1137
	TInt err = SendReceiveResult(EMMFDevSoundProxyBTBEData,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1138
								iDestinationPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1139
								KNullDesC8,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1140
								aSetPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1141
	//SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::BufferToBeEmptiedData - Exit [%d]"), err); //Uncommenting this will produce a lot of logging!
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1142
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1143
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1144
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1145
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1146
// RMMFDevSoundProxy::RegisterAsClient
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1147
// Registers the client for notification of resource avalibility.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1148
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1149
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1150
EXPORT_C TInt RMMFDevSoundProxy::RegisterAsClient(TUid aEventType, const TDesC8& aNotificationRegistrationData)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1151
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1152
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::RegisterAsClient - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1153
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1154
	set.iNotificationEventUid = aEventType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1155
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1156
	TInt err = SendReceive(EMMFDevSoundProxyRequestResourceNotification, iDestinationPckg, pckg, aNotificationRegistrationData);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1157
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::RegisterAsClient - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1158
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1159
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1160
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1161
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1162
// RMMFDevSoundProxy::CancelRegisterAsClient
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1163
// Cancels the Registered Notification.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1164
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1165
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1166
EXPORT_C TInt RMMFDevSoundProxy::CancelRegisterAsClient(TUid aEventType)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1167
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1168
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::CancelRegisterAsClient - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1169
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1170
	set.iNotificationEventUid = aEventType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1171
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1172
	TInt err = SendReceiveResult(EMMFDevSoundProxyCancelRequestResourceNotification, iDestinationPckg, KNullDesC8, pckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1173
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::CancelRegisterAsClient - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1174
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1175
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1176
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1177
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1178
// RMMFDevSoundProxy::GetResourceNotificationData
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1179
// Returns the Notification data which the client needs to resume playing.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1180
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1181
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1182
EXPORT_C TInt RMMFDevSoundProxy::GetResourceNotificationData(TUid aEventType, TDes8& aNotificationData)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1183
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1184
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::GetResourceNotificationData - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1185
	TMMFDevSoundProxySettings set;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1186
	set.iNotificationEventUid = aEventType;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1187
	TMMFDevSoundProxySettingsPckg pckg(set);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1188
	TInt err = SendReceiveResult(EMMFDevSoundProxyGetResourceNotificationData, iDestinationPckg, pckg, aNotificationData);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1189
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::GetResourceNotificationData - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1190
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1191
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1192
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1193
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1194
// RMMFDevSoundProxy::WillResumePlay
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1195
// Wait for the clients to resume play back even after the default timeout 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1196
// expires. Unless the client cancels the notification request or completes 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1197
// no other client gets notification.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1198
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1199
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1200
EXPORT_C TInt RMMFDevSoundProxy::WillResumePlay()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1201
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1202
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::WillResumePlay - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1203
	TInt err = SendReceive(EMMFDevSoundProxyWillResumePlay, iDestinationPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1204
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::WillResumePlay - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1205
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1206
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1207
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1208
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1209
// RMMFDevSoundProxy::EmptyBuffers
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1210
// Empties the play buffers below DevSound without causing the codec 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1211
// to be deleted.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1212
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1213
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1214
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1215
EXPORT_C TInt RMMFDevSoundProxy::EmptyBuffers()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1216
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1217
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::EmptyBuffers - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1218
	TInt error = SendReceive(EMMFDevSoundProxyEmptyBuffers, iDestinationPckg); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1219
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1220
	if(error==KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1221
	    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1222
	    if (iState==EPlayingBufferWait)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1223
	        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1224
	        // Empty buffers terminates the buffer cycle
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1225
	        iState = EPlaying;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1226
	        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1227
	    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1228
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::EmptyBuffers - Exit [%d]"), error);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1229
	return error;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1230
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1231
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1232
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1233
// RMMFDevSoundProxy::CancelInitialize
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1234
// Cancels the initialization process
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1235
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1236
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1237
EXPORT_C TInt RMMFDevSoundProxy::CancelInitialize()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1238
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1239
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::CancelInitialize - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1240
	TInt err=KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1241
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1242
	if (iState==EInitializing)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1243
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1244
		err = SendReceive(EMMFDevSoundProxyCancelInitialize, iDestinationPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1245
		iState = EIdle;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1246
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1247
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1248
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1249
		err = KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1250
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1251
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::CancelInitialize - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1252
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1253
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1254
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1255
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1256
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1257
// RMMFDevSoundProxy::SetClientThreadInfo
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1258
// 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1259
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1260
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1261
EXPORT_C TInt RMMFDevSoundProxy::SetClientThreadInfo(TThreadId& aTid)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1262
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1263
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SetClientThreadInfo - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1264
	TPckgBuf<TThreadId> threadId(aTid);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1265
	TInt err = SendReceive(EMMFDevSoundProxySetClientThreadInfo, iDestinationPckg, threadId);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1266
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::SetClientThreadInfo - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1267
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1268
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1269
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1270
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1271
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1272
// RMMFDevSoundProxy::CustomCommandSync()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1273
// Send Message synchronously to DevSound server and return the result to client
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1274
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1275
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1276
EXPORT_C TInt RMMFDevSoundProxy::CustomCommandSync(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1277
							const TMMFMessageDestinationPckg&  aDestination,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1278
							TInt aFunction,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1279
							const TDesC8& aDataTo1,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1280
							const TDesC8& aDataTo2,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1281
							TDes8& aDataFrom)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1282
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1283
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::CustomCommandSync - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1284
	TInt err = SendReceiveResult(aFunction,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1285
							aDestination,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1286
							aDataTo1,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1287
							aDataTo2,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1288
							aDataFrom);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1289
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::CustomCommandSync - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1290
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1291
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1292
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1293
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1294
// RMMFDevSoundProxy::RMMFDevSoundProxy()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1295
// Send Message synchronously to DevSound server and return the result to client
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1296
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1297
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1298
EXPORT_C TInt RMMFDevSoundProxy::CustomCommandSync(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1299
							const TMMFMessageDestinationPckg&  aDestination,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1300
							TInt aFunction,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1301
							const TDesC8& aDataTo1,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1302
							const TDesC8& aDataTo2)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1303
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1304
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::CustomCommandSync - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1305
	TInt err =  SendReceive(aFunction, aDestination, aDataTo1, aDataTo2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1306
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::CustomCommandSync - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1307
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1308
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1309
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1310
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1311
// RMMFDevSoundProxy::RMMFDevSoundProxy()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1312
// Send Message asynchronously to DevSound server
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1313
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1314
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1315
EXPORT_C void RMMFDevSoundProxy::CustomCommandAsync(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1316
								const TMMFMessageDestinationPckg& aDestination,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1317
								TInt aFunction,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1318
								const TDesC8& aDataTo1,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1319
								const TDesC8& aDataTo2,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1320
								TDes8& aDataFrom,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1321
								TRequestStatus& aStatus )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1322
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1323
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::CustomCommandAsync - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1324
	SendReceiveResult(aFunction,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1325
					aDestination,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1326
					aDataTo1,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1327
					aDataTo2,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1328
					aDataFrom,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1329
					aStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1330
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::CustomCommandAsync - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1331
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1332
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1333
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1334
// RMMFDevSoundProxy::RMMFDevSoundProxy()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1335
// Send Message asynchronously to DevSound server
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1336
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1337
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1338
EXPORT_C void RMMFDevSoundProxy::CustomCommandAsync(
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1339
								const TMMFMessageDestinationPckg& aDestination,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1340
								TInt aFunction,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1341
								const TDesC8& aDataTo1,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1342
								const TDesC8& aDataTo2,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1343
								TRequestStatus& aStatus )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1344
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1345
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::CustomCommandAsync - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1346
	SendReceive(aFunction, aDestination, aDataTo1, aDataTo2, aStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1347
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::CustomCommandAsync - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1348
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1349
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1350
// implementation of a simple CustomCommand() scheme
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1351
EXPORT_C TInt RMMFDevSoundProxy::SyncCustomCommand(TUid aUid, const TDesC8& aParam1, const TDesC8& aParam2, TDes8* aOutParam)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1352
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1353
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SyncCustomCommand - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1354
	TMMFMessageDestinationPckg dest(TMMFMessageDestination(aUid, KMMFObjectHandleDevSound));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1355
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1356
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1357
	if (aOutParam==NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1358
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1359
		SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SyncCustomCommand - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1360
		err = SendReceive(EMMFDevSoundProxySyncCustomCommand, dest, aParam1, aParam2);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1361
		return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1362
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1363
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1364
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1365
		SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::SyncCustomCommand - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1366
		err = SendReceiveResult(EMMFDevSoundProxySyncCustomCommandResult, dest, aParam1, aParam2, *aOutParam);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1367
		return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1368
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1369
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1370
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1371
EXPORT_C void RMMFDevSoundProxy::AsyncCustomCommand(TUid aUid, TRequestStatus& aStatus, const TDesC8& aParam1, const TDesC8& aParam2, TDes8* aOutParam)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1372
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1373
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::AsyncCustomCommand - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1374
	TMMFMessageDestination dest(aUid, KMMFObjectHandleDevSound);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1375
	iCustIntPckg = dest;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1376
	if (aOutParam==NULL)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1377
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1378
		SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::AsyncCustomCommand - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1379
		SendReceive(EMMFDevSoundProxyAsyncCustomCommand, iCustIntPckg, aParam1, aParam2, aStatus);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1380
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1381
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1382
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1383
		SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::AsyncCustomCommand - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1384
		SendReceiveResult(EMMFDevSoundProxyAsyncCustomCommandResult, iCustIntPckg, aParam1, aParam2, *aOutParam, aStatus);		
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1385
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1386
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1387
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1388
EXPORT_C TInt RMMFDevSoundProxy::GetTimePlayed(TTimeIntervalMicroSeconds& aTime)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1389
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1390
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::GetTimePlayed - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1391
	TTimeIntervalMicroSeconds time(0);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1392
	TPckgBuf<TTimeIntervalMicroSeconds> timePckg(time);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1393
	TInt err = SendReceiveResult(EMMFDevSoundProxyGetTimePlayed, iDestinationPckg, KNullDesC8, timePckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1394
	if(err==KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1395
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1396
		aTime = timePckg();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1397
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1398
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::GetTimePlayed - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1399
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1400
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1401
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1402
EXPORT_C TBool RMMFDevSoundProxy::IsResumeSupported()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1403
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1404
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::IsResumeSupported - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1405
	TPckgBuf<TBool> isResumeSupported;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1406
	TInt err = SendReceiveResult(EMMFDevSoundProxyIsResumeSupported, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1407
								iDestinationPckg, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1408
								KNullDesC8, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1409
								isResumeSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1410
	if(err == KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1411
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1412
		SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::IsResumeSupported - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1413
		return isResumeSupported();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1414
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1415
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1416
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1417
		SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::IsResumeSupported - Exit"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1418
		return EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1419
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1420
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1421
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1422
EXPORT_C TInt RMMFDevSoundProxy::Resume()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1423
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1424
	SYMBIAN_DEBPRN0(_L("RMMFDevSoundProxy[0x%x]::Resume - Enter"));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1425
	TInt err = KErrNone;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1426
	if (!iDevSoundObserver ||  iState <= EInitialized  )
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1427
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1428
		err = KErrNotReady;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1429
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1430
	else if(iState == ETonePlaying && iToneMode != ESequence)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1431
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1432
		SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::Resume - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1433
		return KErrNotSupported;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1434
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1435
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1436
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1437
	    if (iState==ERecordingInLastBufferCycle)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1438
            {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1439
            // if we're in a last buffer cycle and get Resume() we have to be careful as the
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1440
            // server side sent a PausedRecordCompleteEvent and did not actually request a buffer!
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1441
            // just record the fact we've done this and wait until RecordData() is called
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1442
            // don't actually resume until then!
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1443
            iState = ERecordingResumingInLastBufferCycle;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1444
            }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1445
	    else if (iState == ERecordingResumingInLastBufferCycle)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1446
	        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1447
            //Do Nothing as you can't resume twice on last buffer 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1448
	        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1449
	    else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1450
	        {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1451
	        err = SendReceive(EMMFDevSoundProxyResume,  
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1452
	                    iDestinationPckg);	        
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1453
	        }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1454
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1455
	SYMBIAN_DEBPRN1(_L("RMMFDevSoundProxy[0x%x]::Resume - Exit [%d]"), err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1456
	return err;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1457
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1458
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1459
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1460
// RMMFDevSoundProxy::StartReceivingMsgQueueHandlerEventsL()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1461
// Starts message queue handler (A/O) to monitor client side events
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1462
// -----------------------------------------------------------------------------
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1463
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1464
void RMMFDevSoundProxy::StartReceivingMsgQueueHandlerEventsL(MMMFDevSoundCustomInterfaceObserver& aDevSoundCIObserver)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1465
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1466
	if (iMsgQueueHandler)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1467
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1468
		iMsgQueueHandler->Cancel();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1469
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1470
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1471
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1472
		iMsgQueueHandler = CMsgQueueHandler::NewL(this,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1473
												*this,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1474
												&iMsgQueue,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1475
												aDevSoundCIObserver);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1476
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1477
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1478
	iMsgQueueHandler->ReceiveEvents();
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1479
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1480
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1481
// MDevSoundObserver 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1482
// intercept the calls from the msgQueueHandler going back to the client, so we can track real state
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1483
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1484
void RMMFDevSoundProxy::InitializeComplete(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1485
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1486
	SYMBIAN_CHECK(iState==EInitializing, Panic(EMMFDevSoundProxyInitCompleteInWrongState));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1487
	if (aError==KErrNone)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1488
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1489
		iState = EInitialized;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1490
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1491
	else 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1492
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1493
		iState = EIdle;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1494
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1495
	iDevSoundObserver->InitializeComplete(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1496
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1497
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1498
void RMMFDevSoundProxy::ToneFinished(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1499
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1500
	SYMBIAN_CHECK(iState==ETonePlaying, Panic(EMMFDevSoundProxyToneFinishedInWrongState));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1501
	iState = EInitialized;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1502
	iDevSoundObserver->ToneFinished(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1503
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1504
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1505
void RMMFDevSoundProxy::PlayError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1506
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1507
	SYMBIAN_CHECK(iState==EPlaying||iState==EPlayingBufferWait, Panic(EMMFDevSoundProxyPlayErrorInWrongState)); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1508
	iState = EInitialized;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1509
	iDevSoundObserver->PlayError(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1510
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1511
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1512
void RMMFDevSoundProxy::RecordError(TInt aError)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1513
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1514
	SYMBIAN_CHECK(iState==ERecording||iState==ERecordingBufferWait, Panic(EMMFDevSoundProxyRecordErrorInWrongState)); 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1515
	iState = EInitialized;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1516
	iDevSoundObserver->RecordError(aError);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1517
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1518
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1519
void RMMFDevSoundProxy::BufferToBeFilled(CMMFBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1520
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1521
	SYMBIAN_CHECK(iState==EPlaying, Panic(EMMFDevSoundProxyBTBFInWrongState));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1522
	iState = EPlayingBufferWait;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1523
	iBuffer = static_cast<CMMFDataBuffer*>(aBuffer); // cache buffer for use in PlayData() later
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1524
	iDevSoundObserver->BufferToBeFilled(aBuffer);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1525
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1526
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1527
void RMMFDevSoundProxy::BufferToBeEmptied(CMMFBuffer* aBuffer)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1528
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1529
	SYMBIAN_CHECK(iState==ERecording, Panic(EMMFDevSoundProxyBTBEInWrongState));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1530
	if (aBuffer->LastBuffer())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1531
	    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1532
	    // this is end of recording. Assume have an empty buffer. Different state so that Resume() is handled as special case.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1533
	    iState = ERecordingInLastBufferCycle;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1534
	    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1535
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1536
	    {
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1537
	    iState = ERecordingBufferWait;	    
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1538
	    }
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1539
	iDevSoundObserver->BufferToBeEmptied(aBuffer);	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1540
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1541
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1542
void RMMFDevSoundProxy::ConvertError(TInt /*aError*/)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1543
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1544
	SYMBIAN_CHECK(EFalse, Panic(EMMFDevSoundProxyUnexpectedConvError));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1545
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1546
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1547
void RMMFDevSoundProxy::DeviceMessage(TUid aMessageType, const TDesC8& aMsg)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1548
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1549
	iDevSoundObserver->DeviceMessage(aMessageType, aMsg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1550
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1551
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1552
void RMMFDevSoundProxy::SendEventToClient(const TMMFEvent& aEvent)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1553
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1554
	iDevSoundObserver->SendEventToClient(aEvent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1555
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1556
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1557
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
  1558
//  End of File