First public contribution.
1 // Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of the License "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // USB Mass Storage Application - also used as an improvised boot loader mechanism
28 #include "rusbhostmsdevice.h"
29 #include "rusbhostmslogicalunit.h"
31 #include <d32usbdi_hubdriver.h>
33 #include "rextfilesystem.h"
34 #include "cusbmsmountmanager.h"
36 #include "mdrivedisplay.h"
37 #include "cusbhostao.h"
40 #include "rusbotgsession.h"
43 #include "husbconsapp.h"
47 _LIT(KTxtApp,"HOST USB CONSOLE APP");
51 CHeartBeat* CHeartBeat::NewLC(CDisplay& aDisplay)
53 CHeartBeat* me = new(ELeave) CHeartBeat(aDisplay);
54 CleanupStack::PushL(me);
60 CHeartBeat::CHeartBeat(CDisplay& aDisplay)
66 void CHeartBeat::ConstructL()
68 CActiveScheduler::Add(this);
74 CHeartBeat::~CHeartBeat()
80 void CHeartBeat::DoCancel()
86 void CHeartBeat::RunL()
89 // Print RAM usage & up time
91 iDisplay.UpTime(iUpTime);
94 if (HAL::Get(HALData::EMemoryRAMFree, mem)==KErrNone)
96 iDisplay.MemoryFree(mem);
98 iTimer.After(iStatus, 1000000);
102 GLDEF_C void RunAppL()
105 CActiveScheduler* sched = new(ELeave) CActiveScheduler;
106 CleanupStack::PushL(sched);
107 CActiveScheduler::Install(sched);
110 User::LeaveIfError(fs.Connect());
111 CleanupClosePushL(fs);
113 RUsbOtgSession usbOtgSession;
114 TInt err = usbOtgSession.Connect();
115 User::LeaveIfError(err);
117 CConsoleBase* console;
118 console = Console::NewL(KTxtApp, TSize(KConsFullScreen,KConsFullScreen));
119 CleanupStack::PushL(console);
121 CDisplay* display = CDisplay::NewLC(fs, *console);
122 CMessageKeyProcessor::NewLC(*display, usbOtgSession);
123 CHeartBeat::NewLC(*display);
126 display->DriveListL();
129 CUsbHostDisp* usbHost = CUsbHostDisp::NewL(*display);
130 CleanupStack::PushL(usbHost);
134 // *************************************************************************
135 // Start Active Scheduler
136 // *************************************************************************
137 CActiveScheduler::Start();
139 // 1 sec delay for sessions to stop
140 User::After(1000000);
141 CleanupStack::PopAndDestroy(usbHost);
142 CleanupStack::PopAndDestroy(); // CPeriodUpdate
143 CleanupStack::PopAndDestroy(); // CMessageKeyProcessor
144 CleanupStack::PopAndDestroy(); // CDisplay
145 CleanupStack::PopAndDestroy(console);
146 CleanupStack::PopAndDestroy(); // fs
147 CleanupStack::PopAndDestroy(sched);
152 GLDEF_C TInt E32Main()
155 CTrapCleanup* cleanup = CTrapCleanup::New();
156 TRAPD(error, RunAppL());
157 __ASSERT_ALWAYS(!error, User::Panic(KTxtApp, error));