Update contrib.
1 // Copyright (c) 2004-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".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
20 #include "MmfAudioServerProxy.h"
21 #include "MmfAudioServerStart.h"
22 #include "MmfBase.hrh"
23 #include "MmfAudioClientServer.h"
25 #define KMaxServerNameLength 256
27 static const TUid KUidAudioServer = {KUidMmfAudioServerDllUnicodeDefine};
28 const TInt KRetries = 5;
29 const TInt KInitialTime = 100000; //100ms
30 const TInt KTimeIncrement = 50000; // 50ms
33 EXPORT_C TInt RMMFAudioServerProxy::Open()
36 const TUidType serverUid(KNullUid,KNullUid,KUidAudioServer);
38 // Assume the server is already running and attempt to create a session
40 TInt err = CreateSession(KAudioServerName, TVersion(KMMFAudioServerVersion,
41 KMMFAudioServerMinorVersionNumber,
42 KMMFAudioServerBuildVersionNumber));
43 if(err == KErrNotFound)
46 // Construct the server binary name
47 TBuf<KMaxServerNameLength> serverFile;
52 err = server.Create(KAudioServerFileName, KEmpty, serverUid);
55 // Synchronise with the server
56 TRequestStatus reqStatus;
57 server.Rendezvous(reqStatus);
59 if (reqStatus!=KRequestPending)
65 // Start the test harness
67 // Server will call the reciprocal static synchronise call
69 User::WaitForRequest(reqStatus); // wait for rendezvous or death
71 TInt reqStatusValue = reqStatus.Int();
72 if(reqStatusValue != KErrNone)
74 if(reqStatusValue == KErrNoMemory || reqStatusValue == KErrNotFound)
76 // All error codes except KErrNoMemory and KErrNotFound are assumed
77 // to be a duplicate server instance dying, then keep trying connection
78 // to the server. This can happen when two servers attempt to start
80 return reqStatusValue;
82 //Wait for sometime, then retry and creation session
83 TInt waitTime = KInitialTime;
84 for(TInt retries=0;retries<KRetries;retries++)
86 User::After(waitTime);
87 waitTime+=KTimeIncrement;
88 err = CreateSession(KAudioServerName, TVersion(KMMFAudioServerVersion,
89 KMMFAudioServerMinorVersionNumber,
90 KMMFAudioServerBuildVersionNumber));
93 //Session created successfully
100 //Create the root server session
101 err = CreateSession(KAudioServerName, TVersion(KMMFAudioServerVersion,
102 KMMFAudioServerMinorVersionNumber,
103 KMMFAudioServerBuildVersionNumber));
110 EXPORT_C TInt RMMFAudioServerProxy::SetDevSoundInfo()
112 return SendReceive(EMMFAudioLaunchRequests);
115 EXPORT_C TInt RMMFAudioServerProxy::GetDevSoundSessionHandle()
117 return SendReceive(EMMFDevSoundSessionHandle);