Join Now
Quality Rating:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)
Expertise Level:
  • Currently 0.0 / 5
(0.0 / 5 - 0 votes cast)

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
 
Powered by MediaWiki