The Feature Manager collection is a set of classes used to manipulate feature flags.
A feature is any piece of functionality which can be included in a phone at ROM build time or excluded from it. An excluded feature is often written to ROM at build time but excluded from the build by disabling it.
The feature management system uses the standard client server architecture. The relationship between the components is :
Feature Manager Client is not supplied with all versions of Symbian Platform. Feature Discovery, which is always supplied, provides a subset of the functionality of Feature Manager Client and offers superior performance under certain circumstances.
The data which the Feature Manager manages is stored as a collection of XML files in the feature database. These files define a set of feature flags which can be accessed using the Feature Manager API. The file featureuid.xml is the master record of all features in the database. You do not manipulate the feature database directly.
The feature manager database is also accessed by the tool feat2hdr.pl which is used at ROM build time to convert the data relating to each feature into .iby and .h files used by the source code of the components which the features refer to.
Feature Manager Client provides the complete functionality required for feature management.
Feature Manager Server maintains the table containing the list of features available on the device.
Feature Discovery provides the functionality to discover if a feature or feature set is available but not to enable, disable or modify features.
Feature flags were formerly managed using the Feature Registry component, which has now been deprecated. The old Feature Registry API calls continue to be supported, but the old implementation has been scrapped in favour of wrapper functions which call Feature Manager.
Feature flags, which are held in the feature database, track changes to the status of features. It is important to know that modifications through Feature Manager do not modify the features themselves, though feature flags may be used by other components which actually modify features.
The Feature Manager provides the functionality to:
report the availability of feature flags,
enable and disable feature flags,
modify the status of feature flags and the data associated with them, and
set up notification of changes to the status of feature flags.
The Feature Manager Tutorial provides detailed instructions on how to perform these tasks.