applayerprotocols/httpexamples/httpexampleclient/httpexampleutils.cpp
changeset 0 b16258d2340f
child 19 c0c2f28ace9c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/applayerprotocols/httpexamples/httpexampleclient/httpexampleutils.cpp	Tue Feb 02 01:09:52 2010 +0200
@@ -0,0 +1,194 @@
+// Copyright (c) 2001-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:
+//
+
+
+// for StartC32()
+#include <c32comm.h>
+
+#include "httpexampleutils.h"
+
+
+// PDD names for the physical device drivers that are loaded in wins or arm
+#if defined (__WINS__)
+#define PDD_NAME		_L("ECDRV")
+#else
+#define PDD_NAME		_L("EUART1")
+#define PDD2_NAME		_L("EUART2")
+#define PDD3_NAME		_L("EUART3")
+#define PDD4_NAME		_L("EUART4")
+#endif
+
+#define LDD_NAME		_L("ECOMM")
+
+
+void CHttpExampleUtils::InitCommsL()
+	{
+	TInt ret = User::LoadPhysicalDevice(PDD_NAME);
+	User::LeaveIfError(ret == KErrAlreadyExists?KErrNone:ret);
+
+#ifndef __WINS__
+	ret = User::LoadPhysicalDevice(PDD2_NAME);
+	ret = User::LoadPhysicalDevice(PDD3_NAME);
+	ret = User::LoadPhysicalDevice(PDD4_NAME);
+#endif
+
+	ret = User::LoadLogicalDevice(LDD_NAME);
+	User::LeaveIfError(ret == KErrAlreadyExists?KErrNone:ret);
+	ret = StartC32();
+	User::LeaveIfError(ret == KErrAlreadyExists?KErrNone:ret);
+	}
+
+
+CHttpExampleUtils* CHttpExampleUtils::NewL(const TDesC& aTestName)
+	{
+	CHttpExampleUtils* me = new (ELeave) CHttpExampleUtils(aTestName);
+	return me;
+	}
+
+
+CHttpExampleUtils::CHttpExampleUtils(const TDesC& aTestName) : iTest(aTestName)
+	{
+	iTest.Start(KNullDesC);
+	}
+
+CHttpExampleUtils::~CHttpExampleUtils()
+	{
+	iTest.End();
+	iTest.Close();
+	}
+
+RTest& CHttpExampleUtils::Test()
+	{
+	return iTest;
+	}
+
+void CHttpExampleUtils::PressAnyKey()
+	{
+	iTest.Printf(TRefByValue<const TDesC>_L("\nPress a key"));	
+	iTest.Getch();
+	}
+
+
+TInt CHttpExampleUtils::GetSelection(const TDesC& aPrompt, const TDesC& aValidChoices)
+	//
+	//	Present the user with a list of options, and get their selection
+	{
+	TKeyCode key = EKeyNull;
+	iTest.Console()->SetPos (0, iTest.Console()->WhereY ());
+	iTest.Console()->Printf(_L("%S "), &aPrompt);
+	iTest.Console()->Printf(_L("[%S] :"), &aValidChoices);
+	TInt retVal = KErrNotFound;
+	while (retVal == KErrNotFound)
+		{
+		key = iTest.Getch();
+		// Check that key is in the list of valid choices
+		retVal = aValidChoices.Locate((TChar)key);
+		}
+	iTest.Console()->Printf(_L("%c\n\n"), key);
+	return retVal;
+	}
+
+
+void CHttpExampleUtils::LogIt(TRefByValue<const TDesC> aFmt, ...)
+	{
+	VA_LIST list;
+	VA_START(list,aFmt);
+	TBuf<KMaxFileName + 4> buf; // 4 for the log prompt
+	buf.Zero();
+	buf.Append(_L(">  "));
+	buf.AppendFormatList(aFmt,list);
+	VA_END(list);
+	iTest.Printf(_L("%S\n"), &buf);	
+	}
+
+
+void CHttpExampleUtils::GetAnEntry(const TDesC& ourPrompt, TDes& currentstring)
+	{
+	TBuf16<KMaxUserEntrySize> ourLine;
+	TBuf<KMaxUserEntrySize> tempstring;	//tempstring is a unicode descriptor
+										//create a temporary buffer where the
+										//unicode strings are stored in order to 
+										//be displayed
+	ourLine.Zero ();
+	tempstring.Copy(currentstring);		//Copy current string to Unicode buffer
+	TKeyCode key = EKeyNull;						//current string buffer is 8 bits wide.
+										//Unicode string bufffer (tempstring) is 16 bits wide.
+	FOREVER
+		{
+		if (ourLine.Length () == 0)
+			{
+			iTest.Console()->SetPos (0, iTest.Console()->WhereY ());
+			iTest.Console()->Printf (_L ("%S"), &ourPrompt);
+			if (tempstring.Length () != 0)						//get tempstring's number of items
+				iTest.Console()->Printf (_L (" = %S"), &tempstring);	//if not zero print them to iTest.Console()
+			iTest.Console()->Printf (_L (" : "));
+			iTest.Console()->ClearToEndOfLine ();
+			}
+		key = iTest.Getch();
+		
+		  if (key == EKeyBackspace)
+				{
+					if (ourLine.Length() !=0)
+					{
+						ourLine.SetLength(ourLine.Length()-1);
+						iTest.Console()->Printf (_L ("%c"), key);
+						iTest.Console()->SetPos(iTest.Console()->WhereX(),iTest.Console()->WhereY());
+						iTest.Console()->ClearToEndOfLine();
+					}	// end if (ourLine.Length() !=0)
+				}	// end if (key == KeyBackSpace)
+		  
+		  		  
+		  if (key == EKeyDelete) 			
+				{
+					ourLine.Zero();
+					iTest.Console()->SetPos (0, iTest.Console()->WhereY ());
+					iTest.Console()->ClearToEndOfLine ();
+					tempstring.Copy(ourLine);
+					break;
+				}
+		  
+		  if (key == EKeyEnter)
+			break;
+		
+		  if (key < ' ') // ascii code thats not a printable character
+			{
+			continue;
+			}
+		
+		ourLine.Append (key);
+		iTest.Console()->Printf (_L ("%c"), key);
+		iTest.Console()->SetPos(iTest.Console()->WhereX(),iTest.Console()->WhereY());
+		iTest.Console()->ClearToEndOfLine();
+		if (ourLine.Length () == ourLine.MaxLength ())
+			break;
+		}	// end of for statement
+
+	if ((key == EKeyEnter) && (ourLine.Length () == 0))
+		tempstring.Copy (currentstring);				//copy contents of 8 bit "ourLine" descriptor
+	
+	iTest.Console()->SetPos (0, iTest.Console()->WhereY ());		
+	iTest.Console()->ClearToEndOfLine ();
+	
+	if ((key == EKeyEnter) && (ourLine.Length() !=0))
+		tempstring.Copy(ourLine);
+	if (tempstring.Length () != 0)						//if temstring length is not zero
+		{
+		iTest.Console()->Printf (_L (" Entered = %S\n"), &tempstring);	//print the contents to iTest.Console()
+		LogIt(_L ("%S = %S\n"), &ourPrompt, &tempstring);
+		}
+
+	iTest.Console()->Printf (_L ("\n"));
+	currentstring.Copy(tempstring);						//copy 16 bit tempstring descriptor back 
+	}