usbengines/usbotgwatcher/tsrc/UsbOtgWatcherTest/src/mockrusb.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 19 Aug 2010 10:54:11 +0300
branchRCL_3
changeset 22 5b2a402e96ac
permissions -rw-r--r--
Revision: 201031 Kit: 201033

/*
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/

#include <e32base.h>
#include <NormalHardcodedAssert.h>

#include <stubber.h>
#include <usbmandll_stub.h>
#include <usbpersonalityids.h>

#include "mockusbman.h"
#include "stifassertmacros.h"

#include "mockcusbvbusobserver.h"
#include "debug.h"

// ======== MEMBER FUNCTIONS ========

RUsb* RUsb::NewL()
    {
    LOG(  ( " MockRUsb::NewL" ) );
    RUsb* self = new ( ELeave ) RUsb();
    CleanupStack::PushL(self);
    self->ConstructL();
    CleanupStack::Pop(); // pop self
    return self;
    }

void RUsb::ConstructL()
    {
    
    }

// ---------------------------------------------------------------------------
// From class MUsb
// ?implementation_description
// ---------------------------------------------------------------------------
//
RUsb::RUsb() : 
    iBusCleared(EFalse),
    iBusRequested(EFalse),
    iServiceStateNotificationRequested(EFalse),
    iTryStartError(KErrNone), 
    iBusRequestError(KErrNone),
    iCurrentPersonalityId(0),
    iUsbServiceState(EUsbServiceIdle)
    {
    LOG1 (" MockRUsb::RUsb: %d", iUsbServiceState );
    }

RUsb::~RUsb()
    {
    }

// ---------------------------------------------------------------------------
// From class MUsb
// ?implementation_description
// ---------------------------------------------------------------------------
//
void RUsb::TryStart(TInt aPersonalityId, TRequestStatus& aStatus)
    {
    LOG( (" MockRUsb::TryStart"));

//    CStubber* stubber = CStubber::NewL();
//    TApiBehavior beh( KUsbManStubAgentDll, ETryStartAsync, 0, 0, KNullDesC8 );
//    stubber -> InvokeApi( beh );
//
//    delete stubber;
//    stubber = NULL;
//    
//    if ( beh.iOutput != KNullDesC8 )
//        {            
        TRequestStatus* status = &aStatus;
        User::RequestComplete(status, iTryStartError);
//        }
    }

void RUsb::StartCancel(TRequestStatus& aStatus)
    {
    LOG( (" MockRUsb::StartCancel"));

    TRequestStatus* status = &aStatus;
    User::RequestComplete(status, iTryStartError);
    
    }

// ---------------------------------------------------------------------------
// From class MUsb
// ?implementation_description
// ---------------------------------------------------------------------------
//
void RUsb::TryStop(TRequestStatus& aStatus)
    {
    LOG( (" MockRUsb::TryStop"));
        
//    CStubber* stubber = CStubber::NewL();
//    TApiBehavior beh( KUsbManStubAgentDll, ETryStartAsync, 0, 0, KNullDesC8 );
//    stubber -> InvokeApi( beh );
//
//    delete stubber;
//    stubber = NULL;
//    
//    if ( beh.iOutput != KNullDesC8 )
//        {            
        TRequestStatus* status = &aStatus;
        User::RequestComplete(status, KErrNone);
//        }
    }

// ---------------------------------------------------------------------------
// From class MUsb
// ?implementation_description
// ---------------------------------------------------------------------------
//
void RUsb::MessageNotification(TRequestStatus& aStatus, TInt& aMessage)
    {
    LOG( (" MockRUsb::MessageNotification"));

    }

// ---------------------------------------------------------------------------
// From class MUsb
// ?implementation_description
// ---------------------------------------------------------------------------
//
void RUsb::MessageNotificationCancel()
    {
    LOG( (" MockRUsb::MessageNotificationCancel"));
    
    }

// ---------------------------------------------------------------------------
// From class MUsb
// ?implementation_description
// ---------------------------------------------------------------------------
//
void RUsb::HostEventNotification(TRequestStatus& aStatus,
        TDeviceEventInformation& aDeviceInformation)
    {
    LOG( (" MockRUsb::HostEventNotification"));

    }

// ---------------------------------------------------------------------------
// From class MUsb
// ?implementation_description
// ---------------------------------------------------------------------------
//
void RUsb::HostEventNotificationCancel()
    {
    LOG( (" MockRUsb::HostEventNotificationCancel"));
    
    }

// ---------------------------------------------------------------------------
// From class MUsb
// ?implementation_description
// ---------------------------------------------------------------------------
//
TInt RUsb::EnableFunctionDriverLoading()
    {
    LOG( (" MockRUsb::EnableFunctionDriverLoading"));

    return KErrNone;
    }

// ---------------------------------------------------------------------------
// From class MUsb
// ?implementation_description
// ---------------------------------------------------------------------------
//
void RUsb::DisableFunctionDriverLoading()
    {
    LOG( (" MockRUsb::DisableFunctionDriverLoading"));

    }

// ---------------------------------------------------------------------------
// From class MUsb
// ?implementation_description
// ---------------------------------------------------------------------------
//
TInt RUsb::BusRequest()
    {
    LOG1 (" MockRUsb::BusRequest, ret=%d", iBusRequestError );

    iBusRequested = ETrue;
    
    return iBusRequestError;
    }

// ---------------------------------------------------------------------------
// From class MUsb
// ?implementation_description
// ---------------------------------------------------------------------------
//
TInt RUsb::BusRespondSrp()
    {
    LOG( (" MockRUsb::BusRespondSrp"));
    
    return KErrNone;
    }

// ---------------------------------------------------------------------------
// From class MUsb
// ?implementation_description
// ---------------------------------------------------------------------------
//
TInt RUsb::BusClearError()
    {
    LOG( (" MockRUsb::BusClearError"));
    iBusCleared = ETrue;

    return KErrNone;
    }

// ---------------------------------------------------------------------------
// From class MUsb
// ?implementation_description
// ---------------------------------------------------------------------------
//
TInt RUsb::BusDrop()
    {
    LOG( (" MockRUsb::BusDrop"));

    iBusRequested = EFalse;

    return KErrNone;
    }

// ---------------------------------------------------------------------------
// From class RSessionBase
// ?implementation_description
// ---------------------------------------------------------------------------
//
void RUsb::Close()
    {
    LOG( (" MockRUsb::Close"));

    }

void RUsb::SetTryStartError(TInt aError)
    {
    iTryStartError = aError;
    }

void RUsb::SetBusRequestError(TInt aError)
    {
    iBusRequestError = aError;
    }

void RUsb::SetUsbServiceState(TUsbServiceState aUsbServiceState)
    {
    LOG2 (" MockRUsb::SetUsbServiceState: %d, %d", iUsbServiceState, aUsbServiceState );
    iUsbServiceState = aUsbServiceState;
    }

TBool RUsb::GetVBusUp()
    {
    LOG2 (" MockRUsb::GetVBusUp, iBusRequested=%d, iBusRequestError=%d", iBusRequested , iBusRequestError);

    return iBusRequested && !iBusRequestError;
    }

TInt RUsb::GetServiceState(TUsbServiceState& aState)
    {
    LOG( (" MockRUsb::GetServiceState"));
    aState = iUsbServiceState;

    CStubber* stubber = CStubber::NewL();
    TApiBehavior beh( KUsbManStubAgentDll, EServiceState, 0, 0, KNullDesC8 );
    stubber -> InvokeApi( beh );

    delete stubber;
    stubber = NULL;
    
    if ( beh.iOutput != KNullDesC8 )
        {                        
        if ( !beh.iOutput.Compare( _L8( "EUsbServiceIdle" ) ) )
            aState = EUsbServiceIdle;
        else if ( !beh.iOutput.Compare( _L8( "EUsbServiceStarting" ) ) )
            aState = EUsbServiceStarting;
        else if ( !beh.iOutput.Compare( _L8( "EUsbServiceStarted" ) ) )
            aState = EUsbServiceStarted;
        else if ( !beh.iOutput.Compare( _L8( "EUsbServiceStopping" ) ) )
            aState = EUsbServiceStopping;
        else if ( !beh.iOutput.Compare( _L8( "EUsbServiceFatalError" ) ) )
            aState = EUsbServiceFatalError;
        }
    
    LOG1 (" iUsbServiceState: %d", aState);
    
    return KErrNone;
    }
    
void RUsb::ServiceStateNotification(TUsbServiceState &aState, TRequestStatus &aStatus)
{
	LOG( (" MockRUsb::ServiceStateNotification"));
	if(iServiceStateNotificationRequested)
	{
		TRequestStatus* status = &aStatus;
    User::RequestComplete(status, KErrGeneral);  // already requested
		return;
	}
	
	iServiceStateNotificationRequested = ETrue;
	TRequestStatus* status = &aStatus;
  User::RequestComplete(status, KErrNone); 
}
    
TInt RUsb::GetCurrentPersonalityId(TInt &aPersonalityId)
{
	LOG( (" MockRUsb::GetCurrentPersonalityId"));
	
	CStubber* stubber = CStubber::NewL();
	TApiBehavior beh( KUsbManStubAgentDll, EGetCurrentPersonalityId, 0, 0, KNullDesC8 );
	stubber -> InvokeApi( beh );

	delete stubber;
	stubber = NULL;
	
	if ( beh.iOutput != KNullDesC8 )
		{                        
		if ( !beh.iOutput.Compare( _L8( "UsbPersonalityIdPCSuite" ) ) )
			aPersonalityId = KUsbPersonalityIdPCSuite;
		else if ( !beh.iOutput.Compare( _L8( "UsbPersonalityIdMS" ) ) )
			aPersonalityId = KUsbPersonalityIdMS;
		else if ( !beh.iOutput.Compare( _L8( "UsbPersonalityIdPTP" ) ) )
			aPersonalityId = KUsbPersonalityIdPTP;
		else if ( !beh.iOutput.Compare( _L8( "UsbPersonalityIdMTP" ) ) )
			aPersonalityId = KUsbPersonalityIdMTP;
		else if ( !beh.iOutput.Compare( _L8( "UsbPersonalityIdPCSuiteMTP" ) ) )
			aPersonalityId = KUsbPersonalityIdPCSuiteMTP;

	    LOG1( " MockRUsb::GetCurrentPersonalityId iStubbedPersonalityId: %d", aPersonalityId);
		}
	else
		aPersonalityId = iCurrentPersonalityId;
	
	LOG1( " MockRUsb::GetCurrentPersonalityId iCurrentPersonalityId: %d", iCurrentPersonalityId);
	
	return KErrNone;
}
    
TInt RUsb::CancelInterest(TUsbReqType aMessageId) // to pending op. of usb service state
{
	LOG( (" MockRUsb::CancelInterest"));
	iServiceStateNotificationRequested = EFalse;
	return KErrNone;
}
    
void RUsb::ServiceStateNotificationCancel()
{
	LOG( (" MockRUsb::ServiceStateNotificationCancel"));
	iServiceStateNotificationRequested = EFalse;
}
    
void RUsb::SetCurrentPersonality(TInt aPersonalityId)
{
	LOG( (" MockRUsb::SetCurrentPersonality"));
	iCurrentPersonalityId = aPersonalityId;
}

TInt RUsb::GetOtgDescriptor(TUint aDeviceId, TOtgDescriptor& aDescriptor)
{
	LOG( (" MockRUsb::GetOtgDescriptor"));
	
	aDescriptor.iAttributes = 1;
	aDescriptor.iDeviceId = 2;
	
	return KErrNone;
}

// End of File