--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/obex/obexprotocol/obex/test/tobex/TOBEXCON.CPP Tue Feb 02 01:11:40 2010 +0200
@@ -0,0 +1,966 @@
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include <es_sock.h>
+#include <ir_sock.h>
+#include <bautils.h>
+#include <usbman.h>
+#include <d32usbc.h>
+#include <e32keys.h>
+#include "TOBEXCON.H"
+#include "clienthandler.h"
+#include "serverhandlerbase.h"
+#include "serverhandler.h"
+#include "serverhandlerfile.h"
+#include "btextnotifiers.h"
+
+#ifdef EMPTY_HEADERS_TEST
+#include "emptyheaderstest.h"
+#endif //EMPTY_HEADERS_TEST
+
+#define EPOCIDENT _L8("EPOC32 ER5")
+
+
+CActiveConsole::CActiveConsole(CConsoleBase* aConsole)
+ : CActive(EPriorityNormal),
+ iConsole(aConsole),
+ iTestMode(E_Inactive),
+ iDiscoverySlots(KObexIrdaDefaultDiscoverySlotsToUse),
+ iDiscoveryAttempts(KObexIrdaDefaultDiscoveryAttempts),
+ iRecvMTU(KObexPacketDefaultSize),
+ iTransmitMTU(KObexPacketDefaultSize)
+ {
+#ifdef EMPTY_HEADERS_TEST
+ iDisplayHeaders = ETrue;
+#endif //EMPTY_HEADERS_TEST
+ }
+
+CActiveConsole* CActiveConsole::NewLC(CConsoleBase* aConsole)
+ {
+ CActiveConsole* self = new (ELeave) CActiveConsole(aConsole);
+ CleanupStack::PushL(self);
+ self->ConstructL();
+ return self;
+ }
+
+void CActiveConsole::ConstructL ()
+ {
+ iRefHandler = CReferenceHandler::NewL();
+ iConsole->Printf(_L("\r\n"));
+ CActiveScheduler::Add(this); // Add to active scheduler
+
+ // Create private path and set default Inbox path
+ RFs fs;
+ User::LeaveIfError(fs.Connect());
+ fs.CreatePrivatePath(EDriveC);
+ fs.SetSessionToPrivate(EDriveC);
+ fs.SessionPath(iInboxRoot);
+ fs.Close();
+ }
+
+CActiveConsole::~CActiveConsole()
+ {
+ // Make sure we're cancelled
+ Cancel();
+
+ // safe to delete NULL
+ delete iObexClientHandler;
+ delete iObexServerHandler;
+ delete iObexServerHandlerFile;
+ delete iRefHandler;
+ }
+
+void CActiveConsole::DoCancel()
+ {
+ iConsole->ReadCancel();
+ }
+
+void CActiveConsole::RunL()
+ {
+ // Save the current test mode in case the next action leaves
+ TUint oldTestMode = iTestMode;
+ TRAPD(err,ProcessKeyPressL(TChar(iConsole->KeyCode())));
+ if(err != KErrNone)
+ {
+ iConsole->Printf(_L("Failed. Error: %d\r\n"),err);
+ // Put the test mode back again
+ iTestMode = oldTestMode;
+ RequestCharacter();
+ }
+ }
+
+void CActiveConsole::RequestCharacter()
+ {
+ // A request is issued to the CConsoleBase to accept a
+ // character from the keyboard.
+ if (iTestMode == E_Client)
+ {
+ iConsole->Printf(_L("Commands :- \r\n"));
+ iConsole->Printf(_L(" A - IrObex Abort\r\n"));
+ iConsole->Printf(_L(" 1 - IrObex Connect Menu\r\n"));
+ iConsole->Printf(_L(" 2 - IrObex Disconnect\r\n"));
+ iConsole->Printf(_L(" 3 - IrObex Put obj 1 : %S\r\n"), &(iObexClientHandler->iFilename1));
+ iConsole->Printf(_L(" 4 - IrObex Put Obj 2 : %S\r\n"), &(iObexClientHandler->iFilename2));
+ iConsole->Printf(_L(" z - IrObex Put Obj 3 : %S\r\n"), &(iObexClientHandler->iFilename3));
+ iConsole->Printf(_L(" y - Enter HTTP/App param Test Menu\r\n")); //E_Client_HTTP_Menu
+ iConsole->Printf(_L(" 5 - IrObex Get by name\r\n"));
+ iConsole->Printf(_L(" 6 - IrObex Get by type\r\n"));
+ iConsole->Printf(_L(" 7 - IrObex SetPath\r\n"));
+ iConsole->Printf(_L(" 8 - IrObex Put reference object\r\n"));
+ iConsole->Printf(_L(" 9 - IrObex Get reference object\r\n"));
+ iConsole->Printf(_L(" 0 - IrObex Setup OBEX\r\n"));
+ iConsole->Printf(_L(" h - Toggle display of object headers\r\n"));
+#ifdef ERROR_RESOLUTION_EXTENSION
+ iConsole->Printf(_L(" l - Display last error\r\n"));
+#endif
+#ifdef EMPTY_HEADERS_TEST
+ iConsole->Printf(_L(" t - Empty headers test menu\r\n"));
+#endif //EMPTY_HEADERS_TEST
+ iConsole->Printf(_L(" s - kill the Obex Client\r\n"));
+ }
+ if ( iTestMode == E_Client_HTTP_Menu )
+ {
+ iConsole->Printf(_L(" 1 - HTTP Multiple Packets, will all arrive\r\n"));
+ iConsole->Printf(_L(" 2 - HTTP Multiple Packets, too many arrive in two parts\r\n"));
+ iConsole->Printf(_L(" 3 - HTTP Single Packet too large, nothing will arrive\r\n"));
+ iConsole->Printf(_L(" 4 - HTTP Single Packet too large with several smaller packets which will arrive\r\n"));
+ iConsole->Printf(_L(" 5 - App parameters test\r\n"));
+ iConsole->Printf(_L(" s - Back to Client Menu\r\n"));
+ }
+ if ( iTestMode == E_Client_Connect_Menu )
+ {
+ iConsole->Printf(_L(" 0 - IrObex Disconnect\r\n"));
+ iConsole->Printf(_L(" 1 - IrObex Connect\r\n"));
+ iConsole->Printf(_L(" 2 - IrObex Connect with Authentication\r\n"));
+ iConsole->Printf(_L(" 3 - IrObex Connect with Target Header\r\n"));
+ iConsole->Printf(_L(" 4 - IrObex Connect with Authentication AND Target Header\r\n"));
+ iConsole->Printf(_L(" 5 - Get remote address\r\n"));
+ iConsole->Printf(_L(" s - Back to Client Menu\r\n"));
+ }
+ if ( iTestMode == E_Client_Setup_Menu )
+ {
+ iConsole->Printf(_L(" 1 - Change Put Object 1\r\n"));
+ iConsole->Printf(_L(" 2 - Change Put Object 2\r\n"));
+ iConsole->Printf(_L(" 3 - Change Obex Get Name : %S\r\n"), &(iObexClientHandler->iObexName));
+ iConsole->Printf(_L(" 4 - Change Obex Get Type : %S\r\n"), &(iObexClientHandler->iGetType));
+ iConsole->Printf(_L(" 5 - Enable password support (so they can challenge us)\r\n"));
+ iConsole->Printf(_L(" 6 - Set challenge password : %S\r\n"), &(iObexClientHandler->iChallengePassword));
+ iConsole->Printf(_L(" 7 - Change Authentication Challenge Header\r\n"));
+ iConsole->Printf(_L(" 8 - Set Command Time-out\r\n"));
+ iConsole->Printf(_L(" s - Back to Client Menu\r\n"));
+ iConsole->Printf(_L(" p - Set default file path : %S\r\n"), &iInboxRoot);
+ }
+ if ( iTestMode == E_Client_Authentication_Header_Menu )
+ {
+ iConsole->Printf(_L(" 1 - Suppress Options Header\r\n"));
+ iConsole->Printf(_L(" 2 - Suppress Realm Header\r\n"));
+ iConsole->Printf(_L(" 3 - Suppress Options and Realm Headers\r\n"));
+ iConsole->Printf(_L(" 4 - Reset to Default Authentication Headers\r\n"));
+ iConsole->Printf(_L(" 5 - Attempt Invalid Authentication Headers Value (i)\r\n"));
+ iConsole->Printf(_L(" s - Back to Client Menu\r\n"));
+ }
+ if (iTestMode == E_Server)
+ {
+ iConsole->Printf(_L(" 1 - Make OBEX Challenge on all incoming connections\r\n"));
+ iConsole->Printf(_L(" 2 - Disable authentication\r\n"));
+ iConsole->Printf(_L(" 3 - Enable password support (so they can challenge us)\r\n"));
+ iConsole->Printf(_L(" 4 - Set FTP local who (insist on target header\r\n"));
+ iConsole->Printf(_L(" 5 - Change challenge password : %S\r\n"), &(iObexServerHandler->iChallengePassword));
+ iConsole->Printf(_L(" 6 - Get remote address\r\n"));
+ iConsole->Printf(_L(" 7 - Set Target Checking to NoChecking\r\n"));
+ iConsole->Printf(_L(" 8 - Set Target Checking to IfPresent\r\n"));
+ iConsole->Printf(_L(" 9 - Set Target Checking to Always\r\n"));
+ iConsole->Printf(_L(" h - Toggle display of object headers\r\n"));
+ iConsole->Printf(_L(" p - Set Inbox root directory : %S\r\n"), &iInboxRoot);
+#ifdef PACKET_ACCESS_EXTENSION
+ iConsole->Printf(_L(" a - Enable displaying of request packets\r\n"));
+#endif // PACKET_ACCESS_EXTENSION
+ if(iTransport == EIrda)
+ {
+ iConsole->Printf(_L(" o - start suppressing IrDA discovery requests\r\n"));
+ iConsole->Printf(_L(" c - stop suppressing IrDA discovery requests\r\n"));
+ }
+
+ iConsole->Printf(_L("press 's' to stop the Obex Server\r\n"));
+ iConsole->Printf(_L("press 'S' to start the Obex Server\r\n"));
+ }
+ if (iTestMode == E_Server_File)
+ {
+ iConsole->Printf(_L(" Started Obex server, receiving into file-backed buffer object\r\n"));
+ iConsole->Printf(_L(" 1 - Make OBEX Challenge on all incoming connections\r\n"));
+ iConsole->Printf(_L(" 2 - Disable authentication\r\n"));
+ iConsole->Printf(_L(" 3 - Enable password support (so they can challenge us)\r\n"));
+ iConsole->Printf(_L(" 4 - Set FTP local who (insist on target header\r\n"));
+ iConsole->Printf(_L(" 5 - Change challenge password : %S\r\n"), &(iObexServerHandlerFile->iChallengePassword));
+ iConsole->Printf(_L(" 6 - Get remote address\r\n"));
+ iConsole->Printf(_L(" 7 - Toggle buffered file writes\r\n"));
+ iConsole->Printf(_L(" p - Set Inbox root directory : %S\r\n"), &iInboxRoot);
+ iConsole->Printf(_L("s - Stop the Obex Server\r\n"));
+ iConsole->Printf(_L("g - Start the Obex Server\r\n"));
+ iConsole->Printf(_L("press 'k' to kill the Obex Server\r\n"));
+ }
+
+ if(iTestMode == E_Inactive)
+ {
+ iConsole->Printf(_L("press '1' to start the Obex Client over Bluetooth\r\n"));
+ iConsole->Printf(_L("press '2' to start the Obex Server over Bluetooth\r\n"));
+ iConsole->Printf(_L("press '3' to start the Obex Client over Irda\r\n"));
+ iConsole->Printf(_L("press 'a' to set the number of discovery slots to use in Irda\r\n"));
+ iConsole->Printf(_L("press 'b' to set the number of discovery attempts to make in Irda\r\n"));
+ iConsole->Printf(_L("press '4' to start the Obex Server over Irda\r\n"));
+ iConsole->Printf(_L("press '5' to start the Obex Server over Irda (filename backed buffer object)\r\n"));
+ iConsole->Printf(_L("press 'r' to start the Obex Server over Irda (RFile backed buffer object)\r\n"));
+ iConsole->Printf(_L("press '6' to start the Obex Server over USB\r\n"));
+ iConsole->Printf(_L("press '7' to start the Obex Client over USB\r\n"));
+ iConsole->Printf(_L("press 'n' to set the IrDA Nickname\r\n"));
+ iConsole->Printf(_L("press 'm' to set the Obex Recv MTU\r\n"));
+ iConsole->Printf(_L("press 'M' to set the Obex Transmit MTU\r\n"));
+ iConsole->Printf(_L("press 'p' to toggle performance logging\r\n"));
+ }
+#ifdef EMPTY_HEADERS_TEST
+ if ( iTestMode == E_Empty_Headers_Accept_Test )
+ {
+ iConsole->Printf(_L(" 1 - Sent a packet with NOT empty following headers:\n\t[ Name, Type, Description, Target, Application Parameters ]\r\n\n"));
+ iConsole->Printf(_L(" 2 - Sent a packet with existing but empty following headers:\n\t[ Name, Type, Description, Target, Application Parameters ]\r\n\n"));
+ iConsole->Printf(_L(" s - Back to Client Menu\r\n"));
+ }
+#endif //EMPTY_HEADERS_TEST
+ if(iTestMode == E_GetIrDANickname && iIrDANicknameBuffer.Length() == 0)
+ {
+ iConsole->Printf(_L("Enter new IrDA nickname: "));
+ }
+ if(iTestMode == E_EnterRecvMTU && iRecvMTU == 0)
+ {
+ iConsole->Printf(_L("Enter new Receive MTU value (m=max, d=default): "));
+ }
+ if(iTestMode == E_EnterTransmitMTU && iTransmitMTU == 0)
+ {
+ iConsole->Printf(_L("Enter new Transmit MTU value (m=max, d=default): "));
+ }
+ //if(E_SdpQuery) // no extra options
+
+ if(iTestMode != E_GetIrDANickname &&
+ iTestMode != E_EnterRecvMTU &&
+ iTestMode != E_EnterTransmitMTU)
+ {
+ iConsole->Printf(_L("press Escape to quit\r\n\r\n"));
+ }
+ iConsole->Read(iStatus);
+ SetActive();
+ }
+
+void CActiveConsole::ProcessKeyPressL(TChar aChar)
+ {
+ if (aChar == EKeyEscape)
+ {
+ CActiveScheduler::Stop();
+ return;
+ }
+
+ if(iTestMode ==E_Inactive)
+ {
+ switch (aChar)
+ {
+ case '1':
+ iTestMode = E_SdpQuery;
+ iTransport = EBluetooth;
+ iObexClientHandler = CObexClientHandler::NewL(this, EBluetooth);
+ break;
+ case'3':
+ iTestMode = E_Client;
+ iTransport = EIrda;
+ iObexClientHandler = CObexClientHandler::NewL(this, EIrda);
+ break;
+ case 'a':
+ SetNumber(iDiscoverySlots);
+ break;
+ case 'b':
+ SetNumber(iDiscoveryAttempts);
+ break;
+ case 'n':
+ iTestMode = E_GetIrDANickname;
+ iIrDANicknameBuffer.Zero();
+ break;
+ case 'p':
+ // Toggle the internal state.
+ iPerformanceLoggingEnabled = !iPerformanceLoggingEnabled;
+ if(iPerformanceLoggingEnabled)
+ {
+ iConsole->Printf(_L("\r\nPerformance logging enabled.\r\n\r\n"));
+ }
+ else
+ {
+ iConsole->Printf(_L("\r\nPerformance logging disabled.\r\n\r\n"));
+ }
+ break;
+ case '2':
+ iTestMode = E_Server;
+ iTransport = EBluetooth;
+ iObexServerHandler = CObexServerHandler::NewL(this, EBluetooth);
+ break;
+ case '4':
+ iTestMode = E_Server;
+ iTransport = EIrda;
+ iObexServerHandler = CObexServerHandler::NewL(this, EIrda);
+ break;
+ case '5':
+ iTestMode = E_Server_File; // Added test for file-backed buffer object receive
+ iTransport = EIrda;
+ iObexServerHandlerFile = CObexServerHandlerFile::NewL(this,EIrda);
+ break;
+ case 'r':
+ iTestMode = E_Server_File; // Added test for file-backed buffer object receive
+ iTransport = EIrda;
+ iObexServerHandlerFile = CObexServerHandlerFile::NewL(this,EIrda,ETrue);
+ break;
+ case '6':
+ {
+ iTestMode = E_Server;
+
+#ifndef __WINS__
+ iTransport = EUsb;
+
+ // For USB, we unfortunately need to start it, then register our
+ // interfaces, then do a soft connect.
+ TInt err = User::LoadLogicalDevice(_L("EUSBC"));
+ if (err != KErrNone && err != KErrAlreadyExists)
+ {
+ User::Leave(err);
+ }
+
+ RUsb usb;
+ User::LeaveIfError(usb.Connect());
+ TRequestStatus status;
+ usb.TryStart(2, status);
+ User::WaitForRequest(status);
+ iConsole->Printf(_L("Starting USB returned %d\n"), status.Int());
+ User::LeaveIfError(status.Int());
+ usb.Close();
+
+ RDevUsbcClient usbDriver;
+ User::LeaveIfError(usbDriver.Open(0));
+ User::LeaveIfError(usbDriver.DeviceDisconnectFromHost());
+
+ iObexServerHandler = CObexServerHandler::NewL(this, EUsb);
+
+ User::LeaveIfError(usbDriver.DeviceConnectToHost());
+ usbDriver.Close();
+
+#else
+
+ iTransport = EWin32Usb;
+ iObexServerHandler = CObexServerHandler::NewL(this, EWin32Usb);
+#endif
+
+ }
+ break;
+ case '7':
+ {
+ iTestMode = E_Client;
+
+#ifdef __WINS__
+ iTransport = EWin32Usb;
+ iObexClientHandler = CObexClientHandler::NewL(this, EWin32Usb);
+
+#else
+
+ iTransport = EUsb;
+
+ // For USB, we unfortunately need to start it, then register our
+ // interfaces, then do a soft connect.
+ TInt loaded = User::LoadLogicalDevice(_L("EUSBC"));
+ iConsole->Printf(_L("Loading ldd returned %d\n"), loaded);
+
+ RUsb usb;
+ User::LeaveIfError(usb.Connect());
+ iConsole->Printf(_L("Connected to USB\n"));
+ TRequestStatus status;
+ usb.TryStart(2,status);
+ User::WaitForRequest(status);
+ iConsole->Printf(_L("Starting USB returned %d\n"), status.Int());
+ User::LeaveIfError(status.Int());
+ usb.Close();
+
+ RDevUsbcClient usbDriver;
+ User::LeaveIfError(usbDriver.Open(0));
+ User::LeaveIfError(usbDriver.DeviceDisconnectFromHost());
+
+ iObexClientHandler = CObexClientHandler::NewL(this, EUsb);
+
+ User::LeaveIfError(usbDriver.DeviceConnectToHost());
+ usbDriver.Close();
+#endif
+
+ }
+ break;
+ case 'm':
+ // Reset MTU value.
+ iRecvMTU = 0;
+ iTestMode = E_EnterRecvMTU;
+ break;
+
+ case 'M':
+ // Reset MTU value.
+ iTransmitMTU = 0;
+ iTestMode = E_EnterTransmitMTU;
+ break;
+
+ default:
+ break;
+ }
+ }
+
+ else if(iTestMode == E_Server)
+ {
+ switch (aChar)
+ {
+ case 's':
+ iObexServerHandler->Stop();
+ break;
+ case 'S':
+ iObexServerHandler->Start();
+ break;
+ case 'g': case 'G':
+ iObexServerHandler->Start();
+ break;
+ case 'h': case 'H':
+ iDisplayHeaders = !iDisplayHeaders;
+ break;
+ case 'k': case 'K':
+ delete iObexServerHandler;
+ iObexServerHandler = NULL;
+ iTestMode = E_Inactive;
+ break;
+ case 'o':
+ if(iTransport == EIrda)
+ {
+ iSupp.Open();
+ }
+ break;
+ case 'c':
+ if(iTransport == EIrda)
+ {
+ iSupp.Close();
+ }
+ break;
+ case '1':
+ iObexServerHandler->EnableAuthentication();
+ break;
+ case '2':
+ iObexServerHandler->DisableAuthentication();
+ break;
+ case '3':
+ iObexServerHandler->EnablePassword();
+ break;
+ case '4':
+ iObexServerHandler->SetLocalWho();
+ break;
+ case '5':
+ iObexServerHandler->ChangeChallengePassword();
+ break;
+ case '6':
+ iObexServerHandler->RemoteAddress();
+ break;
+ case '7':
+ iObexServerHandler->SetTargetChecking(CObexServer::ENoChecking);
+ break;
+ case '8':
+ iObexServerHandler->SetTargetChecking(CObexServer::EIfPresent);
+ break;
+ case '9':
+ iObexServerHandler->SetTargetChecking(CObexServer::EAlways);
+ break;
+ case 'p':
+ SetInboxRoot();
+ break;
+#ifdef PACKET_ACCESS_EXTENSION
+ case 'a':
+ iObexServerHandler->PacketAccessUiL(ETrue);
+ break;
+#endif // PACKET_ACCESS_EXTENSION
+ default:
+ iConsole->Printf(_L("\r\nUnknown Command\r\n\r\n"));
+ break;
+ }
+ }
+
+ else if(iTestMode == E_Server_File)
+ {
+ switch (aChar)
+ {
+ case 's': case 'S':
+ iObexServerHandlerFile->Stop();
+ delete iObexServerHandlerFile;
+ iObexServerHandlerFile = NULL;
+ iTestMode = E_Inactive;
+ break;
+ case '1':
+ iObexServerHandlerFile->EnableAuthentication();
+ break;
+ case '2':
+ iObexServerHandlerFile->DisableAuthentication();
+ break;
+ case '3':
+ iObexServerHandlerFile->EnablePassword();
+ break;
+ case '4':
+ iObexServerHandlerFile->SetLocalWho();
+ break;
+ case '5':
+ iObexServerHandlerFile->ChangeChallengePassword();
+ break;
+ case '6':
+ iObexServerHandlerFile->RemoteAddress();
+ break;
+ case '7':
+ iObexServerHandlerFile->ToggleWriteBuffering();
+ break;
+ case 'p':
+ SetInboxRoot();
+ break;
+
+ default:
+ iConsole->Printf(_L("\r\nUnknown Command\r\n\r\n"));
+ break;
+ }
+ }
+
+ else if (iTestMode == E_Client_Connect_Menu )
+ {
+ switch (aChar)
+ {
+ case '0':
+ iObexClientHandler->Disconnect();
+ break;
+ case '1':
+ iObexClientHandler->Connect();
+ break;
+ case '2':
+ iObexClientHandler->ConnectWithAuthenticationL();
+ break;
+ case '3':
+ iObexClientHandler->ConnectWithTarget();
+ break;
+ case '4':
+ iObexClientHandler->ConnectWithAuthenticationAndTargetL();
+ break;
+ case '5':
+ iObexClientHandler->RemoteAddress();
+ break;
+ default:
+ iTestMode = E_Client;
+ break;
+ }
+ }
+ else if ( iTestMode == E_Client_HTTP_Menu )
+ {
+ switch (aChar) //tam
+ {
+ case '1': //HTTP Multiple Packets;
+ iObexClientHandler->HTTPTest1L();
+ break;
+ case '2': //HTTP Multiple Packets, too many, will arrive in two parts
+ iObexClientHandler->HTTPTest2L();
+ break;
+ case '3': //HTTP Single Packet too large, nothing will arrive
+ iObexClientHandler->HTTPTest3L();
+ break;
+ case '4': //HTTP Single Packet too large
+ //with several smaller packets which will arrive
+ iObexClientHandler->HTTPTest4L();
+ break;
+ case '5': //App parameters test
+ iObexClientHandler->AppParamsTestL();
+ default:
+ iTestMode = E_Client;
+ break;
+ }
+
+ }
+ else if (iTestMode == E_Client_Setup_Menu )
+ {
+ switch (aChar)
+ {
+ case '1':
+ iObexClientHandler->SetName(iObexClientHandler->iFilename1);
+ break;
+ case '2':
+ iObexClientHandler->SetName(iObexClientHandler->iFilename2);
+ break;
+ case '3':
+ iObexClientHandler->SetObexName();
+ break;
+ case '4':
+ iObexClientHandler->SetType();
+ break;
+ case '5':
+ iObexClientHandler->EnablePassword();
+ break;
+ case '6':
+ iObexClientHandler->ChangeChallengePassword();
+ break;
+ case '7':
+ iTestMode = E_Client_Authentication_Header_Menu;
+ break;
+ case '8':
+ iObexClientHandler->SetCommandTimeout();
+ break;
+ case 'p':
+ SetInboxRoot();
+ break;
+ default:
+ iTestMode = E_Client;
+ break;
+ }
+ }
+ else if(iTestMode == E_Client)
+ {
+ switch (aChar)
+ {
+ case 'a': case 'A':
+ iObexClientHandler->Abort();
+ break;
+ case '1':
+ iTestMode = E_Client_Connect_Menu;
+ break;
+ case '2':
+ iObexClientHandler->Disconnect();
+ break;
+ case '3':
+ iObexClientHandler->Put(iObexClientHandler->iFilename1);
+ break;
+ case '4':
+ iObexClientHandler->Put(iObexClientHandler->iFilename2);
+ break;
+ case 'y':case 'Y':
+ iTestMode = E_Client_HTTP_Menu;
+ break;
+ case 'z':case 'Z':
+ iObexClientHandler->Put(iObexClientHandler->iFilename3);
+ break;
+ case '5':
+ iObexClientHandler->GetByNameL();
+ break;
+ case '6':
+ iObexClientHandler->GetByTypeL();
+ break;
+ case '7':
+ iObexClientHandler->SetPath();
+ break;
+ case '8':
+ iObexClientHandler->SetCurrentTestNumber();
+ iObexClientHandler->PutReferenceL(10);
+ break;
+ case '9':
+ iObexClientHandler->SetCurrentTestNumber();
+ iObexClientHandler->GetReferenceL(8);
+ break;
+ case '0':
+ iTestMode = E_Client_Setup_Menu;
+ break;
+ case 'h': case 'H':
+ iDisplayHeaders = !iDisplayHeaders;
+ break;
+#ifdef ERROR_RESOLUTION_EXTENSION
+ case 'l': case 'L':
+ iObexClientHandler->LastError();
+ break;
+#endif // ERROR_RESOLUTION_EXTENSION
+
+#ifdef EMPTY_HEADERS_TEST
+ case 't':
+ iTestMode = E_Empty_Headers_Accept_Test;
+ break;
+#endif //EMPTY_HEADERS_TEST
+
+ case 's': case 'S':
+ delete iObexClientHandler;
+ iObexClientHandler = NULL;
+ iTestMode = E_Inactive;
+ break;
+ default:
+ iConsole->Printf(_L("\r\nUnknown Command\r\n\r\n"));
+ break;
+ }
+ }
+ else if(iTestMode == E_Client_Authentication_Header_Menu)
+ {
+ switch (aChar)
+ {
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ iObexClientHandler->ChangeAuthenticationChallengeHeaders(aChar);
+ break;
+ case 's': case 'S':
+ iTestMode = E_Client_Setup_Menu;
+ break;
+ default:
+ iConsole->Printf(_L("\r\nUnknown Command\r\n\r\n"));
+ break;
+ }
+ }
+ else if(iTestMode == E_GetIrDANickname)
+ {
+ if(aChar.IsControl() ||
+ iIrDANicknameBuffer.Length() == iIrDANicknameBuffer.MaxSize())
+ {
+ // Return to main menu.
+ iTestMode = E_Inactive;
+ iConsole->Printf(_L("\nNickname set to: %S\n\n"), &iIrDANicknameBuffer);
+ }
+ else
+ {
+ iConsole->Printf(_L("%c"), aChar.operator TUint());
+ iIrDANicknameBuffer.Append(aChar);
+ }
+ }
+ else if(iTestMode == E_EnterRecvMTU)
+ {
+ if(aChar.IsDigit())
+ {
+ iRecvMTU *= 10;
+ iRecvMTU += aChar.GetNumericValue();
+ iConsole->Printf(_L("%c"), aChar.operator TUint());
+ if(iRecvMTU >= KObexPacketMaxSize)
+ {
+ // Return to main menu.
+ iTestMode = E_Inactive;
+ }
+ }
+ else
+ {
+ if(aChar == 'm')
+ {
+ // Set max MTU
+ iRecvMTU = KObexPacketMaxSize;
+ // Return to main menu.
+ iTestMode = E_Inactive;
+ }
+ else if(aChar == 'd')
+ {
+ // Set defualt MTU
+ iRecvMTU = 4000;
+ // Return to main menu.
+ iTestMode = E_Inactive;
+ }
+ else if(aChar.IsControl())
+ {
+ // Return to main menu.
+ iTestMode = E_Inactive;
+ }
+
+ iConsole->Printf(_L("\nReceive MTU set to: %d\n\n"), iRecvMTU);
+ }
+ }
+ else if(iTestMode == E_EnterTransmitMTU)
+ {
+ if(aChar.IsDigit())
+ {
+ iTransmitMTU *= 10;
+ iTransmitMTU += aChar.GetNumericValue();
+ iConsole->Printf(_L("%c"), aChar.operator TUint());
+ if(iTransmitMTU >= KObexPacketMaxSize)
+ {
+ // Return to main menu.
+ iTestMode = E_Inactive;
+ }
+ }
+ else
+ {
+ if(aChar == 'm')
+ {
+ // Set max MTU
+ iTransmitMTU = KObexPacketMaxSize;
+ // Return to main menu.
+ iTestMode = E_Inactive;
+ }
+ else if(aChar == 'd')
+ {
+ // Set defualt MTU
+ iTransmitMTU = 4000;
+ // Return to main menu.
+ iTestMode = E_Inactive;
+ }
+ else if(aChar.IsControl())
+ {
+ // Return to main menu.
+ iTestMode = E_Inactive;
+ }
+
+ iConsole->Printf(_L("\nTransmit MTU set to: %d\n\n"), iTransmitMTU);
+ }
+ }
+#ifdef EMPTY_HEADERS_TEST
+ else if ( iTestMode == E_Empty_Headers_Accept_Test )
+ {
+ switch (aChar)
+ {
+ case '1' :
+ iObexClientHandler->EmptyHeaderTestL(_L("Name header"), _L8("Type header"), _L("Description header"), _L8("Target header"), _L8("Application param header"));
+ break;
+
+ case '2':
+ iObexClientHandler->EmptyHeaderTestL(_L(""), _L8(""), _L(""), _L8(""), _L8(""));
+ break;
+
+ case 's':
+ iTestMode = E_Client;
+ break;
+
+ default :
+ iConsole->Printf(_L("\r\nUnknown Command\r\n\r\n"));
+ }
+
+ }
+#endif //EMPTY_HEADERS_TEST
+
+ else
+ {
+ CActiveScheduler::Stop();
+ return;
+ }
+ RequestCharacter ();
+ return;
+ }
+
+CConsoleBase* CActiveConsole::Console()
+ {
+ return iConsole;
+ }
+
+void CActiveConsole::SetPassword(TDes& aPassword)
+ {
+ iConsole->Printf(_L("\nEnter a password: %S"),&aPassword);
+
+ GetString(aPassword);
+
+ iConsole->Printf(_L("\n"));
+ iConsole->Printf( _L("\n Password size = %d\n"),aPassword.Length());
+ }
+
+
+void CActiveConsole::SetInboxRoot()
+ {
+ iConsole->Printf(_L("\nEnter a path: %S"), &iInboxRoot);
+
+ GetString(iInboxRoot);
+
+ iConsole->Printf(_L("\n"));
+ }
+
+
+TBool CActiveConsole::DisplayHeaders()
+ {
+ return iDisplayHeaders;
+ }
+
+TBool CActiveConsole::SetNumber(TUint& aNumber)
+ {
+ TKeyCode code;
+ TBuf<1> ch;
+ TBuf<64> input;
+ TUint oldNumber = aNumber;
+
+ input.Num(aNumber);
+ iConsole->Printf(_L("\nEnter a number: %S"), &input);
+
+ FOREVER
+ {
+ code = iConsole->Getch();
+ ch.SetLength(0);
+ ch.Append(code);
+
+ iConsole->Printf(_L("%S"), &ch);
+
+ // If <CR> finish editing string.
+ if (code == EKeyEnter)
+ {
+ break;
+ }
+
+ // If <BS> remove last character.
+ if ((code == EKeyBackspace) && (input.Length() != 0))
+ {
+ input.SetLength((input.Length() - 1));
+ }
+ else
+ {
+ input.Append(code);
+ }
+ }
+ iConsole->Printf(_L("\n"));
+
+ TLex lex(input);
+ if (lex.Val(aNumber) != KErrNone)
+ {
+ iConsole->Printf(_L("\r\nError: You did not enter a number.\r\n"));
+ aNumber = oldNumber;
+ return EFalse;
+ }
+
+ return ETrue;
+ }
+
+void CActiveConsole::GetString(TDes& aString)
+ {
+ TKeyCode code;
+ TBuf<1> character;
+
+ FOREVER
+ {
+ code = iConsole->Getch();
+ character.SetLength(0);
+ character.Append(code);
+
+ iConsole->Printf(_L("%S"),&character);
+
+ // If <CR> finish editing string
+ if (code == EKeyEnter)
+ break;
+
+ // if <BS> remove last character
+ if ((code == EKeyBackspace) && (aString.Length() != 0))
+ {
+ aString.SetLength((aString.Length()-1));
+ }
+ else if (aString.Length() < aString.MaxLength())
+ {
+ aString.Append(code);
+ }
+ }
+ }
+
+void CActiveConsole::ClientErrored()
+ {
+ iTestMode = E_Inactive;
+ Cancel();
+ RequestCharacter();
+ delete iObexClientHandler;
+ iObexClientHandler = 0;
+ }
+
+TBool CActiveConsole::UseIrdaNickname() const
+ {
+ return (iIrDANicknameBuffer.Length() != 0);
+ }
+
+const TDesC& CActiveConsole::GetIrdaNickname() const
+ {
+ return iIrDANicknameBuffer;
+ }
+