diff -r 000000000000 -r 164170e6151a wim/WimClient/src/WimMgmt.cpp --- /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 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 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 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 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 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 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( 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 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& 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& 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( aPinStateRequest ); + iPinStateRequestBufAllocated = ETrue; + + iPinParamsBuf = new( ELeave ) + CWimCertPckgBuf( 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( 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