terminalsecurity/client/src/TerminalControlClient.cpp
changeset 0 b497e44ab2fc
child 59 13d7c31c74e0
equal deleted inserted replaced
-1:000000000000 0:b497e44ab2fc
       
     1 /*
       
     2 * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: Implementation of terminalsecurity components
       
    15 *
       
    16 */
       
    17 /* TerminalControlClient.cpp
       
    18 */
       
    19 
       
    20 #include <e32svr.h>
       
    21 
       
    22 #include <TerminalControl3rdPartyAPI.h>
       
    23 #include "TerminalControlClientServer.h"
       
    24 #include "TerminalControlClient.h"
       
    25 #include "debug.h"
       
    26 
       
    27 
       
    28 
       
    29 
       
    30 // Standard server startup code
       
    31 // 
       
    32 static TInt StartServer()
       
    33 	{
       
    34 	RDEBUG("TerminalControlServer: Starting server...");
       
    35 	
       
    36 	const TUidType serverUid(KNullUid,KNullUid,KTerminalControlServerUid);
       
    37 
       
    38 	// EPOC and EKA 2 is easy, we just create a new server process. Simultaneous
       
    39 	// launching of two such processes should be detected when the second one
       
    40 	// attempts to create the server object, failing with KErrAlreadyExists.
       
    41 	RProcess server;
       
    42 	//TInt r=server.Create(KHelloWorldServerImg,KNullDesC,serverUid);
       
    43 	TInt r=server.Create(KTerminalControlServerImg,KNullDesC);
       
    44 
       
    45 	if (r!=KErrNone)
       
    46 		{
       
    47 		RDEBUG_2("TerminalControlClient: server start failed %d",r);
       
    48 		return r;
       
    49 		}
       
    50 	TRequestStatus stat;
       
    51 	server.Rendezvous(stat);
       
    52 	if (stat!=KRequestPending)
       
    53 		server.Kill(0);		// abort startup
       
    54 	else
       
    55 		server.Resume();	// logon OK - start the server
       
    56 	RDEBUG("TerminalControlClient: Started");
       
    57 	User::WaitForRequest(stat);		// wait for start or death
       
    58 	// we can't use the 'exit reason' if the server panicked as this
       
    59 	// is the panic 'reason' and may be '0' which cannot be distinguished
       
    60 	// from KErrNone
       
    61 	r=(server.ExitType()==EExitPanic) ? KErrGeneral : stat.Int();
       
    62 	server.Close();
       
    63 	return r;
       
    64 	}
       
    65 
       
    66 
       
    67 // This is the standard retry pattern for server connection
       
    68 EXPORT_C TInt RTerminalControl::Connect()
       
    69 	{
       
    70 	TInt retry=2;
       
    71 	for (;;)
       
    72 		{
       
    73 		TInt r=CreateSession(KTerminalControlServerName,TVersion(0,0,0),1);
       
    74 		if (r!=KErrNotFound && r!=KErrServerTerminated)
       
    75 			return r;
       
    76 		if (--retry==0)
       
    77 			return r;
       
    78 		r=StartServer();
       
    79 		if (r!=KErrNone && r!=KErrAlreadyExists)
       
    80 			return r;
       
    81 		}
       
    82 	}
       
    83 	
       
    84 EXPORT_C void RTerminalControl::Close()
       
    85 	{
       
    86 	RSessionBase::Close();  //basecall
       
    87 	}
       
    88 
       
    89 
       
    90 
       
    91 // ----------------------------------------------------------------------------------------
       
    92 //
       
    93 //  RTerminalControlSession subsessions
       
    94 //
       
    95 // ----------------------------------------------------------------------------------------
       
    96 
       
    97 // ----------------------------------------------------------------------------------------
       
    98 // RTerminalControlSession::Open
       
    99 // ----------------------------------------------------------------------------------------
       
   100 EXPORT_C TInt RTerminalControlSession::Open(RTerminalControl &aServer, TCertInfo &aCertification)
       
   101     {
       
   102     RDEBUG("RTerminalControlSession::Open");
       
   103     TIpcArgs args1;
       
   104 
       
   105     TPckg<TCertInfo> certp( aCertification );
       
   106     args1.Set(0, &certp);
       
   107 
       
   108 	return CreateSubSession(aServer, ECreateSubSession, args1);
       
   109 	}
       
   110 
       
   111 // ----------------------------------------------------------------------------------------
       
   112 // RTerminalControlSession::Close
       
   113 // ----------------------------------------------------------------------------------------
       
   114 EXPORT_C void RTerminalControlSession::Close()
       
   115 	{
       
   116 	RDEBUG("RTerminalControlSession::Close");
       
   117 	RSubSessionBase::CloseSubSession(ECloseSubSession);
       
   118 	}
       
   119 
       
   120 // ----------------------------------------------------------------------------------------
       
   121 // RTerminalControlSession::FileScanL
       
   122 // ----------------------------------------------------------------------------------------
       
   123 EXPORT_C TInt RTerminalControlSession::FileScan( const TDesC8& aStartPath /*= KTCDefaultStart*/,
       
   124                                                   TBool aRecursive /*= EFalse*/ ) 
       
   125 	{
       
   126 	RDEBUG("RTerminalControlSession::FileScan");
       
   127 	
       
   128 	TInt        status = KErrNone;
       
   129     TIpcArgs    args1;
       
   130     TInt        recursiveFlag = aRecursive?1:0;    
       
   131     
       
   132     // Set parameters
       
   133     args1.Set(0, recursiveFlag);
       
   134     args1.Set(1, &aStartPath);
       
   135 	
       
   136     // Run file scan
       
   137 	status = SendReceive( EFileScan, args1 );
       
   138 
       
   139     return status;
       
   140 	}
       
   141 
       
   142 // ----------------------------------------------------------------------------------------
       
   143 // RTerminalControlSession::FileScanResultsL
       
   144 // @param aBuffer Constructed CBufFlat to be filled with file scan results (will be resized)
       
   145 // @discussion aBuffer should be pushed into cleanup stack if this method is not trapped
       
   146 // ----------------------------------------------------------------------------------------
       
   147 EXPORT_C TInt RTerminalControlSession::FileScanResultsL( CBufFlat* aBuffer )
       
   148     {
       
   149     RDEBUG("RTerminalControlSession::FileScanResultsL");
       
   150     
       
   151     User::LeaveIfError((aBuffer == NULL?KErrGeneral:KErrNone));
       
   152 
       
   153 	TInt        status = KErrNone;
       
   154 	TInt        size = 0;
       
   155 
       
   156 	status = FileScanResultsSize(size);
       
   157 
       
   158 	// Resize client buffer (or handle out of memory)
       
   159 	aBuffer->ResizeL( size );
       
   160 
       
   161     //
       
   162     // If we get size, we can create object to transfer results
       
   163     //
       
   164 	if ( status == KErrNone )
       
   165 		{
       
   166 		// We're using out own data buffer for data transfer from server
       
   167 		HBufC8 *buf = HBufC8::NewLC( size );
       
   168         TPtr8 ptr(buf->Des());    	
       
   169 
       
   170         TIpcArgs args1;
       
   171         args1.Set(0, &ptr);
       
   172 		status = SendReceive( EFileScanResults, args1 );
       
   173 
       
   174 		if ( status == KErrNone )
       
   175 			{			
       
   176             aBuffer->Write(0, ptr);
       
   177 			}
       
   178 		else
       
   179 			{
       
   180 			RDEBUG_2("TerminalControlServer: EFileScanResults failed... %d", status);
       
   181 			}
       
   182 
       
   183 		CleanupStack::PopAndDestroy( buf );
       
   184 		}
       
   185 	else
       
   186 		{
       
   187 		RDEBUG_2("TerminalControlServer: EFileScanResultsSize failed... %d", status);
       
   188 		}
       
   189 
       
   190 	return status;        
       
   191     }
       
   192 
       
   193 // ----------------------------------------------------------------------------------------
       
   194 // RTerminalControlSession::FileScanResultsSizeL
       
   195 // ----------------------------------------------------------------------------------------
       
   196 EXPORT_C TInt RTerminalControlSession::FileScanResultsSize( TInt &aSize )
       
   197     {
       
   198     RDEBUG("RTerminalControlSession::FileScanResultsSize");
       
   199     
       
   200 	TInt        status = KErrNone;
       
   201 	TInt        size = 0;
       
   202     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> sizeBuf;
       
   203     TLex8       lex;
       
   204     
       
   205     //
       
   206     // Get size of file scan from the server
       
   207     //
       
   208     status = FileScanResultsSize(sizeBuf);
       
   209 		if( status != KErrNone )
       
   210 			{
       
   211 			return status;	
       
   212 			}
       
   213 			
       
   214 	lex.Assign(sizeBuf);
       
   215 	status = lex.Val(size);
       
   216 
       
   217 	aSize = size;
       
   218     
       
   219     return status;
       
   220     }
       
   221 
       
   222 // ----------------------------------------------------------------------------------------
       
   223 // RTerminalControlSession::FileScanResultsSize
       
   224 // ----------------------------------------------------------------------------------------
       
   225 EXPORT_C TInt RTerminalControlSession::FileScanResultsSize( TDes8 &aSizeBuf )
       
   226     {
       
   227     RDEBUG("RTerminalControlSession::FileScanResultsSize");
       
   228     
       
   229 	TInt        status = KErrNone;
       
   230     TIpcArgs    args1;    
       
   231     
       
   232     //
       
   233     // Get size of file scan from the server
       
   234     //    
       
   235     args1.Set(0, &aSizeBuf);
       
   236     status = SendReceive( EFileScanResultsSize, args1 );
       
   237     
       
   238     return status;
       
   239     }
       
   240 
       
   241 // ----------------------------------------------------------------------------------------
       
   242 // RTerminalControlSession::DeleteFileL
       
   243 // ----------------------------------------------------------------------------------------
       
   244 EXPORT_C TInt RTerminalControlSession::DeleteFile( const TDesC8& aFileName )
       
   245     {
       
   246     RDEBUG("RTerminalControlSession::DeleteFile");
       
   247     
       
   248 	TInt       status = KErrNone;
       
   249     TIpcArgs   args1;
       
   250     
       
   251     args1.Set(0, &aFileName);
       
   252     
       
   253     status = SendReceive( EFileDelete, args1 );
       
   254     
       
   255     return status;
       
   256     }
       
   257 
       
   258 // ----------------------------------------------------------------------------------------
       
   259 // RTerminalControlSession::SetAutolockPeriodL
       
   260 // ----------------------------------------------------------------------------------------
       
   261 EXPORT_C TInt RTerminalControlSession::SetAutolockPeriod( TInt32 aPeriod )
       
   262     {
       
   263     RDEBUG("RTerminalControlSession::SetAutolockPeriodL");
       
   264     
       
   265 	TInt       status = KErrNone;
       
   266     TIpcArgs   args1;
       
   267     TInt       value( aPeriod );
       
   268     
       
   269     args1.Set(0, value);
       
   270     
       
   271     status = SendReceive( EDeviceLock_AutoLockPeriod_Set, args1 );
       
   272     
       
   273     return status;
       
   274     }
       
   275 
       
   276 // ----------------------------------------------------------------------------------------
       
   277 // RTerminalControlSession::GetAutolockPeriodL
       
   278 // ----------------------------------------------------------------------------------------
       
   279 EXPORT_C TInt RTerminalControlSession::GetAutolockPeriod( TInt32 &aPeriod )
       
   280     {    
       
   281     RDEBUG("RTerminalControlSession::GetAutolockPeriod");
       
   282     
       
   283 	TInt       status = KErrNone;
       
   284     TIpcArgs   args1;
       
   285     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> period;
       
   286     TLex8      lex;
       
   287     
       
   288     args1.Set(0, &period);
       
   289     
       
   290     status = SendReceive( EDeviceLock_AutoLockPeriod_Get, args1 );
       
   291     
       
   292     if(status == KErrNone)
       
   293         {
       
   294         lex.Assign( period );
       
   295         status = lex.Val( aPeriod );
       
   296         }
       
   297     
       
   298     return status;
       
   299     }
       
   300 
       
   301 // ----------------------------------------------------------------------------------------
       
   302 // RTerminalControlSession::SetMaxAutolockPeriodL
       
   303 // ----------------------------------------------------------------------------------------
       
   304 EXPORT_C TInt RTerminalControlSession::SetMaxAutolockPeriod( TInt32 aPeriod )
       
   305     {
       
   306     RDEBUG("RTerminalControlSession::SetMaxAutolockPeriod");
       
   307     
       
   308 	TInt       status = KErrNone;
       
   309     TIpcArgs   args1;
       
   310     TInt       value( aPeriod );
       
   311     
       
   312     args1.Set(0, value);
       
   313     
       
   314     status = SendReceive( EDeviceLock_MaxAutoLockPeriod_Set, args1 );
       
   315     
       
   316     return status;
       
   317     }
       
   318 
       
   319 // ----------------------------------------------------------------------------------------
       
   320 // RTerminalControlSession::GetMaxAutolockPeriodL
       
   321 // ----------------------------------------------------------------------------------------
       
   322 EXPORT_C TInt RTerminalControlSession::GetMaxAutolockPeriod( TInt32 &aPeriod )
       
   323     {    
       
   324     RDEBUG("RTerminalControlSession::GetMaxAutolockPeriod");
       
   325     
       
   326 	TInt       status = KErrNone;
       
   327     TIpcArgs   args1;
       
   328     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> period; 
       
   329     TLex8 lex;
       
   330 
       
   331     args1.Set(0, &period);    
       
   332     status = SendReceive( EDeviceLock_MaxAutoLockPeriod_Get, args1 );
       
   333     
       
   334     if(status == KErrNone)
       
   335         {
       
   336         lex.Assign( period );
       
   337         status = lex.Val( aPeriod );
       
   338         }
       
   339     
       
   340     return status;
       
   341     }
       
   342 
       
   343 // ----------------------------------------------------------------------------------------
       
   344 // RTerminalControlSession::SetDeviceLockLevelL
       
   345 // ----------------------------------------------------------------------------------------
       
   346 EXPORT_C TInt RTerminalControlSession::SetDeviceLockLevel( TInt32 aLevel )
       
   347     {    
       
   348     RDEBUG("RTerminalControlSession::SetDeviceLockLevel");
       
   349     
       
   350 	TInt       status = KErrNone;
       
   351     TIpcArgs   args1;
       
   352     TInt       value( aLevel );
       
   353     
       
   354     args1.Set(0, value);
       
   355     
       
   356     status = SendReceive( EDeviceLock_LockLevel_Set, args1 );
       
   357        
       
   358     return status;
       
   359     }
       
   360 
       
   361 // ----------------------------------------------------------------------------------------
       
   362 // RTerminalControlSession::GetDeviceLockLevelL
       
   363 // ----------------------------------------------------------------------------------------
       
   364 EXPORT_C TInt RTerminalControlSession::GetDeviceLockLevel( TInt32 &aLevel )
       
   365     {
       
   366     RDEBUG("RTerminalControlSession::GetDeviceLockLevel");
       
   367     
       
   368 	TInt       status = KErrNone;
       
   369     TIpcArgs   args1;
       
   370     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> level;
       
   371     TLex8 lex;
       
   372 
       
   373     args1.Set(0, &level);
       
   374     status = SendReceive( EDeviceLock_LockLevel_Get, args1 );
       
   375     
       
   376     if(status == KErrNone)
       
   377         {
       
   378         lex.Assign( level );
       
   379         status = lex.Val( aLevel );
       
   380         }
       
   381         
       
   382     return status;
       
   383     }
       
   384 
       
   385 // ----------------------------------------------------------------------------------------
       
   386 // RTerminalControlSession::SetDeviceLockCodeL
       
   387 // ----------------------------------------------------------------------------------------
       
   388 EXPORT_C TInt RTerminalControlSession::SetDeviceLockCode( const TDesC8 &aCode )
       
   389     {
       
   390     RDEBUG("RTerminalControlSession::SetDeviceLockCodeL");
       
   391     
       
   392 	TInt       status = KErrNone;
       
   393     TIpcArgs   args1;
       
   394 
       
   395     args1.Set(0, &aCode);
       
   396 
       
   397     status = SendReceive( EDeviceLock_LockCode_Set, args1 );
       
   398 
       
   399     return status;
       
   400     }
       
   401 
       
   402 // ----------------------------------------------------------------------------------------
       
   403 // RTerminalControlSession::GetDeviceLockCodeL
       
   404 // ----------------------------------------------------------------------------------------
       
   405 EXPORT_C TInt RTerminalControlSession::GetDeviceLockCode( TDesC8 &/*aCode*/ )
       
   406     {
       
   407     RDEBUG("RTerminalControlSession::GetDeviceLockCode");
       
   408     
       
   409     return KErrNotSupported;
       
   410     }
       
   411 
       
   412 // ----------------------------------------------------------------------------------------
       
   413 // RTerminalControlSession::DeviceWipeL
       
   414 // ----------------------------------------------------------------------------------------
       
   415 EXPORT_C TInt RTerminalControlSession::DeviceWipe( )
       
   416     {
       
   417     RDEBUG("RTerminalControlSession::DeviceWipe");
       
   418     
       
   419     return SendReceive( EDeviceWipe );
       
   420     }
       
   421 
       
   422 
       
   423 
       
   424 
       
   425 // --------- Enhanced features BEGIN ------------------
       
   426 //#ifdef __SAP_DEVICE_LOCK_ENHANCEMENTS
       
   427 
       
   428 
       
   429 // ----------------------------------------------------------------------------------------
       
   430 // RTerminalControlSession::SetPasscodeMinLength
       
   431 // ----------------------------------------------------------------------------------------
       
   432 EXPORT_C TInt RTerminalControlSession::SetPasscodeMinLength( TInt32 aMinLength )
       
   433 	{
       
   434 	RDEBUG("RTerminalControlSession::SetPasscodeMinLength");
       
   435 	
       
   436 	TInt status = KErrNone;
       
   437     TIpcArgs args1;
       
   438     TInt value( aMinLength );
       
   439     
       
   440     args1.Set( 0, value );
       
   441     status = SendReceive( EDeviceLock_PasscodeMinLength_Set, args1 );
       
   442        
       
   443     return status;
       
   444 	}
       
   445 
       
   446 // ----------------------------------------------------------------------------------------
       
   447 // RTerminalControlSession::GetPasscodeMinLength
       
   448 // ----------------------------------------------------------------------------------------
       
   449 EXPORT_C TInt RTerminalControlSession::GetPasscodeMinLength( TInt32& aMinLength )
       
   450 	{
       
   451 	RDEBUG("RTerminalControlSession::GetPasscodeMinLength");
       
   452 	
       
   453 	TInt status = KErrNone;
       
   454     TIpcArgs args1;
       
   455     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> length;
       
   456     TLex8 lex;
       
   457 
       
   458     args1.Set( 0, &length );
       
   459     status = SendReceive( EDeviceLock_PasscodeMinLength_Get, args1 );
       
   460     
       
   461     if( status == KErrNone )
       
   462         {
       
   463         lex.Assign( length );
       
   464         status = lex.Val( aMinLength );
       
   465         }
       
   466         
       
   467     return status;
       
   468 	}
       
   469 
       
   470 // ----------------------------------------------------------------------------------------
       
   471 // RTerminalControlSession::SetPasscodeMaxLength
       
   472 // ----------------------------------------------------------------------------------------
       
   473 EXPORT_C TInt RTerminalControlSession::SetPasscodeMaxLength( TInt32 aMinLength )
       
   474 	{
       
   475 	RDEBUG("RTerminalControlSession::SetPasscodeMaxLength");
       
   476 	
       
   477 	TInt status = KErrNone;
       
   478     TIpcArgs args1;
       
   479     TInt value( aMinLength );
       
   480     
       
   481     args1.Set( 0, value );
       
   482     status = SendReceive( EDeviceLock_PasscodeMaxLength_Set, args1 );
       
   483        
       
   484     return status;
       
   485 	}
       
   486 
       
   487 // ----------------------------------------------------------------------------------------
       
   488 // RTerminalControlSession::GetPasscodeMaxLength
       
   489 // ----------------------------------------------------------------------------------------
       
   490 EXPORT_C TInt RTerminalControlSession::GetPasscodeMaxLength( TInt32& aMinLength )
       
   491 	{
       
   492 	RDEBUG("RTerminalControlSession::GetPasscodeMaxLength");
       
   493 	
       
   494 	TInt status = KErrNone;
       
   495     TIpcArgs args1;
       
   496     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> length;
       
   497     TLex8 lex;
       
   498 
       
   499     args1.Set( 0, &length );
       
   500     status = SendReceive( EDeviceLock_PasscodeMaxLength_Get, args1 );
       
   501     
       
   502     if( status == KErrNone )
       
   503         {
       
   504         lex.Assign( length );
       
   505         status = lex.Val( aMinLength );
       
   506         }
       
   507         
       
   508     return status;
       
   509 	}
       
   510 
       
   511 
       
   512 // ----------------------------------------------------------------------------------------
       
   513 // RTerminalControlSession::SetPasscodeRequireUpperAndLower
       
   514 // ----------------------------------------------------------------------------------------
       
   515 EXPORT_C TInt RTerminalControlSession::SetPasscodeRequireUpperAndLower( TBool aRequire )
       
   516 	{
       
   517 	RDEBUG("RTerminalControlSession::SetPasscodeRequireUpperAndLower");
       
   518 	
       
   519 	TInt status = KErrNone;
       
   520     TIpcArgs args1;
       
   521     TInt value( aRequire );
       
   522     
       
   523     args1.Set( 0, value );
       
   524     status = SendReceive( EDeviceLock_PasscodeRequireUpperAndLower_Set, args1 );
       
   525        
       
   526     return status;
       
   527 	}
       
   528 
       
   529 // ----------------------------------------------------------------------------------------
       
   530 // RTerminalControlSession::GetPasscodeRequireUpperAndLower
       
   531 // ----------------------------------------------------------------------------------------
       
   532 EXPORT_C TInt RTerminalControlSession::GetPasscodeRequireUpperAndLower( TBool& aRequire )
       
   533 	{
       
   534 	RDEBUG("RTerminalControlSession::GetPasscodeRequireUpperAndLower");
       
   535 	
       
   536 	TInt status = KErrNone;
       
   537     TIpcArgs args1;
       
   538     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> length;
       
   539     TLex8 lex;
       
   540 
       
   541     args1.Set( 0, &length );
       
   542     status = SendReceive( EDeviceLock_PasscodeRequireUpperAndLower_Get, args1 );
       
   543     
       
   544     if( status == KErrNone )
       
   545         {
       
   546         lex.Assign( length );
       
   547         status = lex.Val( aRequire );
       
   548         }
       
   549         
       
   550     return status;
       
   551 	}
       
   552 
       
   553 
       
   554 
       
   555 // ----------------------------------------------------------------------------------------
       
   556 // RTerminalControlSession::SetPasscodeRequireCharsAndNumbers
       
   557 // ----------------------------------------------------------------------------------------
       
   558 EXPORT_C TInt RTerminalControlSession::SetPasscodeRequireCharsAndNumbers( TBool aRequire )
       
   559 	{
       
   560 	RDEBUG("RTerminalControlSession::SetPasscodeRequireCharsAndNumbers");
       
   561 	
       
   562 	TInt status = KErrNone;
       
   563     TIpcArgs args1;
       
   564     TInt value( aRequire );
       
   565     
       
   566     args1.Set( 0, value );
       
   567     status = SendReceive( EDeviceLock_PasscodeRequireCharsAndNumbers_Set, args1 );
       
   568        
       
   569     return status;
       
   570 	}
       
   571 
       
   572 // ----------------------------------------------------------------------------------------
       
   573 // RTerminalControlSession::GetPasscodeRequireCharsAndNumbers
       
   574 // ----------------------------------------------------------------------------------------
       
   575 EXPORT_C TInt RTerminalControlSession::GetPasscodeRequireCharsAndNumbers( TBool& aRequire )
       
   576 	{
       
   577 	RDEBUG("RTerminalControlSession::GetPasscodeRequireCharsAndNumbers");
       
   578 	
       
   579 	TInt status = KErrNone;
       
   580     TIpcArgs args1;
       
   581     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> req;
       
   582     TLex8 lex;
       
   583 
       
   584     args1.Set( 0, &req );
       
   585     status = SendReceive( EDeviceLock_PasscodeRequireCharsAndNumbers_Get, args1 );
       
   586     
       
   587     if( status == KErrNone )
       
   588         {
       
   589         lex.Assign( req );
       
   590         status = lex.Val( aRequire );
       
   591         }
       
   592         
       
   593     return status;
       
   594 	}
       
   595 
       
   596 
       
   597 
       
   598 // ----------------------------------------------------------------------------------------
       
   599 // RTerminalControlSession::SetPasscodeMaxRepeatedCharacters
       
   600 // ----------------------------------------------------------------------------------------
       
   601 EXPORT_C TInt RTerminalControlSession::SetPasscodeMaxRepeatedCharacters( TInt32 aMaxChars )
       
   602 	{
       
   603 	RDEBUG("RTerminalControlSession::SetPasscodeMaxRepeatedCharacters");
       
   604 	
       
   605 	TInt status = KErrNone;
       
   606     TIpcArgs args1;
       
   607     TInt value( aMaxChars );
       
   608     
       
   609     args1.Set( 0, value );
       
   610     status = SendReceive( EDeviceLock_PasscodeMaxRepeatedCharacters_Set, args1 );
       
   611        
       
   612     return status;
       
   613 	}
       
   614 
       
   615 // ----------------------------------------------------------------------------------------
       
   616 // RTerminalControlSession::GetPasscodeMaxRepeatedCharacters
       
   617 // ----------------------------------------------------------------------------------------
       
   618 EXPORT_C TInt RTerminalControlSession::GetPasscodeMaxRepeatedCharacters( TInt32& aMaxChars )
       
   619 	{
       
   620 	RDEBUG("RTerminalControlSession::GetPasscodeMaxRepeatedCharacters");
       
   621 	
       
   622 	TInt status = KErrNone;
       
   623     TIpcArgs args1;
       
   624     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> length;
       
   625     TLex8 lex;
       
   626 
       
   627     args1.Set( 0, &length );
       
   628     status = SendReceive( EDeviceLock_PasscodeMaxRepeatedCharacters_Get, args1 );
       
   629     
       
   630     if( status == KErrNone )
       
   631         {
       
   632         lex.Assign( length );
       
   633         status = lex.Val( aMaxChars );
       
   634         }
       
   635         
       
   636     return status;
       
   637 	}
       
   638 
       
   639 
       
   640 // ----------------------------------------------------------------------------------------
       
   641 // RTerminalControlSession::SetPasscodeHistoryBuffer
       
   642 // ----------------------------------------------------------------------------------------
       
   643 EXPORT_C TInt RTerminalControlSession::SetPasscodeHistoryBuffer( TInt32 aBufferLength )
       
   644 	{
       
   645 	RDEBUG("RTerminalControlSession::SetPasscodeHistoryBuffer");
       
   646 	
       
   647 	TInt status = KErrNone;
       
   648     TIpcArgs args1;
       
   649     TInt value( aBufferLength );
       
   650     
       
   651     args1.Set( 0, value );
       
   652     status = SendReceive( EDeviceLock_PasscodeHistoryBuffer_Set, args1 );
       
   653        
       
   654     return status;
       
   655 	}
       
   656 
       
   657 // ----------------------------------------------------------------------------------------
       
   658 // RTerminalControlSession::GetPasscodeHistoryBuffer
       
   659 // ----------------------------------------------------------------------------------------
       
   660 EXPORT_C TInt RTerminalControlSession::GetPasscodeHistoryBuffer( TInt32& aBufferLength )
       
   661 	{
       
   662 	RDEBUG("RTerminalControlSession::GetPasscodeHistoryBuffer");
       
   663 	
       
   664 	TInt status = KErrNone;
       
   665     TIpcArgs args1;
       
   666     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> length;
       
   667     TLex8 lex;
       
   668 
       
   669     args1.Set( 0, &length );
       
   670     status = SendReceive( EDeviceLock_PasscodeHistoryBuffer_Get, args1 );
       
   671     
       
   672     if( status == KErrNone )
       
   673         {
       
   674         lex.Assign( length );
       
   675         status = lex.Val( aBufferLength );
       
   676         }
       
   677         
       
   678     return status;
       
   679 	}
       
   680 
       
   681 
       
   682 // ----------------------------------------------------------------------------------------
       
   683 // RTerminalControlSession::SetPasscodeExpiration
       
   684 // ----------------------------------------------------------------------------------------
       
   685 EXPORT_C TInt RTerminalControlSession::SetPasscodeExpiration( TInt32 aExpiration )
       
   686 	{
       
   687 	RDEBUG("RTerminalControlSession::SetPasscodeExpiration");
       
   688 	
       
   689 	TInt status = KErrNone;
       
   690     TIpcArgs args1;
       
   691     TInt value( aExpiration );
       
   692     
       
   693     args1.Set( 0, value );
       
   694     status = SendReceive( EDeviceLock_PasscodeExpiration_Set, args1 );
       
   695        
       
   696     return status;
       
   697 	}
       
   698 
       
   699 // ----------------------------------------------------------------------------------------
       
   700 // RTerminalControlSession::GetPasscodeExpiration
       
   701 // ----------------------------------------------------------------------------------------
       
   702 EXPORT_C TInt RTerminalControlSession::GetPasscodeExpiration( TInt32& aExpiration )
       
   703 	{
       
   704 	RDEBUG("RTerminalControlSession::GetPasscodeExpiration");
       
   705 	
       
   706 	TInt status = KErrNone;
       
   707     TIpcArgs args1;
       
   708     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> length;
       
   709     TLex8 lex;
       
   710 
       
   711     args1.Set( 0, &length );
       
   712     status = SendReceive( EDeviceLock_PasscodeExpiration_Get, args1 );
       
   713     
       
   714     if( status == KErrNone )
       
   715         {
       
   716         lex.Assign( length );
       
   717         status = lex.Val( aExpiration );
       
   718         }
       
   719         
       
   720     return status;
       
   721 	}
       
   722 
       
   723 
       
   724 // ----------------------------------------------------------------------------------------
       
   725 // RTerminalControlSession::SetPasscodeMinChangeTolerance
       
   726 // ----------------------------------------------------------------------------------------
       
   727 EXPORT_C TInt RTerminalControlSession::SetPasscodeMinChangeTolerance( TInt32 aMinTolerance )
       
   728 	{
       
   729 	RDEBUG("RTerminalControlSession::SetPasscodeMinChangeTolerance");
       
   730 	
       
   731 	TInt status = KErrNone;
       
   732     TIpcArgs args1;
       
   733     TInt value( aMinTolerance );
       
   734     
       
   735     args1.Set( 0, value );
       
   736     status = SendReceive( EDeviceLock_PasscodeMinChangeTolerance_Set, args1 );
       
   737        
       
   738     return status;
       
   739 	}
       
   740 
       
   741 // ----------------------------------------------------------------------------------------
       
   742 // RTerminalControlSession::GetPasscodeMinChangeTolerance
       
   743 // ----------------------------------------------------------------------------------------
       
   744 EXPORT_C TInt RTerminalControlSession::GetPasscodeMinChangeTolerance( TInt32& aMinTolerance )
       
   745 	{
       
   746 	RDEBUG("RTerminalControlSession::GetPasscodeMinChangeTolerance");
       
   747 	
       
   748 	TInt status = KErrNone;
       
   749     TIpcArgs args1;
       
   750     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> length;
       
   751     TLex8 lex;
       
   752 
       
   753     args1.Set( 0, &length );
       
   754     status = SendReceive( EDeviceLock_PasscodeMinChangeTolerance_Get, args1 );
       
   755     
       
   756     if( status == KErrNone )
       
   757         {
       
   758         lex.Assign( length );
       
   759         status = lex.Val( aMinTolerance );
       
   760         }
       
   761         
       
   762     return status;
       
   763 	}
       
   764 
       
   765 // ----------------------------------------------------------------------------------------
       
   766 // RTerminalControlSession::SetPasscodeMinChangeInterval
       
   767 // ----------------------------------------------------------------------------------------
       
   768 EXPORT_C TInt RTerminalControlSession::SetPasscodeMinChangeInterval( TInt32 aMinInterval)
       
   769 	{
       
   770 	RDEBUG("RTerminalControlSession::SetPasscodeMinChangeInterval");
       
   771 	
       
   772 	TInt status = KErrNone;
       
   773     TIpcArgs args1;
       
   774     TInt value( aMinInterval );
       
   775     
       
   776     args1.Set( 0, value );
       
   777     status = SendReceive( EDeviceLock_PasscodeMinChangeInterval_Set, args1 );
       
   778        
       
   779     return status;
       
   780 	}
       
   781 
       
   782 // ----------------------------------------------------------------------------------------
       
   783 // RTerminalControlSession::GetPasscodeMinChangeInterval
       
   784 // ----------------------------------------------------------------------------------------
       
   785 EXPORT_C TInt RTerminalControlSession::GetPasscodeMinChangeInterval( TInt32& aMinInterval )
       
   786 	{
       
   787 	RDEBUG("RTerminalControlSession::GetPasscodeMinChangeInterval");
       
   788 	
       
   789     TInt status = KErrNone;
       
   790     TIpcArgs args1;
       
   791     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> length;
       
   792     TLex8 lex;
       
   793 
       
   794     args1.Set( 0, &length );
       
   795     status = SendReceive( EDeviceLock_PasscodeMinChangeInterval_Get, args1 );
       
   796     
       
   797     if( status == KErrNone )
       
   798         {
       
   799         lex.Assign( length );
       
   800         status = lex.Val( aMinInterval );
       
   801         }
       
   802         
       
   803     return status;
       
   804 	}
       
   805 
       
   806 
       
   807 // ----------------------------------------------------------------------------------------
       
   808 // RTerminalControlSession::SetPasscodeCheckSpecificStrings
       
   809 // ----------------------------------------------------------------------------------------
       
   810 EXPORT_C TInt RTerminalControlSession::SetPasscodeCheckSpecificStrings( TBool aCheckSpecificStrings )
       
   811 	{
       
   812 	RDEBUG("RTerminalControlSession::SetPasscodeCheckSpecificStrings");
       
   813 	
       
   814 	TInt status = KErrNone;
       
   815     TIpcArgs args1;
       
   816     TInt value( aCheckSpecificStrings );
       
   817     
       
   818     args1.Set( 0, value );
       
   819     status = SendReceive( EDeviceLock_PasscodeCheckSpecificStrings_Set, args1 );
       
   820        
       
   821     return status;
       
   822 	}
       
   823 
       
   824 // ----------------------------------------------------------------------------------------
       
   825 // RTerminalControlSession::GetPasscodeCheckSpecificStrings
       
   826 // ----------------------------------------------------------------------------------------
       
   827 EXPORT_C TInt RTerminalControlSession::GetPasscodeCheckSpecificStrings( TBool& aCheckSpecificStrings )
       
   828 	{
       
   829 	RDEBUG("RTerminalControlSession::GetPasscodeCheckSpecificStrings");
       
   830 	
       
   831 	TInt status = KErrNone;
       
   832     TIpcArgs args1;
       
   833     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> length;
       
   834     TLex8 lex;
       
   835 
       
   836     args1.Set( 0, &length );
       
   837     status = SendReceive( EDeviceLock_PasscodeCheckSpecificStrings_Get, args1 );
       
   838     
       
   839     if( status == KErrNone )
       
   840         {
       
   841         lex.Assign( length );
       
   842         status = lex.Val( aCheckSpecificStrings );
       
   843         }
       
   844         
       
   845     return status;
       
   846 	}
       
   847 
       
   848 
       
   849 // ----------------------------------------------------------------------------------------
       
   850 // RTerminalControlSession::DisallowSpecificPasscodeString
       
   851 // ----------------------------------------------------------------------------------------
       
   852 EXPORT_C TInt RTerminalControlSession::DisallowSpecificPasscodeString( const TDesC8 &aString )
       
   853 	{
       
   854 	RDEBUG("RTerminalControlSession::DisallowSpecificPasscodeString");
       
   855 	
       
   856 	TInt status = KErrNone;
       
   857     TIpcArgs args1;
       
   858 
       
   859     args1.Set( 0, &aString );
       
   860     status = SendReceive( EDeviceLock_PasscodeDisallowSpecific, args1 );
       
   861 
       
   862     return status;	
       
   863 	}
       
   864 
       
   865 
       
   866 // ----------------------------------------------------------------------------------------
       
   867 // RTerminalControlSession::AllowSpecificPasscodeString
       
   868 // ----------------------------------------------------------------------------------------
       
   869 EXPORT_C TInt RTerminalControlSession::AllowSpecificPasscodeString( const TDesC8 &aString )
       
   870 	{
       
   871 	RDEBUG("RTerminalControlSession::AllowSpecificPasscodeString");
       
   872 	
       
   873 	TInt status = KErrNone;
       
   874     TIpcArgs args1;
       
   875 
       
   876     args1.Set( 0,&aString );
       
   877     status = SendReceive( EDeviceLock_PasscodeAllowSpecific, args1 );
       
   878 
       
   879     return status;
       
   880 	}
       
   881 
       
   882 
       
   883 // ----------------------------------------------------------------------------------------
       
   884 // RTerminalControlSession::ClearSpecificPasscodeStrings
       
   885 // ----------------------------------------------------------------------------------------
       
   886 EXPORT_C TInt RTerminalControlSession::ClearSpecificPasscodeStrings()
       
   887 	{
       
   888 	RDEBUG("RTerminalControlSession::ClearSpecificPasscodeStrings");
       
   889 	
       
   890 	TInt status = KErrNone;
       
   891     TIpcArgs args1;
       
   892     
       
   893     status = SendReceive( EDeviceLock_PasscodeClearSpecificStrings, args1 );
       
   894        
       
   895     return status;
       
   896 	}
       
   897 
       
   898 
       
   899 // ----------------------------------------------------------------------------------------
       
   900 // RTerminalControlSession::SetPasscodeMaxAttempts
       
   901 // ----------------------------------------------------------------------------------------
       
   902 EXPORT_C TInt RTerminalControlSession::SetPasscodeMaxAttempts( TInt32 aMaxAttempts )
       
   903 	{
       
   904 	RDEBUG("RTerminalControlSession::SetPasscodeMaxAttempts");
       
   905 	
       
   906 	TInt status = KErrNone;
       
   907     TIpcArgs args1;
       
   908     TInt value( aMaxAttempts );
       
   909     
       
   910     args1.Set( 0, value );
       
   911     status = SendReceive( EDeviceLock_PasscodeMaxAttempts_Set, args1 );
       
   912        
       
   913     return status;
       
   914 	}
       
   915 
       
   916 // ----------------------------------------------------------------------------------------
       
   917 // RTerminalControlSession::GetPasscodeMaxAttempts
       
   918 // ----------------------------------------------------------------------------------------
       
   919 EXPORT_C TInt RTerminalControlSession::GetPasscodeMaxAttempts( TInt32& aMaxAttempts )
       
   920 	{
       
   921 	RDEBUG("RTerminalControlSession::GetPasscodeMaxAttempts");
       
   922 	
       
   923 	TInt status = KErrNone;
       
   924     TIpcArgs args1;
       
   925     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> length;
       
   926     TLex8 lex;
       
   927 
       
   928     args1.Set( 0, &length );
       
   929     status = SendReceive( EDeviceLock_PasscodeMaxAttempts_Get, args1 );
       
   930     
       
   931     if( status == KErrNone )
       
   932         {
       
   933         lex.Assign( length );
       
   934         status = lex.Val( aMaxAttempts );
       
   935         }
       
   936         
       
   937     return status;
       
   938 	}
       
   939 
       
   940 
       
   941 
       
   942 
       
   943 EXPORT_C TInt RTerminalControlSession::SetPasscodeConsecutiveNumbers( TBool aConsecutiveNumbers )
       
   944 	{
       
   945 	RDEBUG("RTerminalControlSession::SetPasscodeConsecutiveNumbers");
       
   946 	
       
   947 	TInt status = KErrNone;
       
   948     TIpcArgs args1;
       
   949     TInt value( aConsecutiveNumbers );
       
   950     
       
   951     args1.Set( 0, value );
       
   952     status = SendReceive( EDeviceLock_PasscodeConsecutiveNumbers_Set, args1 );
       
   953        
       
   954     return status;
       
   955 	}
       
   956 
       
   957 
       
   958 EXPORT_C TInt RTerminalControlSession::GetPasscodeConsecutiveNumbers( TBool& aConsecutiveNumbers )
       
   959 	{
       
   960 	RDEBUG("RTerminalControlSession::GetPasscodeConsecutiveNumbers");
       
   961 	
       
   962 	TInt status = KErrNone;
       
   963     TIpcArgs args1;
       
   964     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> length;
       
   965     TLex8 lex;
       
   966 
       
   967     args1.Set( 0, &length );
       
   968     status = SendReceive( EDeviceLock_PasscodeConsecutiveNumbers_Get, args1 );
       
   969     
       
   970     if( status == KErrNone )
       
   971         {
       
   972         lex.Assign( length );
       
   973         status = lex.Val( aConsecutiveNumbers );
       
   974         }
       
   975         
       
   976     return status;
       
   977 	}
       
   978 		
       
   979 // ----------------------------------------------------------------------------------------
       
   980 // RTerminalControlSession::SetPasscodeMinSpecialCharacters
       
   981 // ----------------------------------------------------------------------------------------
       
   982 EXPORT_C TInt RTerminalControlSession::SetPasscodeMinSpecialCharacters( TInt32 aMinChars )
       
   983     {
       
   984     RDEBUG("RTerminalControlSession::SetPasscodeMinSpecialCharacters");
       
   985     
       
   986     TInt status = KErrNone;
       
   987     TIpcArgs args1;
       
   988     TInt value( aMinChars );
       
   989     
       
   990     args1.Set( 0, value );
       
   991     status = SendReceive( EDeviceLock_PasscodeMinSpecialCharacters_Set, args1 );
       
   992        
       
   993     return status;
       
   994     }
       
   995 
       
   996 // ----------------------------------------------------------------------------------------
       
   997 // RTerminalControlSession::GetPasscodeMinSpecialCharacters
       
   998 // ----------------------------------------------------------------------------------------
       
   999 EXPORT_C TInt RTerminalControlSession::GetPasscodeMinSpecialCharacters( TInt32& aMinChars )
       
  1000     {
       
  1001     RDEBUG("RTerminalControlSession::GetPasscodeMinSpecialCharacters");
       
  1002     
       
  1003     TInt status = KErrNone;
       
  1004     TIpcArgs args1;
       
  1005     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> length;
       
  1006     TLex8 lex;
       
  1007 
       
  1008     args1.Set( 0, &length );
       
  1009     status = SendReceive( EDeviceLock_PasscodeMinSpecialCharacters_Get, args1 );
       
  1010     
       
  1011     if( status == KErrNone )
       
  1012         {
       
  1013         lex.Assign( length );
       
  1014         status = lex.Val( aMinChars );
       
  1015         }
       
  1016         
       
  1017     return status;
       
  1018     }
       
  1019 		
       
  1020 EXPORT_C TInt RTerminalControlSession::SetPasscodeDisallowSimple( TBool aDisallowSimple )
       
  1021     {
       
  1022     RDEBUG("RTerminalControlSession::SetPasscodeDisallowSimple");
       
  1023     TInt status = KErrNone;
       
  1024     TIpcArgs args1;
       
  1025     TInt value( aDisallowSimple );
       
  1026     args1.Set( 0, value );
       
  1027     status = SendReceive( EDeviceLock_PasscodeDisallowSimple_Set, args1 );
       
  1028     return status;
       
  1029     }
       
  1030 
       
  1031 EXPORT_C TInt RTerminalControlSession::GetPasscodeDisallowSimple( TBool& aDisallowSimple )
       
  1032     {
       
  1033     RDEBUG("RTerminalControlSession::GetPasscodeDisallowSimple");
       
  1034     TInt status = KErrNone;
       
  1035     TIpcArgs args1;
       
  1036     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> length;
       
  1037     TLex8 lex;
       
  1038     args1.Set( 0, &length );
       
  1039     status = SendReceive( EDeviceLock_PasscodeDisallowSimple_Get, args1 );
       
  1040     if( status == KErrNone )
       
  1041         {
       
  1042         lex.Assign( length );
       
  1043         status = lex.Val( aDisallowSimple );
       
  1044         }
       
  1045     return status;
       
  1046     }
       
  1047 
       
  1048 //#endif
       
  1049 // --------- Enhanced features END --------------------
       
  1050 
       
  1051 
       
  1052 
       
  1053 // ----------------------------------------------------------------------------------------
       
  1054 // RTerminalControlSession::GetProcessListL
       
  1055 // ----------------------------------------------------------------------------------------
       
  1056 EXPORT_C TInt RTerminalControlSession::GetProcessListL( CBufFlat* aBuffer )
       
  1057     {
       
  1058     RDEBUG("RTerminalControlSession::GetProcessListL");
       
  1059     
       
  1060     User::LeaveIfError((aBuffer == NULL?KErrGeneral:KErrNone));
       
  1061 
       
  1062 	TInt        status = KErrNone;
       
  1063 	TInt        size = 0;
       
  1064 
       
  1065 	status = GetProcessListSize(size);
       
  1066 
       
  1067 	// Resize client buffer (or handle out of memory)
       
  1068 	aBuffer->ResizeL( size );
       
  1069 
       
  1070     //
       
  1071     // If we get size, we can create object to transfer results
       
  1072     //
       
  1073 	if ( status == KErrNone )
       
  1074 		{
       
  1075 		// We're using out own data buffer for data transfer from server
       
  1076 		if( size > 0 ) // size == 0 is not possible if everything works ok
       
  1077 		    {
       
  1078     		HBufC8 *buf = HBufC8::NewLC( size );
       
  1079             TPtr8 ptr(buf->Des());    	
       
  1080 
       
  1081             TIpcArgs args1;
       
  1082             args1.Set(0, &ptr);
       
  1083     		status = SendReceive( EProcesses, args1 );
       
  1084 
       
  1085     		if ( status == KErrNone )
       
  1086     			{			
       
  1087                 aBuffer->Write(0, ptr);
       
  1088     			}
       
  1089     		else
       
  1090     			{
       
  1091     			RDEBUG_2("TerminalControlServer: GetProcessListL failed... %d", status);
       
  1092     			}
       
  1093 
       
  1094     		CleanupStack::PopAndDestroy( buf );
       
  1095 		    }
       
  1096 		else
       
  1097 		    {
       
  1098 		    // Do nothing
       
  1099 		    }
       
  1100 		}
       
  1101 	else
       
  1102 		{
       
  1103 		RDEBUG_2("TerminalControlServer: GetProcessListL failed... %d", status);
       
  1104 		}
       
  1105 
       
  1106 	return status;
       
  1107     }
       
  1108 
       
  1109 // ----------------------------------------------------------------------------------------
       
  1110 // RTerminalControlSession::GetProcessListSizeL
       
  1111 // ----------------------------------------------------------------------------------------
       
  1112 EXPORT_C TInt RTerminalControlSession::GetProcessListSize( TInt &aSize )
       
  1113     {
       
  1114     RDEBUG("RTerminalControlSession::GetProcessListSize");
       
  1115     
       
  1116 	TInt        status = KErrNone;
       
  1117     TIpcArgs    args1;
       
  1118 	TInt        size = 0;
       
  1119     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> sizeBuf;
       
  1120     TLex8       lex;
       
  1121     
       
  1122     //
       
  1123     // Get size of file scan from the server
       
  1124     //
       
  1125     GetProcessListSize(sizeBuf);
       
  1126 
       
  1127 	lex.Assign(sizeBuf);
       
  1128 	TInt err = lex.Val(size);
       
  1129 	if( err != KErrNone )
       
  1130 		{
       
  1131 		return err;
       
  1132 		}
       
  1133 
       
  1134 	aSize = size;
       
  1135     
       
  1136     return status;
       
  1137     }
       
  1138 
       
  1139 // ----------------------------------------------------------------------------------------
       
  1140 // RTerminalControlSession::GetProcessListSizeL
       
  1141 // ----------------------------------------------------------------------------------------
       
  1142 EXPORT_C TInt RTerminalControlSession::GetProcessListSize( TDes8& aSizeBuf )
       
  1143     {
       
  1144     RDEBUG("RTerminalControlSession::GetProcessListSize");
       
  1145     
       
  1146 	TInt        status = KErrNone;
       
  1147     TIpcArgs    args1;    
       
  1148     
       
  1149     //
       
  1150     // Get size of file scan from the server
       
  1151     //
       
  1152     args1.Set(0, &aSizeBuf);
       
  1153     status = SendReceive( EProcessesSize, args1 );
       
  1154     
       
  1155     return status;
       
  1156     }
       
  1157 
       
  1158 // ----------------------------------------------------------------------------------------
       
  1159 // RTerminalControlSession::GetProcessDataL
       
  1160 // ----------------------------------------------------------------------------------------
       
  1161 EXPORT_C TInt RTerminalControlSession::GetProcessDataL(
       
  1162                     CBufFlat* aBuffer, const TDesC8& aProcessName, const TDesC8 &aData )
       
  1163     {
       
  1164     RDEBUG("RTerminalControlSession::GetProcessDataL");
       
  1165     
       
  1166     User::LeaveIfError((aBuffer == NULL?KErrGeneral:KErrNone));
       
  1167 
       
  1168 	TInt       status = KErrNone;    
       
  1169     TIpcArgs   args1;
       
  1170     TFileName8 results;
       
  1171 
       
  1172     args1.Set(0, &aProcessName);
       
  1173     args1.Set(1, &aData);
       
  1174     args1.Set(2, &results);
       
  1175 
       
  1176     status = SendReceive( EProcessData, args1 );
       
  1177     
       
  1178     aBuffer->InsertL(0, results);
       
  1179 
       
  1180     return status;
       
  1181     }
       
  1182 
       
  1183 // ----------------------------------------------------------------------------------------
       
  1184 // RTerminalControlSession::RebootDevice
       
  1185 // ----------------------------------------------------------------------------------------
       
  1186 EXPORT_C TInt RTerminalControlSession::RebootDevice( TBool aRestartDevice/*=ETrue*/ )
       
  1187     {
       
  1188     RDEBUG("RTerminalControlSession::RebootDevice");
       
  1189     
       
  1190     TIpcArgs   args1;    
       
  1191     args1.Set(0, aRestartDevice);
       
  1192     
       
  1193     return SendReceive( EReboot, args1 );
       
  1194     }
       
  1195 
       
  1196 // ----------------------------------------------------------------------------------------
       
  1197 // RTerminalControlSession::StartNewProcess
       
  1198 // ----------------------------------------------------------------------------------------
       
  1199 EXPORT_C TInt RTerminalControlSession::StartNewProcess( TBool aIsUid, const TDesC8& aProcessName )
       
  1200     {
       
  1201     RDEBUG("RTerminalControlSession::StartNewProcess");
       
  1202     
       
  1203 	TInt       status = KErrNone;
       
  1204     TIpcArgs   args1;
       
  1205     
       
  1206     args1.Set(0, &aProcessName);
       
  1207     args1.Set(1, aIsUid?1:0);
       
  1208     
       
  1209     status = SendReceive( ELocalOperation_Start, args1 );
       
  1210                
       
  1211     return status;
       
  1212     }
       
  1213 
       
  1214 // ----------------------------------------------------------------------------------------
       
  1215 // RTerminalControlSession::StopProcess
       
  1216 // ----------------------------------------------------------------------------------------
       
  1217 EXPORT_C TInt RTerminalControlSession::StopProcess( TBool aIsUid, const TDesC8& aProcessName )
       
  1218     {
       
  1219     RDEBUG("RTerminalControlSession::StopProcess");
       
  1220     
       
  1221 	TInt       status = KErrNone;
       
  1222     TIpcArgs   args1;
       
  1223     
       
  1224     args1.Set(0, &aProcessName);
       
  1225     args1.Set(1, aIsUid?1:0);
       
  1226     
       
  1227     status = SendReceive( ELocalOperation_Stop, args1 );
       
  1228                
       
  1229     return status;
       
  1230     }
       
  1231 
       
  1232 // ----------------------------------------------------------------------------------------
       
  1233 // RTerminalControl3rdPartySession::Open()
       
  1234 // ----------------------------------------------------------------------------------------
       
  1235 EXPORT_C TInt RTerminalControl3rdPartySession::Open(RTerminalControl &aServer)
       
  1236     {
       
  1237     RDEBUG("RTerminalControl3rdPartySession::Open");
       
  1238     
       
  1239     TIpcArgs args1;
       
  1240     TPtr8 argument0(0, 0);
       
  1241     args1.Set(0, &argument0);
       
  1242 
       
  1243 	return CreateSubSession(aServer, ECreateSubSession, args1);
       
  1244     }
       
  1245 
       
  1246 // ----------------------------------------------------------------------------------------
       
  1247 // RTerminalControl3rdPartySession::Close()
       
  1248 // ----------------------------------------------------------------------------------------
       
  1249 EXPORT_C void RTerminalControl3rdPartySession::Close()
       
  1250     {
       
  1251     RDEBUG("RTerminalControl3rdPartySession::Close");
       
  1252     
       
  1253 	RSubSessionBase::CloseSubSession(ECloseSubSession);    
       
  1254     }
       
  1255 
       
  1256 // ----------------------------------------------------------------------------------------
       
  1257 // RTerminalControl3rdPartySession::SetDeviceLockParameter()
       
  1258 // ----------------------------------------------------------------------------------------
       
  1259 EXPORT_C TInt RTerminalControl3rdPartySession::SetDeviceLockParameter(TInt aType, const TDesC8& aData)
       
  1260     {
       
  1261     RDEBUG("RTerminalControl3rdPartySession::SetDeviceLockParameter");
       
  1262     
       
  1263     TIpcArgs args1;
       
  1264 
       
  1265     args1.Set(0, aType);
       
  1266     args1.Set(1, &aData);
       
  1267 
       
  1268     return SendReceive( E3rdPartySetterSet, args1 );
       
  1269     }
       
  1270 
       
  1271 // ----------------------------------------------------------------------------------------
       
  1272 // RTerminalControl3rdPartySession::GetDeviceLockParameterSize()
       
  1273 // ----------------------------------------------------------------------------------------
       
  1274 EXPORT_C TInt RTerminalControl3rdPartySession::GetDeviceLockParameterSize(TInt aType)
       
  1275     {
       
  1276     RDEBUG("RTerminalControl3rdPartySession::GetDeviceLockParameterSize");
       
  1277     
       
  1278     TIpcArgs args1;
       
  1279     TBuf8<MAX_NUMBER_OF_DIGITS_IN_10BASE_INT64> sizeBuf;
       
  1280 
       
  1281     args1.Set(0, aType);
       
  1282     args1.Set(1, &sizeBuf);
       
  1283 
       
  1284     TInt status = SendReceive( E3rdPartySetterGetSize, args1 );
       
  1285 
       
  1286     if( status == KErrNone )
       
  1287         {
       
  1288         TLex8 lex;
       
  1289         TInt size;
       
  1290         
       
  1291         lex.Assign( sizeBuf );
       
  1292         if ( KErrNone == (lex.Val( size ) ) && (size > 0) )
       
  1293             {
       
  1294             return size;
       
  1295             }
       
  1296             
       
  1297         status = KErrGeneral;
       
  1298         // Flow to error
       
  1299         }
       
  1300 
       
  1301     // Error:
       
  1302     return status;
       
  1303     }
       
  1304 
       
  1305 // ----------------------------------------------------------------------------------------
       
  1306 // RTerminalControl3rdPartySession::GetDeviceLockParameter()
       
  1307 // ----------------------------------------------------------------------------------------
       
  1308 EXPORT_C TInt RTerminalControl3rdPartySession::GetDeviceLockParameter(TInt aType, TDes8& aData)
       
  1309     {
       
  1310     RDEBUG("RTerminalControl3rdPartySession::GetDeviceLockParameter");
       
  1311     
       
  1312     TIpcArgs args1;
       
  1313 
       
  1314     args1.Set(0, aType);
       
  1315     args1.Set(1, &aData);
       
  1316 
       
  1317     return SendReceive( E3rdPartySetterGet, args1 );
       
  1318     }
       
  1319 
       
  1320