--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/dependencies/extended_version_info_api/sysversioninfo.h Thu Mar 25 09:33:14 2010 +0100
@@ -0,0 +1,280 @@
+/*
+* Copyright (c) 2007 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: Extended Version Info API provides extended version
+* information i.e. firmware, operator etc version information
+*
+*/
+
+
+
+#ifndef SYS_VERSION_INFO_H
+#define SYS_VERSION_INFO_H
+
+// INCLUDES
+#include <e32std.h>
+
+// FORWARD DECLARATIONS
+class RFs;
+
+// CONSTANTS
+/**
+* Helper constant to allocate buffers for SysVersionInfo::GetVersionInfo.
+*/
+const TInt KSysVersionInfoTextLength = 256;
+
+/**
+* Helper constants to allocate buffers for SysVersionInfo::TProductVersion items.
+*/
+const TInt KSysVersionInfoManufacturerLength = 50;
+const TInt KSysVersionInfoModelLength = 50;
+const TInt KSysVersionInfoProductLength = 50;
+const TInt KSysVersionInfoRevisionLength = 50;
+
+// CLASS DECLARATION
+/**
+* Extended Version Info API provides extended version information
+* i.e. firmware, operator etc version information.
+*
+* Usage:
+*
+* Get the version information:
+* @code
+* // iFs contains open file server session
+*
+* TBuf< KSysVersionInfoTextLength > info;
+* User::LeaveIfError( SysVersionInfo::GetVersionInfo(
+* SysVersionInfo::EFWVersion, info, iFs ) );
+*
+* // Now info contains firmware version information
+*
+* SysVersionInfo::TSymbianOSVersion osVersion;
+* User::LeaveIfError( SysVersionInfo::GetVersionInfo( osVersion, iFs ) );
+*
+* // Now osVersion contains the Symbian OS version information
+*
+* SysVersionInfo::TProductVersion productVersion;
+* User::LeaveIfError( SysVersionInfo::GetVersionInfo( productVersion, iFs ) );
+*
+* // Now productVersion contains the product version information
+*
+* @endcode
+*
+* // @ we don't have this file lib sysversioninfo.lib
+* @since S60 3.2
+*/
+class SysVersionInfo
+ {
+public:
+
+ /**
+ * Enumeration TVersionInfoType defines values to be used for
+ * the aType parameter in GetVersionInfo method.
+ * @since S60 3.2
+ */
+ enum TVersionInfoType
+ {
+ /** To get the firmware version that is composed of the version info
+ * of multiple images (core + variants images).
+ */
+ EFWVersion = 0,
+
+ /** To get the customer software version. This identifies
+ * the user friendly version of e.g. operator/country/regional variant
+ * image.
+ */
+ EOPVersion,
+
+ /** To get the model version.
+ */
+ EModelVersion,
+
+ /**
+ * To get the product code.
+ **/
+ EProductCode
+
+ };
+
+ /**
+ * Class TVersionBase is a base class for version information data.
+ * @since S60 3.2
+ */
+ class TVersionBase;
+
+ /**
+ * This method gets the requested version information as string.
+ * The maximum length for the string is KSysVersionInfoTextLength if
+ * it has not been explicitly specified by the requested TVersionInfoType
+ * definition.
+ *
+ * KErrTooBig is returned if the requested version info does not
+ * fit into given descriptor. The part that fits is copied to
+ * the given descriptor.
+ *
+ * @since S60 3.2
+ * @param aType A version information type specified by TVersionInfoType.
+ * @param aValue Stores version information.
+ * @return System wide error code.
+ *
+ * @see TVersionInfoType
+ * @see KSysVersionInfoTextLength
+ */
+ IMPORT_C static TInt GetVersionInfo(
+ const TVersionInfoType aType, TDes& aValue );
+
+ /**
+ * This method gets the requested version information as string.
+ * The maximum length for the string is KSysVersionInfoTextLength if
+ * it has not been explicitly specified by the requested TVersionInfoType
+ * definition. The method avoids overhead of creating new file
+ * server session.
+ *
+ * KErrTooBig is returned if the requested version info does not
+ * fit into given descriptor. The part that fits is copied to
+ * the given descriptor.
+ *
+ * @since S60 3.2
+ * @param aType A version information type specified by TVersionInfoType.
+ * @param aValue Stores version information.
+ * @param aFs Open file server session.
+ * @return System wide error code.
+ *
+ * @see TVersionInfoType
+ * @see KSysVersionInfoTextLength
+ */
+ IMPORT_C static TInt GetVersionInfo(
+ const TVersionInfoType aType, TDes& aValue, RFs& aFs );
+
+ /**
+ * This method gets the requested version information.
+ *
+ * @since S60 3.2
+ * @param aVersion On return, contains the version information.
+ * @return System wide error code.
+ *
+ * @see TVersionBase
+ */
+ IMPORT_C static TInt GetVersionInfo( TVersionBase& aVersion );
+
+ /**
+ * This method gets the requested version information and avoids
+ * overhead of creating new file server session.
+ *
+ * @since S60 3.2
+ * @param aVersion On return, contains the version information.
+ * @param aFs Open file server session.
+ * @return System wide error code.
+ *
+ * @see TVersionBase
+ */
+ IMPORT_C static TInt GetVersionInfo( TVersionBase& aVersion, RFs& aFs );
+
+ /**
+ * Class TVersionBase is a base class for version information data.
+ * @since S60 3.2
+ */
+ class TVersionBase
+ {
+ friend class SysVersionInfo;
+
+ protected:
+ /**
+ * Constructor for subclasses
+ * @since S60 3.2
+ * @param aType Sets type of version info specified by TVersionType
+ */
+ inline TVersionBase( TInt aType );
+
+ private:
+ /**
+ * C++ default constructor.
+ */
+ TVersionBase();
+
+ private:
+ /** Contains type of version info specified by TVersionType */
+ TInt iType;
+ };
+
+ /**
+ * Class TSymbianOSVersion stores the Symbian OS version.
+ * The class is used as parameter in GetVersionInfo() methods.
+ * @since S60 3.2
+ */
+ class TSymbianOSVersion : public TVersionBase
+ {
+ public:
+ /**
+ * C++ default constructor.
+ */
+ inline TSymbianOSVersion();
+
+ public:
+ /** Contains the major Symbian OS version. For example 9 if Symbian OS 9.3 */
+ TUint16 iMajorVersion;
+
+ /** Contains the minor Symbian OS version. For example 3 if Symbian OS 9.3 */
+ TUint16 iMinorVersion;
+
+ };
+
+ /**
+ * Class TProductVersion stores the product information.
+ * The class is used as parameter in GetVersionInfo() methods.
+ * @since S60 3.2
+ */
+ class TProductVersion : public TVersionBase
+ {
+ public:
+ /**
+ * C++ default constructor.
+ */
+ inline TProductVersion();
+
+ public:
+ /** Contains the manufacturer name. For example "Nokia". */
+ TBuf< KSysVersionInfoManufacturerLength > iManufacturer;
+
+ /** Contains the phone model sales name. For example "N01". */
+ TBuf< KSysVersionInfoModelLength > iModel;
+
+ /** Contains the product code name. For example "RM-1". */
+ TBuf< KSysVersionInfoProductLength > iProduct;
+
+ /** Contains the product revision. For example "01". */
+ TBuf< KSysVersionInfoRevisionLength > iRevision;
+
+ };
+
+private:
+
+ /**
+ * C++ default constructor.
+ */
+ SysVersionInfo();
+
+ /** Used internally to detect type of version info */
+ enum TVersionType
+ {
+ ESymbianOSVersion = 0,
+ EProductVersion
+ };
+
+ };
+
+#include "sysversioninfo.inl"
+
+#endif // SYS_VERSION_INFO_H
+
+// End of File