This page was last modified 08:26, 2 May 2008.
CS000933 - Detecting S60 platform version at run time
From Forum Nokia Wiki
| ID | CS000933 | Creation date | May 2, 2008 |
| Platform | S60 3rd Edition, MR S60 3rd Edition, FP2 | Tested on devices | Nokia N95 8GB Nokia 6220 Classic |
| Category | Symbian C++ | Subcategory | Files/Data |
| Keywords (APIs, classes, methods, functions): TFindFile, CDir, VersionInfo, VersionInfo::TPlatformVersion, TFindFile::FindWildByDir(), CDir::Sort(), VersionInfo::GetVersion() |
Overview
This code snippet demonstrates how to detect the S60 platform version at run time. The snippet presents two different methods, one for the S60 devices prior to S60 3rd Edition, FP2, and one for devices compatible with S60 3rd Edition, FP2. The first method detects the version number from .sis files that are installed to the device. The second method uses the Version Info API available from S60 3rd Edition, FP2 onwards.
This snippet can be self-signed.
MMP file
The first method (using TFindFile) requires the following libraries:
LIBRARY efsrv.lib
The second method (using VersionInfo) requires the following libraries:
LIBRARY platformver.lib
Source file: Using TFindFile
#include <f32file.h> // TFindFile
// On return, aMajor and aMinor contain the highest version number found from // the .sis file names void GetS60PlatformVersionL(RFs& aFs, TUint& aMajor, TUint& aMinor) { TFindFile fileFinder = aFs; CDir* result; _LIT(KS60ProductIDFile, "Series60v*.sis"); _LIT(KROMInstallDir, "z:\\system\\install\\"); User::LeaveIfError(fileFinder.FindWildByDir(KS60ProductIDFile, KROMInstallDir, result)); CleanupStack::PushL(result); // Sort the file names so that the newest platforms are first User::LeaveIfError(result->Sort(ESortByName | EDescending)); // Parse the version numbers from the file name (e.g. Series60v3_1.sis) aMajor = (*result)[0].iName[9] - '0'; aMinor = (*result)[0].iName[11] - '0'; CleanupStack::PopAndDestroy(result); }
// Connect to the file server session RFs fsSession; User::LeaveIfError(fsSession.Connect()); CleanupClosePushL(fsSession); // Obtain the version number TUint major; TUint minor; GetS60PlatformVersionL(fsSession, major, minor); CleanupStack::PopAndDestroy(); // fsSession // Display the version number TBuf<255> buffer; _LIT(KTxt, "Version: %d.%d"); buffer.Format(KTxt, major, minor); CAknInformationNote* note = new (ELeave)CAknInformationNote(ETrue); note->ExecuteLD(buffer);
Source file: Using VersionInfo
Note: This technique only applies to devices compatible with S60 3rd Edition, FP2 and onwards.
#include <versioninfo.h> // VersionInfo
// On return, aMajor and aMinor contain the version information TInt GetS60PlatformVersionL(RFs& aFs, TUint& aMajor, TUint& aMinor) { VersionInfo::TPlatformVersion platformVersion; TInt ret = VersionInfo::GetVersion(platformVersion, aFs); if (ret == KErrNone) { aMajor = platformVersion.iMajorVersion; aMinor = platformVersion.iMinorVersion; } return ret; }
// Connect to the file server session RFs fsSession; User::LeaveIfError(fsSession.Connect()); CleanupClosePushL(fsSession); // Obtain the version number TUint major; TUint minor; User::LeaveIfError(GetS60PlatformVersionL(fsSession, major, minor)); CleanupStack::PopAndDestroy(); // fsSession // Display the version number TBuf<255> buffer; _LIT(KTxt, "Version: %d.%d"); buffer.Format(KTxt, major, minor); CAknInformationNote* note = new (ELeave)CAknInformationNote(ETrue); note->ExecuteLD(buffer);
Postconditions
S60 platform version is shown on the display.
| Related Discussions | ||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| The same question for the 3rd time | kittinut_k | Symbian Networking & Messaging | 16 | 2007-12-20 03:54 |
| s60 sdk 1.2 | billqu | Symbian Tools & SDKs | 1 | 2004-11-07 19:41 |
| Features symbian has, but not shipped | npradeep | General Discussion | 3 | 2008-03-04 08:07 |
| S60 Version/FeaturePack Query | wirefree101 | Series 40 & S60 Platform Feedback | 2 | 2006-10-05 15:21 |
| InputStream & S40, S60 platform | b_s_r | Mobile Java General | 3 | 2007-06-01 06:54 |

