serviceproviders/sapi_sysinfo/sysinfoservice/inc/sysinfoservice.h
changeset 5 989d2f495d90
child 10 fc9cf246af83
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/serviceproviders/sapi_sysinfo/sysinfoservice/inc/sysinfoservice.h	Fri Jul 03 15:51:24 2009 +0100
@@ -0,0 +1,291 @@
+/*
+* 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:  CSysInfoService class
+*
+*/
+
+
+#ifndef __CSYSINFOSERVICE_H__
+#define __CSYSINFOSERVICE_H__
+
+//  INCLUDES
+#include "sysinfo.h"
+#include "sysrequest.h"
+
+// FORWORD CLASS DECLARATION
+class CSysData;
+class CDeviceInfo;
+
+/**
+*   @ref ISystemObserver
+*   Client Observer interface to handle response from Asynchronous system requests.
+*
+*   @param aResponse
+*/
+
+class ISystemObserver
+    {
+    public:
+    /**
+    * HandleResponseL ()
+    * Callback function to be implimented by client in order to handle asynchronous
+    * response.
+    * @param aEntity        Entity
+    * 
+    * @param aKey           Key
+    *
+    * @param aOutput        client owns output data.
+    *
+    * @param aTransID       TransactionID associated with request.
+    *
+    * @param aType          Asynchronous Response type.
+    *
+    * @param aError         If any error occured in process of generating response.
+    *
+    */		
+    virtual void HandleResponseL(const TDesC& aEntity,const TDesC& aKey, 
+                                CSysData* aOutput, TInt32 aTransID, 
+                                TSysRequest::TRequestType aType,
+                                TInt aError=KErrNone) = 0;
+    };
+
+
+/**
+*   @ref CSysInfoService is used to read and modify and system information
+*
+*   @lib sysinfoservice
+*   @since S60 3.2
+*   @version $Revision: 1.0 $
+*/
+
+NONSHARABLE_CLASS(CSysInfoService) : public CBase
+    {
+    public:  // Constructors and destructor
+
+    /**
+    * NewL()
+    * Two-phased constructor.
+    * Create a CSysInfoService object.
+    * @return A pointer to the created instance of CSysInfoService.
+    */
+    IMPORT_C static CSysInfoService* NewL();
+
+    /**
+    * Destructor.
+    */
+    ~CSysInfoService();
+
+    private:
+
+    /**
+    * C++ default constructor.
+    */
+    CSysInfoService();
+
+    public:	
+
+    /**
+    * GetInfoL ()
+    * Retrieves specified SA value synchronously.
+    * User will provide SA and any input by aRequest argument.
+    *
+    * @param aEntity    Entity of an system attribute.
+    *
+    * @param aKey       Key of an system attribute.
+    *
+    * @param aOutput    Retrived system attribute value.
+    *
+    * @param aInput     Optional input data.
+    *
+    * @error @p KErrArgument    if specified input SystemData is not associated with 
+    *                           system attribute.
+    * @error @p KErrNotFound
+    *                       if specified system attribute not found.
+    *                       if Specified SA doesn't support this kind of operation
+    *                       i.e request type. 
+    */
+
+    IMPORT_C void GetInfoL( const TDesC& aEntity, const TDesC& aKey, 
+                            CSysData*& aOutput, const CSysData* aInput=NULL );
+
+    /**
+    * GetInfoL ()
+    * Retrieves specified SA value asynchronously.
+    * User will provide SA and any input thru aRequest argument.
+    *
+    * @param aEntity        Entity of an system attribute.
+    *
+    * @param aKey           Key of an system attribute.
+    *
+    * @param aTransID       TransactionID for async operation.
+    *
+    * @param aCallback      Observer for handling async response.
+    *
+    * @param aInput         Optional input data.
+    *
+    * @error @p KErrArgument 	
+    *                       if specified input SystemData is not associated with 
+    *                       system attribute.
+    * @error @p KErrNotFound
+    *                   if specified system attribute not found.
+    *                   if Specified SA doesn't support this kind of operation
+    *                   i.e request type. 
+    * @error @p KErrAlreadyExists	
+    *                       if Transaction ID specified already exists.
+    */
+
+    IMPORT_C void GetInfoL( const TDesC& aEntity, const TDesC& aKey, 
+                            TInt32 aTransID, ISystemObserver* aCallback, 
+                            const CSysData* aInput=NULL );
+
+    /**
+    * GetNotificationL ()
+    * Registers for notifications for a given SA.
+    * User will provide SA and any input thru aRequest argument.
+    *
+    * @param aEntity        Entity of an system attribute.
+    *
+    * @param aKey           Key of an system attribute.
+    *
+    * @param aTransID       TransactionID for async operation.
+    *
+    * @param aCallback      Observer for handling async response.
+    * 
+    * @param aInput         Optional input data.
+    *
+    * @error @p KErrArgument 	
+    *                       if specified input SystemData is not associated with 
+    *                       system attribute.
+    * @error @p KErrNotFound
+    *                       if specified system attribute not found.
+    *                       if Specified SA doesn't support this kind of operation
+    *                       i.e request type. 
+    * @error @p KErrAlreadyExists	
+    *                       if Transaction ID specified already exists.
+    */
+
+    IMPORT_C void GetNotificationL( const TDesC& aEntity, const TDesC& aKey, 
+                                TInt32 aTransID, ISystemObserver* aCallback, 
+                                const CSysData* aInput=NULL  );
+    /**
+    * SetInfoL()
+    * Modifies system attribute value.
+    * This API can be used to change system attribute value 
+    * synchronously/asynchronously, based on attribute specification.
+    *
+    * @param aEntity        Entity of an system attribute.
+    *
+    * @param aKey           Key of an system attribute.
+    *
+    * @param aInput         Input data.
+    *
+    * @error @p KErrArgument
+    *                       if specified input SystemData is not associated with 
+    *                       system attribute.
+    * @error @p KErrNotFound
+    *               if specified system attribute not found.
+    *               if Specified SA doesn't support this kind of operation
+    *               i.e request type. 
+    * @error @p KErrAlreadyExists
+    *               if Transaction ID specified already exists for async requests.
+    */
+
+    IMPORT_C void SetInfoL( const TDesC& aEntity, const TDesC& aKey, 
+                                                const CSysData* aInput );
+
+    /**
+    * Cancel()
+    * Cancels any outstanding requests and releases resources owned by them.
+    *
+    */
+
+    IMPORT_C void Cancel(TInt32 aTransID);
+
+    private:
+    /*
+    *   Modifies General Entity attribute value.
+    */
+    void SetGeneralInfoL(const TDesC& aKey, const CSysData* aInput);
+
+    /*
+    *	Modifies General Entity attribute value.
+    */
+    void SetDisplayInfoL(const TDesC& aKey, const CSysData* aInput);
+
+    /*
+    *	Modifies Connectivity Entity attribute value.
+    */
+    void SetConnectivityInfoL(const TDesC& aKey, const CSysData* aInput);
+
+    /*
+    *	Retrieves Network Entity attribute value.
+    */
+    void GetNetworkInfoL(TPtrC aKey,CSysData*& aSysData);
+
+    /*
+    *	Retrieves Battery Entity attribute value.
+    */
+    void GetBatteryInfoL(TPtrC aKey,CSysData*& aSysData);
+
+    /*
+    *	Retrieves General Entity attribute value.
+    */
+    void GetGeneralInfoL(TPtrC aKey,CSysData*& aSysData);
+
+    /*
+    *	Retrieves Display Entity attribute value.
+    */
+    void GetDisplayInfoL(TPtrC aKey,CSysData*& aSysData);
+
+    /*
+    *	Retrieves available/supported usb modes.
+    */
+    void GetAvailableUsbModesL(CSysData*& aSysData);
+
+    /*
+    *	Retrieves Connectivity Entity attribute value.
+    */
+    void GetConnectivittyInfoL(TPtrC aKey,CSysData*& aSysData);
+
+    /*
+    *	Retrieves Memory Entity attribute value.
+    */
+    void GetMemoryInfoL(const TDesC& aKey, const CSysData* aInput,
+                                                CSysData*& aOutput);
+
+    /*
+    *	Retrieves Feature Entity attribute value.
+    */
+    void GetFeatureInfoL(TPtrC aKey,CSysData*& aSysData);
+    /*
+    *	Retrieves Device Entity attribute values.
+    */
+    void GetDeviceInfoL(TPtrC aKey,CSysData*& aSysData);
+
+    private: //DATA
+
+    /**
+    * status member to identify feature manager initialization state.
+    */       
+    TBool           iFeatureManagerInitialized;
+
+    /**
+    * class to read static device properties.
+    */       
+    CDeviceInfo*    iDeviceInfo;
+    };
+
+
+#endif __CSYSINFOSERVICE_H__
+