|
1 // Copyright (c) 1997-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 "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". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // |
|
15 |
|
16 #include <es_sock.h> |
|
17 #include <ir_sock.h> |
|
18 #include <bautils.h> |
|
19 #include <usbman.h> |
|
20 #include <d32usbc.h> |
|
21 #include <e32keys.h> |
|
22 #include "TOBEXCON.H" |
|
23 #include "clienthandler.h" |
|
24 #include "serverhandlerbase.h" |
|
25 #include "serverhandler.h" |
|
26 #include "serverhandlerfile.h" |
|
27 #include "btextnotifiers.h" |
|
28 |
|
29 #ifdef EMPTY_HEADERS_TEST |
|
30 #include "emptyheaderstest.h" |
|
31 #endif //EMPTY_HEADERS_TEST |
|
32 |
|
33 #define EPOCIDENT _L8("EPOC32 ER5") |
|
34 |
|
35 |
|
36 CActiveConsole::CActiveConsole(CConsoleBase* aConsole) |
|
37 : CActive(EPriorityNormal), |
|
38 iConsole(aConsole), |
|
39 iTestMode(E_Inactive), |
|
40 iDiscoverySlots(KObexIrdaDefaultDiscoverySlotsToUse), |
|
41 iDiscoveryAttempts(KObexIrdaDefaultDiscoveryAttempts), |
|
42 iRecvMTU(KObexPacketDefaultSize), |
|
43 iTransmitMTU(KObexPacketDefaultSize) |
|
44 { |
|
45 #ifdef EMPTY_HEADERS_TEST |
|
46 iDisplayHeaders = ETrue; |
|
47 #endif //EMPTY_HEADERS_TEST |
|
48 } |
|
49 |
|
50 CActiveConsole* CActiveConsole::NewLC(CConsoleBase* aConsole) |
|
51 { |
|
52 CActiveConsole* self = new (ELeave) CActiveConsole(aConsole); |
|
53 CleanupStack::PushL(self); |
|
54 self->ConstructL(); |
|
55 return self; |
|
56 } |
|
57 |
|
58 void CActiveConsole::ConstructL () |
|
59 { |
|
60 iRefHandler = CReferenceHandler::NewL(); |
|
61 iConsole->Printf(_L("\r\n")); |
|
62 CActiveScheduler::Add(this); // Add to active scheduler |
|
63 |
|
64 // Create private path and set default Inbox path |
|
65 RFs fs; |
|
66 User::LeaveIfError(fs.Connect()); |
|
67 fs.CreatePrivatePath(EDriveC); |
|
68 fs.SetSessionToPrivate(EDriveC); |
|
69 fs.SessionPath(iInboxRoot); |
|
70 fs.Close(); |
|
71 } |
|
72 |
|
73 CActiveConsole::~CActiveConsole() |
|
74 { |
|
75 // Make sure we're cancelled |
|
76 Cancel(); |
|
77 |
|
78 // safe to delete NULL |
|
79 delete iObexClientHandler; |
|
80 delete iObexServerHandler; |
|
81 delete iObexServerHandlerFile; |
|
82 delete iRefHandler; |
|
83 } |
|
84 |
|
85 void CActiveConsole::DoCancel() |
|
86 { |
|
87 iConsole->ReadCancel(); |
|
88 } |
|
89 |
|
90 void CActiveConsole::RunL() |
|
91 { |
|
92 // Save the current test mode in case the next action leaves |
|
93 TUint oldTestMode = iTestMode; |
|
94 TRAPD(err,ProcessKeyPressL(TChar(iConsole->KeyCode()))); |
|
95 if(err != KErrNone) |
|
96 { |
|
97 iConsole->Printf(_L("Failed. Error: %d\r\n"),err); |
|
98 // Put the test mode back again |
|
99 iTestMode = oldTestMode; |
|
100 RequestCharacter(); |
|
101 } |
|
102 } |
|
103 |
|
104 void CActiveConsole::RequestCharacter() |
|
105 { |
|
106 // A request is issued to the CConsoleBase to accept a |
|
107 // character from the keyboard. |
|
108 if (iTestMode == E_Client) |
|
109 { |
|
110 iConsole->Printf(_L("Commands :- \r\n")); |
|
111 iConsole->Printf(_L(" A - IrObex Abort\r\n")); |
|
112 iConsole->Printf(_L(" 1 - IrObex Connect Menu\r\n")); |
|
113 iConsole->Printf(_L(" 2 - IrObex Disconnect\r\n")); |
|
114 iConsole->Printf(_L(" 3 - IrObex Put obj 1 : %S\r\n"), &(iObexClientHandler->iFilename1)); |
|
115 iConsole->Printf(_L(" 4 - IrObex Put Obj 2 : %S\r\n"), &(iObexClientHandler->iFilename2)); |
|
116 iConsole->Printf(_L(" z - IrObex Put Obj 3 : %S\r\n"), &(iObexClientHandler->iFilename3)); |
|
117 iConsole->Printf(_L(" y - Enter HTTP/App param Test Menu\r\n")); //E_Client_HTTP_Menu |
|
118 iConsole->Printf(_L(" 5 - IrObex Get by name\r\n")); |
|
119 iConsole->Printf(_L(" 6 - IrObex Get by type\r\n")); |
|
120 iConsole->Printf(_L(" 7 - IrObex SetPath\r\n")); |
|
121 iConsole->Printf(_L(" 8 - IrObex Put reference object\r\n")); |
|
122 iConsole->Printf(_L(" 9 - IrObex Get reference object\r\n")); |
|
123 iConsole->Printf(_L(" 0 - IrObex Setup OBEX\r\n")); |
|
124 iConsole->Printf(_L(" h - Toggle display of object headers\r\n")); |
|
125 #ifdef ERROR_RESOLUTION_EXTENSION |
|
126 iConsole->Printf(_L(" l - Display last error\r\n")); |
|
127 #endif |
|
128 #ifdef EMPTY_HEADERS_TEST |
|
129 iConsole->Printf(_L(" t - Empty headers test menu\r\n")); |
|
130 #endif //EMPTY_HEADERS_TEST |
|
131 iConsole->Printf(_L(" s - kill the Obex Client\r\n")); |
|
132 } |
|
133 if ( iTestMode == E_Client_HTTP_Menu ) |
|
134 { |
|
135 iConsole->Printf(_L(" 1 - HTTP Multiple Packets, will all arrive\r\n")); |
|
136 iConsole->Printf(_L(" 2 - HTTP Multiple Packets, too many arrive in two parts\r\n")); |
|
137 iConsole->Printf(_L(" 3 - HTTP Single Packet too large, nothing will arrive\r\n")); |
|
138 iConsole->Printf(_L(" 4 - HTTP Single Packet too large with several smaller packets which will arrive\r\n")); |
|
139 iConsole->Printf(_L(" 5 - App parameters test\r\n")); |
|
140 iConsole->Printf(_L(" s - Back to Client Menu\r\n")); |
|
141 } |
|
142 if ( iTestMode == E_Client_Connect_Menu ) |
|
143 { |
|
144 iConsole->Printf(_L(" 0 - IrObex Disconnect\r\n")); |
|
145 iConsole->Printf(_L(" 1 - IrObex Connect\r\n")); |
|
146 iConsole->Printf(_L(" 2 - IrObex Connect with Authentication\r\n")); |
|
147 iConsole->Printf(_L(" 3 - IrObex Connect with Target Header\r\n")); |
|
148 iConsole->Printf(_L(" 4 - IrObex Connect with Authentication AND Target Header\r\n")); |
|
149 iConsole->Printf(_L(" 5 - Get remote address\r\n")); |
|
150 iConsole->Printf(_L(" s - Back to Client Menu\r\n")); |
|
151 } |
|
152 if ( iTestMode == E_Client_Setup_Menu ) |
|
153 { |
|
154 iConsole->Printf(_L(" 1 - Change Put Object 1\r\n")); |
|
155 iConsole->Printf(_L(" 2 - Change Put Object 2\r\n")); |
|
156 iConsole->Printf(_L(" 3 - Change Obex Get Name : %S\r\n"), &(iObexClientHandler->iObexName)); |
|
157 iConsole->Printf(_L(" 4 - Change Obex Get Type : %S\r\n"), &(iObexClientHandler->iGetType)); |
|
158 iConsole->Printf(_L(" 5 - Enable password support (so they can challenge us)\r\n")); |
|
159 iConsole->Printf(_L(" 6 - Set challenge password : %S\r\n"), &(iObexClientHandler->iChallengePassword)); |
|
160 iConsole->Printf(_L(" 7 - Change Authentication Challenge Header\r\n")); |
|
161 iConsole->Printf(_L(" 8 - Set Command Time-out\r\n")); |
|
162 iConsole->Printf(_L(" s - Back to Client Menu\r\n")); |
|
163 iConsole->Printf(_L(" p - Set default file path : %S\r\n"), &iInboxRoot); |
|
164 } |
|
165 if ( iTestMode == E_Client_Authentication_Header_Menu ) |
|
166 { |
|
167 iConsole->Printf(_L(" 1 - Suppress Options Header\r\n")); |
|
168 iConsole->Printf(_L(" 2 - Suppress Realm Header\r\n")); |
|
169 iConsole->Printf(_L(" 3 - Suppress Options and Realm Headers\r\n")); |
|
170 iConsole->Printf(_L(" 4 - Reset to Default Authentication Headers\r\n")); |
|
171 iConsole->Printf(_L(" 5 - Attempt Invalid Authentication Headers Value (i)\r\n")); |
|
172 iConsole->Printf(_L(" s - Back to Client Menu\r\n")); |
|
173 } |
|
174 if (iTestMode == E_Server) |
|
175 { |
|
176 iConsole->Printf(_L(" 1 - Make OBEX Challenge on all incoming connections\r\n")); |
|
177 iConsole->Printf(_L(" 2 - Disable authentication\r\n")); |
|
178 iConsole->Printf(_L(" 3 - Enable password support (so they can challenge us)\r\n")); |
|
179 iConsole->Printf(_L(" 4 - Set FTP local who (insist on target header\r\n")); |
|
180 iConsole->Printf(_L(" 5 - Change challenge password : %S\r\n"), &(iObexServerHandler->iChallengePassword)); |
|
181 iConsole->Printf(_L(" 6 - Get remote address\r\n")); |
|
182 iConsole->Printf(_L(" 7 - Set Target Checking to NoChecking\r\n")); |
|
183 iConsole->Printf(_L(" 8 - Set Target Checking to IfPresent\r\n")); |
|
184 iConsole->Printf(_L(" 9 - Set Target Checking to Always\r\n")); |
|
185 iConsole->Printf(_L(" h - Toggle display of object headers\r\n")); |
|
186 iConsole->Printf(_L(" p - Set Inbox root directory : %S\r\n"), &iInboxRoot); |
|
187 #ifdef PACKET_ACCESS_EXTENSION |
|
188 iConsole->Printf(_L(" a - Enable displaying of request packets\r\n")); |
|
189 #endif // PACKET_ACCESS_EXTENSION |
|
190 if(iTransport == EIrda) |
|
191 { |
|
192 iConsole->Printf(_L(" o - start suppressing IrDA discovery requests\r\n")); |
|
193 iConsole->Printf(_L(" c - stop suppressing IrDA discovery requests\r\n")); |
|
194 } |
|
195 |
|
196 iConsole->Printf(_L("press 's' to stop the Obex Server\r\n")); |
|
197 iConsole->Printf(_L("press 'S' to start the Obex Server\r\n")); |
|
198 } |
|
199 if (iTestMode == E_Server_File) |
|
200 { |
|
201 iConsole->Printf(_L(" Started Obex server, receiving into file-backed buffer object\r\n")); |
|
202 iConsole->Printf(_L(" 1 - Make OBEX Challenge on all incoming connections\r\n")); |
|
203 iConsole->Printf(_L(" 2 - Disable authentication\r\n")); |
|
204 iConsole->Printf(_L(" 3 - Enable password support (so they can challenge us)\r\n")); |
|
205 iConsole->Printf(_L(" 4 - Set FTP local who (insist on target header\r\n")); |
|
206 iConsole->Printf(_L(" 5 - Change challenge password : %S\r\n"), &(iObexServerHandlerFile->iChallengePassword)); |
|
207 iConsole->Printf(_L(" 6 - Get remote address\r\n")); |
|
208 iConsole->Printf(_L(" 7 - Toggle buffered file writes\r\n")); |
|
209 iConsole->Printf(_L(" p - Set Inbox root directory : %S\r\n"), &iInboxRoot); |
|
210 iConsole->Printf(_L("s - Stop the Obex Server\r\n")); |
|
211 iConsole->Printf(_L("g - Start the Obex Server\r\n")); |
|
212 iConsole->Printf(_L("press 'k' to kill the Obex Server\r\n")); |
|
213 } |
|
214 |
|
215 if(iTestMode == E_Inactive) |
|
216 { |
|
217 iConsole->Printf(_L("press '1' to start the Obex Client over Bluetooth\r\n")); |
|
218 iConsole->Printf(_L("press '2' to start the Obex Server over Bluetooth\r\n")); |
|
219 iConsole->Printf(_L("press '3' to start the Obex Client over Irda\r\n")); |
|
220 iConsole->Printf(_L("press 'a' to set the number of discovery slots to use in Irda\r\n")); |
|
221 iConsole->Printf(_L("press 'b' to set the number of discovery attempts to make in Irda\r\n")); |
|
222 iConsole->Printf(_L("press '4' to start the Obex Server over Irda\r\n")); |
|
223 iConsole->Printf(_L("press '5' to start the Obex Server over Irda (filename backed buffer object)\r\n")); |
|
224 iConsole->Printf(_L("press 'r' to start the Obex Server over Irda (RFile backed buffer object)\r\n")); |
|
225 iConsole->Printf(_L("press '6' to start the Obex Server over USB\r\n")); |
|
226 iConsole->Printf(_L("press '7' to start the Obex Client over USB\r\n")); |
|
227 iConsole->Printf(_L("press 'n' to set the IrDA Nickname\r\n")); |
|
228 iConsole->Printf(_L("press 'm' to set the Obex Recv MTU\r\n")); |
|
229 iConsole->Printf(_L("press 'M' to set the Obex Transmit MTU\r\n")); |
|
230 iConsole->Printf(_L("press 'p' to toggle performance logging\r\n")); |
|
231 } |
|
232 #ifdef EMPTY_HEADERS_TEST |
|
233 if ( iTestMode == E_Empty_Headers_Accept_Test ) |
|
234 { |
|
235 iConsole->Printf(_L(" 1 - Sent a packet with NOT empty following headers:\n\t[ Name, Type, Description, Target, Application Parameters ]\r\n\n")); |
|
236 iConsole->Printf(_L(" 2 - Sent a packet with existing but empty following headers:\n\t[ Name, Type, Description, Target, Application Parameters ]\r\n\n")); |
|
237 iConsole->Printf(_L(" s - Back to Client Menu\r\n")); |
|
238 } |
|
239 #endif //EMPTY_HEADERS_TEST |
|
240 if(iTestMode == E_GetIrDANickname && iIrDANicknameBuffer.Length() == 0) |
|
241 { |
|
242 iConsole->Printf(_L("Enter new IrDA nickname: ")); |
|
243 } |
|
244 if(iTestMode == E_EnterRecvMTU && iRecvMTU == 0) |
|
245 { |
|
246 iConsole->Printf(_L("Enter new Receive MTU value (m=max, d=default): ")); |
|
247 } |
|
248 if(iTestMode == E_EnterTransmitMTU && iTransmitMTU == 0) |
|
249 { |
|
250 iConsole->Printf(_L("Enter new Transmit MTU value (m=max, d=default): ")); |
|
251 } |
|
252 //if(E_SdpQuery) // no extra options |
|
253 |
|
254 if(iTestMode != E_GetIrDANickname && |
|
255 iTestMode != E_EnterRecvMTU && |
|
256 iTestMode != E_EnterTransmitMTU) |
|
257 { |
|
258 iConsole->Printf(_L("press Escape to quit\r\n\r\n")); |
|
259 } |
|
260 iConsole->Read(iStatus); |
|
261 SetActive(); |
|
262 } |
|
263 |
|
264 void CActiveConsole::ProcessKeyPressL(TChar aChar) |
|
265 { |
|
266 if (aChar == EKeyEscape) |
|
267 { |
|
268 CActiveScheduler::Stop(); |
|
269 return; |
|
270 } |
|
271 |
|
272 if(iTestMode ==E_Inactive) |
|
273 { |
|
274 switch (aChar) |
|
275 { |
|
276 case '1': |
|
277 iTestMode = E_SdpQuery; |
|
278 iTransport = EBluetooth; |
|
279 iObexClientHandler = CObexClientHandler::NewL(this, EBluetooth); |
|
280 break; |
|
281 case'3': |
|
282 iTestMode = E_Client; |
|
283 iTransport = EIrda; |
|
284 iObexClientHandler = CObexClientHandler::NewL(this, EIrda); |
|
285 break; |
|
286 case 'a': |
|
287 SetNumber(iDiscoverySlots); |
|
288 break; |
|
289 case 'b': |
|
290 SetNumber(iDiscoveryAttempts); |
|
291 break; |
|
292 case 'n': |
|
293 iTestMode = E_GetIrDANickname; |
|
294 iIrDANicknameBuffer.Zero(); |
|
295 break; |
|
296 case 'p': |
|
297 // Toggle the internal state. |
|
298 iPerformanceLoggingEnabled = !iPerformanceLoggingEnabled; |
|
299 if(iPerformanceLoggingEnabled) |
|
300 { |
|
301 iConsole->Printf(_L("\r\nPerformance logging enabled.\r\n\r\n")); |
|
302 } |
|
303 else |
|
304 { |
|
305 iConsole->Printf(_L("\r\nPerformance logging disabled.\r\n\r\n")); |
|
306 } |
|
307 break; |
|
308 case '2': |
|
309 iTestMode = E_Server; |
|
310 iTransport = EBluetooth; |
|
311 iObexServerHandler = CObexServerHandler::NewL(this, EBluetooth); |
|
312 break; |
|
313 case '4': |
|
314 iTestMode = E_Server; |
|
315 iTransport = EIrda; |
|
316 iObexServerHandler = CObexServerHandler::NewL(this, EIrda); |
|
317 break; |
|
318 case '5': |
|
319 iTestMode = E_Server_File; // Added test for file-backed buffer object receive |
|
320 iTransport = EIrda; |
|
321 iObexServerHandlerFile = CObexServerHandlerFile::NewL(this,EIrda); |
|
322 break; |
|
323 case 'r': |
|
324 iTestMode = E_Server_File; // Added test for file-backed buffer object receive |
|
325 iTransport = EIrda; |
|
326 iObexServerHandlerFile = CObexServerHandlerFile::NewL(this,EIrda,ETrue); |
|
327 break; |
|
328 case '6': |
|
329 { |
|
330 iTestMode = E_Server; |
|
331 |
|
332 #ifndef __WINS__ |
|
333 iTransport = EUsb; |
|
334 |
|
335 // For USB, we unfortunately need to start it, then register our |
|
336 // interfaces, then do a soft connect. |
|
337 TInt err = User::LoadLogicalDevice(_L("EUSBC")); |
|
338 if (err != KErrNone && err != KErrAlreadyExists) |
|
339 { |
|
340 User::Leave(err); |
|
341 } |
|
342 |
|
343 RUsb usb; |
|
344 User::LeaveIfError(usb.Connect()); |
|
345 TRequestStatus status; |
|
346 usb.TryStart(2, status); |
|
347 User::WaitForRequest(status); |
|
348 iConsole->Printf(_L("Starting USB returned %d\n"), status.Int()); |
|
349 User::LeaveIfError(status.Int()); |
|
350 usb.Close(); |
|
351 |
|
352 RDevUsbcClient usbDriver; |
|
353 User::LeaveIfError(usbDriver.Open(0)); |
|
354 User::LeaveIfError(usbDriver.DeviceDisconnectFromHost()); |
|
355 |
|
356 iObexServerHandler = CObexServerHandler::NewL(this, EUsb); |
|
357 |
|
358 User::LeaveIfError(usbDriver.DeviceConnectToHost()); |
|
359 usbDriver.Close(); |
|
360 |
|
361 #else |
|
362 |
|
363 iTransport = EWin32Usb; |
|
364 iObexServerHandler = CObexServerHandler::NewL(this, EWin32Usb); |
|
365 #endif |
|
366 |
|
367 } |
|
368 break; |
|
369 case '7': |
|
370 { |
|
371 iTestMode = E_Client; |
|
372 |
|
373 #ifdef __WINS__ |
|
374 iTransport = EWin32Usb; |
|
375 iObexClientHandler = CObexClientHandler::NewL(this, EWin32Usb); |
|
376 |
|
377 #else |
|
378 |
|
379 iTransport = EUsb; |
|
380 |
|
381 // For USB, we unfortunately need to start it, then register our |
|
382 // interfaces, then do a soft connect. |
|
383 TInt loaded = User::LoadLogicalDevice(_L("EUSBC")); |
|
384 iConsole->Printf(_L("Loading ldd returned %d\n"), loaded); |
|
385 |
|
386 RUsb usb; |
|
387 User::LeaveIfError(usb.Connect()); |
|
388 iConsole->Printf(_L("Connected to USB\n")); |
|
389 TRequestStatus status; |
|
390 usb.TryStart(2,status); |
|
391 User::WaitForRequest(status); |
|
392 iConsole->Printf(_L("Starting USB returned %d\n"), status.Int()); |
|
393 User::LeaveIfError(status.Int()); |
|
394 usb.Close(); |
|
395 |
|
396 RDevUsbcClient usbDriver; |
|
397 User::LeaveIfError(usbDriver.Open(0)); |
|
398 User::LeaveIfError(usbDriver.DeviceDisconnectFromHost()); |
|
399 |
|
400 iObexClientHandler = CObexClientHandler::NewL(this, EUsb); |
|
401 |
|
402 User::LeaveIfError(usbDriver.DeviceConnectToHost()); |
|
403 usbDriver.Close(); |
|
404 #endif |
|
405 |
|
406 } |
|
407 break; |
|
408 case 'm': |
|
409 // Reset MTU value. |
|
410 iRecvMTU = 0; |
|
411 iTestMode = E_EnterRecvMTU; |
|
412 break; |
|
413 |
|
414 case 'M': |
|
415 // Reset MTU value. |
|
416 iTransmitMTU = 0; |
|
417 iTestMode = E_EnterTransmitMTU; |
|
418 break; |
|
419 |
|
420 default: |
|
421 break; |
|
422 } |
|
423 } |
|
424 |
|
425 else if(iTestMode == E_Server) |
|
426 { |
|
427 switch (aChar) |
|
428 { |
|
429 case 's': |
|
430 iObexServerHandler->Stop(); |
|
431 break; |
|
432 case 'S': |
|
433 iObexServerHandler->Start(); |
|
434 break; |
|
435 case 'g': case 'G': |
|
436 iObexServerHandler->Start(); |
|
437 break; |
|
438 case 'h': case 'H': |
|
439 iDisplayHeaders = !iDisplayHeaders; |
|
440 break; |
|
441 case 'k': case 'K': |
|
442 delete iObexServerHandler; |
|
443 iObexServerHandler = NULL; |
|
444 iTestMode = E_Inactive; |
|
445 break; |
|
446 case 'o': |
|
447 if(iTransport == EIrda) |
|
448 { |
|
449 iSupp.Open(); |
|
450 } |
|
451 break; |
|
452 case 'c': |
|
453 if(iTransport == EIrda) |
|
454 { |
|
455 iSupp.Close(); |
|
456 } |
|
457 break; |
|
458 case '1': |
|
459 iObexServerHandler->EnableAuthentication(); |
|
460 break; |
|
461 case '2': |
|
462 iObexServerHandler->DisableAuthentication(); |
|
463 break; |
|
464 case '3': |
|
465 iObexServerHandler->EnablePassword(); |
|
466 break; |
|
467 case '4': |
|
468 iObexServerHandler->SetLocalWho(); |
|
469 break; |
|
470 case '5': |
|
471 iObexServerHandler->ChangeChallengePassword(); |
|
472 break; |
|
473 case '6': |
|
474 iObexServerHandler->RemoteAddress(); |
|
475 break; |
|
476 case '7': |
|
477 iObexServerHandler->SetTargetChecking(CObexServer::ENoChecking); |
|
478 break; |
|
479 case '8': |
|
480 iObexServerHandler->SetTargetChecking(CObexServer::EIfPresent); |
|
481 break; |
|
482 case '9': |
|
483 iObexServerHandler->SetTargetChecking(CObexServer::EAlways); |
|
484 break; |
|
485 case 'p': |
|
486 SetInboxRoot(); |
|
487 break; |
|
488 #ifdef PACKET_ACCESS_EXTENSION |
|
489 case 'a': |
|
490 iObexServerHandler->PacketAccessUiL(ETrue); |
|
491 break; |
|
492 #endif // PACKET_ACCESS_EXTENSION |
|
493 default: |
|
494 iConsole->Printf(_L("\r\nUnknown Command\r\n\r\n")); |
|
495 break; |
|
496 } |
|
497 } |
|
498 |
|
499 else if(iTestMode == E_Server_File) |
|
500 { |
|
501 switch (aChar) |
|
502 { |
|
503 case 's': case 'S': |
|
504 iObexServerHandlerFile->Stop(); |
|
505 delete iObexServerHandlerFile; |
|
506 iObexServerHandlerFile = NULL; |
|
507 iTestMode = E_Inactive; |
|
508 break; |
|
509 case '1': |
|
510 iObexServerHandlerFile->EnableAuthentication(); |
|
511 break; |
|
512 case '2': |
|
513 iObexServerHandlerFile->DisableAuthentication(); |
|
514 break; |
|
515 case '3': |
|
516 iObexServerHandlerFile->EnablePassword(); |
|
517 break; |
|
518 case '4': |
|
519 iObexServerHandlerFile->SetLocalWho(); |
|
520 break; |
|
521 case '5': |
|
522 iObexServerHandlerFile->ChangeChallengePassword(); |
|
523 break; |
|
524 case '6': |
|
525 iObexServerHandlerFile->RemoteAddress(); |
|
526 break; |
|
527 case '7': |
|
528 iObexServerHandlerFile->ToggleWriteBuffering(); |
|
529 break; |
|
530 case 'p': |
|
531 SetInboxRoot(); |
|
532 break; |
|
533 |
|
534 default: |
|
535 iConsole->Printf(_L("\r\nUnknown Command\r\n\r\n")); |
|
536 break; |
|
537 } |
|
538 } |
|
539 |
|
540 else if (iTestMode == E_Client_Connect_Menu ) |
|
541 { |
|
542 switch (aChar) |
|
543 { |
|
544 case '0': |
|
545 iObexClientHandler->Disconnect(); |
|
546 break; |
|
547 case '1': |
|
548 iObexClientHandler->Connect(); |
|
549 break; |
|
550 case '2': |
|
551 iObexClientHandler->ConnectWithAuthenticationL(); |
|
552 break; |
|
553 case '3': |
|
554 iObexClientHandler->ConnectWithTarget(); |
|
555 break; |
|
556 case '4': |
|
557 iObexClientHandler->ConnectWithAuthenticationAndTargetL(); |
|
558 break; |
|
559 case '5': |
|
560 iObexClientHandler->RemoteAddress(); |
|
561 break; |
|
562 default: |
|
563 iTestMode = E_Client; |
|
564 break; |
|
565 } |
|
566 } |
|
567 else if ( iTestMode == E_Client_HTTP_Menu ) |
|
568 { |
|
569 switch (aChar) //tam |
|
570 { |
|
571 case '1': //HTTP Multiple Packets; |
|
572 iObexClientHandler->HTTPTest1L(); |
|
573 break; |
|
574 case '2': //HTTP Multiple Packets, too many, will arrive in two parts |
|
575 iObexClientHandler->HTTPTest2L(); |
|
576 break; |
|
577 case '3': //HTTP Single Packet too large, nothing will arrive |
|
578 iObexClientHandler->HTTPTest3L(); |
|
579 break; |
|
580 case '4': //HTTP Single Packet too large |
|
581 //with several smaller packets which will arrive |
|
582 iObexClientHandler->HTTPTest4L(); |
|
583 break; |
|
584 case '5': //App parameters test |
|
585 iObexClientHandler->AppParamsTestL(); |
|
586 default: |
|
587 iTestMode = E_Client; |
|
588 break; |
|
589 } |
|
590 |
|
591 } |
|
592 else if (iTestMode == E_Client_Setup_Menu ) |
|
593 { |
|
594 switch (aChar) |
|
595 { |
|
596 case '1': |
|
597 iObexClientHandler->SetName(iObexClientHandler->iFilename1); |
|
598 break; |
|
599 case '2': |
|
600 iObexClientHandler->SetName(iObexClientHandler->iFilename2); |
|
601 break; |
|
602 case '3': |
|
603 iObexClientHandler->SetObexName(); |
|
604 break; |
|
605 case '4': |
|
606 iObexClientHandler->SetType(); |
|
607 break; |
|
608 case '5': |
|
609 iObexClientHandler->EnablePassword(); |
|
610 break; |
|
611 case '6': |
|
612 iObexClientHandler->ChangeChallengePassword(); |
|
613 break; |
|
614 case '7': |
|
615 iTestMode = E_Client_Authentication_Header_Menu; |
|
616 break; |
|
617 case '8': |
|
618 iObexClientHandler->SetCommandTimeout(); |
|
619 break; |
|
620 case 'p': |
|
621 SetInboxRoot(); |
|
622 break; |
|
623 default: |
|
624 iTestMode = E_Client; |
|
625 break; |
|
626 } |
|
627 } |
|
628 else if(iTestMode == E_Client) |
|
629 { |
|
630 switch (aChar) |
|
631 { |
|
632 case 'a': case 'A': |
|
633 iObexClientHandler->Abort(); |
|
634 break; |
|
635 case '1': |
|
636 iTestMode = E_Client_Connect_Menu; |
|
637 break; |
|
638 case '2': |
|
639 iObexClientHandler->Disconnect(); |
|
640 break; |
|
641 case '3': |
|
642 iObexClientHandler->Put(iObexClientHandler->iFilename1); |
|
643 break; |
|
644 case '4': |
|
645 iObexClientHandler->Put(iObexClientHandler->iFilename2); |
|
646 break; |
|
647 case 'y':case 'Y': |
|
648 iTestMode = E_Client_HTTP_Menu; |
|
649 break; |
|
650 case 'z':case 'Z': |
|
651 iObexClientHandler->Put(iObexClientHandler->iFilename3); |
|
652 break; |
|
653 case '5': |
|
654 iObexClientHandler->GetByNameL(); |
|
655 break; |
|
656 case '6': |
|
657 iObexClientHandler->GetByTypeL(); |
|
658 break; |
|
659 case '7': |
|
660 iObexClientHandler->SetPath(); |
|
661 break; |
|
662 case '8': |
|
663 iObexClientHandler->SetCurrentTestNumber(); |
|
664 iObexClientHandler->PutReferenceL(10); |
|
665 break; |
|
666 case '9': |
|
667 iObexClientHandler->SetCurrentTestNumber(); |
|
668 iObexClientHandler->GetReferenceL(8); |
|
669 break; |
|
670 case '0': |
|
671 iTestMode = E_Client_Setup_Menu; |
|
672 break; |
|
673 case 'h': case 'H': |
|
674 iDisplayHeaders = !iDisplayHeaders; |
|
675 break; |
|
676 #ifdef ERROR_RESOLUTION_EXTENSION |
|
677 case 'l': case 'L': |
|
678 iObexClientHandler->LastError(); |
|
679 break; |
|
680 #endif // ERROR_RESOLUTION_EXTENSION |
|
681 |
|
682 #ifdef EMPTY_HEADERS_TEST |
|
683 case 't': |
|
684 iTestMode = E_Empty_Headers_Accept_Test; |
|
685 break; |
|
686 #endif //EMPTY_HEADERS_TEST |
|
687 |
|
688 case 's': case 'S': |
|
689 delete iObexClientHandler; |
|
690 iObexClientHandler = NULL; |
|
691 iTestMode = E_Inactive; |
|
692 break; |
|
693 default: |
|
694 iConsole->Printf(_L("\r\nUnknown Command\r\n\r\n")); |
|
695 break; |
|
696 } |
|
697 } |
|
698 else if(iTestMode == E_Client_Authentication_Header_Menu) |
|
699 { |
|
700 switch (aChar) |
|
701 { |
|
702 case '1': |
|
703 case '2': |
|
704 case '3': |
|
705 case '4': |
|
706 case '5': |
|
707 iObexClientHandler->ChangeAuthenticationChallengeHeaders(aChar); |
|
708 break; |
|
709 case 's': case 'S': |
|
710 iTestMode = E_Client_Setup_Menu; |
|
711 break; |
|
712 default: |
|
713 iConsole->Printf(_L("\r\nUnknown Command\r\n\r\n")); |
|
714 break; |
|
715 } |
|
716 } |
|
717 else if(iTestMode == E_GetIrDANickname) |
|
718 { |
|
719 if(aChar.IsControl() || |
|
720 iIrDANicknameBuffer.Length() == iIrDANicknameBuffer.MaxSize()) |
|
721 { |
|
722 // Return to main menu. |
|
723 iTestMode = E_Inactive; |
|
724 iConsole->Printf(_L("\nNickname set to: %S\n\n"), &iIrDANicknameBuffer); |
|
725 } |
|
726 else |
|
727 { |
|
728 iConsole->Printf(_L("%c"), aChar.operator TUint()); |
|
729 iIrDANicknameBuffer.Append(aChar); |
|
730 } |
|
731 } |
|
732 else if(iTestMode == E_EnterRecvMTU) |
|
733 { |
|
734 if(aChar.IsDigit()) |
|
735 { |
|
736 iRecvMTU *= 10; |
|
737 iRecvMTU += aChar.GetNumericValue(); |
|
738 iConsole->Printf(_L("%c"), aChar.operator TUint()); |
|
739 if(iRecvMTU >= KObexPacketMaxSize) |
|
740 { |
|
741 // Return to main menu. |
|
742 iTestMode = E_Inactive; |
|
743 } |
|
744 } |
|
745 else |
|
746 { |
|
747 if(aChar == 'm') |
|
748 { |
|
749 // Set max MTU |
|
750 iRecvMTU = KObexPacketMaxSize; |
|
751 // Return to main menu. |
|
752 iTestMode = E_Inactive; |
|
753 } |
|
754 else if(aChar == 'd') |
|
755 { |
|
756 // Set defualt MTU |
|
757 iRecvMTU = 4000; |
|
758 // Return to main menu. |
|
759 iTestMode = E_Inactive; |
|
760 } |
|
761 else if(aChar.IsControl()) |
|
762 { |
|
763 // Return to main menu. |
|
764 iTestMode = E_Inactive; |
|
765 } |
|
766 |
|
767 iConsole->Printf(_L("\nReceive MTU set to: %d\n\n"), iRecvMTU); |
|
768 } |
|
769 } |
|
770 else if(iTestMode == E_EnterTransmitMTU) |
|
771 { |
|
772 if(aChar.IsDigit()) |
|
773 { |
|
774 iTransmitMTU *= 10; |
|
775 iTransmitMTU += aChar.GetNumericValue(); |
|
776 iConsole->Printf(_L("%c"), aChar.operator TUint()); |
|
777 if(iTransmitMTU >= KObexPacketMaxSize) |
|
778 { |
|
779 // Return to main menu. |
|
780 iTestMode = E_Inactive; |
|
781 } |
|
782 } |
|
783 else |
|
784 { |
|
785 if(aChar == 'm') |
|
786 { |
|
787 // Set max MTU |
|
788 iTransmitMTU = KObexPacketMaxSize; |
|
789 // Return to main menu. |
|
790 iTestMode = E_Inactive; |
|
791 } |
|
792 else if(aChar == 'd') |
|
793 { |
|
794 // Set defualt MTU |
|
795 iTransmitMTU = 4000; |
|
796 // Return to main menu. |
|
797 iTestMode = E_Inactive; |
|
798 } |
|
799 else if(aChar.IsControl()) |
|
800 { |
|
801 // Return to main menu. |
|
802 iTestMode = E_Inactive; |
|
803 } |
|
804 |
|
805 iConsole->Printf(_L("\nTransmit MTU set to: %d\n\n"), iTransmitMTU); |
|
806 } |
|
807 } |
|
808 #ifdef EMPTY_HEADERS_TEST |
|
809 else if ( iTestMode == E_Empty_Headers_Accept_Test ) |
|
810 { |
|
811 switch (aChar) |
|
812 { |
|
813 case '1' : |
|
814 iObexClientHandler->EmptyHeaderTestL(_L("Name header"), _L8("Type header"), _L("Description header"), _L8("Target header"), _L8("Application param header")); |
|
815 break; |
|
816 |
|
817 case '2': |
|
818 iObexClientHandler->EmptyHeaderTestL(_L(""), _L8(""), _L(""), _L8(""), _L8("")); |
|
819 break; |
|
820 |
|
821 case 's': |
|
822 iTestMode = E_Client; |
|
823 break; |
|
824 |
|
825 default : |
|
826 iConsole->Printf(_L("\r\nUnknown Command\r\n\r\n")); |
|
827 } |
|
828 |
|
829 } |
|
830 #endif //EMPTY_HEADERS_TEST |
|
831 |
|
832 else |
|
833 { |
|
834 CActiveScheduler::Stop(); |
|
835 return; |
|
836 } |
|
837 RequestCharacter (); |
|
838 return; |
|
839 } |
|
840 |
|
841 CConsoleBase* CActiveConsole::Console() |
|
842 { |
|
843 return iConsole; |
|
844 } |
|
845 |
|
846 void CActiveConsole::SetPassword(TDes& aPassword) |
|
847 { |
|
848 iConsole->Printf(_L("\nEnter a password: %S"),&aPassword); |
|
849 |
|
850 GetString(aPassword); |
|
851 |
|
852 iConsole->Printf(_L("\n")); |
|
853 iConsole->Printf( _L("\n Password size = %d\n"),aPassword.Length()); |
|
854 } |
|
855 |
|
856 |
|
857 void CActiveConsole::SetInboxRoot() |
|
858 { |
|
859 iConsole->Printf(_L("\nEnter a path: %S"), &iInboxRoot); |
|
860 |
|
861 GetString(iInboxRoot); |
|
862 |
|
863 iConsole->Printf(_L("\n")); |
|
864 } |
|
865 |
|
866 |
|
867 TBool CActiveConsole::DisplayHeaders() |
|
868 { |
|
869 return iDisplayHeaders; |
|
870 } |
|
871 |
|
872 TBool CActiveConsole::SetNumber(TUint& aNumber) |
|
873 { |
|
874 TKeyCode code; |
|
875 TBuf<1> ch; |
|
876 TBuf<64> input; |
|
877 TUint oldNumber = aNumber; |
|
878 |
|
879 input.Num(aNumber); |
|
880 iConsole->Printf(_L("\nEnter a number: %S"), &input); |
|
881 |
|
882 FOREVER |
|
883 { |
|
884 code = iConsole->Getch(); |
|
885 ch.SetLength(0); |
|
886 ch.Append(code); |
|
887 |
|
888 iConsole->Printf(_L("%S"), &ch); |
|
889 |
|
890 // If <CR> finish editing string. |
|
891 if (code == EKeyEnter) |
|
892 { |
|
893 break; |
|
894 } |
|
895 |
|
896 // If <BS> remove last character. |
|
897 if ((code == EKeyBackspace) && (input.Length() != 0)) |
|
898 { |
|
899 input.SetLength((input.Length() - 1)); |
|
900 } |
|
901 else |
|
902 { |
|
903 input.Append(code); |
|
904 } |
|
905 } |
|
906 iConsole->Printf(_L("\n")); |
|
907 |
|
908 TLex lex(input); |
|
909 if (lex.Val(aNumber) != KErrNone) |
|
910 { |
|
911 iConsole->Printf(_L("\r\nError: You did not enter a number.\r\n")); |
|
912 aNumber = oldNumber; |
|
913 return EFalse; |
|
914 } |
|
915 |
|
916 return ETrue; |
|
917 } |
|
918 |
|
919 void CActiveConsole::GetString(TDes& aString) |
|
920 { |
|
921 TKeyCode code; |
|
922 TBuf<1> character; |
|
923 |
|
924 FOREVER |
|
925 { |
|
926 code = iConsole->Getch(); |
|
927 character.SetLength(0); |
|
928 character.Append(code); |
|
929 |
|
930 iConsole->Printf(_L("%S"),&character); |
|
931 |
|
932 // If <CR> finish editing string |
|
933 if (code == EKeyEnter) |
|
934 break; |
|
935 |
|
936 // if <BS> remove last character |
|
937 if ((code == EKeyBackspace) && (aString.Length() != 0)) |
|
938 { |
|
939 aString.SetLength((aString.Length()-1)); |
|
940 } |
|
941 else if (aString.Length() < aString.MaxLength()) |
|
942 { |
|
943 aString.Append(code); |
|
944 } |
|
945 } |
|
946 } |
|
947 |
|
948 void CActiveConsole::ClientErrored() |
|
949 { |
|
950 iTestMode = E_Inactive; |
|
951 Cancel(); |
|
952 RequestCharacter(); |
|
953 delete iObexClientHandler; |
|
954 iObexClientHandler = 0; |
|
955 } |
|
956 |
|
957 TBool CActiveConsole::UseIrdaNickname() const |
|
958 { |
|
959 return (iIrDANicknameBuffer.Length() != 0); |
|
960 } |
|
961 |
|
962 const TDesC& CActiveConsole::GetIrdaNickname() const |
|
963 { |
|
964 return iIrDANicknameBuffer; |
|
965 } |
|
966 |