os/mm/devsound/sounddevbt/PlatSec/src/Client/MmfBtAudioServerProxy.cpp
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 //
    15 
    16 #include <f32file.h>
    17 #include <e32math.h>
    18 #include <s32mem.h>
    19 
    20 #include "MmfBtAudioServerProxy.h"
    21 #include "MmfBtAudioServerStart.h"
    22 #include "../../../inc/common/mmfBtBase.hrh"
    23 #include "MmfBtAudioClientServer.h"
    24 
    25 #define KMaxServerNameLength 256
    26 
    27 static const TUid KUidAudioServer = {KUidMmfBtAudioServerDllUnicodeDefine};
    28 
    29 
    30 EXPORT_C TInt RMMFAudioServerProxy::Open()
    31 	{
    32 
    33 	const TUidType serverUid(KNullUid,KNullUid,KUidAudioServer);
    34 		
    35 	// Assume the server is already running and attempt to create a session
    36 	// 4 message slots
    37 	TInt err = CreateSession(KAudioServerName, TVersion(KMMFAudioServerVersion,
    38 														KMMFAudioServerMinorVersionNumber,
    39 														KMMFAudioServerBuildVersionNumber));
    40 	if(err == KErrNotFound)
    41 		{
    42 		// Server not running
    43 		// Construct the server binary name
    44 		TBuf<KMaxServerNameLength> serverFile;
    45 		RProcess server;
    46 
    47 		_LIT(KEmpty,"");
    48 
    49 		err = server.Create(KAudioServerFileName, KEmpty, serverUid);
    50 		if(err != KErrNone)
    51 			return err;
    52 		// Synchronise with the server
    53 		TRequestStatus reqStatus;
    54 		server.Rendezvous(reqStatus);
    55 		
    56 		if (reqStatus!=KRequestPending)
    57 			{
    58 			server.Kill(0);
    59 			}
    60 		else
    61 			{
    62 			// Start the test harness
    63 			server.Resume();
    64 			// Server will call the reciprocal static synchronise call
    65 			}
    66 		User::WaitForRequest(reqStatus); // wait for rendezvous or death
    67 		server.Close();
    68 		if(reqStatus.Int() != KErrNone)
    69 			return reqStatus.Int();
    70 		
    71 		// Create the root server session
    72 		err = CreateSession(KAudioServerName, TVersion(KMMFAudioServerVersion,
    73 														KMMFAudioServerMinorVersionNumber,
    74 														KMMFAudioServerBuildVersionNumber));
    75 		}
    76 	return err;		
    77 		
    78 	}
    79 
    80 EXPORT_C TInt RMMFAudioServerProxy::SetDevSoundInfo()
    81 	{
    82 	return SendReceive(EMMFAudioLaunchRequests);
    83 	}
    84 
    85 EXPORT_C HBufC* RMMFAudioServerProxy::GetDevSoundServerNameL()
    86 	{
    87 	TInt len = GetDevSoundServerNameLengthL();
    88 	len++;
    89 	HBufC8* devSoundServerName = HBufC8::NewLC(len);
    90 	TPtr8 devSoundServerNamePtr = devSoundServerName->Des();
    91 	User::LeaveIfError(SendReceiveResult(EMMFDevSoundServerName,
    92 					                     KNullDesC8,
    93 					                     KNullDesC8,
    94 					                     devSoundServerNamePtr));
    95 
    96 	RDesReadStream stream;
    97 	stream.Open(*devSoundServerName);
    98 	CleanupClosePushL(stream);
    99 
   100 	HBufC* devSoundServerNameFlat = HBufC::NewL(stream, KMaxTInt);
   101 	
   102 	CleanupStack::PopAndDestroy();//stream
   103 	CleanupStack::PopAndDestroy(devSoundServerName);
   104 
   105 	return devSoundServerNameFlat;
   106 	}
   107 
   108 
   109 TInt RMMFAudioServerProxy::GetDevSoundServerNameLengthL()
   110 	{
   111 	TPckgBuf<TInt> descriptorSizePckg;
   112 	User::LeaveIfError(SendReceiveResult(EMMFDevSoundServerNameLength,
   113 					                     KNullDesC8,
   114 					                     KNullDesC8,
   115 					                     descriptorSizePckg));
   116 
   117 	return descriptorSizePckg();
   118 	}
   119 
   120