diff -r a36b1e19a461 -r 989d2f495d90 serviceproviders/sapi_sysinfo/sysinfoservice/inc/sysinfo.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/serviceproviders/sapi_sysinfo/sysinfoservice/inc/sysinfo.h Fri Jul 03 15:51:24 2009 +0100 @@ -0,0 +1,817 @@ +/* +* 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: describes system information utilities. +* +*/ + + +#ifndef __SYSINFO_H__ +#define __SYSINFO_H__ + +#include +#include +#include +#include + +class ISystemObserver; + + +/** +* @ref CSysData is base class which can be extend to implement variety of +* system data representations. +* +* @lib sysinfoservice.lib +* @since S60 3.2 +*/ +NONSHARABLE_CLASS(CSysData) : public CBase + { + public: + // Enumeration of supported i/o data types. + enum TDataType + { + EStatus, + EVersion, + EConnectionList, + EConnectionInfo, + ENetworkInfo, + EDriveInfo, + ELanguageList, + EDriveList, + EAccessoryList, + EAccessoryInfo, + EResolution, + EStringList, + EStringData, + }; + public: + /** + * virtual Destructor. + */ + virtual ~CSysData (); + + /** + * @return type of data stored. + */ + IMPORT_C TDataType DataType() const; + + protected: + + /** + * C++ default constructor. + */ + CSysData(TDataType aType); + private: + + /** + * Data type + */ + TDataType iDataType; + }; + +/** +* @ref CStatus is an integer data used in general for representing status +* information of some System Attributes. Typically ON,OFF state, battery +* level and so on. +* +* @lib sysinfoservice.lib +* @since S60 3.2 +*/ +NONSHARABLE_CLASS(CStatus) : public CSysData + { + public: + + /** + * Two-phased constructor. + * + * @return A new instance of this class. + */ + IMPORT_C static CStatus* NewL(TInt aStatus); + + /** + * @return status information + */ + IMPORT_C TInt Status() const; + + /** + * Destructor. + */ + ~CStatus(); + + private: + + /** + * C++ default constructor. + */ + CStatus(TInt aStatus); + + private: + /** + * Status value. + */ + TInt iStatus; + }; + +/** +* @ref CResolution screen resolution of device specified in X,Y Pixels. +* +* @lib sysinfoservice.lib +* @since S60 3.2 +*/ +NONSHARABLE_CLASS(CResolution) : public CSysData + { + public: + + /** + * Two-phased constructor. + * + * @return A new instance of this class. + */ + static CResolution* NewL(TInt aXPixels, TInt aYPixels); + + /** + * @return X-Pixels. + */ + IMPORT_C TInt XPixels() const; + + /** + * @return Y-Pixels. + */ + IMPORT_C TInt YPixels() const; + + /** + * Destructor. + */ + ~CResolution(); + + private: + /** + * C++ default constructor. + */ + CResolution (TInt aXPixels, TInt aYPixels); + + private: + /** + * X-Pixels. + */ + TInt iXPixels; + /** + * Y-Pixels. + */ + TInt iYPixels; + }; + +/** +* @ref CAccessoryInfo provides accessory information i.e ACCESSORY TYPE +* @ref TAccessoryType and its connection status @ref TAccessoryState. +* +* @lib sysinfoservice.lib +* @since S60 3.2 +*/ +NONSHARABLE_CLASS(CAccessoryInfo):public CSysData + { + public: + + typedef enum{ + /** Unknown. */ + EUnknown=-1, + /** Headset */ + EHeadSet, + /** Bluetooth headset */ + EBTHeadSet, + /** Carkit */ + ECarKit, + /** Bluetooth carkit */ + EBTCarKit + }TAccessoryType; + + typedef enum{ + /** Accessory connected */ + EDisconnected, + /** Accessory disconnected */ + EConnected + }TAccessoryState; + + public: + + /** + * Two-phased constructor. + * + * @return A new instance of this class. + */ + static CAccessoryInfo* NewL(const TAccPolGenericID& aGenericID, + TAccessoryState aAccState); + + /** + * Destructor. + */ + ~CAccessoryInfo(); + + public: + /** + * @return ACCESSORY TYPE + */ + IMPORT_C TInt AccessoryType() const; + /** + * @return Connection state. + */ + IMPORT_C TInt ConnectionState() const; + + private: + /** + * C++ default constructor. + */ + CAccessoryInfo(TAccessoryState aAccState); + /** + * Deduce accessory type from aGenericID. + */ + void GetAccessoryProperty( const TAccPolGenericID& aGenericID ); + + private: + /** + * Accessory type + */ + TInt iAccessoryType; + /** + * Connection State. + */ + TInt iConnectionState; + }; + +/** +* @ref CAccList provides access to read list of accessories. +* +* @lib sysinfoservice.lib +* @since S60 3.2 +*/ +NONSHARABLE_CLASS(CAccList): public CSysData + { + public: + /** + * Two-phased constructor. + * + * @return A new instance of this class. + */ + static CAccList* NewL(); + + /** + * @return @ref CAccessoryInfo client owns created instance. + */ + IMPORT_C const CAccessoryInfo* operator[](TInt aIndex) const; + + /** + * On return aAccInfo has new CAccessoryInfo instance ownership given to + * client. + */ + IMPORT_C TBool AtL(TInt aIndex,const CAccessoryInfo*& aAccInfo) const; + + /** + * @return number of accessories in the list. + */ + IMPORT_C TInt Count () const; + + /** + * Destructor. + */ + ~CAccList(); + private: + + /** + * C++ default constructor. + */ + CAccList(); + /** + * Symbian 2nd phase constructor. + */ + void ConstructL(); + + private: + /** + * Accessory ID Array. + */ + TAccPolGenericIDArray iAccessories; + + /** + * number of accessories. + */ + TInt iCount; + }; + +/** +* @ref CStringData string data represented using this class. +* +* @lib sysinfoservice.lib +* @since S60 3.2 +*/ +NONSHARABLE_CLASS(CStringData): public CSysData + { + public: + /** + * Two-phased constructor. + * + * @return A new instance of this class. + */ + IMPORT_C static CStringData* NewL(const TDesC& aString); + + /** + * On return aString contains string data. + */ + IMPORT_C void StringData(TPtrC& aString) const; + + /** + * Destructor. + */ + ~CStringData(); + + private: + /** + * C++ default constructor. + */ + CStringData(); + + private: + /** + * String data. + */ + HBufC* iStringData; + }; + +/** +* @ref CVersion Major and Minor version information. +* +* @lib sysinfoservice.lib +* @since S60 3.2 +*/ +NONSHARABLE_CLASS(CVersion): public CSysData + { + public: + /** + * Two-phased constructor. + * + * @return A new instance of this class. + */ + static CVersion* NewL(TInt aMajor,TInt aMinor); + + /** + * @return Manjor Version number. + */ + IMPORT_C TInt MajorVersion() const; + + /** + * @return Minor Version number. + */ + IMPORT_C TInt MinorVersion() const; + /** + * Destructor. + */ + ~CVersion(); + + private: + + /** + * C++ default constructor. + */ + CVersion(TInt aMajor,TInt aMinor); + + private: + /** + * Major Version. + */ + TInt iMajorVersion; + /** + * Minor Version. + */ + TInt iMinorVersion; + }; + +/** +* @ref CConnectionInfo provides access to read connection information i.e Connection type, +* Access point ID, Network name and Access point name. +* +* @lib sysinfoservice.lib +* @since S60 3.2 +*/ +NONSHARABLE_CLASS(CConnectionInfo) : public CSysData + { + public: + typedef enum{ + /** disconnected */ + EDisconnected, + /** connected */ + EConnected + }TConnectionState; + + /** + * Two-phased constructor. + * + * @return A new instance of this class. + */ + IMPORT_C static CConnectionInfo* NewL(TUint aConnId, TUint aIAPId, + TInt aBearerType, + TConnectionState aConnectStatus, + const TDesC& aIAPName, + const TDesC& aNetworkName, + const TDesC& aConnectionName); + + /** + * Destructor. + */ + ~CConnectionInfo(); + + /** + * @return A new instance of this class object. + */ + CConnectionInfo* CopyL(); + + public: + TUint ConnectionId() const; + + IMPORT_C TUint IAPId() const; + + IMPORT_C TInt BearerType()const; + + IMPORT_C TPtrC IAPName() const; + + IMPORT_C TPtrC NetworkName() const; + + IMPORT_C TPtrC ConnectionName() const; + + IMPORT_C TConnectionState ConnectionState() const; + + void SetConnectionState(CConnectionInfo::TConnectionState aState); + + private: + /** + * C++ default constructor. + */ + CConnectionInfo (); + + /** + * Symbian 2nd phase constructor. + */ + void ConstructL(TUint aConnId, TUint aIAPId, + TInt aBearerType, + TConnectionState aConnectStatus, + const TDesC& aIAPName, + const TDesC& aNetworkName, + const TDesC& aConnectionName); + private: + + TUint iConnectionId; + + TConnectionState iConnectStatus; + + TUint iIAPId; + + TInt iBearerType; + + HBufC* iIAPName; + + HBufC* iNetworkName; + + HBufC* iConnectionName; + }; + +/** +* @ref CConnectionList this class lists connections. provides access to +* each connection information. +* +* @lib sysinfoservice.lib +* @since S60 3.2 +*/ +NONSHARABLE_CLASS(CConnectionList) : public CSysData + { + public: + /** + * Two-phased constructor. + * + * @return A new instance of this class. + */ + static CConnectionList* NewL( + RPointerArray& aConnectionInfoArr); + /** + * Two-phased constructor. + * + * @return A new instance of this class. + */ + static CConnectionList* NewLC( + RPointerArray& aConnectionInfoArr); + /** + * On return aConnectionInfo contains connection information. aConnectionInfo + * ownership not given to user. + */ + IMPORT_C TBool At(TInt aIndex,const CConnectionInfo*& aConnectionInfo) const; + + /** + * @return ConnectionInfo at index. + */ + IMPORT_C const CConnectionInfo* operator[](TInt aIndex) const; + /** + * @return number of connections. + */ + IMPORT_C TInt Count() const; + + /** + * Destructor. + */ + ~CConnectionList(); + + private: + /** + * C++ default constructor. + */ + CConnectionList(); + /** + * Symbian 2nd phase constructor. + */ + void ConstructL(RPointerArray& aConnectionInfoArr); + + private: + // Pointer Array to hold list of connections. + RPointerArray iConnectionInfoArray; + // Number of Connections. + TInt iCount; + }; + +/** +* @ref CNetworkInfo client interface to read network details ie, Network name, +* network type, status, MCC (Mobile Country Code), MNC (Mobile Network Code), +* LAC (Location Area Code) and CellID. +* +* @lib sysinfoservice.lib +* @since S60 3.2 +*/ +NONSHARABLE_CLASS(CNetworkInfo): public CSysData + { + public: + + /** + * Two-phased constructor. + * + * @return A new instance of this class. + */ + static CNetworkInfo* NewL(RMobilePhone::TMobilePhoneNetworkInfoV1& aNetworkInfo, + RMobilePhone::TMobilePhoneLocationAreaV1& aArea); + + /** + * Destructor. + */ + ~CNetworkInfo(); + + public: + /** + * @return Network name. + */ + IMPORT_C TPtrC NetworkName() const; + /** + * @return Network Mode. + */ + IMPORT_C TInt NetworkMode()const; + /** + * @return Network Status. + */ + IMPORT_C TInt NetworkStatus() const; + /** + * @return MCC Mobile Country Code. + */ + IMPORT_C TPtrC CountryCode() const; + /** + * @return MNC Mobile Network Code. + */ + IMPORT_C TPtrC NetworkCode() const; + /** + * @return LAC Location Area Code. + */ + IMPORT_C TUint LocationAreaCode() const; + /** + * @return CellID + */ + IMPORT_C TUint CellId() const; + /** + * @return Identifier for validating LAC & CellID + */ + IMPORT_C TBool ValidLocationAreaCode() const; + + private: + /** + * C++ default constructor. + */ + CNetworkInfo(RMobilePhone::TMobilePhoneNetworkInfoV1& aNetworkInfo, + RMobilePhone::TMobilePhoneLocationAreaV1& aArea); + private: + //Network Information + RMobilePhone::TMobilePhoneNetworkInfoV1 iNetworkInfo; + //Location information. + RMobilePhone::TMobilePhoneLocationAreaV1 iLAC; + }; + +/** +* @ref CLanguageList language list class +* +* @lib sysinfoservice.lib +* @since S60 3.2 +*/ +NONSHARABLE_CLASS(CLanguageList): public CSysData + { + public: + /** + * Two-phased constructor. + * + * @return A new instance of this class. + */ + static CLanguageList* NewL(); + /** + * @return Language Code. + */ + IMPORT_C TInt operator[](TInt aIndex) const; + /** + * On return aEntry contains Language Code. + */ + IMPORT_C TBool At(TInt aIndex, TInt& aEntry) const; + /** + * @return language count. + */ + IMPORT_C TInt Count() const; + + /** + * Destructor. + */ + ~CLanguageList(); + + private: + /** + * C++ default constructor. + */ + CLanguageList(); + /** + * Symbian 2nd phase constructor. + */ + void ConstructL(); + + private: + /** + * array consists of language codes. + */ + RArray iLanguages; + }; + +/** +* @ref CDriveList drive list. +* +* @lib sysinfoservice.lib +* @since S60 3.2 +*/ +NONSHARABLE_CLASS(CDriveList): public CSysData + { + public: + /** + * Two-phased constructor. + * + * @return A new instance of this class. + */ + static CDriveList* NewL(TDriveList& aDrives); + /** + * @return drive number. + */ + IMPORT_C TInt operator[](TInt aIndex) const; + /** + * On return aEntry contains drive number. + */ + IMPORT_C TBool At(TInt aIndex, TInt& aEntry) const; + /** + * @return number of drives. + */ + IMPORT_C TInt Count() const; + + /** + * Destructor. + */ + ~CDriveList(); + + private: + /** + * C++ default constructor. + */ + CDriveList(); + /** + * Symbian 2nd phase constructor. + */ + void ConstructL(TDriveList& aDrives); + + private: + RArray iDrives; + TInt iCount; + }; + +/** +* @ref CDriveInfo details drive information ie, Drive name, Total space, +* Free space, Media type, critical free space and battery status. +* +* @lib sysinfoservice.lib +* @since S60 3.2 +*/ +NONSHARABLE_CLASS(CDriveInfo): public CSysData + { + public: + /** + * Two-phased constructor. + * + * @return A new instance of this class. + */ + IMPORT_C static CDriveInfo* NewL(TInt aDriveNumber, TInt aCriticalSpace=-1); + + /** + * Two-phased constructor. + * + * @return A new instance of this class. + */ + static CDriveInfo* NewL(TInt aDriveNumber, TVolumeInfo& aVolumeInfo); + + /** + * Destructor. + */ + ~CDriveInfo(); + public: + IMPORT_C TInt DriveNumber() const; + IMPORT_C TInt CriticalSpace() const; + IMPORT_C TInt MediaType() const; + IMPORT_C TInt64 TotalSpace() const; + IMPORT_C TInt64 FreeSpace() const; + IMPORT_C void DriveName(TPtrC& aDriveName) const; + IMPORT_C TInt BatteryState() const; + + private: + /** + * C++ default constructor. + */ + CDriveInfo(TInt aDrvNumber,TInt aCriticalSpace); + /** + * C++ default constructor. + */ + CDriveInfo(TInt aDrvNumber,TVolumeInfo& aVolumeInfo); + /** + * Symbian 2nd phase constructor. + */ + void ConstructL(); + + private: + TInt iDrvNumber; + TVolumeInfo iVolumeInfo; + TInt iVolumeInfoValid; + TInt iCriticalSpace; + }; + +/** +* @ref CStringList list of strings +* +* @lib sysinfoservice.lib +* @since S60 3.2 +*/ +NONSHARABLE_CLASS(CStringList): public CSysData + { + public: + /** + * Two-phased constructor. + * + * @return A new instance of this class. + */ + static CStringList* NewL(CDesCArray*& aDesArray); + /** + * @return string data. + */ + IMPORT_C TPtrC operator[](TInt aIndex) const; + /** + * @On return aEntry consists of string data. + */ + IMPORT_C TBool At(TInt aIndex, TPtrC& aEntry) const; + /** + * @return number of strings. + */ + IMPORT_C TInt Count() const; + /** + * Destructor. + */ + ~CStringList(); + + private: + /** + * C++ default constructor. + */ + CStringList(CDesCArray*& aDesArray); + private: + CDesCArray* iDesArray; + TInt iCount; + }; + + +#endif __SYSINFO_H__