kerneltest/e32test/usb/t_usb_device/src/transfersrv.cpp
changeset 247 d8d70de2bd36
child 253 d37db4dcc88d
equal deleted inserted replaced
201:43365a9b78a3 247:d8d70de2bd36
       
     1 /*
       
     2 * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:
       
    15 *
       
    16 */
       
    17 
       
    18 /**
       
    19 @file
       
    20 @internalTechnology
       
    21 */
       
    22 
       
    23 #include <e32base.h>
       
    24 #include <e32test.h>
       
    25 #include <usb.h>
       
    26 #include "transfersrv.h"
       
    27 
       
    28 _LIT(KUsbmanImg, "z:\\system\\programs\\t_usb_transfersrv.exe");
       
    29 
       
    30 
       
    31 static TInt StartServer()
       
    32 //
       
    33 // Start the server process or thread
       
    34 //
       
    35 	{
       
    36 	const TUidType serverUid(KNullUid, KNullUid, KTransferSvrUid);
       
    37 	RDebug::Printf("StartServer1");
       
    38 
       
    39 	RProcess server;
       
    40 	TInt err = server.Create(KUsbmanImg, KNullDesC, serverUid);
       
    41 	RDebug::Printf("StartServer2 %d", err);
       
    42 	
       
    43 	if (err != KErrNone)
       
    44 		{
       
    45 		return err;
       
    46 		}
       
    47 	RDebug::Printf("StartServer3");
       
    48 
       
    49 	TRequestStatus stat;
       
    50 	server.Rendezvous(stat);
       
    51 	
       
    52 	if (stat!=KRequestPending)
       
    53 		server.Kill(0);		// abort startup
       
    54 	else
       
    55 		server.Resume();	// logon OK - start the server
       
    56 	RDebug::Printf("StartServer4");
       
    57 
       
    58 	User::WaitForRequest(stat);		// wait for start or death
       
    59 
       
    60 	// we can't use the 'exit reason' if the server panicked as this
       
    61 	// is the panic 'reason' and may be '0' which cannot be distinguished
       
    62 	// from KErrNone
       
    63 	err = (server.ExitType() == EExitPanic) ? KErrServerTerminated : stat.Int();
       
    64 	RDebug::Printf("StartServer5");
       
    65 
       
    66 	//server.Close();
       
    67 	
       
    68 	RDebug::Printf("transfer server started successfully: \n");
       
    69 
       
    70 	return err;
       
    71 	}
       
    72 
       
    73 
       
    74 
       
    75 /** Constructor */
       
    76 EXPORT_C RTransferSrv::RTransferSrv()
       
    77     {
       
    78     }
       
    79 
       
    80 /** Destructor */
       
    81 EXPORT_C RTransferSrv::~RTransferSrv()
       
    82     {
       
    83     }
       
    84 
       
    85 EXPORT_C TVersion RTransferSrv::Version() const
       
    86     {
       
    87     return TVersion(    KTransferSrvMajorVersionNumber,
       
    88                         KTransferSrvMinorVersionNumber,
       
    89                         KTransferSrvBuildVersionNumber
       
    90                     );
       
    91     }
       
    92 
       
    93 EXPORT_C TInt RTransferSrv::Connect()
       
    94     {
       
    95 	TInt retry = 2;
       
    96 	
       
    97 	RDebug::Printf("Connect1");
       
    98 	FOREVER
       
    99 		{
       
   100 		TInt err = CreateSession(KTransferServerName, Version(), 10);
       
   101 		RDebug::Printf("Connect2");
       
   102 
       
   103 		if ((err != KErrNotFound) && (err != KErrServerTerminated))
       
   104 			{
       
   105 			return err;
       
   106 			}
       
   107 		RDebug::Printf("Connect3");
       
   108 
       
   109 		if (--retry == 0)
       
   110 			{
       
   111 			return err;
       
   112 			}
       
   113 		RDebug::Printf("Connect4");
       
   114 
       
   115 		err = StartServer();
       
   116 
       
   117 		if ((err != KErrNone) && (err != KErrAlreadyExists))
       
   118 			{
       
   119 			return err;
       
   120 			}
       
   121 		
       
   122 		RDebug::Printf("Connect5");
       
   123 		}
       
   124     }
       
   125 
       
   126 EXPORT_C TInt RTransferSrv::SetConfigFileName(TDes& aString)
       
   127 	{
       
   128 	
       
   129 	RDebug::Printf("SetConfigFileName");
       
   130 	return SendReceive(ESetConfigFileName, TIpcArgs(&aString));
       
   131 	}
       
   132