sl@0: // Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of the License "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // e32test\device\t_comm.cpp sl@0: // sl@0: // sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: sl@0: LOCAL_D RTest test(_L("T_COMM")); sl@0: sl@0: const TInt KUnit0=0; sl@0: const char* KLongString="1 3456789012345678\n\r2 3456789012345678\n\r3 3456789012345678\n\r4 3456789012345678\n\r5 3456789012345678\n\r6 3456789012345678\n\r7 3456789012345678\n\r8 3456789012345678\n\r9 3456789012345678\n\r0 3456789012345678\n\r"; sl@0: sl@0: class RComm : public RBusDevComm sl@0: { sl@0: public: sl@0: TInt WriteS(const TDesC8& aDes); sl@0: TInt WriteS(const TDesC8& aDes,TInt aLength); sl@0: }; sl@0: sl@0: sl@0: LOCAL_C void testRDevice(const RBusDevComm& aDev,const TFindLogicalDevice& aFind) sl@0: // sl@0: // Test the RDevice class sl@0: // sl@0: { sl@0: sl@0: test.Start(_L("Testing RDevice with find handle")); sl@0: RDevice d; sl@0: TInt r=d.Open(aFind); sl@0: test(r==KErrNone); sl@0: d.Close(); sl@0: // sl@0: test.Next(_L("Testing RDevice open by name")); sl@0: r=d.Open(_L("Comm")); sl@0: test(r==KErrNone); sl@0: // sl@0: test.Next(_L("Query version supported")); sl@0: TBool b=d.QueryVersionSupported(aDev.VersionRequired()); sl@0: test(b); sl@0: // sl@0: test.Next(_L("Query is available")); sl@0: b=d.IsAvailable(KDefaultUnit,NULL,NULL); sl@0: test(b); sl@0: // sl@0: test.Next(_L("Query device capabilities")); sl@0: TPckgBuf c; sl@0: d.GetCaps(c); sl@0: TVersionName aName = c().version.Name(); sl@0: test.Printf(_L(" Version = %S\n"),&aName); sl@0: // sl@0: d.Close(); sl@0: test.End(); sl@0: } sl@0: sl@0: TInt RComm::WriteS(const TDesC8& aDes) sl@0: // sl@0: // Synchronous write sl@0: // sl@0: { sl@0: sl@0: return(WriteS(aDes,aDes.Length())); sl@0: } sl@0: sl@0: TInt RComm::WriteS(const TDesC8& aDes,TInt aLength) sl@0: // sl@0: // Synchronous write sl@0: // sl@0: { sl@0: sl@0: TRequestStatus s; sl@0: Write(s,aDes,aLength); sl@0: User::WaitForRequest(s); sl@0: return(s.Int()); sl@0: } sl@0: sl@0: LOCAL_C void testComm() sl@0: // sl@0: // Test the comms device driver sl@0: // sl@0: { sl@0: sl@0: test.Start(_L("Testing comm device")); sl@0: // sl@0: RComm com; sl@0: TInt r=com.Open(KUnit0); sl@0: test(r==KErrNone); sl@0: // sl@0: test.Next(_L("Set config to 9600,8,N,1")); sl@0: TCommConfig cBuf; sl@0: TCommConfigV01& c=cBuf(); sl@0: c.iRate=EBps9600; sl@0: c.iDataBits=EData8; sl@0: c.iStopBits=EStop1; sl@0: c.iParity=EParityNone; sl@0: c.iHandshake=KConfigObeyXoff|KConfigSendXoff; sl@0: c.iParityError=KConfigParityErrorFail; sl@0: c.iTerminatorCount=0; sl@0: c.iXonChar=0x11; // XON sl@0: c.iXonChar=0x13; // XOFF sl@0: c.iSpecialRate=0; sl@0: c.iParityErrorChar=0; sl@0: r=com.SetConfig(cBuf); sl@0: test(r==KErrNone); sl@0: // sl@0: test.Next(_L("Write hello world")); sl@0: com.WriteS(_L8("\r\nHello world\r\n")); sl@0: test.Next(_L("Write long string")); sl@0: com.WriteS(_L8(KLongString)); sl@0: // sl@0: test.Next(_L("Set config to 4800,7,N,1")); sl@0: c.iRate=EBps4800; sl@0: c.iDataBits=EData7; sl@0: c.iStopBits=EStop1; sl@0: c.iParity=EParityNone; sl@0: c.iHandshake=KConfigObeyXoff|KConfigSendXoff; sl@0: c.iParityError=KConfigParityErrorFail; sl@0: c.iTerminatorCount=0; sl@0: c.iXonChar=0x11; // XON sl@0: c.iXonChar=0x13; // XOFF sl@0: c.iSpecialRate=0; sl@0: c.iParityErrorChar=0; sl@0: r=com.SetConfig(cBuf); sl@0: test(r==KErrNone); sl@0: sl@0: test.Next(_L("Close comm device")); sl@0: com.Close(); sl@0: // sl@0: test.End(); sl@0: } sl@0: sl@0: GLDEF_C TInt E32Main() sl@0: // sl@0: // Test the various kernel types. sl@0: // sl@0: { sl@0: sl@0: test.Title(); sl@0: // sl@0: test.Start(_L("Load PDD")); sl@0: TInt r=User::LoadPhysicalDevice(_L("ECDRV")); sl@0: test(r==KErrNone); sl@0: // sl@0: test.Next(_L("Load LDD")); sl@0: r=User::LoadLogicalDevice(_L("ECOMM")); sl@0: test(r==KErrNone); sl@0: // sl@0: test.Next(_L("Find libs")); sl@0: TFindLibrary fL; sl@0: TFullName n; sl@0: while (fL.Next(n)==KErrNone) sl@0: test.Printf(_L(" %S\n"),&n); sl@0: // sl@0: test.Next(_L("Find devices")); sl@0: TFindLogicalDevice fD; sl@0: while (fD.Next(n)==KErrNone) sl@0: test.Printf(_L(" %S\n"),&n); sl@0: // sl@0: RBusDevComm com; sl@0: fD.Find(_L("Comm")); sl@0: r=fD.Next(n); sl@0: test(r==KErrNone); sl@0: testRDevice(com,fD); sl@0: // sl@0: test.Next(_L("Open device")); sl@0: r=com.Open(KUnit0); sl@0: test(r==KErrNone); sl@0: // sl@0: // sl@0: test.Next(_L("Free device/In use")); sl@0: r=User::FreeLogicalDevice(_L("Comm")); sl@0: test(r==KErrInUse); sl@0: // sl@0: test.Next(_L("Close device")); sl@0: com.Close(); sl@0: // sl@0: // sl@0: test.Next(_L("Testing comms device")); sl@0: testComm(); sl@0: // sl@0: TFindPhysicalDevice fDr; sl@0: test.Next(_L("Free driver/Ok")); sl@0: TFullName drivName; sl@0: fDr.Find(_L("Comm.*")); sl@0: r=fDr.Next(drivName); sl@0: test(r==KErrNone); sl@0: r=User::FreePhysicalDevice(drivName); sl@0: test(r==KErrNone); sl@0: // sl@0: test.Next(_L("Free device/Ok")); sl@0: r=User::FreeLogicalDevice(_L("Comm")); sl@0: test(r==KErrNone); sl@0: // sl@0: test.Next(_L("Find libs none")); sl@0: fL.Find(_L("*.*")); sl@0: while (fL.Next(n)==KErrNone) sl@0: test.Printf(_L(" %S\n"),&n); sl@0: // sl@0: test.Next(_L("Find devices none")); sl@0: fD.Find(_L("*.*")); sl@0: while (fD.Next(n)==KErrNone) sl@0: test.Printf(_L(" %S\n"),&n); sl@0: // sl@0: test.Next(_L("Find drivers none")); sl@0: while (fDr.Next(n)==KErrNone) sl@0: test.Printf(_L(" %S\n"),&n); sl@0: sl@0: test.End(); sl@0: sl@0: return(0); sl@0: } sl@0: sl@0: