devsound/devsoundpluginsupport/src/CustomInterfaces/cmmfdevsoundcifileblocklength.cpp
author hgs
Thu, 24 Jun 2010 10:37:45 +0100
changeset 26 c36d67f77f75
permissions -rw-r--r--
2010wk21_04
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
26
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
     1
// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
     2
// All rights reserved.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
     7
//
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
     8
// Initial Contributors:
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    10
//
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    11
// Contributors:
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    12
//
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    13
// Description:
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    14
//
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    15
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    16
#include "cmmfdevsoundcifileblocklengthimpluid.hrh"
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    17
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    18
#include <ecom/implementationproxy.h>
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    19
#include <ecom/implementationproxy.h>
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    20
#include <ecom/ecom.h>
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    21
#include <s32mem.h>
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    22
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    23
#include "cmmfdevsoundcifileblocklength.h"
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    24
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    25
// __________________________________________________________________________
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    26
// Implementation
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    27
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    28
// MUX //
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    29
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    30
TInt CMMFDevSoundCIFileBlockLengthMux::OpenInterface(TUid /*aInterfaceId*/)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    31
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    32
	// attempt to open the interface link with the
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    33
	// remote slave device
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    34
	iRemoteHandle = -1;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    35
	TUid slaveId = {KMmfUidCIFileBlockLengthDeMux};
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    36
		
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    37
	TInt handle = iUtility->OpenSlave(slaveId, KNullDesC8);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    38
	if (handle >= 0)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    39
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    40
		iRemoteHandle = handle;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    41
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    42
		
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    43
	return iRemoteHandle;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    44
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    45
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    46
void CMMFDevSoundCIFileBlockLengthMux::Release()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    47
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    48
	// close the slave device if it exists
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    49
	if (iRemoteHandle != -1)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    50
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    51
		// we assume the slave is closed correctly
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    52
		iUtility->CloseSlave(iRemoteHandle);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    53
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    54
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    55
	TUid key = iKey;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    56
	delete this;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    57
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    58
	// tell ECom to destroy us
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    59
	REComSession::DestroyedImplementation(key);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    60
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    61
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    62
void CMMFDevSoundCIFileBlockLengthMux::PassDestructorKey(TUid aDestructorKey)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    63
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    64
	// store the destructor key
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    65
	iKey = aDestructorKey;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    66
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    67
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    68
void CMMFDevSoundCIFileBlockLengthMux::CompleteConstructL(MMMFDevSoundCustomInterfaceMuxUtility* aCustomUtility)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    69
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    70
	// store a pointer to the utility
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    71
	iUtility = aCustomUtility;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    72
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    73
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    74
MMMFDevSoundCustomInterfaceMuxPlugin* CMMFDevSoundCIFileBlockLengthMux::NewL()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    75
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    76
	CMMFDevSoundCIFileBlockLengthMux* self = new (ELeave) CMMFDevSoundCIFileBlockLengthMux;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    77
	return self;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    78
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    79
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    80
TAny* CMMFDevSoundCIFileBlockLengthMux::CustomInterface(TUid /*aInterfaceId*/)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    81
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    82
	MMMFDevSoundCustomInterfaceFileBlockLength* interface = this;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    83
	return interface;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    84
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    85
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    86
CMMFDevSoundCIFileBlockLengthMux::CMMFDevSoundCIFileBlockLengthMux() :
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    87
	iRemoteHandle(-1)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    88
	{	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    89
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    90
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    91
CMMFDevSoundCIFileBlockLengthMux::~CMMFDevSoundCIFileBlockLengthMux()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    92
	{	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    93
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    94
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    95
// from MMMFDevSoundCustomInterfaceFileBlockLength
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    96
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    97
void CMMFDevSoundCIFileBlockLengthMux::SetFileBlockLength(TUint aBlockAlign)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    98
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
    99
	if (iRemoteHandle == -1)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   100
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   101
		return;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   102
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   103
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   104
	// send the BlockAlign in the sync command
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   105
	TPckgBuf<TUint> blockAlignBuffer(aBlockAlign);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   106
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   107
	iUtility->SendSlaveSyncCommand(iRemoteHandle, EMMFDevSoundCIBlockLengthSetFileBlockLength, blockAlignBuffer);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   108
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   109
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   110
// DEMUX //	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   111
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   112
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   113
TInt CMMFDevSoundCIFileBlockLengthDeMux::OpenInterface(TUid /*aInterfaceId*/)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   114
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   115
	return KErrNone;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   116
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   117
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   118
void CMMFDevSoundCIFileBlockLengthDeMux::Release()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   119
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   120
	TUid key = iKey;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   121
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   122
	delete this;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   123
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   124
	// tell ECom to destroy us
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   125
	REComSession::DestroyedImplementation(key);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   126
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   127
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   128
void CMMFDevSoundCIFileBlockLengthDeMux::PassDestructorKey(TUid aDestructorKey)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   129
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   130
	// store the destructor key
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   131
	iKey = aDestructorKey;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   132
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   133
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   134
void CMMFDevSoundCIFileBlockLengthDeMux::SetInterfaceTarget(MMMFDevSoundCustomInterfaceTarget* aTarget)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   135
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   136
	iTarget = aTarget;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   137
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   138
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   139
void CMMFDevSoundCIFileBlockLengthDeMux::CompleteConstructL(MMMFDevSoundCustomInterfaceDeMuxUtility* aCustomUtility)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   140
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   141
	// store a pointer to the utility
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   142
	iUtility = aCustomUtility;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   143
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   144
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   145
void CMMFDevSoundCIFileBlockLengthDeMux::RefreshL()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   146
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   147
	// refetch the fileblocklength custom interface if we already have a target
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   148
	if (iTarget)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   149
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   150
		MMMFDevSoundCustomInterfaceFileBlockLength* ptr = NULL;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   151
		ptr = static_cast<MMMFDevSoundCustomInterfaceFileBlockLength*>(iTarget->CustomInterface(KUidCustomInterfaceDevSoundFileBlockLength));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   152
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   153
		if (!ptr)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   154
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   155
			iFileBlockLengthInterface = NULL;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   156
			User::Leave(KErrNotSupported);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   157
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   158
		else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   159
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   160
			iFileBlockLengthInterface = ptr;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   161
			}	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   162
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   163
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   164
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   165
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   166
MMMFDevSoundCustomInterfaceDeMuxPlugin* CMMFDevSoundCIFileBlockLengthDeMux::NewL()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   167
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   168
	CMMFDevSoundCIFileBlockLengthDeMux* self = new (ELeave) CMMFDevSoundCIFileBlockLengthDeMux;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   169
	return self;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   170
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   171
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   172
CMMFDevSoundCIFileBlockLengthDeMux::CMMFDevSoundCIFileBlockLengthDeMux()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   173
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   174
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   175
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   176
CMMFDevSoundCIFileBlockLengthDeMux::~CMMFDevSoundCIFileBlockLengthDeMux()
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   177
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   178
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   179
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   180
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   181
TInt CMMFDevSoundCIFileBlockLengthDeMux::DoOpenSlaveL(TUid /*aInterface*/, const TDesC8& /*aPackageBuf*/)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   182
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   183
	// fetch the fileblocklength custom interface
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   184
	MMMFDevSoundCustomInterfaceFileBlockLength* ptr = NULL;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   185
	ptr = static_cast <MMMFDevSoundCustomInterfaceFileBlockLength*> (iTarget->CustomInterface(KUidCustomInterfaceDevSoundFileBlockLength));
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   186
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   187
	if (!ptr)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   188
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   189
		iFileBlockLengthInterface = NULL;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   190
		User::Leave(KErrNotSupported);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   191
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   192
	else
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   193
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   194
		iFileBlockLengthInterface = ptr;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   195
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   196
	return KErrNone;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   197
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   198
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   199
void CMMFDevSoundCIFileBlockLengthDeMux::DoCloseSlaveL(TInt /*aHandle*/)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   200
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   201
	// nothing to do
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   202
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   203
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   204
// original RMessage is supplied so that remote demux plugin can extract necessary details
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   205
// using DeMux utility
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   206
TInt CMMFDevSoundCIFileBlockLengthDeMux::DoSendSlaveSyncCommandL(const RMmfIpcMessage& aMessage)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   207
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   208
	TMMFDevSoundCIMessageData data;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   209
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   210
	// decode message
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   211
	iUtility->GetSyncMessageDataL(aMessage, data);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   212
	TInt retVal = -1;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   213
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   214
	switch (data.iCommand)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   215
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   216
		case EMMFDevSoundCIBlockLengthSetFileBlockLength:
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   217
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   218
			// we know that offset 2 contains a TInt
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   219
			TPckgBuf<TUint> blockAlignBuffer;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   220
			iUtility->ReadFromInputDesL(aMessage, &blockAlignBuffer);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   221
			
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   222
			DoSetFileBlockLengthL(blockAlignBuffer());
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   223
			retVal = KErrNone;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   224
			break;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   225
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   226
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   227
		default:
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   228
			{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   229
			User::Leave(KErrNotSupported);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   230
			}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   231
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   232
		
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   233
	return retVal;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   234
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   235
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   236
TInt CMMFDevSoundCIFileBlockLengthDeMux::DoSendSlaveSyncCommandResultL(const RMmfIpcMessage& /*aMessage*/)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   237
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   238
	return KErrNotSupported;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   239
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   240
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   241
void CMMFDevSoundCIFileBlockLengthDeMux::DoSendSlaveAsyncCommandL(const RMmfIpcMessage& /*aMessage*/)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   242
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   243
	// not used in this interface
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   244
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   245
	
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   246
void CMMFDevSoundCIFileBlockLengthDeMux::DoSendSlaveAsyncCommandResultL(const RMmfIpcMessage& /*aMessage*/)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   247
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   248
	// not used in this interface
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   249
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   250
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   251
void CMMFDevSoundCIFileBlockLengthDeMux::DoSetFileBlockLengthL(TUint aBlockAlign)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   252
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   253
	if (!iFileBlockLengthInterface)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   254
		{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   255
		User::Leave(KErrNotReady);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   256
		}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   257
			
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   258
	// set the block length		
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   259
	iFileBlockLengthInterface->SetFileBlockLength(aBlockAlign);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   260
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   261
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   262
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   263
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   264
//
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   265
// ImplementationTable
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   266
//
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   267
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   268
const TImplementationProxy ImplementationTable[] = 
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   269
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   270
	IMPLEMENTATION_PROXY_ENTRY(KMmfUidCIFileBlockLengthMux,	CMMFDevSoundCIFileBlockLengthMux::NewL),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   271
	IMPLEMENTATION_PROXY_ENTRY(KMmfUidCIFileBlockLengthDeMux, CMMFDevSoundCIFileBlockLengthDeMux::NewL),
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   272
	};
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   273
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   274
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   275
//
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   276
// ImplementationGroupProxy
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   277
//
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   278
//
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   279
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   280
EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   281
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   282
	aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   283
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   284
	return ImplementationTable;
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   285
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   286
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   287
#ifndef EKA2
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   288
/** DLL Entry point */
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   289
GLDEF_C TInt E32Dll(TDllReason /*aReason*/)
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   290
	{
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   291
	return(KErrNone);
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   292
	}
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   293
#endif
c36d67f77f75 2010wk21_04
hgs
parents:
diff changeset
   294