toolsandutils/wintunnel/testcode/client/wintunnel_test_client.cpp
changeset 0 83f4b4db085c
child 1 d4b442d23379
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolsandutils/wintunnel/testcode/client/wintunnel_test_client.cpp	Tue Feb 02 01:39:43 2010 +0200
@@ -0,0 +1,163 @@
+// Copyright (c) 2004-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:
+// test_client_wintunnel.cpp
+// System Includes
+// 
+//
+
+#include <e32base.h>
+#include <e32test.h>
+#include <e32svr.h>
+#include <c32comm.h>
+
+/********************************************************************************
+ *
+ * Local Includes
+ *
+ *******************************************************************************/
+#include "f32file.h"
+#include "CommonFiles.h"
+
+/********************************************************************************
+ *
+ * Constants
+ *
+ *******************************************************************************/
+
+// Driver names
+_LIT(PDD_NAME,"ECDRV");
+_LIT(LDD_NAME,"ECOMM");
+_LIT(CSY_NAME, "ECUART" );
+_LIT(PORT_NAME,"COMM::1");
+
+// Test data
+const TInt DATA_STRING_LENGTH (45);
+_LIT8(DATA_STRING,"Diana is the greatest person who ever lived\n\r");
+
+// Other
+const TTimeIntervalMicroSeconds32 KTimeOut(4000000);
+
+/********************************************************************************
+ *
+ * Prototypes
+ *
+ *******************************************************************************/
+LOCAL_C void Init();
+
+/********************************************************************************
+ *
+ * Implementation
+ *
+ *******************************************************************************/
+LOCAL_C void doExampleL()
+    {
+	_LIT(KStatus0,"Connect to file server\n");
+	_LIT(KStatus1,"Connect to comm server\n");
+	_LIT(KStatus2,"Load ECUART.CSY\n");
+	_LIT(KStatus3,"Open COMM::1\n");
+	_LIT(KStatus4,"Writing to the port...\n");
+	_LIT(KStatus4a,"Reading from the port...\n");
+	_LIT(KStatus5,"Closing the port...\n");
+	_LIT(KStatus6,"Closing the server connection...\n");
+	_LIT(KSuccess,"Successfully read string from the port.\n");
+	_LIT(KFailure,"Failed reading string from the port.\n");
+
+
+	// connect to the file server
+	console->Printf( KStatus0 );
+	RFs f;
+	User::LeaveIfError(f.Connect());
+	f.Close();
+
+	// load up the drivers
+	Init();
+
+	// start the serial server			
+	RCommServ server;
+	console->Printf(KStatus1);
+	server.Connect();
+
+	// load the plugin
+	console->Printf(KStatus2);
+	TInt ret=server.LoadCommModule(CSY_NAME);
+	User::LeaveIfError(ret);
+		
+	// open the port
+	RComm commPort;
+	console->Printf(KStatus3);
+	ret=commPort.Open(server,PORT_NAME,ECommExclusive);
+	User::LeaveIfError(ret);
+
+	// write to the port
+	TRequestStatus status;
+	console->Printf(KStatus4);
+	commPort.Write(status,KTimeOut,DATA_STRING);
+	User::WaitForRequest(status);
+	User::LeaveIfError(status.Int());
+
+	// read from the port 
+	TBuf8<DATA_STRING_LENGTH> rbuf;
+	console->Printf(KStatus4a);
+	commPort.Read( status, rbuf ); 
+	User::WaitForRequest(status);
+	User::LeaveIfError(status.Int());
+
+	//check the string matches
+	if(rbuf==DATA_STRING)
+		{
+		console->Printf(KSuccess);
+		}
+	else
+		{
+		console->Printf(KFailure);
+		}
+
+	// close port and server
+	console->Printf(KStatus5);
+	commPort.Close();
+	console->Printf(KStatus6);
+	server.Close();
+	}
+
+
+LOCAL_C void Init()
+//
+// Initialisation code - loads the serial LDD and PDD
+// starts the comm subsystem (for EPOC32 builds)
+// On a full Symbian OS implementation, this code would not
+// be required because higher level GUI components  
+// automatically start the services.
+//
+	{
+	// Load the physical device driver
+	// The OS will automatically append .PDD and 
+	// search /System/Libs on all drives.
+
+	TInt r=User::LoadPhysicalDevice(PDD_NAME);
+	if (r != KErrNone && r!= KErrAlreadyExists)
+		User::Leave(r);
+	r=User::LoadLogicalDevice(LDD_NAME);
+	if (r != KErrNone && r != KErrAlreadyExists)
+		User::Leave(r);
+
+#if defined (__EPOC32__)
+	// For EPOC builds we need to start the comms subsystem
+	// This call actually starts the comms server process
+	r=StartC32();
+	if (r != KErrAlreadyExists)
+		User::LeaveIfError(r);
+#endif
+	}
+
+