wim/WimClient/src/WimMgmt.cpp
changeset 0 164170e6151a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wim/WimClient/src/WimMgmt.cpp	Tue Jan 26 15:20:08 2010 +0200
@@ -0,0 +1,514 @@
+/*
+* Copyright (c) 2002 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:  Startup place for client & server, message handling.
+*
+*/
+
+
+//INCLUDES
+#include "WimMgmt.h"
+#include "WimTrace.h"
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::RWimMgmt()
+// Default constructor
+// -----------------------------------------------------------------------------
+//
+RWimMgmt::RWimMgmt()
+    {
+    _WIMTRACE ( _L( "RWimMgmt::RWimMgmt()" ) );
+    iPinStateRequestBufAllocated = EFalse;
+    iPinParamsBufAllocated = EFalse;
+    iPinInfoLstPtr = NULL;
+    iPinModule = NULL;
+    }
+
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::~RWimMgmt()
+// Destructor
+// -----------------------------------------------------------------------------
+//
+RWimMgmt::~RWimMgmt()
+    {
+    _WIMTRACE ( _L( "RWimMgmt::~RWimMgmt()" ) );
+    delete iPinInfoLstPtr;
+    delete iPinModule;
+    }
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::WIMCount()
+// Returns  TUint - the number of WIMs
+// -----------------------------------------------------------------------------
+//
+TUint RWimMgmt::WIMCount()
+    {
+    _WIMTRACE ( _L( "RWimMgmt::WIMCount()" ) );
+
+    TPckgBuf<TUint> pckg;
+
+    TIpcArgs args;
+    args.Set( 0, &pckg );
+    
+    if ( SendReceiveData( EGetWIMCount, args ) == KErrNone )
+        {
+        return pckg();
+        }
+    else
+        {
+        return 0;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::IsOpen()
+// Tests whether WIM is open or not.
+// -----------------------------------------------------------------------------
+//
+TBool RWimMgmt::IsOpen( const TWimAddress aWimAddr )
+    {
+    _WIMTRACE ( _L( "RWimMgmt::IsOpen()" ) );
+
+    TPckgBuf<TBool> pckg;
+    
+    TIpcArgs args;
+    args.Set( 0, aWimAddr );
+    args.Set( 1, &pckg );
+    
+    SendReceiveData( EIsWIMOpen, args );
+    
+    return pckg();
+    }
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::CloseWIM()
+// Closes the WIM and returns the status of the WIMI_CloseWIM()
+// -----------------------------------------------------------------------------
+//
+TInt RWimMgmt::CloseWIM( const TWimAddress aWimAddr )
+    {
+    _WIMTRACE ( _L( "RWimMgmt::CloseWIM()" ) );
+
+    TIpcArgs args;
+    args.Set( 0, aWimAddr );
+    
+    return SendReceiveData( EWIMClose, args );
+    }
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::CloseAfter()
+// Returns the time which is set as WIM closeout time
+// -----------------------------------------------------------------------------
+//
+TInt RWimMgmt::CloseAfter()
+    {
+    _WIMTRACE ( _L( "RWimMgmt::CloseAfter()" ) );
+
+    TPckgBuf<TInt> pckg;
+    
+    TIpcArgs args;
+    args.Set( 0, &pckg );
+    
+    if ( SendReceiveData( EGetCloseWIMAfter, args ) == KErrNone )
+        {
+        return pckg();
+        }
+    else
+        {
+        return 0;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::CloseAfter()
+// Returns TUint - the timeout in minutes, which tells how long 
+// WIM Security Module will be open
+// -----------------------------------------------------------------------------
+//
+TInt RWimMgmt::TimeRemaining()
+    {
+    _WIMTRACE ( _L( "RWimMgmt::TimeRemaining()" ) );
+
+    TPckgBuf<TInt> pckg;
+    
+    TIpcArgs args;
+    args.Set( 0, &pckg );
+      
+    if ( SendReceiveData( EWimTimeRemaining, args ) == KErrNone )
+        {
+        return pckg();
+        }
+    else
+        {
+        return 0;
+        }
+    }
+// -----------------------------------------------------------------------------
+// RWimMgmt::SetCloseAfter()
+// Sets closing time for WIM.
+// -----------------------------------------------------------------------------
+//
+void RWimMgmt::SetCloseAfter( const TUint aCloseAfter )
+    {
+    _WIMTRACE ( _L( "RWimMgmt::SetCloseAfter()" ) );
+    
+    TIpcArgs args;
+    args.Set( 0, aCloseAfter );
+    
+    SendReceiveData( ECloseWIMAfter, args );
+    }
+
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::WIMRefs()
+// Gets the array of WIM structures. aCount is the number of WIMs
+// -----------------------------------------------------------------------------
+//
+TInt RWimMgmt::WIMRefs( TWimAddressList aWimAddrLst, TUint8 aCount )
+    {
+    _WIMTRACE ( _L( "RWimMgmt::WIMRefs()" ) );
+
+    TInt length = ( TInt )( aCount * sizeof( TWimAddress ) );
+    TPtr8 pt( ( TUint8* )aWimAddrLst, length, length );
+    
+    TIpcArgs args;
+    args.Set( 0, &pt );
+    
+    return SendReceiveData( EGetWIMRefs, args );
+    }
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::WIMInfo()
+// Gets the WIM information in to aTWimSecModuleStruct
+// -----------------------------------------------------------------------------
+//
+TInt RWimMgmt::WIMInfo( const TWimAddress aWimAddr, 
+                        TWimSecModuleStruct& aTWimSecModuleStruct )
+    {
+    _WIMTRACE ( _L( "RWimMgmt::WIMInfo()" ) );
+
+    TPckg<TWimSecModuleStruct> wimModule( aTWimSecModuleStruct );
+    
+    TIpcArgs args;
+    args.Set( 0, aWimAddr );
+    args.Set( 1, &wimModule );
+    
+    return SendReceiveData( EGetWIMInfo, args );
+    }
+
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::PINCount()
+// Returns  TUint - the number of PINs
+// -----------------------------------------------------------------------------
+//
+TUint RWimMgmt::PINCount( const TWimAddress aWimAddr )
+    {
+    _WIMTRACE ( _L( "RWimMgmt::PINCount()" ) );
+
+    TPckgBuf<TUint> pckg;
+ 
+    TIpcArgs args;
+    args.Set( 0, aWimAddr );
+    args.Set( 1, &pckg );
+
+    if ( SendReceiveData( EGetPINCount, args ) == KErrNone )
+        {
+        return pckg();
+        }
+    else
+        {
+        return 0;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::IsBlocked()
+// Checks is PIN blocked or not.
+// -----------------------------------------------------------------------------
+//
+TInt RWimMgmt::IsBlocked( const TPinAddress aPinAddr )
+    {
+    _WIMTRACE ( _L( "RWimMgmt::IsBlocked()" ) );
+    
+    TIpcArgs args;
+    args.Set( 0, aPinAddr );
+
+    return SendReceiveData( EIsPinBlocked, args );
+    }
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::IsDisabledPINBlocked()
+// Checks is PIN blocked or not.
+// -----------------------------------------------------------------------------
+//
+TInt RWimMgmt::IsDisabledPINBlocked( const TPinAddress aPinAddr )
+    {
+    _WIMTRACE ( _L( "RWimMgmt::IsDisabledPINBlocked()" ) );
+    
+    TIpcArgs args;
+    args.Set( 0, aPinAddr );
+    
+    return SendReceiveData( EIsDisabledPinBlocked, args );
+    }
+
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::PINInfo()
+// Gets the PIN information in to rPinStruct
+// -----------------------------------------------------------------------------
+//
+void RWimMgmt::PINInfo( const TPinAddress aPinAddr, 
+                        TWimPinStruct& aPinStruct,
+                        TRequestStatus& aStatus )
+    {
+    _WIMTRACE ( _L( "RWimMgmt::PINInfo()" ) );
+    
+    if( iPinModule != NULL )
+    {
+    delete iPinModule;
+    iPinModule = NULL; 	
+    }
+    
+    iPinModule = new TPckg<TWimPinStruct>( aPinStruct );
+    
+    TIpcArgs args;
+    args.Set( 0, aPinAddr );
+    args.Set( 1, iPinModule );
+  
+    SendReceiveData( EGetPINInfo, args, aStatus );
+    }
+
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::PINRefs()
+// Gets the array of PIN structures.
+// -----------------------------------------------------------------------------
+//
+TInt RWimMgmt::PINRefs( const TWimAddress aWimAddr, 
+                        TUint32& aPinLstAddr, 
+                        TPinAddressList aPinAddrLst, 
+                        TUint8 aCount )
+    {
+    _WIMTRACE ( _L( "RWimMgmt::PINRefs()" ) );
+    TInt status = 0;
+
+    TInt16 length = ( TInt16 ) ( aCount * sizeof( TWimAddress ) );
+    TPtr8 pt( ( TUint8* ) aPinAddrLst, length, length );
+    TPckgBuf<TUint32> lstAddr;
+    
+    TIpcArgs args;
+    args.Set( 0, aWimAddr );
+    args.Set( 1, &lstAddr );
+    args.Set( 2, &pt );
+    
+    status = SendReceiveData( EGetPINRefs, args );
+    
+    if ( status == KErrNone )
+        {
+        aPinLstAddr = lstAddr();
+        }
+    else
+        {
+        aPinLstAddr = NULL;
+        }
+        
+    return status;
+    }
+    
+    
+// -----------------------------------------------------------------------------
+// RWimMgmt::PINsInfo() Asynchronous
+// Initialize elements in PinNR array
+// -----------------------------------------------------------------------------
+//    
+void RWimMgmt::PINsInfo( const TWimAddress aWimAddr, 
+               CArrayFixFlat<TWimPinStruct>& aPinInfoLst,
+               TUint8 aCount,
+               TRequestStatus& aStatus )
+  {
+   _WIMTRACE ( _L( "RWimMgmt::PINsInfo()" ) );
+   TInt16 length = ( TInt16 ) ( aCount * sizeof( TWimPinStruct ) );
+    
+   if( iPinInfoLstPtr == NULL )
+	  {
+	  iPinInfoLstPtr = new TPtr8( (TText8*)&aPinInfoLst[0],length, length ); 
+	  }
+   else
+      {
+      iPinInfoLstPtr->Set( (TText8*)&aPinInfoLst[0], length, length );
+      } 
+  
+   TIpcArgs args;
+   args.Set( 0, aWimAddr );
+   args.Set( 1, iPinInfoLstPtr );
+   args.Set( 2, aCount );
+    
+   aStatus = KRequestPending;
+   SendReceiveData( EGetPINsInfo, args, aStatus );         	
+   }
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::PINsInfo() Synchronous
+// Initialize elements in PinNR array
+// -----------------------------------------------------------------------------
+// 
+TInt RWimMgmt::PINsInfo( const TWimAddress aWimAddr, 
+               CArrayFixFlat<TWimPinStruct>& aPinInfoLst,
+               TUint8 aCount )
+  {
+  _WIMTRACE ( _L( "RWimMgmt::PINsInfo() synchronous" ) );
+    
+  TInt16 length = ( TInt16 ) ( aCount * sizeof( TWimPinStruct ) );
+    
+  if( iPinInfoLstPtr == NULL )
+	  {
+	  iPinInfoLstPtr = new TPtr8( (TText8*)&aPinInfoLst[0],length,length );	
+	  }
+  else
+      {
+      iPinInfoLstPtr->Set( (TText8*)&aPinInfoLst[0], length, length );	
+      }  
+   
+   TIpcArgs args;
+   args.Set( 0, aWimAddr );
+   args.Set( 1, iPinInfoLstPtr );
+   args.Set( 2, aCount );
+    
+   return SendReceiveData( EGetPINsInfo, args );
+        	
+   }
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::EnableDisablePinQueryL()
+// Handles Enable and Disable PIN requests. Server
+// knows wanted operation by flag which is set in TPINStateRequest.
+// -----------------------------------------------------------------------------
+//
+void RWimMgmt::EnableDisablePinQueryL( const TPinAddress aPinAddr, 
+                                       const TPINStateRequest& aPinStateRequest,
+                                       const TPINParams& aPinParams,
+                                       TRequestStatus& aStatus )
+    {
+    _WIMTRACE ( _L( "RWimMgmt::EnableDisablePinQuery()" ) );
+
+    iPinStateRequestBuf = new( ELeave )  
+        CWimCertPckgBuf<TPINStateRequest>( aPinStateRequest );
+    iPinStateRequestBufAllocated = ETrue;
+        
+    iPinParamsBuf = new( ELeave )  
+        CWimCertPckgBuf<TPINParams>( aPinParams );
+    iPinParamsBufAllocated = ETrue;
+
+    TIpcArgs args;
+    args.Set( 0, aPinAddr );
+    args.Set( 1, iPinStateRequestBuf->PckgBuf() );
+    args.Set( 2, iPinParamsBuf->PckgBuf() );
+
+    aStatus = KRequestPending;
+    SendReceiveData( EEnablePINReq, args, aStatus );
+    }
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::CancelEnableDisablePinQueryL()
+// Cancel Enable and Disable PIN requests. Server
+// knows wanted operation by flag which is set in TPINStateRequest.
+// -----------------------------------------------------------------------------
+//
+void RWimMgmt::CancelEnableDisablePin( const TPinAddress aPinAddr )
+    {
+    _WIMTRACE ( _L( "RWimMgmt::CancelEnableDisablePinQuery()" ) );
+    TIpcArgs args;
+    args.Set( 0, aPinAddr );
+    SendReceiveData( ECancelEnablePin, args );
+    }
+
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::DeallocMemoryFromEnableDisablePinQuery()
+// Deallocates memory from pckgBuf member variables
+// -----------------------------------------------------------------------------
+//
+void RWimMgmt::DeallocMemoryFromEnableDisablePinQuery()
+    {
+    _WIMTRACE ( _L( "RWimMgmt::DeallocMemoryFromEnableDisablePinQuery()" ) );
+
+    if ( iPinStateRequestBufAllocated )
+        {
+        delete iPinStateRequestBuf;
+        iPinStateRequestBuf = NULL;
+        iPinStateRequestBufAllocated = EFalse;
+        }
+    if ( iPinParamsBufAllocated )
+        {
+        delete iPinParamsBuf;
+        iPinParamsBuf = NULL;
+        iPinParamsBufAllocated = EFalse;
+        }
+    }
+
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::PinOperationL()
+// PinOperationL handles several PIN operations: it can be
+// verify PIN request, change PIN request or unblock PIN request. The 
+// type of request is handled via aOpCode.
+// -----------------------------------------------------------------------------
+//
+void RWimMgmt::PinOperationL( const TPinAddress aPinAddr,
+                              const TPINParams aPinParams,
+                              const TWimServRqst aOpCode,
+                              TRequestStatus& aStatus )
+    {
+    _WIMTRACE ( _L( "RWimMgmt::PinOperationL" ) );
+
+    iPinParamsBuf = new( ELeave ) CWimCertPckgBuf<TPINParams>( aPinParams );
+    iPinParamsBufAllocated = ETrue;
+
+    TIpcArgs args;
+    args.Set( 0, aPinAddr );
+    args.Set( 1, iPinParamsBuf->PckgBuf() );
+    
+    aStatus = KRequestPending;
+    SendReceiveData( aOpCode, args, aStatus );
+    }
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::CancelPinOperationL()
+// PinOperationL handles several PIN operations: it can be
+// verify PIN request, change PIN request or unblock PIN request. The 
+// type of request is handled via aOpCode.
+// -----------------------------------------------------------------------------
+//
+void RWimMgmt::CancelPinOperation( const TPinAddress aPinAddr,
+                                   const TWimServRqst aOpCode )
+    {
+    _WIMTRACE ( _L( "RWimMgmt::CancelPinOperation" ) );
+    TIpcArgs args;
+    args.Set( 0, aPinAddr );
+    SendReceiveData( aOpCode, args );
+    }
+
+// -----------------------------------------------------------------------------
+// RWimMgmt::ClientSessionL()
+// Returns new RWimMgmt object
+// -----------------------------------------------------------------------------
+//
+RWimMgmt* RWimMgmt::ClientSessionL()
+    {
+    _WIMTRACE ( _L( "RWimMgmt::ClientSessionL()" ) );
+    return new( ELeave ) RWimMgmt();
+    }
+
+// End of File