sl@0: // Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0: // All rights reserved.
sl@0: // This component and the accompanying materials are made available
sl@0: // under the terms of the License "Eclipse Public License v1.0"
sl@0: // which accompanies this distribution, and is available
sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0: //
sl@0: // Initial Contributors:
sl@0: // Nokia Corporation - initial contribution.
sl@0: //
sl@0: // Contributors:
sl@0: //
sl@0: // Description:
sl@0: // Implements a Session of a Symbian OS server for the RUsbMassStorage API
sl@0: // 
sl@0: //
sl@0: 
sl@0: 
sl@0: 
sl@0: /**
sl@0:  @file
sl@0:  @internalTechnology
sl@0: */
sl@0: 
sl@0: #include <e32cmn.h>
sl@0: #include <e32base.h>
sl@0: 
sl@0: #include "tmslog.h"
sl@0: #include "msmanclientserver.h"
sl@0: 
sl@0: #include <f32file.h>
sl@0: #include <d32usbdi_hubdriver.h>
sl@0: #include <d32otgdi.h>
sl@0: #include "usbtypes.h"
sl@0: 
sl@0: #include "cusbhostao.h"
sl@0: #include "cusbhost.h"
sl@0: 
sl@0: 
sl@0: #include "cusbhostserver.h"
sl@0: #include "cusbhostsession.h"
sl@0: 
sl@0: 
sl@0: CUsbHostSession* CUsbHostSession::NewL()
sl@0: 	{
sl@0:     __MSFNSLOG
sl@0: 	CUsbHostSession* r = new (ELeave) CUsbHostSession();
sl@0: 	CleanupStack::PushL(r);
sl@0: 	r->ConstructL();
sl@0: 	CleanupStack::Pop();
sl@0: 	return r;
sl@0: 	}
sl@0: 
sl@0: 
sl@0: CUsbHostSession::CUsbHostSession()
sl@0: 	{
sl@0:     __MSFNSLOG
sl@0: 
sl@0: 	}
sl@0: 
sl@0: void CUsbHostSession::ConstructL()
sl@0: 	{
sl@0:     __MSFNSLOG
sl@0:  	}
sl@0: 
sl@0: 
sl@0: void CUsbHostSession::CreateL()
sl@0: 	{
sl@0:     __MSFNSLOG
sl@0:     Server().AddSession();
sl@0: 	}
sl@0: 
sl@0: 
sl@0: CUsbHostSession::~CUsbHostSession()
sl@0: 	{
sl@0:     __MSFNSLOG
sl@0:     Server().RemoveSession();
sl@0: 	}
sl@0: 
sl@0: 
sl@0: void CUsbHostSession::ServiceL(const RMessage2& aMessage)
sl@0: 	{
sl@0:     __MSFNSLOG
sl@0: 	DispatchMessageL(aMessage);
sl@0: 	}
sl@0: 
sl@0: 
sl@0: void CUsbHostSession::DispatchMessageL(const RMessage2& aMessage)
sl@0: 	{
sl@0:     __MSFNSLOG
sl@0: 	TInt ret = KErrNone;
sl@0: 
sl@0: 	switch (aMessage.Function())
sl@0: 		{
sl@0: 	case EUsbHostStart:
sl@0: 		ret = Start(aMessage);
sl@0: 		break;
sl@0: 	default:
sl@0: 		aMessage.Panic(KUsbHostClientPncCat, EUsbHostPanicIllegalIPC);
sl@0: 		break;
sl@0: 		}
sl@0: 
sl@0: 	aMessage.Complete(ret);
sl@0: 	}
sl@0: 
sl@0: 
sl@0: TInt CUsbHostSession::Start(const RMessage2& aMessage)
sl@0: 	{
sl@0:     __MSFNSLOG
sl@0:     Server().iUsbHost->Start();
sl@0: 	return KErrNone;
sl@0: 	}