diff -r 000000000000 -r 83f4b4db085c toolsandutils/wintunnel/testcode/client/wintunnel_test_client.cpp --- /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 +#include +#include +#include + +/******************************************************************************** + * + * 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 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 + } + +