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