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