diff -r 000000000000 -r 14df0fbfcc4e sapi_sysinfo/inc/sysinfointerface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sapi_sysinfo/inc/sysinfointerface.h Mon Mar 30 12:51:10 2009 +0300 @@ -0,0 +1,319 @@ +/* +* Copyright (c) 2005-2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: CSysInfoInterface class +* +*/ + + +#ifndef __SYSINFOINTERFACE_H__ +#define __SYSINFOINTERFACE_H__ + +const TInt KMaxErrMsg = 1024; + +//INCLUDES +#include +#include +#include + +#include "sysinfoservice.h" +//FORWARD DECLARATION +class CSysInfoObserver; +class CSysInfoCallbackMap; +/** +* CSysInfoInterface +* This class inherits from MAiwInterface and implements the +* ExecuteCmdL( const TDesC8& aCmdName, +* const CLiwGenericParamList& aInParamList, +* CLiwGenericParamList& aOutParamList, TUint aCmdOptions = 0, +* MLiwNotifyCallback* aCallback = 0) and +* Close() functions. The member functions of this class parses the input parameters, +* constructs proper structures and calls the corresponding service class functions +* based on the input arguments. +*/ +// CLASS DECLARATION +NONSHARABLE_CLASS(CSysInfoInterface): public CBase, public MLiwInterface + { + enum TIndex + { + EIndex0 = 0, + EIndex1, + EIndex2, + EIndex3 + }; + + public://New Methods + + /** + * NewL. + * Two-phased constructor. + * Create a CSysInfoInterface object. + * @return A pointer to the created instance of CSysInfoInterface. + */ + static CSysInfoInterface* NewL(); + + public: // from MAiwInterface + + /** + * The consumer application should call this method to execute a service + * command directly on the interface. The service provider should + * provide a concrete implementation for the supported service + * command aCmdName. The consumer application should fill in the necessary + * parameters in \em aInParamList. + */ + void ExecuteCmdL( const TDesC8& aCmdName, + const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList, + TUint aCmdOptions = 0, + MLiwNotifyCallback* aCallback = 0); + + /** + * The service provider should provide a concrete implementation + * for this method. The internal state of the service provider + * implemeting \c MAiwInterface can be reset within this method. + * The consumer application should call this method if there + * are no more service commands to be executed on the interface. + */ + void Close(); + + /** + * Callback + * This function returns the callback for the corresponding asynchronous + * request whose transaction id is passed. + * + * @param aTransactionId Transaction id of asynchronous request whose + * callback is required. + * @return The callback of the asynchronous request. + */ + MLiwNotifyCallback* GetCallback( TInt32 aTransactionId ); + + /** + * Callback + * This function returns the callback for the corresponding asynchronous request whose + * transaction id is passed and removes the callback entry. + * + * @param aTransactionId Transaction id of asynchronous request + * whose callback is required. + * @return The callback of the asynchronous request. + */ + MLiwNotifyCallback* GetCallbackAndRemove( TInt32 aTransactionId ); + + /** + * SapiError + * This function maps sapi error. + * + * @param aSymbianErr symbian error code. + * + */ + TInt SapiError( TInt aSymbianErr ); + + /** + * ConvertSysData2AiwParamL + * This function converts system data aInSysData to aOutMapParam + * + * @param aInSysData the input parameter sysdata. + * @param [out] aOutMapParam aiw map representation of sysdata. + * + * + * @see CLiwMap + * @see CSysData + * + */ + static void ConvertSysData2AiwParamL(const CSysData* aInSysData, + CLiwMap*& aOutMapParam); + + private: + + /** + * ConstructL + * 2nd phase constructor. + * Perform the second phase construction of CSysInfoInterface object. + */ + void ConstructL(); + + /** + * C++ default constructor. + * By default Symbian OS constructor is private. + */ + CSysInfoInterface(); + + /** + * ~CSysInfoInterface + * Destructor. + */ + ~CSysInfoInterface(); + + private:// delegator functions + + /** + * SwitchCmdL + * This function delegates the control to other functions based on the command. + * + * @param aCmdName the name of the service command which the consumer wants to invoke. + * @param aInParamList the input parameter list. + * @param [in,out] aOutParamList the output parameter list, can be empty list or may contain the errors. + * @param aCmdOptions Options for the command, see TAiwServiceCmdOptions in liwcommon.hrh. + * @param aCallback callback to be registered by consumer application + * + * + * + * @see TAiwServiceCmdOptions + * @see CLiwGenericParamList + * @see MLiwNotifyCallback + * + */ + void SwitchCmdL( const TDesC8& aCmdName, + const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList, + TUint aCmdOptions, + MLiwNotifyCallback* aCallback ); + + private: + /** + * SetInfoL + * This function modifies a specified system attribute value by calling core class + * function SetInfoL. + * + * @param aInParamList the input parameter list. + * + * @see CLiwGenericParamList + * + */ + void SetInfoL(const CLiwGenericParamList& aInParamList); + + /** + * GetInfoL + * This function reads a specified system attribute by calling GetInfoL core class. + * funtion. + * + * @param aInParamList the input parameter list. + * @param [in,out] aOutParamList the output parameter list, is an empty list. + * @param aCmdOptions Options for the command, see TAiwServiceCmdOptions in liwcommon.hrh. + * @param aCallback callback to be registered by consumer application + * + * + * + * @see TAiwServiceCmdOptions + * @see CLiwGenericParamList + * @see MLiwNotifyCallback + * + */ + void GetInfoL( const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList, + TUint aCmdOptions, + MLiwNotifyCallback* aCallback ); + + /** + * GetNotificationL + * This function registers a callback for notification on specified system attribute by. + * calling core class function GetNotificationL. + * + * @param aInParamList the input parameter list. + * @param [in,out] aOutParamList the output parameter list, is an empty list. + * @param aCmdOptions Options for the command, see TAiwServiceCmdOptions in liwcommon.hrh. + * @param aCallback callback to be registered by consumer application + * + * + * + * @see TAiwServiceCmdOptions + * @see CLiwGenericParamList + * @see MLiwNotifyCallback + * + */ + void GetNotificationL( const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList, + TUint aCmdOptions, + MLiwNotifyCallback* aCallback ); + + /** + * ReadInputParamsL + * This function reads input parameters specified in aInParamList. + * + * @param aInParamList the input parameter list. + * @param [out] aEntity input param entity. + * @param [out] aKey input param key. + * @param [out] aInputData optional data specified. + * + * + * @see CLiwGenericParamList + * @see CSysData + * + */ + void ReadInputParamsL(const CLiwGenericParamList& aInParamList, + TPtrC& aEntity, TPtrC& aKey, + CSysData*& aInputData); + + /** + * Convert2SysDataL + * This function converts system data specified in aInputParam + * to aSysData. + * + * @param aInputParam the input parameter. + * @param [out] aSysData input param sysdata. + * + * + * @see TLiwGenericParam + * @see CSysData + * + */ + void Convert2SysDataL(const TLiwGenericParam& aInputParam, + CSysData*& aSysData); + + /** + * Cancel + * This function cancels a previously requested aynchronous request + * based on transaction id. + * + * @param aInParamList the input parameter list. + * @param [in,out] aOutParamList the output parameter list, is an empty list. + * @param aCmdOptions Options for the command, see TAiwServiceCmdOptions in liwcommon.hrh. + * @param aCallback callback to be registered by consumer application + * + * + * + * @see TAiwServiceCmdOptions + * @see CLiwGenericParamList + * @see MLiwNotifyCallback + * + */ + void CancelL( const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList, + TUint aCmdOptions, + MLiwNotifyCallback* aCallback ); + + private:// Data + + /** + * iService + * The handle to the CSysInfoService object. + */ + CSysInfoService* iService; + /** + * iObserver + * ISystemObserver instance. + */ + CSysInfoObserver* iObserver; + + /** + * iCallbackMap + * Array of CSysInfoCallbackMap objects. + */ + RPointerArray iCallbackMap; + + /** + * Error Message buffer. + */ + TBuf iErrBuf; + }; + +#endif // __SYSINFOINTERFACE_H__ \ No newline at end of file