kerneltest/e32test/usbho/t_usbdi/src/TestDeviceBase.cpp
author hgs
Mon, 11 Oct 2010 19:11:06 +0100
changeset 287 ddfd5aa0d58f
parent 271 dc268b18d709
permissions -rw-r--r--
201041_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
253
d37db4dcc88d 201033_01
hgs
parents: 0
diff changeset
     1
// Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies).
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     2
// All rights reserved.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     3
// This component and the accompanying materials are made available
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     4
// under the terms of the License "Eclipse Public License v1.0"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     5
// which accompanies this distribution, and is available
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     7
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     8
// Initial Contributors:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    10
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    11
// Contributors:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    12
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    13
// Description:
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    14
// @file testdevicebase.cpp
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    15
// @internalComponent
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    16
// 
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    17
//
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    18
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    19
#include "TestDeviceBase.h"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    20
#include "UsbDescriptorOffsets.h"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    21
#include "testdebug.h"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    22
#include <e32test.h>
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    23
#include "softwareconnecttimer.h"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    24
#include "wakeuptimer.h"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    25
#include "controltransferrequests.h"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    26
#include "testinterfacebase.h"
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    27
#include "PBASE-T_USBDI-0486.h"
253
d37db4dcc88d 201033_01
hgs
parents: 0
diff changeset
    28
#include "OstTraceDefinitions.h"
d37db4dcc88d 201033_01
hgs
parents: 0
diff changeset
    29
#ifdef OST_TRACE_COMPILER_IN_USE
d37db4dcc88d 201033_01
hgs
parents: 0
diff changeset
    30
#include "TestDeviceBaseTraces.h"
d37db4dcc88d 201033_01
hgs
parents: 0
diff changeset
    31
#endif
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    32
#include <e32property.h>
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    33
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    34
namespace NUnitTesting_USBDI
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    35
    {
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    36
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    37
RUsbTestDevice::RUsbTestDevice()
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    38
:     iStateWatcher(NULL), 
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    39
    iCurrentState(EUsbcDeviceStateUndefined), 
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    40
    iDeviceEp0(NULL), 
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    41
    iConnectTimer(NULL), iWakeupTimer(NULL),
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    42
    iAuxBuffer(NULL)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    43
    {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    44
    OstTraceFunctionEntry1( RUSBTESTDEVICE_RUSBTESTDEVICE_ENTRY, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    45
    OstTraceFunctionExit1( RUSBTESTDEVICE_RUSBTESTDEVICE_EXIT, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    46
    }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    47
    
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    48
RUsbTestDevice::RUsbTestDevice(CBaseTestCase* aTestCase)
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    49
:     iStateWatcher(NULL), 
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    50
    iCurrentState(EUsbcDeviceStateUndefined), 
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    51
    iDeviceEp0(NULL), 
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    52
    iConnectTimer(NULL), iWakeupTimer(NULL),
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    53
    iAuxBuffer(NULL)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    54
    {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    55
    OstTraceFunctionEntryExt( RUSBTESTDEVICE_RUSBTESTDEVICE_ENTRY_DUP01, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    56
    iTestCase = aTestCase;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    57
    OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_RUSBTESTDEVICE, "iTestCase = %d", iTestCase);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    58
    OstTraceFunctionExit1( RUSBTESTDEVICE_RUSBTESTDEVICE_EXIT_DUP01, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    59
    }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    60
        
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    61
void RUsbTestDevice::ResetState()
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    62
    {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    63
    OstTraceFunctionEntry1( RUSBTESTDEVICE_RESETSTATE_ENTRY, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    64
    iCurrentState = EUsbcDeviceStateUndefined;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    65
    OstTraceFunctionExit1( RUSBTESTDEVICE_RESETSTATE_EXIT, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    66
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    67
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    68
RUsbTestDevice::~RUsbTestDevice()
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    69
    {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    70
    OstTraceFunctionEntry1( RUSBTESTDEVICE_RUSBTESTDEVICE_ENTRY_DUP02, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    71
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    72
    OstTraceFunctionExit1( RUSBTESTDEVICE_RUSBTESTDEVICE_EXIT_DUP02, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    73
    }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    74
    
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    75
void RUsbTestDevice::Close()
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    76
    {
253
d37db4dcc88d 201033_01
hgs
parents: 0
diff changeset
    77
OstTraceFunctionEntry1( RUSBTESTDEVICE_CLOSE_ENTRY, this );
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    78
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    79
    delete iWakeupTimer;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    80
    delete iConnectTimer;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    81
    delete iDeviceEp0;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    82
    delete iStateWatcher;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    83
        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    84
    iInterfaces.ResetAndDestroy();
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    85
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    86
    iClientDriver.Close(); 
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    87
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    88
    if(!iTestCase->IsHost()) // process only started in client rom
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
    89
        {
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    90
        // create a publish/subscribe key to allow usbhost_usbman to be killed
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    91
        // cleanly
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    92
        static const TUid KWordOfDeathCat = {0x01066600};
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    93
        static const TInt KWordOfDeathKey = 0x01066601;
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    94
        static _LIT_SECURITY_POLICY_PASS(KAllowAllPolicy);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    95
        TInt r = RProperty::Define(KWordOfDeathCat, KWordOfDeathKey, RProperty::EInt,KAllowAllPolicy, KAllowAllPolicy, 0);
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    96
        if(r != KErrNone)
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    97
            {
253
d37db4dcc88d 201033_01
hgs
parents: 0
diff changeset
    98
            OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_CLOSE, "Could not create the WordOfDeath P&S   (%d)", r);
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
    99
            }
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   100
        OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_CLOSE_DUP01, "killing t_usbhost_usbman.exe");
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   101
        RProperty::Set(KWordOfDeathCat, KWordOfDeathKey, KErrAbort);   // Send the word of death
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   102
        User::After(1000000); //allow time for t_usbhost_usbman.exe to clean up
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   103
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   104
    OstTraceFunctionExit1( RUSBTESTDEVICE_CLOSE_EXIT, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   105
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   106
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   107
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   108
void RUsbTestDevice::SubscribeToReports(TRequestStatus& aObserverStatus)
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   109
    {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   110
    OstTraceFunctionEntryExt( RUSBTESTDEVICE_SUBSCRIBETOREPORTS_ENTRY, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   111
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   112
    // Signal the request as pending
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   113
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   114
    iObserverStatus = &aObserverStatus;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   115
    *iObserverStatus = KRequestPending;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   116
    OstTraceFunctionExit1( RUSBTESTDEVICE_SUBSCRIBETOREPORTS_EXIT, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   117
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   118
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   119
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   120
void RUsbTestDevice::CancelSubscriptionToReports()
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   121
    {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   122
    OstTraceFunctionEntry1( RUSBTESTDEVICE_CANCELSUBSCRIPTIONTOREPORTS_ENTRY, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   123
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   124
    // Signal the request as cancelled
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   125
    User::RequestComplete(iObserverStatus,KErrCancel);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   126
    OstTraceFunctionExit1( RUSBTESTDEVICE_CANCELSUBSCRIPTIONTOREPORTS_EXIT, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   127
    }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   128
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   129
        
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   130
void RUsbTestDevice::OpenL()
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   131
    {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   132
    OstTraceFunctionEntry1( RUSBTESTDEVICE_OPENL_ENTRY, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   133
    TInt err = KErrNone;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   134
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   135
    OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_OPENL, "starting t_usbhost_usbman.exe");
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   136
    TInt r = iOtgUsbMan.Create(_L("t_usbhost_usbman.exe"), _L("client"));
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   137
    gtest(r == KErrNone);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   138
    iOtgUsbMan.Resume();    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   139
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   140
    User::After(1500000);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   141
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   142
    // Open channel to driver
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   143
    err = iClientDriver.Open(0);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   144
    if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   145
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   146
        OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP01, "<Error %d> Unable to open a channel to USB client driver",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   147
        User::Leave(err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   148
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   149
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   150
    // Hide bus from host while interfaces are being set up
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   151
    err = iClientDriver.DeviceDisconnectFromHost();
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   152
    if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   153
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   154
        OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP02, "<Error %d> unable to disconnect device from host",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   155
        User::Leave(err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   156
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   157
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   158
    // Create the client usb state watcher
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   159
    iStateWatcher = CUsbClientStateWatcher::NewL(iClientDriver,*this);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   160
        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   161
    // Create the Ep0 reader
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   162
    iDeviceEp0 = CDeviceEndpoint0::NewL(*this);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   163
        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   164
    // Create the timer for software connection/disconnection
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   165
    iConnectTimer = CSoftwareConnectTimer::NewL(*this);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   166
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   167
    // Create the timer for remote wakeup events
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   168
    iWakeupTimer = CRemoteWakeupTimer::NewL(*this);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   169
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   170
    User::LeaveIfError(iClientDriver.DeviceCaps(iDeviceCaps));
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   171
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   172
#ifdef OST_TRACE_COMPILER_IN_USE
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   173
    _LIT8(KYes, "yes");
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   174
    _LIT8(KNo, "no");
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   175
#endif
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   176
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   177
     OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP03, "------ USB device capabilities -------");
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   178
    OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP04, "Number of endpoints:                %d",iDeviceCaps().iTotalEndpoints);    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   179
    OstTraceExt1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP05, "Supports Software-Connect:          %s",iDeviceCaps().iConnect ? KYes() : KNo());
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   180
    OstTraceExt1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP06, "Device is Self-Powered:             %S",iDeviceCaps().iSelfPowered ? KYes() : KNo());
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   181
    OstTraceExt1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP07, "Supports Remote-Wakeup:             %S",iDeviceCaps().iRemoteWakeup ? KYes() : KNo());
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   182
    OstTraceExt1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP08, "Supports High-speed:                %S",iDeviceCaps().iHighSpeed ? KYes() : KNo());
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   183
    OstTraceExt1(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP09, "Supports unpowered cable detection: %S",(iDeviceCaps().iFeatureWord1 & KUsbDevCapsFeatureWord1_CableDetectWithoutPower) ? KYes() : KNo());
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   184
    OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_OPENL_DUP10, "--------------------------------------");
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   185
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   186
    OstTraceFunctionExit1( RUSBTESTDEVICE_OPENL_EXIT, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   187
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   188
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   189
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   190
TInt RUsbTestDevice::SetClassCode(TUint8 aClassCode,TUint8 aSubClassCode,TUint8 aDeviceProtocol)
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   191
    {
253
d37db4dcc88d 201033_01
hgs
parents: 0
diff changeset
   192
    OstTraceFunctionEntryExt( RUSBTESTDEVICE_SETCLASSCODE_ENTRY, this );
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   193
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   194
    // Get Device descriptor
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   195
    TBuf8<KUsbDescSize_Device> deviceDescriptor;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   196
    TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor));
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   197
    if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   198
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   199
        OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETCLASSCODE, "<Error %d> Unable to obtain device descriptor",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   200
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   201
    else
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   202
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   203
        deviceDescriptor[KDevDescOffset_bDeviceClass] = aClassCode;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   204
        deviceDescriptor[KDevDescOffset_bDeviceSubClass] = aSubClassCode;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   205
        deviceDescriptor[KDevDescOffset_bDeviceProtocol] = aDeviceProtocol;    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   206
        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   207
        err = iClientDriver.SetDeviceDescriptor(deviceDescriptor);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   208
        if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   209
            {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   210
            OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETCLASSCODE_DUP01, "<Error %d> Unable to set the device dsecriptor",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   211
            }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   212
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   213
    OstTraceFunctionExitExt( RUSBTESTDEVICE_SETCLASSCODE_EXIT, this, err );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   214
    return err;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   215
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   216
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   217
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   218
TInt RUsbTestDevice::SetUsbSpecification(TUint16 aSpecification)
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   219
    {
253
d37db4dcc88d 201033_01
hgs
parents: 0
diff changeset
   220
    OstTraceFunctionEntryExt( RUSBTESTDEVICE_SETUSBSPECIFICATION_ENTRY, this );
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   221
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   222
    // Get Device descriptor
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   223
    TBuf8<KUsbDescSize_Device> deviceDescriptor;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   224
    TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor));
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   225
    if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   226
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   227
        OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETUSBSPECIFICATION, "<Error %d> Unable to obtain device descriptor",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   228
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   229
    else
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   230
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   231
        // Set bcdUSB
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   232
        TUint8* p = reinterpret_cast<TUint8*>(&aSpecification);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   233
        deviceDescriptor[KDevDescOffset_bcdUSB] = *p;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   234
        deviceDescriptor[KDevDescOffset_bcdUSB+1] = *(p+1);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   235
        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   236
        // Symbian currently supports only devices with one configuration by selecting the configurations
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   237
        // that has the lowest power consumption
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   238
        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   239
        deviceDescriptor[KDevDescOffset_bNumConfigurations] = 0x01;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   240
        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   241
        err = iClientDriver.SetDeviceDescriptor(deviceDescriptor);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   242
        if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   243
            {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   244
            OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETUSBSPECIFICATION_DUP01, "<Error %d> Unable to set the device dsecriptor",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   245
            }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   246
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   247
    OstTraceFunctionExitExt( RUSBTESTDEVICE_SETUSBSPECIFICATION_EXIT, this, err );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   248
    return err;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   249
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   250
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   251
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   252
TInt RUsbTestDevice::SetVendor(TUint16 aVendorId)
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   253
    {
253
d37db4dcc88d 201033_01
hgs
parents: 0
diff changeset
   254
    OstTraceFunctionEntryExt( RUSBTESTDEVICE_SETVENDOR_ENTRY, this );
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   255
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   256
    // Get Device descriptor
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   257
    TBuf8<KUsbDescSize_Device> deviceDescriptor;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   258
    TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor));
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   259
    if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   260
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   261
        OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETVENDOR, "<Error %d> Unable to obtain device descriptor",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   262
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   263
    else
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   264
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   265
        // Set VID
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   266
        TUint8* p = reinterpret_cast<TUint8*>(&aVendorId);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   267
        deviceDescriptor[KDevDescOffset_idVendor] = *p;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   268
        deviceDescriptor[KDevDescOffset_idVendor+1] = *(p+1);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   269
        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   270
        err = iClientDriver.SetDeviceDescriptor(deviceDescriptor);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   271
        if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   272
            {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   273
            OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETVENDOR_DUP01, "<Error %d> Unable to set the device descriptor",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   274
            }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   275
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   276
    OstTraceFunctionExitExt( RUSBTESTDEVICE_SETVENDOR_EXIT, this, err );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   277
    return err;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   278
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   279
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   280
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   281
TInt RUsbTestDevice::SetProduct(TUint16 aProductId,const TDesC16& aProductString,
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   282
                const TDesC16& aManufacturerString,const TDesC16& aSerialNumberString)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   283
    {
253
d37db4dcc88d 201033_01
hgs
parents: 0
diff changeset
   284
    OstTraceFunctionEntryExt( RUSBTESTDEVICE_SETPRODUCT_ENTRY, this );
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   285
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   286
    // Get Device descriptor
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   287
    TBuf8<KUsbDescSize_Device> deviceDescriptor;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   288
    TInt err(iClientDriver.GetDeviceDescriptor(deviceDescriptor));
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   289
    if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   290
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   291
        OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT, "<Error %d> Unable to obtain device descriptor",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   292
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   293
    else
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   294
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   295
        // Set PID
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   296
        TUint8* p = reinterpret_cast<TUint8*>(&aProductId);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   297
        deviceDescriptor[KDevDescOffset_idProduct] = *p;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   298
        deviceDescriptor[KDevDescOffset_idProduct+1] = *(p+1);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   299
        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   300
        err = iClientDriver.SetDeviceDescriptor(deviceDescriptor);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   301
        if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   302
            {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   303
            OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT_DUP01, "<Error %d> Unable to set the device dsecriptor",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   304
            OstTraceFunctionExitExt( RUSBTESTDEVICE_SETPRODUCT_EXIT, this, err );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   305
            return err;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   306
            }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   307
        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   308
        OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT_DUP02, "Product Identity set");
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   309
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   310
        // Product string
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   311
        err = iClientDriver.SetProductStringDescriptor(aProductString);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   312
        if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   313
            {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   314
            OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT_DUP03, "<Error %d> Unable to set product string descriptor",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   315
            OstTraceFunctionExitExt( RUSBTESTDEVICE_SETPRODUCT_EXIT_DUP01, this, err );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   316
            return err;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   317
            }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   318
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   319
        // Manufacturer string
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   320
        err = iClientDriver.SetManufacturerStringDescriptor(aManufacturerString);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   321
        if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   322
            {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   323
            OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT_DUP04, "<Error %d> Unable to set the manufacturer string descriptor",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   324
            OstTraceFunctionExitExt( RUSBTESTDEVICE_SETPRODUCT_EXIT_DUP02, this, err );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   325
            return err;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   326
            }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   327
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   328
        // Serial number string
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   329
        err = iClientDriver.SetSerialNumberStringDescriptor(aSerialNumberString);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   330
        if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   331
            {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   332
            OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETPRODUCT_DUP05, "<Error %d> Unable to set the serial number string descriptor",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   333
            OstTraceFunctionExitExt( RUSBTESTDEVICE_SETPRODUCT_EXIT_DUP03, this, err );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   334
            return err;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   335
            }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   336
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   337
    OstTraceFunctionExitExt( RUSBTESTDEVICE_SETPRODUCT_EXIT_DUP04, this, KErrNone );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   338
    return KErrNone;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   339
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   340
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   341
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   342
TInt RUsbTestDevice::SetConfigurationString(const TDesC16& aConfigString)
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   343
    {
253
d37db4dcc88d 201033_01
hgs
parents: 0
diff changeset
   344
    OstTraceFunctionEntryExt( RUSBTESTDEVICE_SETCONFIGURATIONSTRING_ENTRY, this );
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   345
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   346
    TInt err(iClientDriver.SetConfigurationStringDescriptor(aConfigString));
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   347
    if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   348
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   349
        OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SETCONFIGURATIONSTRING, "<Error %d> Unable to set configuration string descriptor",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   350
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   351
    OstTraceFunctionExitExt( RUSBTESTDEVICE_SETCONFIGURATIONSTRING_EXIT, this, err );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   352
    return err;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   353
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   354
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   355
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   356
void RUsbTestDevice::AddInterface(CInterfaceBase* aInterface)
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   357
    {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   358
    OstTraceFunctionEntryExt( RUSBTESTDEVICE_ADDINTERFACE_ENTRY, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   359
        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   360
    // Add the interface to the device
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   361
    TInt err = iInterfaces.Append(aInterface);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   362
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   363
    if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   364
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   365
        OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_ADDINTERFACE, "<Error %d> Unable to add interface",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   366
        return ReportError(err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   367
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   368
    OstTraceFunctionExit1( RUSBTESTDEVICE_ADDINTERFACE_EXIT, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   369
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   370
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   371
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   372
CInterfaceBase& RUsbTestDevice::Interface(TInt aIndex)
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   373
    {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   374
    OstTraceFunctionEntryExt( RUSBTESTDEVICE_INTERFACE_ENTRY, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   375
    OstTraceFunctionExit1( RUSBTESTDEVICE_INTERFACE_EXIT, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   376
    return *iInterfaces[aIndex];
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   377
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   378
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   379
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   380
void RUsbTestDevice::SoftwareConnect()
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   381
    {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   382
    OstTraceFunctionEntry1( RUSBTESTDEVICE_SOFTWARECONNECT_ENTRY, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   383
    TInt err(iClientDriver.PowerUpUdc());
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   384
    if((err != KErrNone) && (err != KErrNotReady))
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   385
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   386
        OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SOFTWARECONNECT, "<Error %d> Power Up Udc",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   387
        ReportError(err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   388
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   389
        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   390
    if(iDeviceCaps().iConnect) 
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   391
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   392
        err = iClientDriver.DeviceConnectToHost();
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   393
        if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   394
            {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   395
            OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SOFTWARECONNECT_DUP01, "<Error %d> Unable to connect to the host",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   396
            ReportError(err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   397
            }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   398
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   399
    else
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   400
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   401
        OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_SOFTWARECONNECT_DUP02, "Please connect device to Host");
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   402
        }    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   403
    OstTraceFunctionExit1( RUSBTESTDEVICE_SOFTWARECONNECT_EXIT, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   404
    }       
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   405
     
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   406
void RUsbTestDevice::SoftwareDisconnect()
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   407
    {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   408
    OstTraceFunctionEntry1( RUSBTESTDEVICE_SOFTWAREDISCONNECT_ENTRY, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   409
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   410
    if(iDeviceCaps().iConnect) 
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   411
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   412
        TInt err(iClientDriver.DeviceDisconnectFromHost());
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   413
        if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   414
            {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   415
            OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_SOFTWAREDISCONNECT, "<Error %d> Unable to disconnect from the host",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   416
            ReportError(err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   417
            }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   418
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   419
    else
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   420
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   421
        OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_SOFTWAREDISCONNECT_DUP01, "Please disconnect device from Host");
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   422
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   423
        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   424
    OstTraceFunctionExit1( RUSBTESTDEVICE_SOFTWAREDISCONNECT_EXIT, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   425
    }       
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   426
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   427
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   428
void RUsbTestDevice::RemoteWakeup()
271
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   429
	{
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   430
	OstTraceFunctionEntry1( RUSBTESTDEVICE_REMOTEWAKEUP_ENTRY, this );
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   431
	if(iDeviceCaps().iConnect) 
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   432
		{
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   433
		TInt err(iClientDriver.SignalRemoteWakeup());
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   434
		if(err != KErrNone)
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   435
			{
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   436
			OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_REMOTEWAKEUP, "<Error %d> Unable to perform a remote wakeup",err);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   437
			ReportError(err);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   438
			}
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   439
		}
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   440
	else
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   441
		{
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   442
		OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_REMOTEWAKEUP_DUP01, "remote wakeup not supported");
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   443
		}
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   444
	OstTraceFunctionExit1( RUSBTESTDEVICE_REMOTEWAKEUP_EXIT, this );
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   445
	}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   446
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   447
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   448
TInt RUsbTestDevice::ProcessRequestL(TUint8 aRequest,TUint16 aValue,TUint16 aIndex,
271
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   449
	TUint16 aDataReqLength,const TDesC8& aPayload)
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   450
	{
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   451
	OstTraceFunctionEntryExt( RUSBTESTDEVICE_PROCESSREQUESTL_ENTRY, this );
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   452
	
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   453
	if(aRequest == KVendorEmptyRequest)
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   454
		{
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   455
		// Handle an empty request (i.e. do nothing)
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   456
		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   457
		AcknowledgeRequestReceived();
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   458
		}
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   459
	else if(aRequest == KVendorReconnectRequest)
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   460
		{
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   461
		// Handle a reconnect requests from the host
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   462
		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   463
		AcknowledgeRequestReceived();
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   464
		iConnectTimer->SoftwareReConnect(aValue);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   465
		}
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   466
	else if(aRequest == KVendorDisconnectDeviceAThenConnectDeviceCRequest)
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   467
		{
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   468
		OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL, "**aRequest == KVendorDisconnectDeviceAThenConnectDeviceCRequest, this = 0x%08x", this);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   469
		// Handle a reconnect requests from the host		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   470
		AcknowledgeRequestReceived();			
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   471
		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   472
		SoftwareDisconnect();	
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   473
		User::After(1000000);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   474
		//	connect device C now	
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   475
		CUT_PBASE_T_USBDI_0486* iTestCaseT_USBDI_0486 = reinterpret_cast<CUT_PBASE_T_USBDI_0486*>(iTestCase);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   476
		Close(); 		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   477
		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   478
		User::After(3000000);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   479
		iTestCaseT_USBDI_0486->TestDeviceC()->OpenL(KTestDeviceC_SN);		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   480
		// Connect the device to the host	
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   481
		iTestCaseT_USBDI_0486->TestDeviceC()->SoftwareConnect();
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   482
		OstTraceFunctionExitExt( RUSBTESTDEVICE_PROCESSREQUESTL_EXIT, this, KErrAbort );
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   483
		return KErrAbort;
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   484
		}
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   485
	else if(aRequest == KVendorDisconnectDeviceCThenConnectDeviceARequest)
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   486
		{
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   487
		OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP01, "**aRequest == KVendorDisconnectDeviceCThenConnectDeviceARequest, this = 0x%08x", this);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   488
		// Handle a reconnect requests from the host		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   489
		AcknowledgeRequestReceived();		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   490
		 
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   491
		SoftwareDisconnect();	
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   492
		User::After(1000000); 
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   493
		 
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   494
		//	connect device A now	
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   495
		CUT_PBASE_T_USBDI_0486* iTestCaseT_USBDI_0486 = reinterpret_cast<CUT_PBASE_T_USBDI_0486*>(iTestCase);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   496
		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   497
		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   498
		Close();		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   499
		User::After(3000000); 		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   500
		iTestCaseT_USBDI_0486->Cancel();
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   501
		iTestCaseT_USBDI_0486->HandleDeviceDConnection();
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   502
		iTestCaseT_USBDI_0486->TestDeviceD()->OpenL(iTestCaseT_USBDI_0486->TestCaseId());	
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   503
		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   504
		// Connect the device to the host	
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   505
		iTestCaseT_USBDI_0486->TestDeviceD()->SoftwareConnect();	
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   506
		OstTraceFunctionExitExt( RUSBTESTDEVICE_PROCESSREQUESTL_EXIT_DUP01, this, KErrAbort );
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   507
		return KErrAbort;
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   508
		}		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   509
	else if(aRequest == KVendorTestCasePassed)
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   510
		{ 
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   511
		// Test case has completed successfully 
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   512
		// so report to client test case that host is happy		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   513
		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   514
		AcknowledgeRequestReceived();
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   515
		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   516
		// allow time for host side t_usbdi.exe so that CloseInterface/Pipe happen after CloseDevice
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   517
		User::After(1000*5); 
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   518
		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   519
		ReportError(KErrNone);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   520
		}
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   521
	else if(aRequest == KVendorTestCaseFailed)
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   522
		{
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   523
		// The test case has failed, so report to client test case
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   524
		// and display/log the error message
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   525
		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   526
		AcknowledgeRequestReceived();
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   527
		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   528
		// allow time for host side t_usbdi.exe so that CloseInterface/Pipe happen after CloseDevice
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   529
		User::After(1000*5); 
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   530
		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   531
		HBufC16* msg = HBufC16::NewL(aPayload.Length());
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   532
		msg->Des().Copy(aPayload);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   533
		OstTraceExt1(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP02, "<Host> Test case failed: %S",*msg);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   534
		delete msg;
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   535
		msg = 0;
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   536
		ReportError(-aValue);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   537
		}
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   538
	else if(aRequest == KVendorRemoteWakeupRequest)
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   539
		{
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   540
		// Handle a remote wakeup request
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   541
271
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   542
		AcknowledgeRequestReceived();
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   543
		iWakeupTimer->WakeUp(aValue);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   544
		}
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   545
	else if(aRequest == KVendorPutPayloadRequest)
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   546
		{
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   547
		// Handle a payload request from the host
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   548
271
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   549
		AcknowledgeRequestReceived();
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   550
		OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP03, "Put payload");
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   551
		if(aPayload.Compare(_L8("DEADBEEF")) != 0)
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   552
			{
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   553
			OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP04, "<Error %d> Payload not as expected",KErrCorrupt);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   554
			ReportError(KErrCorrupt);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   555
			}
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   556
		}
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   557
	else if(aRequest == KVendorGetPayloadRequest)
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   558
		{
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   559
		// Handle a payload request to the host
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   560
271
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   561
		OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP05, "Get payload");
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   562
		__ASSERT_DEBUG(iAuxBuffer, User::Panic(_L("Trying to write non-allocated buffer"), KErrGeneral));
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   563
		OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP06, "iAuxBuffer = ....");
253
d37db4dcc88d 201033_01
hgs
parents: 0
diff changeset
   564
        OstTraceData(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP56, "", iAuxBuffer->Ptr(), iAuxBuffer->Length());
271
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   565
		OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP07, "\n");
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   566
		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   567
		//Perform synchronous write to EP0
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   568
		//This allows the subsequent 'Read' request to
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   569
		//take place
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   570
		TInt ret = iDeviceEp0->SendDataSynchronous(*iAuxBuffer);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   571
		OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP08, "Write (from device callback) executed with error %d", ret);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   572
		}
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   573
	else if(aRequest == KVendorUnrespondRequest)
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   574
		{
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   575
		// Do not acknowledge this request
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   576
		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   577
		OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP09, "Unrespond request: continually NAK the host");
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   578
		}
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   579
	else if(aRequest == KVendorStallRequest)
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   580
		{
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   581
		// Stall the specified endpoint
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   582
		
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   583
		AcknowledgeRequestReceived();
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   584
		OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_PROCESSREQUESTL_DUP10, "Stalling endpoint %d",aValue);
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   585
						
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   586
		}
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   587
	else
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   588
		{
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   589
		// Maybe forward to derived classes
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   590
		}
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   591
	OstTraceFunctionExitExt( RUSBTESTDEVICE_PROCESSREQUESTL_EXIT_DUP02, this, KErrNone );
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   592
	return KErrNone;
dc268b18d709 201037_07
hgs
parents: 269
diff changeset
   593
	}
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   594
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   595
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   596
void RUsbTestDevice::StateChangeL(TUsbcDeviceState aNewState,TInt aChangeCompletionCode)
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   597
    {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   598
    OstTraceFunctionEntryExt( RUSBTESTDEVICE_STATECHANGEL_ENTRY, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   599
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   600
    OstTraceExt2(TRACE_NORMAL, RUSBTESTDEVICE_STATECHANGEL, "Client state change to %d err=%d",aNewState,aChangeCompletionCode);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   601
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   602
    // Notify the test case of failed state change notification
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   603
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   604
    if(aChangeCompletionCode != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   605
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   606
        return ReportError(aChangeCompletionCode);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   607
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   608
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   609
    // Check the state change
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   610
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   611
    if(iCurrentState == EUsbcDeviceStateConfigured)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   612
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   613
        // Device is already in a fully configured state
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   614
        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   615
        if(aNewState == EUsbcDeviceStateConfigured)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   616
            {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   617
            // Do nothing as this is the current state anyway
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   618
            }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   619
        else
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   620
            {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   621
            // The is a state change from EUsbcDeviceStateConfigured to aNewState
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   622
            // so stop reading from control ep0
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   623
            
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   624
            OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_STATECHANGEL_DUP01, "Ignoring control ep0");
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   625
            
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   626
            // Stop reading ep0 directed requests
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   627
            
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   628
            StopEp0Reading();
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   629
            
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   630
            // Update state
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   631
                        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   632
            iCurrentState = aNewState;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   633
            }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   634
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   635
    else
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   636
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   637
        // Device is not in a fully configured state
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   638
        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   639
        if(aNewState == EUsbcDeviceStateConfigured)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   640
            {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   641
            // Device has now been placed into a fully configured state by the host
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   642
            // so start reading from control ep0
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   643
            
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   644
            OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_STATECHANGEL_DUP02, "Reading from control ep0");
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   645
            
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   646
            // Start reading ep0 directed requests
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   647
            
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   648
            StartEp0Reading();
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   649
            
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   650
            // Update state
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   651
                        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   652
            iCurrentState = aNewState;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   653
            }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   654
        else
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   655
            {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   656
            // Just update the state
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   657
            
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   658
            iCurrentState = aNewState;
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   659
            }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   660
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   661
                
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   662
    // Forward the state change notification to derived classes
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   663
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   664
    OnStateChangeL(aNewState);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   665
    OstTraceFunctionExit1( RUSBTESTDEVICE_STATECHANGEL_EXIT, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   666
    }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   667
    
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   668
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   669
void RUsbTestDevice::StartEp0Reading()
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   670
    {
253
d37db4dcc88d 201033_01
hgs
parents: 0
diff changeset
   671
    OstTraceFunctionEntry1( RUSBTESTDEVICE_STARTEP0READING_ENTRY, this );
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   672
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   673
    // Start reading device directed ep0 requests
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   674
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   675
    TInt err(iDeviceEp0->Start());
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   676
    if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   677
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   678
        return ReportError(err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   679
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   680
        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   681
    // Start reading interface directed requests
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   682
            
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   683
    TInt interfaceCount(iInterfaces.Count());
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   684
    for(TInt i=0; i<interfaceCount; i++)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   685
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   686
        iInterfaces[i]->StartEp0Reading();
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   687
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   688
    OstTraceFunctionExit1( RUSBTESTDEVICE_STARTEP0READING_EXIT, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   689
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   690
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   691
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   692
void RUsbTestDevice::StopEp0Reading()
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   693
    {
253
d37db4dcc88d 201033_01
hgs
parents: 0
diff changeset
   694
    OstTraceFunctionEntry1( RUSBTESTDEVICE_STOPEP0READING_ENTRY, this );
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   695
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   696
    // Stop reading interface directed requests
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   697
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   698
    TInt interfaceCount(iInterfaces.Count());
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   699
    for(TInt i=0; i<interfaceCount; i++)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   700
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   701
        iInterfaces[i]->StopEp0Reading();
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   702
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   703
        
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   704
    // Stop reading device directed requests from ep0
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   705
            
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   706
    TInt err(iDeviceEp0->Stop());
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   707
    if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   708
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   709
        return ReportError(err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   710
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   711
    OstTraceFunctionExit1( RUSBTESTDEVICE_STOPEP0READING_EXIT, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   712
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   713
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   714
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   715
void RUsbTestDevice::AcknowledgeRequestReceived()
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   716
    {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   717
    OstTraceFunctionEntry1( RUSBTESTDEVICE_ACKNOWLEDGEREQUESTRECEIVED_ENTRY, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   718
    
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   719
    TInt err(iDeviceEp0->Reader().Acknowledge());
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   720
    OstTrace1(TRACE_NORMAL, RUSBTESTDEVICE_ACKNOWLEDGEREQUESTRECEIVED, "err = %d",err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   721
    if(err != KErrNone)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   722
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   723
        ReportError(err);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   724
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   725
    OstTraceFunctionExit1( RUSBTESTDEVICE_ACKNOWLEDGEREQUESTRECEIVED_EXIT, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   726
    }
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   727
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   728
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   729
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   730
void RUsbTestDevice::ReportError(TInt aCompletionCode)
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   731
    {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   732
    OstTraceFunctionEntryExt( RUSBTESTDEVICE_REPORTERROR_ENTRY, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   733
    OstTraceExt3(TRACE_NORMAL, RUSBTESTDEVICE_REPORTERROR, "err or aCompletionCode = %d, observer status = %d, KRequestPending = %d",
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   734
            aCompletionCode, iObserverStatus->Int(), KRequestPending);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   735
    if(*iObserverStatus == KRequestPending)
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   736
        {
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   737
        OstTrace0(TRACE_NORMAL, RUSBTESTDEVICE_REPORTERROR_DUP01, "In complete request");
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   738
        User::RequestComplete(iObserverStatus,aCompletionCode);
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   739
        }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   740
    OstTraceFunctionExit1( RUSBTESTDEVICE_REPORTERROR_EXIT, this );
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   741
    }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   742
    
0
a41df078684a Convert Kernelhwsrv package from SFL to EPL
John Imhofe
parents:
diff changeset
   743
269
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   744
    }
d57b86b1867a 201035_03
hgs
parents: 253
diff changeset
   745