12 // |
12 // |
13 // Description: |
13 // Description: |
14 // e32test/usb/t_usb_device/main.cpp |
14 // e32test/usb/t_usb_device/main.cpp |
15 // USB Test Program, main part. |
15 // USB Test Program, main part. |
16 // Device-side part, to work against t_usb_host running on the host. |
16 // Device-side part, to work against t_usb_host running on the host. |
17 // |
17 // |
18 // |
18 // |
19 |
19 |
20 #include "general.h" |
20 #include "general.h" |
21 #include "config.h" |
21 #include "config.h" |
22 #include "activecontrol.h" |
22 #include "activecontrol.h" |
|
23 #include "OstTraceDefinitions.h" |
|
24 #ifdef OST_TRACE_COMPILER_IN_USE |
|
25 #include "mainTraces.h" |
|
26 #endif |
23 #include "activerw.h" |
27 #include "activerw.h" |
24 |
28 |
25 // --- Global Top Level Variables |
29 // --- Global Top Level Variables |
26 |
30 |
27 CActiveControl* gActiveControl; |
31 CActiveControl* gActiveControl; |
64 #ifdef USB_SC |
68 #ifdef USB_SC |
65 CConsoleBase* myConsole = Console::NewL(_L("T_USB_SCDEVICE - USB Client Test"), TSize(KConsFullScreen, KConsFullScreen)); |
69 CConsoleBase* myConsole = Console::NewL(_L("T_USB_SCDEVICE - USB Client Test"), TSize(KConsFullScreen, KConsFullScreen)); |
66 CleanupStack::PushL(myConsole); |
70 CleanupStack::PushL(myConsole); |
67 |
71 |
68 myConsole->Printf(_L("T_USB_SCDEVICE v%d.%d.%d\n"),KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro); |
72 myConsole->Printf(_L("T_USB_SCDEVICE v%d.%d.%d\n"),KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro); |
|
73 OstTraceExt3(TRACE_NORMAL, RUNAPPL_RUNAPPL, "T_USB_SCDEVICE v%d.%d.%d\n",(TInt32)KDeviceVersionMajor,(TInt32)KDeviceVersionMinor,(TInt32)KDeviceVersionMicro); |
69 test.Printf(_L("T_USB_SCDEVICE v%d.%d.%d\n"),KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro); |
74 test.Printf(_L("T_USB_SCDEVICE v%d.%d.%d\n"),KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro); |
|
75 OstTraceExt3(TRACE_NORMAL, RUNAPPL_RUNAPPL_DUP01, "T_USB_SCDEVICE v%d.%d.%d\n",(TInt32)KDeviceVersionMajor,(TInt32)KDeviceVersionMinor,(TInt32)KDeviceVersionMicro); |
70 #else |
76 #else |
71 CConsoleBase* myConsole = Console::NewL(_L("T_USB_DEVICE - USB Client Test"), TSize(KConsFullScreen, KConsFullScreen)); |
77 CConsoleBase* myConsole = Console::NewL(_L("T_USB_DEVICE - USB Client Test"), TSize(KConsFullScreen, KConsFullScreen)); |
72 CleanupStack::PushL(myConsole); |
78 CleanupStack::PushL(myConsole); |
73 |
79 |
74 myConsole->Printf(_L("T_USB_DEVICE v%d.%d.%d\n"),KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro); |
80 myConsole->Printf(_L("T_USB_DEVICE v%d.%d.%d\n"),KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro); |
|
81 OstTraceExt3(TRACE_NORMAL, RUNAPPL_RUNAPPL_DUP02, "T_USB_DEVICE v%u.%u.%u\n",KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro); |
75 test.Printf(_L("T_USB_DEVICE v%d.%d.%d\n"),KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro); |
82 test.Printf(_L("T_USB_DEVICE v%d.%d.%d\n"),KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro); |
|
83 OstTraceExt3(TRACE_NORMAL, RUNAPPL_RUNAPPL_DUP03, "T_USB_DEVICE v%u.%u.%u\n",KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro); |
76 #endif |
84 #endif |
77 |
85 |
78 // outermost test begin |
86 // outermost test begin |
79 test.Start(_L("Outermost test of t_usb_device\n")); |
87 test.Start(_L("Outermost test of t_usb_device\n")); |
80 |
88 |
81 do |
89 do |
82 { |
90 { |
83 gActiveControl = CActiveControl::NewL(myConsole, aConfigFile, aScriptFile); |
91 gActiveControl = CActiveControl::NewL(myConsole, aConfigFile, aScriptFile); |
84 CleanupStack::PushL(gActiveControl); |
92 CleanupStack::PushL(gActiveControl); |
85 |
93 |
86 |
94 |
87 // Call request function |
95 // Call request function |
88 #ifdef USB_SC |
96 #ifdef USB_SC |
89 if (!gShareHandle) |
97 if (!gShareHandle) |
90 gActiveControl->RequestEp0ControlPacket(); |
98 gActiveControl->RequestEp0ControlPacket(); |
91 #else |
99 #else |
92 gActiveControl->RequestEp0ControlPacket(); |
100 gActiveControl->RequestEp0ControlPacket(); |
93 #endif |
101 #endif |
94 CActiveScheduler::Start(); |
102 CActiveScheduler::Start(); |
95 |
103 |
96 test.Printf (_L("Test Run Completed\n")); |
104 test.Printf (_L("Test Run Completed\n")); |
97 |
105 OstTrace0(TRACE_NORMAL, RUNAPPL_RUNAPPL_DUP04, "Test Run Completed\n"); |
|
106 |
98 if (gSoakCount > 0) |
107 if (gSoakCount > 0) |
99 { |
108 { |
100 gSoakCount--; |
109 gSoakCount--; |
101 } |
110 } |
102 |
111 |
103 // Suspend thread for 2 seconds |
112 // Suspend thread for 2 seconds |
104 User::After(2000000); |
113 User::After(2000000); |
105 |
114 |
106 CleanupStack::PopAndDestroy(gActiveControl); |
115 CleanupStack::PopAndDestroy(gActiveControl); |
107 |
116 |
108 } |
117 } |
109 while ((gSoakCount > 0) || (gSoakCount == -1)); |
118 while ((gSoakCount > 0) || (gSoakCount == -1)); |
110 |
119 |
135 |
144 |
136 while (token.Set(lex.NextToken()), token != KNullDesC) |
145 while (token.Set(lex.NextToken()), token != KNullDesC) |
137 { |
146 { |
138 if (token == _L("/v")) |
147 if (token == _L("/v")) |
139 { |
148 { |
140 RDebug::Print(_L("Verbose output enabled\n")); |
149 OstTrace0(TRACE_NORMAL, PARSECOMMANDLINE_PARSECOMMANDLINE, "Verbose output enabled\n"); |
141 gVerbose = ETrue; |
150 gVerbose = ETrue; |
142 } |
151 } |
143 else if (token == _L("/s")) |
152 else if (token == _L("/s")) |
144 { |
153 { |
145 RDebug::Print(_L("Skipping some tests\n")); |
154 OstTrace0(TRACE_NORMAL, PARSECOMMANDLINE_PARSECOMMANDLINE_DUP01, "Skipping some tests\n"); |
146 gSkip = ETrue; |
155 gSkip = ETrue; |
147 } |
156 } |
148 else if (token == _L("/t")) |
157 else if (token == _L("/t")) |
149 { |
158 { |
150 RDebug::Print(_L("Temporary Test\n")); |
159 OstTrace0(TRACE_NORMAL, PARSECOMMANDLINE_PARSECOMMANDLINE_DUP02, "Temporary Test\n"); |
151 gTempTest = ETrue; |
160 gTempTest = ETrue; |
152 } |
161 } |
153 else if (token == _L("/n")) |
162 else if (token == _L("/n")) |
154 { |
163 { |
155 RDebug::Print(_L("Not Stopping on Test Fail\n")); |
164 OstTrace0(TRACE_NORMAL, PARSECOMMANDLINE_PARSECOMMANDLINE_DUP03, "Not Stopping on Test Fail\n"); |
156 gStopOnFail = EFalse; |
165 gStopOnFail = EFalse; |
157 } |
166 } |
158 #ifdef USB_SC |
167 #ifdef USB_SC |
159 else if (token == _L("/a")) |
168 else if (token == _L("/a")) |
160 { |
169 { |
161 RDebug::Print(_L("share handle test\n")); |
170 OstTrace0(TRACE_NORMAL, PARSECOMMANDLINE_PARSECOMMANDLINE_DUP04, "share handle test\n"); |
162 gShareHandle = ETrue; |
171 gShareHandle = ETrue; |
163 } |
172 } |
164 #endif |
173 #endif |
165 else if (token.Left(5) == _L("/soak")) |
174 else if (token.Left(5) == _L("/soak")) |
166 { |
175 { |
168 gSoakCount = -1; |
177 gSoakCount = -1; |
169 equalPos = token.Locate('='); |
178 equalPos = token.Locate('='); |
170 if ((equalPos+1) < token.Length()) |
179 if ((equalPos+1) < token.Length()) |
171 { |
180 { |
172 TLex lexNum(token.Mid(equalPos+1)); |
181 TLex lexNum(token.Mid(equalPos+1)); |
173 lexNum.Val(gSoakCount,EDecimal); |
182 lexNum.Val(gSoakCount,EDecimal); |
174 } |
183 } |
175 RDebug::Print(_L("Soak test for %d iterations\n"),gSoakCount); |
184 OstTrace1(TRACE_NORMAL, PARSECOMMANDLINE_PARSECOMMANDLINE_DUP05, "Soak test for %d iterations\n",gSoakCount); |
176 } |
185 } |
177 else if (token.Left(8) == _L("/script=")) |
186 else if (token.Left(8) == _L("/script=")) |
178 { |
187 { |
179 aScriptFileName = token; |
188 aScriptFileName = token; |
180 } |
189 } |
182 { |
191 { |
183 aConfigFileName = token; |
192 aConfigFileName = token; |
184 } |
193 } |
185 } |
194 } |
186 } |
195 } |
187 |
196 |
188 } |
197 } |
189 |
198 |
190 TInt E32Main() |
199 TInt E32Main() |
191 { |
200 { |
192 __UHEAP_MARK; |
201 __UHEAP_MARK; |
193 |
202 |
194 CTrapCleanup* cleanup = CTrapCleanup::New(); // get clean-up stack |
203 CTrapCleanup* cleanup = CTrapCleanup::New(); // get clean-up stack |
195 |
204 |
196 TBuf<64> configFileName; |
205 TBuf<64> configFileName; |
197 TBuf<64> scriptFileName; |
206 TBuf<64> scriptFileName; |
198 ParseCommandLine (configFileName,scriptFileName); |
207 ParseCommandLine (configFileName,scriptFileName); |
199 |
208 |
200 if (configFileName.Length() == 0) |
209 if (configFileName.Length() == 0) |
201 { |
210 { |
202 RDebug::Print(_L("(T_USB: Warning - No Configuration File.)\n")); |
211 OstTrace0(TRACE_NORMAL, E32MAIN_E32MAIN, "(T_USB: Warning - No Configuration File.\n"); |
203 } |
212 } |
204 else |
213 else |
205 { |
214 { |
206 RDebug::Print(_L("T_USB: Config File Name %s\n"),configFileName.PtrZ()); |
215 OstTraceExt1(TRACE_NORMAL, E32MAIN_E32MAIN_DUP01, "T_USB: Config File Name %S\n",configFileName); |
207 } |
216 } |
208 |
217 |
209 if (scriptFileName.Length() != 0) |
218 if (scriptFileName.Length() != 0) |
210 { |
219 { |
211 RDebug::Print(_L("T_USB: Script File Name %s\n"),scriptFileName.PtrZ()); |
220 OstTraceExt1(TRACE_NORMAL, E32MAIN_E32MAIN_DUP02, "T_USB: Script File Name %S\n",scriptFileName); |
212 } |
221 } |
213 |
222 |
214 TRAPD(error, RunAppL(& configFileName, &scriptFileName)); |
223 TRAPD(error, RunAppL(& configFileName, &scriptFileName)); |
215 |
224 |
216 __ASSERT_ALWAYS(!error, User::Panic(_L("T_USB_DEVICE: EPOC32EX"), error)); |
225 __ASSERT_ALWAYS(!error, User::Panic(_L("T_USB_DEVICE: EPOC32EX"), error)); |
217 |
226 |
218 delete cleanup; // destroy clean-up stack |
227 delete cleanup; // destroy clean-up stack |
219 |
228 |
220 __UHEAP_MARKEND; |
229 __UHEAP_MARKEND; |
221 |
230 |
222 RDebug::Print(_L("Program exit: done.\n")); |
231 OstTrace0(TRACE_NORMAL, E32MAIN_E32MAIN_DUP03, "Program exit: done.\n"); |
|
232 |
223 return 0; // and return |
233 return 0; // and return |
224 } |
234 } |
225 |
235 |
226 |
236 |
227 // -eof- |
237 // -eof- |