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 Symbian OS server that exposes 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 sl@0: #include sl@0: sl@0: #include sl@0: #include sl@0: sl@0: #include "usbtypes.h" sl@0: #include "cusbotg.h" sl@0: sl@0: #include "msmanclientserver.h" sl@0: #include "cusbotgserver.h" sl@0: #include "cusbotgsession.h" sl@0: sl@0: #include "tmslog.h" sl@0: sl@0: CUsbOtgServer* CUsbOtgServer::NewLC() sl@0: { sl@0: __MSFNSLOG sl@0: CUsbOtgServer* r = new (ELeave) CUsbOtgServer(); sl@0: CleanupStack::PushL(r); sl@0: r->ConstructL(); sl@0: return r; sl@0: } sl@0: sl@0: sl@0: CUsbOtgServer::CUsbOtgServer() sl@0: : CServer2(EPriorityLow) sl@0: { sl@0: __MSFNSLOG sl@0: } sl@0: sl@0: sl@0: void CUsbOtgServer::ConstructL() sl@0: { sl@0: __MSFNSLOG sl@0: sl@0: iUsbOtg = CUsbOtg::NewL(); sl@0: StartL(KUsbOtgServerName); sl@0: } sl@0: sl@0: sl@0: CUsbOtgServer::~CUsbOtgServer() sl@0: { sl@0: __MSFNSLOG sl@0: delete iUsbOtg; sl@0: } sl@0: sl@0: sl@0: CSession2* CUsbOtgServer::NewSessionL(const TVersion &aVersion, const RMessage2& /*aMessage*/) const sl@0: { sl@0: __MSFNSLOG sl@0: TVersion v(KUsbOtgSrvMajorVersionNumber, KUsbOtgSrvMinorVersionNumber, KUsbOtgSrvBuildVersionNumber); sl@0: sl@0: if (!User::QueryVersionSupported(v, aVersion)) sl@0: User::Leave(KErrNotSupported); sl@0: sl@0: CUsbOtgSession* session = CUsbOtgSession::NewL(); sl@0: sl@0: return session; sl@0: } sl@0: sl@0: sl@0: sl@0: TInt CUsbOtgServer::RunError(TInt aError) sl@0: { sl@0: __MSFNSLOG sl@0: sl@0: Message().Complete(aError); sl@0: ReStart(); sl@0: return KErrNone; sl@0: } sl@0: sl@0: sl@0: void CUsbOtgServer::AddSession() sl@0: { sl@0: __MSFNSLOG sl@0: ++iSessionCount; sl@0: } sl@0: sl@0: void CUsbOtgServer::RemoveSession() sl@0: { sl@0: __MSFNSLOG sl@0: if (--iSessionCount == 0) sl@0: { sl@0: User::After(1000000); sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: }