Symbian3/SDK/Source/GUID-DCA2880E-7DF9-5E60-8F87-241711935389.dita
author Dominic Pinkman <dominic.pinkman@nokia.com>
Tue, 20 Jul 2010 12:00:49 +0100
changeset 13 48780e181b38
parent 7 51a74ef9ed63
permissions -rw-r--r--
Week 28 contribution of SDK documentation content. See release notes for details. Fixes bugs Bug 1897 and Bug 1522.

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 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: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-DCA2880E-7DF9-5E60-8F87-241711935389" xml:lang="en"><title>FeatMngrExample: dynamic feature management example</title><shortdesc>This example demonstrates the use of Feature Manager APIs
for dynamic feature management. It also demonstrates how to receive
notification about changes to a feature. </shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
<section id="GUID-716F1987-F1F1-4E20-8390-BBD9AE592C2A"><title>Download</title> <p>Click on the following link to download the example: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/zips/guid-3bc38b8f-c8bf-4af9-969b-a0bc4dd4dcad.zip" scope="external">FeatMngrExample.zip</xref></p><p>Click: <xref href="guid-6013a680-57f9-415b-8851-c4fa63356636/guid-3bc38b8f-c8bf-4af9-969b-a0bc4dd4dcad.html" scope="peer">browse</xref> to view the example code.</p> </section>
<section id="GUID-CA323EF2-3A8A-4363-AC6E-A21B3C2648D7"><title>Purpose</title> <p>The example shows how to use the <xref href="GUID-0CA63AEB-9A80-51C6-AE7F-E747D6B3B789.dita">Feature Manager</xref> API. UI vendors and device manufacturers can use this API to declare
features (such as DRM agents, codecs, vibra) as available or not.
The feature set can be adjusted dynamically as software services are
installed and uninstalled or as platform capabilities are discovered
dynamically. </p> <p>This example shows how Feature Manager APIs allow
applications and system software to establish which features are present
on or absent from a Symbian device. </p> </section>
<section id="GUID-1C59222F-2F39-4599-8052-AE7C83854AC8"><title>Design
and implementation</title> <p>The example consists of two processes: </p> <ul>
<li id="GUID-0DA213CD-55C2-5ADD-A872-20D008EE5D46"><p> <filepath>featmngrexample.exe</filepath>: this is the main process which provides the list of available features.
It also provides the option to add new features or delete/update a
feature. </p> </li>
<li id="GUID-B2A151CA-3807-5990-B431-CF4083E42107"><p> <filepath>featurechecker.exe</filepath>: this process receives notification about new features installed
or uninstalled by the main process. </p> </li>
</ul> <p><b>FeatMngrExample</b> </p> <p>This shows the use of the <xref href="GUID-F6AAAC24-4A62-383A-86C6-2E46335C3FD4.dita"><apiname>RFeatureControl</apiname></xref> API to manage features. </p> <p>It presents
menu options to the user to list the available features, to add or
delete a feature, update an existing feature, and to enable or disable
a feature. It also starts another process, called featurechecker.exe
which receives notifications of events happening in this process.
The list of features includes some whose feature flags are non-modifiable.
Any attempt to modify or delete those features will result in a system
error -21 (<codeph>KErrAccessDenied</codeph>). When adding a new feature,
it should be in the range as described in the console because the
featurechecker process subscribes to this range of features for change
notification. </p> <p><b>FeatureChecker</b> </p> <p>This process is
started by <filepath>featmngrexample.exe</filepath>. It implements
the <xref href="GUID-623C4183-00F0-36B0-AE1F-5C5EDCAF1B3D.dita"><apiname>MFeatureObserver</apiname></xref> class to handle notification
of feature changes. <codeph>FeatureChecker</codeph> also demonstrates
the use of the <xref href="GUID-CA12C6F7-E997-33B8-9463-B326BC1832C5.dita"><apiname>CFeatureNotifier</apiname></xref> class. It implements <codeph>HandleNotifyChange()</codeph> to handle the changes made by FeatMngrExample.
The type of change is displayed to the user as an infoprint message
(<xref href="GUID-C197C9A7-EA05-3F24-9854-542E984C612D.dita#GUID-C197C9A7-EA05-3F24-9854-542E984C612D/GUID-EEF84AA0-A277-390D-BFAB-CF50C94DF18D"><apiname>User::InfoPrint()</apiname></xref>). <codeph>HandleNotifyChange()</codeph> is called to handle changes for those features which are subscribed
to for notification (in the <codeph>NotifyFeatureL</codeph> () method). </p> </section>
<section id="GUID-7A7C9409-D701-4C64-B0B2-AE0F89C396FA"><title>Building
and configuring</title> <p>To build the example: </p> <ul>
<li id="GUID-A8030260-4FEF-55E1-A50C-65BEE3F08E21"><p>The example
builds two executables called <filepath>featmngrexample.exe</filepath> and <filepath>featurechecker.exe</filepath> in the standard locations.
The second executable is run by the first. </p> </li>
<li id="GUID-DD5D4965-A174-553C-BD13-22A6DFE9E52F"><p>You can build
the example from your IDE or the command line. </p> <p>If you use
an IDE, import the <filepath>bld.inf</filepath> file of the example
into your IDE, and use the build command of the IDE. </p> <p>If you
use the command line, open a command prompt, and set the current directory
to the source code directory of the example. You can then build the
example with the SBSv1 build tools with the following commands: </p> <p><userinput>bldmake bldfiles</userinput> </p> <p><userinput>abld
build</userinput> </p> </li>
</ul> </section>
<section id="GUID-8B18A01A-44D4-400E-9CEC-3E75F55D7F7F"><title>Running
the example</title> <p>When running the example, the user is presented
with various menu options that are self-explanatory. Press any other
key to exit. </p> </section>
<section id="GUID-433F7103-5372-5971-85A6-0FBF88ECE5C1"><title>See
also:</title><p><xref href="GUID-7495B1C8-38B5-5A09-8231-25B3BBC09F51.dita">Feature Management</xref></p></section>
</conbody></concept>