devsound/a3fdevsound/src/mmfaudioserverproxy/mmfaudioserverproxy.cpp
branchRCL_3
changeset 11 d5f04de580b7
parent 0 40261b775718
equal deleted inserted replaced
8:bc06d8566074 11:d5f04de580b7
    27 static const TUid KUidAudioServer = {KUidA3fAudioServerUID};
    27 static const TUid KUidAudioServer = {KUidA3fAudioServerUID};
    28 const TInt KRetries = 5; 
    28 const TInt KRetries = 5; 
    29 const TInt KInitialTime = 100000;  //100ms
    29 const TInt KInitialTime = 100000;  //100ms
    30 const TInt KTimeIncrement = 50000; // 50ms 
    30 const TInt KTimeIncrement = 50000; // 50ms 
    31 
    31 
       
    32 _LIT_SECURITY_POLICY_C1(KServerHasDRMRights, ECapabilityDRM);
       
    33 
       
    34 // -----------------------------------------------------------------------------
       
    35 // RMMFAudioServerProxy::OpenSessionToTrustedAudioServer
       
    36 //
       
    37 // -----------------------------------------------------------------------------
       
    38 //	
       
    39 TInt RMMFAudioServerProxy::OpenSessionToTrustedAudioServer()
       
    40 	{
       
    41 	return CreateSession(KAudioServerName,
       
    42                                 TVersion(KMMFAudioServerVersion,
       
    43                                 KMMFAudioServerMinorVersionNumber,
       
    44                                 KMMFAudioServerBuildVersionNumber),
       
    45                                 -1, // Global pool
       
    46                                 EIpcSession_Unsharable,
       
    47                                 &KServerHasDRMRights,
       
    48                                 NULL); // NULL required for synchronous behaviour
       
    49 	}	
       
    50 
    32 // -----------------------------------------------------------------------------
    51 // -----------------------------------------------------------------------------
    33 // RMMFAudioServerProxy::Open
    52 // RMMFAudioServerProxy::Open
    34 //
    53 //
    35 // -----------------------------------------------------------------------------
    54 // -----------------------------------------------------------------------------
    36 //
    55 //
    37 EXPORT_C TInt RMMFAudioServerProxy::Open()
    56 EXPORT_C TInt RMMFAudioServerProxy::Open()
    38 	{
    57 	{
    39 	const TUidType serverUid(KNullUid,KNullUid,KUidAudioServer);
    58 	const TUidType serverUid(KNullUid,KNullUid,KUidAudioServer);
    40 	// Assume the server is already running and attempt to create a session
    59 	// Assume the server is already running and attempt to create a session
    41 	// 4 message slots
    60 	TInt err = OpenSessionToTrustedAudioServer();
    42 	TInt err = CreateSession(KAudioServerName,
    61 	
    43 								TVersion(KMMFAudioServerVersion,
       
    44 								KMMFAudioServerMinorVersionNumber,
       
    45 								KMMFAudioServerBuildVersionNumber));
       
    46 
       
    47 	if(err == KErrNotFound)
    62 	if(err == KErrNotFound)
    48 		{
    63 		{
    49 		// Server not running
    64 		// Server not running
    50 		// Construct the server binary name
    65 		// Construct the server binary name
    51 		RProcess server;
    66 		RProcess server;
    90 			TInt waitTime = KInitialTime;
   105 			TInt waitTime = KInitialTime;
    91 			for(TInt retries=0;retries<KRetries;retries++)
   106 			for(TInt retries=0;retries<KRetries;retries++)
    92 				{
   107 				{
    93 				User::After(waitTime);
   108 				User::After(waitTime);
    94 				waitTime+=KTimeIncrement;
   109 				waitTime+=KTimeIncrement;
    95 				err = CreateSession(KAudioServerName, TVersion(KMMFAudioServerVersion,
   110 				err = OpenSessionToTrustedAudioServer();				
    96 														KMMFAudioServerMinorVersionNumber,
   111 				
    97 														KMMFAudioServerBuildVersionNumber));
       
    98 				if(err==KErrNone)
   112 				if(err==KErrNone)
    99 					{
   113 					{
   100 					//Session created successfully
   114 					//Session created successfully
   101 					break;
   115 					break;
   102 					}	
   116 					}	
   103 				}			
   117 				}			
   104 			}
   118 			}
   105 		else
   119 		else
   106 			{
   120 			{
   107 			// Create the root server session
   121 			// Create the root server session
   108 			err = CreateSession(KAudioServerName,
   122             err = OpenSessionToTrustedAudioServer();
   109 							TVersion(KMMFAudioServerVersion,
       
   110 									KMMFAudioServerMinorVersionNumber,
       
   111 									KMMFAudioServerBuildVersionNumber));
       
   112 			}
   123 			}
   113 		}
   124 		}
   114 	return err;
   125 	return err;
   115 	}
   126 	}
   116 
   127