kerneltest/e32test/usb/t_usb_device/src/main.cpp
changeset 259 57b9594f5772
parent 247 d8d70de2bd36
equal deleted inserted replaced
247:d8d70de2bd36 259:57b9594f5772
    12 //
    12 //
    13 // Description:
    13 // Description:
    14 // e32test/usb/t_usb_device/main.cpp
    14 // e32test/usb/t_usb_device/main.cpp
    15 // USB Test Program, main part.
    15 // USB Test Program, main part.
    16 // Device-side part, to work against t_usb_host running on the host.
    16 // Device-side part, to work against t_usb_host running on the host.
    17 // 
    17 //
    18 //
    18 //
    19 
    19 
    20 #include "general.h"
    20 #include "general.h"
    21 #include "config.h"
    21 #include "config.h"
    22 #include "activecontrol.h"
    22 #include "activecontrol.h"
       
    23 #include "OstTraceDefinitions.h"
       
    24 #ifdef OST_TRACE_COMPILER_IN_USE
       
    25 #include "mainTraces.h"
       
    26 #endif
    23 #include "activerw.h"
    27 #include "activerw.h"
    24 
    28 
    25 // --- Global Top Level Variables
    29 // --- Global Top Level Variables
    26 
    30 
    27 CActiveControl* gActiveControl;
    31 CActiveControl* gActiveControl;
    29 RTest test(_L("T_USB_SCDEVICE"));
    33 RTest test(_L("T_USB_SCDEVICE"));
    30 #else
    34 #else
    31 RTest test(_L("T_USB_DEVICE"));
    35 RTest test(_L("T_USB_DEVICE"));
    32 #endif
    36 #endif
    33 
    37 
    34 #ifdef USB_SC	
    38 #ifdef USB_SC
    35 TBool gShareHandle = EFalse;
    39 TBool gShareHandle = EFalse;
    36 #endif
    40 #endif
    37 TBool gVerbose = EFalse;
    41 TBool gVerbose = EFalse;
    38 TBool gSkip = EFalse;
    42 TBool gSkip = EFalse;
    39 TBool gTempTest = EFalse;
    43 TBool gTempTest = EFalse;
    45 IFConfigPtr gInterfaceConfig [128] [KMaxInterfaceSettings];
    49 IFConfigPtr gInterfaceConfig [128] [KMaxInterfaceSettings];
    46 TInt gActiveTestCount = 0;
    50 TInt gActiveTestCount = 0;
    47 #ifdef USB_SC
    51 #ifdef USB_SC
    48 RChunk gChunk;
    52 RChunk gChunk;
    49 #endif
    53 #endif
    50 	
    54 
    51 
    55 
    52 void RunAppL(TDes * aConfigFile, TDes * aScriptFile)
    56 void RunAppL(TDes * aConfigFile, TDes * aScriptFile)
    53 	{
    57 	{
    54 	// Construct the active scheduler
    58 	// Construct the active scheduler
    55 	CActiveScheduler* myScheduler = new (ELeave) CActiveScheduler();
    59 	CActiveScheduler* myScheduler = new (ELeave) CActiveScheduler();
    64 	#ifdef USB_SC
    68 	#ifdef USB_SC
    65 	CConsoleBase* myConsole = Console::NewL(_L("T_USB_SCDEVICE - USB Client Test"), TSize(KConsFullScreen, KConsFullScreen));
    69 	CConsoleBase* myConsole = Console::NewL(_L("T_USB_SCDEVICE - USB Client Test"), TSize(KConsFullScreen, KConsFullScreen));
    66 	CleanupStack::PushL(myConsole);
    70 	CleanupStack::PushL(myConsole);
    67 
    71 
    68 	myConsole->Printf(_L("T_USB_SCDEVICE v%d.%d.%d\n"),KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro);
    72 	myConsole->Printf(_L("T_USB_SCDEVICE v%d.%d.%d\n"),KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro);
       
    73 	OstTraceExt3(TRACE_NORMAL, RUNAPPL_RUNAPPL, "T_USB_SCDEVICE v%d.%d.%d\n",(TInt32)KDeviceVersionMajor,(TInt32)KDeviceVersionMinor,(TInt32)KDeviceVersionMicro);
    69 	test.Printf(_L("T_USB_SCDEVICE v%d.%d.%d\n"),KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro);
    74 	test.Printf(_L("T_USB_SCDEVICE v%d.%d.%d\n"),KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro);
       
    75 	OstTraceExt3(TRACE_NORMAL, RUNAPPL_RUNAPPL_DUP01, "T_USB_SCDEVICE v%d.%d.%d\n",(TInt32)KDeviceVersionMajor,(TInt32)KDeviceVersionMinor,(TInt32)KDeviceVersionMicro);
    70 	#else
    76 	#else
    71 	CConsoleBase* myConsole = Console::NewL(_L("T_USB_DEVICE - USB Client Test"), TSize(KConsFullScreen, KConsFullScreen));
    77 	CConsoleBase* myConsole = Console::NewL(_L("T_USB_DEVICE - USB Client Test"), TSize(KConsFullScreen, KConsFullScreen));
    72 	CleanupStack::PushL(myConsole);
    78 	CleanupStack::PushL(myConsole);
    73 
    79 
    74 	myConsole->Printf(_L("T_USB_DEVICE v%d.%d.%d\n"),KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro);
    80 	myConsole->Printf(_L("T_USB_DEVICE v%d.%d.%d\n"),KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro);
       
    81 	OstTraceExt3(TRACE_NORMAL, RUNAPPL_RUNAPPL_DUP02, "T_USB_DEVICE v%u.%u.%u\n",KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro);
    75 	test.Printf(_L("T_USB_DEVICE v%d.%d.%d\n"),KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro);
    82 	test.Printf(_L("T_USB_DEVICE v%d.%d.%d\n"),KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro);
       
    83 	OstTraceExt3(TRACE_NORMAL, RUNAPPL_RUNAPPL_DUP03, "T_USB_DEVICE v%u.%u.%u\n",KDeviceVersionMajor,KDeviceVersionMinor,KDeviceVersionMicro);
    76 	#endif
    84 	#endif
    77 	
    85 
    78 	// outermost test begin
    86 	// outermost test begin
    79 	test.Start(_L("Outermost test of t_usb_device\n"));
    87 	test.Start(_L("Outermost test of t_usb_device\n"));
    80 
    88 
    81 	do
    89 	do
    82 		{
    90 		{
    83 		gActiveControl = CActiveControl::NewL(myConsole, aConfigFile, aScriptFile);
    91 		gActiveControl = CActiveControl::NewL(myConsole, aConfigFile, aScriptFile);
    84 		CleanupStack::PushL(gActiveControl);
    92 		CleanupStack::PushL(gActiveControl);
    85 
    93 
    86 	
    94 
    87 		// Call request function
    95 		// Call request function
    88 #ifdef USB_SC		
    96 #ifdef USB_SC
    89 		if (!gShareHandle)
    97 		if (!gShareHandle)
    90 			gActiveControl->RequestEp0ControlPacket();
    98 			gActiveControl->RequestEp0ControlPacket();
    91 #else
    99 #else
    92 		gActiveControl->RequestEp0ControlPacket();
   100 		gActiveControl->RequestEp0ControlPacket();
    93 #endif
   101 #endif
    94 		CActiveScheduler::Start();
   102 		CActiveScheduler::Start();
    95 		
   103 
    96 		test.Printf (_L("Test Run Completed\n"));
   104 		test.Printf (_L("Test Run Completed\n"));
    97 		
   105 		OstTrace0(TRACE_NORMAL, RUNAPPL_RUNAPPL_DUP04, "Test Run Completed\n");
       
   106 
    98 		if (gSoakCount > 0)
   107 		if (gSoakCount > 0)
    99 			{
   108 			{
   100 			gSoakCount--;
   109 			gSoakCount--;
   101 			}
   110 			}
   102 
   111 
   103 		// Suspend thread for 2 seconds
   112 		// Suspend thread for 2 seconds
   104 		User::After(2000000);
   113 		User::After(2000000);
   105 		
   114 
   106 		CleanupStack::PopAndDestroy(gActiveControl);
   115 		CleanupStack::PopAndDestroy(gActiveControl);
   107 
   116 
   108 		}
   117 		}
   109 	while ((gSoakCount > 0) || (gSoakCount == -1));
   118 	while ((gSoakCount > 0) || (gSoakCount == -1));
   110 
   119 
   120 	}
   129 	}
   121 
   130 
   122 void ParseCommandLine (TDes& aConfigFileName, TDes& aScriptFileName)
   131 void ParseCommandLine (TDes& aConfigFileName, TDes& aScriptFileName)
   123 	{
   132 	{
   124 	TBuf<64> c;
   133 	TBuf<64> c;
   125 	
   134 
   126 	User::CommandLine(c);
   135 	User::CommandLine(c);
   127 	c.LowerCase();
   136 	c.LowerCase();
   128 
   137 
   129 	aConfigFileName.SetLength(0);
   138 	aConfigFileName.SetLength(0);
   130 	aScriptFileName.SetLength(0);
   139 	aScriptFileName.SetLength(0);
   135 
   144 
   136 		while (token.Set(lex.NextToken()), token != KNullDesC)
   145 		while (token.Set(lex.NextToken()), token != KNullDesC)
   137 			{
   146 			{
   138 			if (token == _L("/v"))
   147 			if (token == _L("/v"))
   139 				{
   148 				{
   140 				RDebug::Print(_L("Verbose output enabled\n"));
   149 				OstTrace0(TRACE_NORMAL, PARSECOMMANDLINE_PARSECOMMANDLINE, "Verbose output enabled\n");
   141 				gVerbose = ETrue;
   150 				gVerbose = ETrue;
   142 				}
   151 				}
   143 			else if (token == _L("/s"))
   152 			else if (token == _L("/s"))
   144 				{
   153 				{
   145 				RDebug::Print(_L("Skipping some tests\n"));
   154 				OstTrace0(TRACE_NORMAL, PARSECOMMANDLINE_PARSECOMMANDLINE_DUP01, "Skipping some tests\n");
   146 				gSkip = ETrue;
   155 				gSkip = ETrue;
   147 				}
   156 				}
   148 			else if (token == _L("/t"))
   157 			else if (token == _L("/t"))
   149 				{
   158 				{
   150 				RDebug::Print(_L("Temporary Test\n"));
   159 				OstTrace0(TRACE_NORMAL, PARSECOMMANDLINE_PARSECOMMANDLINE_DUP02, "Temporary Test\n");
   151 				gTempTest = ETrue;
   160 				gTempTest = ETrue;
   152 				}
   161 				}
   153 			else if (token == _L("/n"))
   162 			else if (token == _L("/n"))
   154 				{
   163 				{
   155 				RDebug::Print(_L("Not Stopping on Test Fail\n"));
   164 				OstTrace0(TRACE_NORMAL, PARSECOMMANDLINE_PARSECOMMANDLINE_DUP03, "Not Stopping on Test Fail\n");
   156 				gStopOnFail = EFalse;
   165 				gStopOnFail = EFalse;
   157 				}
   166 				}
   158 #ifdef USB_SC	
   167 #ifdef USB_SC
   159 			else if (token == _L("/a"))
   168 			else if (token == _L("/a"))
   160 				{				
   169 				{
   161 				RDebug::Print(_L("share handle test\n"));
   170 				OstTrace0(TRACE_NORMAL, PARSECOMMANDLINE_PARSECOMMANDLINE_DUP04, "share handle test\n");
   162 				gShareHandle = ETrue;
   171 				gShareHandle = ETrue;
   163 				}
   172 				}
   164 #endif
   173 #endif
   165 			else if (token.Left(5) == _L("/soak"))
   174 			else if (token.Left(5) == _L("/soak"))
   166 				{
   175 				{
   168 				gSoakCount = -1;
   177 				gSoakCount = -1;
   169 				equalPos = token.Locate('=');
   178 				equalPos = token.Locate('=');
   170 				if ((equalPos+1) < token.Length())
   179 				if ((equalPos+1) < token.Length())
   171 					{
   180 					{
   172 					TLex lexNum(token.Mid(equalPos+1));
   181 					TLex lexNum(token.Mid(equalPos+1));
   173 					lexNum.Val(gSoakCount,EDecimal);	
   182 					lexNum.Val(gSoakCount,EDecimal);
   174 					}
   183 					}
   175 				RDebug::Print(_L("Soak test for %d iterations\n"),gSoakCount);
   184 				OstTrace1(TRACE_NORMAL, PARSECOMMANDLINE_PARSECOMMANDLINE_DUP05, "Soak test for %d iterations\n",gSoakCount);
   176 				}
   185 				}
   177 			else if (token.Left(8) == _L("/script="))
   186 			else if (token.Left(8) == _L("/script="))
   178 				{
   187 				{
   179 				aScriptFileName = token;
   188 				aScriptFileName = token;
   180 				}
   189 				}
   182 				{
   191 				{
   183 				aConfigFileName = token;
   192 				aConfigFileName = token;
   184 				}
   193 				}
   185 			}
   194 			}
   186 		}
   195 		}
   187 		
   196 
   188 	}
   197 	}
   189 	
   198 
   190 TInt E32Main()
   199 TInt E32Main()
   191 	{
   200 	{
   192 	__UHEAP_MARK;
   201 	__UHEAP_MARK;
   193 	
   202 
   194 	CTrapCleanup* cleanup = CTrapCleanup::New();			// get clean-up stack
   203 	CTrapCleanup* cleanup = CTrapCleanup::New();			// get clean-up stack
   195 
   204 
   196 	TBuf<64> configFileName;
   205 	TBuf<64> configFileName;
   197 	TBuf<64> scriptFileName;
   206 	TBuf<64> scriptFileName;
   198 	ParseCommandLine (configFileName,scriptFileName);
   207 	ParseCommandLine (configFileName,scriptFileName);
   199 	
   208 
   200 	if (configFileName.Length() == 0)
   209 	if (configFileName.Length() == 0)
   201 		{
   210 		{
   202 			RDebug::Print(_L("(T_USB: Warning - No Configuration File.)\n"));		
   211 		OstTrace0(TRACE_NORMAL, E32MAIN_E32MAIN, "(T_USB: Warning - No Configuration File.\n");
   203 		}
   212 		}
   204 	else
   213 	else
   205 		{
   214 		{
   206 		RDebug::Print(_L("T_USB: Config File Name %s\n"),configFileName.PtrZ());
   215 		OstTraceExt1(TRACE_NORMAL, E32MAIN_E32MAIN_DUP01, "T_USB: Config File Name %S\n",configFileName);
   207 		}
   216 		}
   208 
   217 
   209 	if (scriptFileName.Length() != 0)
   218 	if (scriptFileName.Length() != 0)
   210 		{
   219 		{
   211 		RDebug::Print(_L("T_USB: Script File Name %s\n"),scriptFileName.PtrZ());
   220 		OstTraceExt1(TRACE_NORMAL, E32MAIN_E32MAIN_DUP02, "T_USB: Script File Name %S\n",scriptFileName);
   212 		}
   221 		}
   213 
   222 
   214 	TRAPD(error, RunAppL(& configFileName, &scriptFileName));
   223 	TRAPD(error, RunAppL(& configFileName, &scriptFileName));
   215 
   224 
   216 	__ASSERT_ALWAYS(!error, User::Panic(_L("T_USB_DEVICE: EPOC32EX"), error));
   225 	__ASSERT_ALWAYS(!error, User::Panic(_L("T_USB_DEVICE: EPOC32EX"), error));
   217 
   226 
   218 	delete cleanup;											// destroy clean-up stack
   227 	delete cleanup;											// destroy clean-up stack
   219 
   228 
   220 	__UHEAP_MARKEND;
   229 	__UHEAP_MARKEND;
   221 
   230 
   222 	RDebug::Print(_L("Program exit: done.\n"));
   231 	OstTrace0(TRACE_NORMAL, E32MAIN_E32MAIN_DUP03, "Program exit: done.\n");
       
   232 
   223 	return 0;												// and return
   233 	return 0;												// and return
   224 	}
   234 	}
   225 
   235 
   226 
   236 
   227 // -eof-
   237 // -eof-