# HG changeset patch # User Dominic Pinkman # Date 1279297426 -3600 # Node ID 80ef3a20677267274926b513266603a8729fb389 # Parent 5072524fcc7971cb6e13ae797e9b1c05ae631a13 Week 28 contribution of PDK documentation content. See release notes for details. Fixes bugs Bug 1897, Bug 344, Bug 2681, Bug 463, Bug 1522. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/92_201008_S60.52_apidocsP_sf.zip Binary file Symbian3/PDK/Source/92_201008_S60.52_apidocsP_sf.zip has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-000ACB11-EDD0-5160-BC5E-4593F1BAF293.dita --- a/Symbian3/PDK/Source/GUID-000ACB11-EDD0-5160-BC5E-4593F1BAF293.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-000ACB11-EDD0-5160-BC5E-4593F1BAF293.dita Fri Jul 16 17:23:46 2010 +0100 @@ -39,7 +39,7 @@ to it is closed. The queue itself is simply a block of memory divided into slots, managed by the DMsgQueue object.

- +
Handle to a message queue

A message queue is created, opened, written to and @@ -50,7 +50,7 @@ the implementation, while RMsgQueue provides type safety. An RMsgQueueBase object is a valid message queue handle, but does not offer the type safety that RMsgQueue does.

- +

Message queues are used for one-way, one to one communications only. The message queue is therefore unicast. If there are multiple readers of the message queue only one will receive the message.

diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-006C503D-1E52-450D-A4DA-8C19B141E09F.dita --- a/Symbian3/PDK/Source/GUID-006C503D-1E52-450D-A4DA-8C19B141E09F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-006C503D-1E52-450D-A4DA-8C19B141E09F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ where C and C++ (and Symbian C++ as well) codes will be used together. The open source community implements a vast number of libraries that export C APIs to the user of such libraries. -
When +<section id="GUID-88635D46-AEF6-4E8E-969D-D3E56941F289-GENID-1-12-1-14-1-1-5-1-3-1-7-1-4-1-4-1-3-1"> <title>When and why to use C linkage

While porting such applications, if developers have to intermix C and C++ code, they then have to depend on C++ language features like extern "C" for giving C linkage to some set of @@ -32,7 +32,7 @@ It applies when the developer tries to use C APIs by including corresponding headers. To avoid name mangling, the developer should mention explicitly that those APIs are C APIs, by using the extern "C" keyword.

-
Syntax +<section id="GUID-88635D46-AEF6-4E8E-969D-D3E56941F289-GENID-1-12-1-14-1-1-5-1-3-1-7-1-4-1-4-1-3-2"> <title>Syntax of extern C

The syntax of extern "C" is shown below:

extern "C" declaration ;

The declaration (or definition) that immediately follows extern "C" has the C linkage.

extern "C" { @@ -41,7 +41,7 @@ ... }

Everything between the curly braces has C linkage, unless declared otherwise.

-
How +<section id="GUID-88635D46-AEF6-4E8E-969D-D3E56941F289-GENID-1-12-1-14-1-1-5-1-3-1-7-1-4-1-4-1-3-3"> <title>How to use extern C

While writing header files with C functions which will be included by both C and C++ source files, the user must use extern "C" properly. See the example below:

/*File: GoodCHeader.h */ @@ -83,7 +83,7 @@ int ret = Function2(10); }
-
Mixing +<section id="GUID-88635D46-AEF6-4E8E-969D-D3E56941F289-GENID-1-12-1-14-1-1-5-1-3-1-7-1-4-1-4-1-3-4"> <title>Mixing C and C++ features using extern "C"

The developer can use all the features of C++ except templates within C by giving those functions extern "C" linkage. See the example below:

#include <iostream> diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-009D71C6-481F-5EF1-B230-EB64F67047C8.dita --- a/Symbian3/PDK/Source/GUID-009D71C6-481F-5EF1-B230-EB64F67047C8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-009D71C6-481F-5EF1-B230-EB64F67047C8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@

The platform specific layer performs the following calculation to convert between ADC values and co-ordinates:

- +

Where the R matrix determines the scaling and rotation, and the T vector determines the translation.

diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-01029B52-55E0-5598-994F-BB5DE73D37EE.dita --- a/Symbian3/PDK/Source/GUID-01029B52-55E0-5598-994F-BB5DE73D37EE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-01029B52-55E0-5598-994F-BB5DE73D37EE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> What are LayersThis topic describes the concept of a Layer in the Communications Framework.

A Layer is a horizontal division of functionality in a stack.

A Layer matches the concept of the Layer in the seven-layer International Organization for Standardization's OSI Model. A Layer also matches the concept of the Layer in the five layer model used to describe TCP/IP.

A Layer can contain a single Communications Protocol. A Layer can also contain a number of related protocols collected into a single unit. TLS, TCP, IP, Ethernet are examples of the protocols.

The concept of a Layer allows device creators to have different implementations in a given Layer. When a data connection starts or when the environment changes, the best protocol can be selected.

The following diagram shows the concept. The diagram also shows the position of the Sockets Server Client APIs.

Layers in the Communications Framework -

Although each Layer contains a different protocol, the Communications Framework allows separate protocols to make a single Layer. For example: NCP, LCP and HDLC together make the PPP protocol. TCP, UDP, ICMP, IP together make the TCP/IP group of protocols. Each of these groups of protocols can be put together into a single Layer.

The number of Layers only depends on the configuration of the Communications Stack. The top Layer has the Sockets Server. The bottom Layer has the drivers for the communication hardware . Each Layer interacts only with the Layer immediately above and the Layer immediately below.

The framework APIs that connect the protocols in each Layer are consistent across the Communications Framework. All protocols share a common method of communication that is independent of protocol behaviour. A common method of communication allows protocols to be stacked. The Communications Framework provides flexibility in the configuration of the protocol stacks for each device. The following diagram shows a number of protocols at each Layer.

+

Although each Layer contains a different protocol, the Communications Framework allows separate protocols to make a single Layer. For example: NCP, LCP and HDLC together make the PPP protocol. TCP, UDP, ICMP, IP together make the TCP/IP group of protocols. Each of these groups of protocols can be put together into a single Layer.

The number of Layers only depends on the configuration of the Communications Stack. The top Layer has the Sockets Server. The bottom Layer has the drivers for the communication hardware . Each Layer interacts only with the Layer immediately above and the Layer immediately below.

The framework APIs that connect the protocols in each Layer are consistent across the Communications Framework. All protocols share a common method of communication that is independent of protocol behaviour. A common method of communication allows protocols to be stacked. The Communications Framework provides flexibility in the configuration of the protocol stacks for each device. The following diagram shows a number of protocols at each Layer.

Protocols arranged in Layers in the Communications Framework -
Socket Server
\ No newline at end of file + Socket Server \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0142B290-DA6C-5574-83D7-7555D804D9B5.dita --- a/Symbian3/PDK/Source/GUID-0142B290-DA6C-5574-83D7-7555D804D9B5.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ - - - - - -How -to initialise array RESOURCE members -

<array-initialiser>

-

array-initialiser ::=

-

{ <array-initialiser-item-comma-list> } <array-initialiser-item>

-

array-initialiser-item ::=

-

<initialiser>

-

Fixed-length arrays

-

If a member is declared as a fixed-length array in the STRUCT or RESOURCE definition, -for example,

-WORD elements[10] -

then you must not specify any more items than were given in the length.

-

If fewer items are specified in the default initialisation (i.e. in the STRUCT definition), -then an error also results.

-

Note that no values will be given to unspecified elements at the end of -the array, even if they have been default initialised in the STRUCT definition. -Take the following example:

-STRUCT SAMPLE - { - BYTE bts[3]={1,2,3}; - } -

In the following resource:

-RESOURCE SAMPLE default - {} -

the output will be the whole default array

-0x01 0x02 0x03 -

but in this resource:

-RESOURCE SAMPLE first_specified - { - bts={5}; - } -

the output is:

-0x05 -

with the second and third elements lost.

-

If you specify only the second element in the RESOURCE definition, -then the first element is taken from the default initialisation, the second -from the explicit initialisation and the third element is lost. The following -resource:

-RESOURCE SAMPLE second_specified - { - bts[1]=5; - } -

results in the 2-byte output:

-0x01 0x05 -

If, however, you explicitly initialise an element in the middle of an array -without having supplied default values for array members before it, then an -error will result.

-
Using expressions to initialise array elements

You -may initialise array elements with expressions. You must explicitly initialise -each member component of the array otherwise the expressions will be evaluated -incorrectly. The following resource:

RESOURCE SAMPLE correct_expression - { - bts[0]=3+1; - bts[1]=2; - bts[2]=3; - }

will generate the correct output 0x04 0x02 0x03. -However, if you use the following syntax:

RESOURCE SAMPLE incorrect_expression - { - bts={3+1,2,3}; - }

the output will be 0x03 0x02 0x03. This -is because the pre-processor treats 3+1 as a literal string -that is then interpreted by the compiler as 3. In the resource correct_expression above -the ‘=‘ sign forces the pre-processor to evaluate the expression.

-
\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-016704BE-DC2B-5AD3-B9BE-76A327678B38_d0e357477_href.jpg Binary file Symbian3/PDK/Source/GUID-016704BE-DC2B-5AD3-B9BE-76A327678B38_d0e357477_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-016704BE-DC2B-5AD3-B9BE-76A327678B38_d0e363354_href.jpg Binary file Symbian3/PDK/Source/GUID-016704BE-DC2B-5AD3-B9BE-76A327678B38_d0e363354_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-016876C8-7E13-5A3E-9A15-992B7EEEEA38.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-016876C8-7E13-5A3E-9A15-992B7EEEEA38.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,14 @@ + + + + + +Software Component +RegistryThe Software Component Registry (SCR) is a unified registry of +native and non-native software components. \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0181F4BD-51A2-49AF-9DAC-517F8BAD8DBC_d0e80547_href.png Binary file Symbian3/PDK/Source/GUID-0181F4BD-51A2-49AF-9DAC-517F8BAD8DBC_d0e80547_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0181F4BD-51A2-49AF-9DAC-517F8BAD8DBC_d0e84745_href.png Binary file Symbian3/PDK/Source/GUID-0181F4BD-51A2-49AF-9DAC-517F8BAD8DBC_d0e84745_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0185D5DC-5142-42C3-8FFB-8EB76D49AB06.dita --- a/Symbian3/PDK/Source/GUID-0185D5DC-5142-42C3-8FFB-8EB76D49AB06.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0185D5DC-5142-42C3-8FFB-8EB76D49AB06.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,8 +21,8 @@ for the request to complete. This approach is not recommended in case of a server, as synchronous call blocks the server and it cannot serve its clients during synchronous wait.

- -Request free memory. + +Request free memory. User::LeaveIfError(iOomMonitorSession.RequestFreeMemory(KLargeValueToAllocate)); DoFunctionRequiring_KLargeValueToAllocate_Bytes(); diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-018A685B-5C9D-5C7C-8615-D413ABBF7CFB_d0e343841_href.png Binary file Symbian3/PDK/Source/GUID-018A685B-5C9D-5C7C-8615-D413ABBF7CFB_d0e343841_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-018A685B-5C9D-5C7C-8615-D413ABBF7CFB_d0e349792_href.png Binary file Symbian3/PDK/Source/GUID-018A685B-5C9D-5C7C-8615-D413ABBF7CFB_d0e349792_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-01943C50-E3AB-5D5B-BC3D-B399C6BFD155-GENID-1-12-1-24-1-1-8-1-4-1-4-1-4-1-3-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-01943C50-E3AB-5D5B-BC3D-B399C6BFD155-GENID-1-12-1-24-1-1-8-1-4-1-4-1-4-1-3-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Secure Sockets ArchitectureThis section describes the architectural relationships of the Secure Sockets.
Architectural relationships

The Secure sockets architecture provides a client interface and a server. Protocol modules are plugged into the client. The client uses protocol modules to supply protocol-specific parameters to the Secure Socket API functions.

The ssl.dll plug-in supports the Transport Layer Security (TLS) v1.0 and Secure Sockets Layer (SSL) v3.0. The protocols use the socket methods to pass data between a client and a server. This method prevents the security violations.

The following diagram shows the relationship between an application and the secure sockets.

See also

Sockets Server

\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-01943C50-E3AB-5D5B-BC3D-B399C6BFD155-GENID-1-12-1-24-1-1-8-1-5-1-4-1-4-1-3-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-01943C50-E3AB-5D5B-BC3D-B399C6BFD155-GENID-1-12-1-24-1-1-8-1-5-1-4-1-4-1-3-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Secure Sockets ArchitectureThis section describes the architectural relationships of the Secure Sockets.
Architectural relationships

The Secure sockets architecture provides a client interface and a server. Protocol modules are plugged into the client. The client uses protocol modules to supply protocol-specific parameters to the Secure Socket API functions.

The ssl.dll plug-in supports the Transport Layer Security (TLS) v1.0 and Secure Sockets Layer (SSL) v3.0. The protocols use the socket methods to pass data between a client and a server. This method prevents the security violations.

The following diagram shows the relationship between an application and the secure sockets.

See also

Sockets Server

\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-01943C50-E3AB-5D5B-BC3D-B399C6BFD155-GENID-1-12-1-24-1-1-9-1-4-1-4-1-3-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-01943C50-E3AB-5D5B-BC3D-B399C6BFD155-GENID-1-12-1-24-1-1-9-1-4-1-4-1-3-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Secure Sockets ArchitectureThis section describes the architectural relationships of the Secure Sockets.
Architectural relationships

The Secure sockets architecture provides a client interface and a server. Protocol modules are plugged into the client. The client uses protocol modules to supply protocol-specific parameters to the Secure Socket API functions.

The ssl.dll plug-in supports the Transport Layer Security (TLS) v1.0 and Secure Sockets Layer (SSL) v3.0. The protocols use the socket methods to pass data between a client and a server. This method prevents the security violations.

The following diagram shows the relationship between an application and the secure sockets.

See also

Sockets Server

\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-01979029-C009-5FD3-9925-2B7945FB96A6.dita --- a/Symbian3/PDK/Source/GUID-01979029-C009-5FD3-9925-2B7945FB96A6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-01979029-C009-5FD3-9925-2B7945FB96A6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,7 +9,7 @@ --> -Restarting a Network Connection TutorialThis section describes the steps used to start a network connection that was stopped due to contention.
Introduction

A low priority connection is terminated when a contention issue occurs and the incoming connection has a higher priority. The low priority connection can be restarted when the higher priority connection is complete. For example, if an always-on Internet connection is terminated to enable the user to send an MMS, the Internet connection is restarted when the message is sent.

Introduction
  1. To terminate the high priority connection on of the following occurs:

    1. The Connection Provider (CPR) receives a TStopNormal message to terminate the process.

    2. The connection remains idle and is automatically terminated.

  2. The PDP Tier Manager does the following:

    1. Indicates to the PDP Meta-Connection Provider (MCPR) of the low priority connection that it can restore the connection.

    2. The PDP MCPR sends an availability notification to the CConnection of the low priority connection.

  3. CConnection of the low priority connection receives the availability notification and uses RConnection::Start(TConnPrefList) to establish the connection.

Restoring a connection

Use the following code to ensure a stopped connection is restored when the higher priority connection has completed.

+Restarting a Network Connection TutorialThis section describes the steps used to start a network connection that was stopped due to contention.
Introduction

A low priority connection is terminated when a contention issue occurs and the incoming connection has a higher priority. The low priority connection can be restarted when the higher priority connection is complete. For example, if an always-on Internet connection is terminated to enable the user to send an MMS, the Internet connection is restarted when the message is sent.

Introduction
  1. To terminate the high priority connection on of the following occurs:

    1. The Connection Provider (CPR) receives a TStopNormal message to terminate the process.

    2. The connection remains idle and is automatically terminated.

  2. The PDP Tier Manager does the following:

    1. Indicates to the PDP Meta-Connection Provider (MCPR) of the low priority connection that it can restore the connection.

    2. The PDP MCPR sends an availability notification to the CConnection of the low priority connection.

  3. CConnection of the low priority connection receives the availability notification and uses RConnection::Start(TConnPrefList) to establish the connection.

Restoring a connection

Use the following code to ensure a stopped connection is restored when the higher priority connection has completed.

TConnPrefList* prefs = TConnPrefList::NewL(); CleanupStack::PushL(prefs); diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-01F1C399-25F6-54E8-B48D-521187A63096.dita --- a/Symbian3/PDK/Source/GUID-01F1C399-25F6-54E8-B48D-521187A63096.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Capability Management tools \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-01F1F488-8E95-56B0-818E-6096CAE4C50C.dita --- a/Symbian3/PDK/Source/GUID-01F1F488-8E95-56B0-818E-6096CAE4C50C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-01F1F488-8E95-56B0-818E-6096CAE4C50C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,6 +20,6 @@ diagram shows the relative position of the Base Starter in the start-up sequence.

Base Starter architecture - + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-02072A1B-6F60-457B-8F26-2B25A6EA7C5F_d0e101253_href.png Binary file Symbian3/PDK/Source/GUID-02072A1B-6F60-457B-8F26-2B25A6EA7C5F_d0e101253_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-02072A1B-6F60-457B-8F26-2B25A6EA7C5F_d0e90319_href.png Binary file Symbian3/PDK/Source/GUID-02072A1B-6F60-457B-8F26-2B25A6EA7C5F_d0e90319_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-02072A1B-6F60-457B-8F26-2B25A6EA7C5F_d0e94517_href.png Binary file Symbian3/PDK/Source/GUID-02072A1B-6F60-457B-8F26-2B25A6EA7C5F_d0e94517_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-02072A1B-6F60-457B-8F26-2B25A6EA7C5F_d0e97174_href.png Binary file Symbian3/PDK/Source/GUID-02072A1B-6F60-457B-8F26-2B25A6EA7C5F_d0e97174_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0211CAA4-32FF-52F2-81DA-78C52C412AED_d0e155252_href.png Binary file Symbian3/PDK/Source/GUID-0211CAA4-32FF-52F2-81DA-78C52C412AED_d0e155252_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0211CAA4-32FF-52F2-81DA-78C52C412AED_d0e161353_href.png Binary file Symbian3/PDK/Source/GUID-0211CAA4-32FF-52F2-81DA-78C52C412AED_d0e161353_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-023268BB-8C52-51A1-9E3B-4C7E265DFDAB.dita --- a/Symbian3/PDK/Source/GUID-023268BB-8C52-51A1-9E3B-4C7E265DFDAB.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - --wrap-wrap[=<value>]

A static analysis tool can be invoked if [=<value>] is not specified. For example, -wrap.

The name of the static analysis tool executable is set using the environment variable ABLD_COMPWRAP. For more information, see How to invoke a static analysis tool using abld.

\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-023D30F0-C1E8-5E09-92AD-C5A7963DCF70_d0e512262_href.jpg Binary file Symbian3/PDK/Source/GUID-023D30F0-C1E8-5E09-92AD-C5A7963DCF70_d0e512262_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-023D30F0-C1E8-5E09-92AD-C5A7963DCF70_d0e519724_href.jpg Binary file Symbian3/PDK/Source/GUID-023D30F0-C1E8-5E09-92AD-C5A7963DCF70_d0e519724_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-02442ADC-1C4C-5489-825F-7E1630415086_d0e230144_href.png Binary file Symbian3/PDK/Source/GUID-02442ADC-1C4C-5489-825F-7E1630415086_d0e230144_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-02442ADC-1C4C-5489-825F-7E1630415086_d0e236139_href.png Binary file Symbian3/PDK/Source/GUID-02442ADC-1C4C-5489-825F-7E1630415086_d0e236139_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-02521DB0-53C4-55D5-856F-BD478E134B73_d0e547910_href.png Binary file Symbian3/PDK/Source/GUID-02521DB0-53C4-55D5-856F-BD478E134B73_d0e547910_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-02521DB0-53C4-55D5-856F-BD478E134B73_d0e555366_href.png Binary file Symbian3/PDK/Source/GUID-02521DB0-53C4-55D5-856F-BD478E134B73_d0e555366_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0259868F-8F88-5D9D-A9DE-9309C3BFBA85_d0e478805_href.png Binary file Symbian3/PDK/Source/GUID-0259868F-8F88-5D9D-A9DE-9309C3BFBA85_d0e478805_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0259868F-8F88-5D9D-A9DE-9309C3BFBA85_d0e484634_href.png Binary file Symbian3/PDK/Source/GUID-0259868F-8F88-5D9D-A9DE-9309C3BFBA85_d0e484634_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-02659624-4C27-573C-BE2E-0250D860BEA3.dita --- a/Symbian3/PDK/Source/GUID-02659624-4C27-573C-BE2E-0250D860BEA3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-02659624-4C27-573C-BE2E-0250D860BEA3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,6 +9,6 @@ --> -Media Client Video Display OverviewThis document provides an overview of the Media Client Video Display library that is used by the Video Client library in the Multimedia Framework component.
Purpose

The Media Client Video Display library allows you to display video in a window and to support a graphic surface.

Media Client Video Display library details

The DLL that provides the functionality and the library to which your code must link is identified below.

DLL LIB Short description

mediaclientvideodisplay.dll

mediaclientvideodisplay.lib

These files are used to implement the display video functionality and support graphics surfaces.

Architecture

Media Client Video Display is a standalone library used by the Video Client library to support video display. This allows you to use video display functionality separately from the client utilities. The class diagram forCMediaClientVideoDisplay is as follows:

Description

The Media Client Video Display library is a client interface to access display functions. The display functions are as follows:

  • Adding a new window

  • Redrawing the window

  • Setting the video data for automatic and specified dimension scaling

  • Rotating the video image

  • Clipping the window

  • Setting the video extension on the screen that is relative to the window.

The Media Client Video Display library allows you to perform rendering of video to graphics surfaces. It provides APIs to:

  • Create the graphic surface

  • Update the graphic surface

  • Surface parameters changed during video play back

  • Remove the graphic surface.

APIs

The key class of Media Client Video Display is as follows:

API Description

CMediaClientVideoDisplay

This class is an interface to add or remove video display windows. The CMediaClientVideoDisplay class supports graphics surfaces and provides display handling functions like video extension, scaling and rotation.

Using Media Client Video Display

Clients use CMediaClientVideoDisplay to:

  • Display video in a window

  • Support graphics surfaces.

Media Client Video Display +Media Client Video Display OverviewThis document provides an overview of the Media Client Video Display library that is used by the Video Client library in the Multimedia Framework component.
Purpose

The Media Client Video Display library allows you to display video in a window and to support a graphic surface.

Media Client Video Display library details

The DLL that provides the functionality and the library to which your code must link is identified below.

DLL LIB Short description

mediaclientvideodisplay.dll

mediaclientvideodisplay.lib

These files are used to implement the display video functionality and support graphics surfaces.

Architecture

Media Client Video Display is a standalone library used by the Video Client library to support video display. This allows you to use video display functionality separately from the client utilities. The class diagram forCMediaClientVideoDisplay is as follows:

Description

The Media Client Video Display library is a client interface to access display functions. The display functions are as follows:

  • Adding a new window

  • Redrawing the window

  • Setting the video data for automatic and specified dimension scaling

  • Rotating the video image

  • Clipping the window

  • Setting the video extension on the screen that is relative to the window.

The Media Client Video Display library allows you to perform rendering of video to graphics surfaces. It provides APIs to:

  • Create the graphic surface

  • Update the graphic surface

  • Surface parameters changed during video play back

  • Remove the graphic surface.

APIs

The key class of Media Client Video Display is as follows:

API Description

CMediaClientVideoDisplay

This class is an interface to add or remove video display windows. The CMediaClientVideoDisplay class supports graphics surfaces and provides display handling functions like video extension, scaling and rotation.

Using Media Client Video Display

Clients use CMediaClientVideoDisplay to:

  • Display video in a window

  • Support graphics surfaces.

Media Client Video Display Tutorial Video Client Overview Graphics Composition Surfaces
\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0268102D-D238-5C5E-818F-6ACC4A85B022_d0e8848_href.png Binary file Symbian3/PDK/Source/GUID-0268102D-D238-5C5E-818F-6ACC4A85B022_d0e8848_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0268102D-D238-5C5E-818F-6ACC4A85B022_d0e8970_href.png Binary file Symbian3/PDK/Source/GUID-0268102D-D238-5C5E-818F-6ACC4A85B022_d0e8970_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-026E865E-12FA-59A9-B923-309B65790E23.dita --- a/Symbian3/PDK/Source/GUID-026E865E-12FA-59A9-B923-309B65790E23.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-026E865E-12FA-59A9-B923-309B65790E23.dita Fri Jul 16 17:23:46 2010 +0100 @@ -19,7 +19,7 @@

The flowchart below shows the steps to create a Fat Filename Conversion plug-in DLL.

- +

Note: To create the plug-in DLL, the unicodeconv.cpp file is needed. It provides the functions to convert text between Unicode and a foreign encoding. It is available on the Symbian Foundation web site.

This tutorial diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-02970C7B-5B98-50C7-A324-0DDD71120DEB_d0e228901_href.png Binary file Symbian3/PDK/Source/GUID-02970C7B-5B98-50C7-A324-0DDD71120DEB_d0e228901_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-02970C7B-5B98-50C7-A324-0DDD71120DEB_d0e234899_href.png Binary file Symbian3/PDK/Source/GUID-02970C7B-5B98-50C7-A324-0DDD71120DEB_d0e234899_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-02F4AA24-283A-503D-8BA9-7C926DC7E306_d0e638138_href.png Binary file Symbian3/PDK/Source/GUID-02F4AA24-283A-503D-8BA9-7C926DC7E306_d0e638138_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-02F4AA24-283A-503D-8BA9-7C926DC7E306_d0e650960_href.png Binary file Symbian3/PDK/Source/GUID-02F4AA24-283A-503D-8BA9-7C926DC7E306_d0e650960_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-032BE80C-CF9B-564C-B2F8-F254B12699CB.dita --- a/Symbian3/PDK/Source/GUID-032BE80C-CF9B-564C-B2F8-F254B12699CB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-032BE80C-CF9B-564C-B2F8-F254B12699CB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,116 +1,237 @@ - - - - - -Release NotesThe Symbian Developer Library for Product Developers is -intended for device developers and contributors to the Symbian platform. -The information in the library corresponds to the Symbian^3 platform -release. -

Major -changes between the week 12 2010 release and week 22 2010 release

Since the week 12 2010 documentation submission to the Symbian -Foundation, the following major additions have been made:

    -
  • CryptoSPI - documentation.

  • -
  • API -changes and compatibility breaks.

  • -
  • Time -Zone Services overviews and tutorials.

  • -
  • IP Connection -Management.

  • -

Bug fixes:

This release contains fixes for the -following bugs and known issues:

    -
  • Symbian^3 documentation.

  • -
  • Buildrom content is missing.

  • -
  • Some links to Multimedia example code occur more than once -in the table of contents and in landing pages.

  • -
  • Links to the Open C examples in the full example code list -are broken.

  • -
  • Broken and incorrect links in Platform security architecture -and Optional resource file statements topics.

  • -
  • The breadcrumb trails for Application framework guide, Multimedia -example code and System GUI Framework example code are wrong and contains -duplicates.

  • -
-
Major -changes between the week 03 2010 release and week 12 2010 release

Since the week 03 2010 documentation submission to the Symbian -Foundation, the following major additions have been made:

    -
  • Inclusion of API reference extracted from the Symbian^3 source -code.

  • -
  • Inclusion of API specifications.

  • -
  • A new About Symbian^3 topic, including What's new and Porting applications -from S60 5th Edition to Symbian^3.

  • -
  • A new Getting Started topic, consisting of the Symbian Foundation's -C++ Quick Start and Going Beyond Hello tutorials.

  • -
  • Integration of the Panic Codes Reference.

  • -
  • Addition of new topics: Common Email Guide and System -Resource Monitoring.

  • -
  • The Graphics Guide has been updated for Symbian^3. For details, -see What's -New in Graphics in Symbian^3.

  • -
  • The Classic UI Guide has been updated for Symbian^3.

  • -
  • All guides have been updated to refer to the Symbian platform -rather than to Symbian OS and to S60, apart from where it is necessary -to refer to past releases.

  • -

Bug fixes:

This release contains fixes for the -following bugs:

    -
  • Change section headings in Symbian^3 product/app -reference

  • -
  • Fix up the links in the Platform security architecture -page

  • -
  • Link to sample chapter of quick recipes book in SDK -docs

  • -
  • Remove "Using the Indexes"

  • -
  • ambiguous documentation of text-options

  • -
  • Remove references to SDN and SDN++ from Symbian Developer -Library

  • -
  • Guide landing page is empty

  • -
  • Change references to "Template Port" in the kernel -& hardware services guide

  • -
  • Example of sharing chunks between surfaces is confusing -(maybe incorrect?)

  • -
  • Comments on graphics composition overview

  • -
  • Documentation for WDP device driver migration is -wrong

  • -
  • Please Check/Update the Paths used in the Reference -Library

  • -
-
Major -changes between the week 43 2009 release and week 03 2010 release

New content:

    -
  • Classic -UI Guide

  • -
  • High -Level Internet Protocols Guide

  • -
  • Short -Link Services Guide

  • -
  • Web -Guide

  • -

The following S60 5th Edition C++ Developer's Library 'Technology -area guides' have been integrated into the Symbian guide:

    -
  • Application -and UI frameworks is now in Classic UI Guide.

  • -
  • S60 -UI components is now in Classic UI Guide.

  • -
  • Multimedia is now in Multimedia Guide.

  • -
  • Browsing -and downloading is now in Web Guide.

  • -
  • Location is now in Location Based Services (LBS).

  • -
  • Security is now found at the top level.

  • -

The S60 Open C and Open C++ documentation has been merged -into the Symbian P.I.P.S. documentation and is now in Generic OS Services -Guide.

Other changes:

The Symbian Developer -Library is now released under the Eclipse Public License (EPL).

-
Known -issues in the week 22 2010 release

See Known issues with Symbian3 product developers -library.

-
Upcoming -releases and improvements in the Symbian Developer Library for Product -Developers

See the Documentation Content Package Backlog.

-
Feedback

To give feedback, please go to the Symbian Foundation Bugtracker (login required).

-
\ No newline at end of file + + + + +Release Notes +The Symbian Developer Library for Product Developers is +intended for device developers and contributors to the Symbian platform. +The information in the library corresponds to the Symbian^3 platform +release. + + + + + + +
Major changes between the week 22 2010 release and +week 28 2010 release

The following API specifications are +new (Product Developer Library build only):

    +
  • AI Content Model API

  • +
  • AI Plug-in Management API

  • +
  • AI Utilities API

  • +
  • Discreet Pop-up API

  • +
  • Generic AHL API

  • +
  • HS Content Control API

  • +
  • HS External Rendering Plug-in API

  • +
  • HS Settings API

  • +
  • Idle Fw API

  • +
  • Menu Content Service API

  • +
  • Network Positioning Proxy Configuration API

  • +
  • Touch Gesture Framework API

  • +

Other changes:

    +
  • The PIM Application Engines and Services section has been split +into Contacts +Guide and Organizer Guide to match the Symbian Foundation package structure.

  • +
  • The Tools and Utilities section has been removed. The content +previously included in this section will be delivered with other Tools +documentation in the Symbian^3 and Symbian^4 Tools Guides (coming +soon).

  • +

Bug fixes:

This release contains fixes for the +following bugs:

    +
  • Guide landing page is empty
  • +
  • Remove references to SDN and SDN++ from Symbian Developer +Library
  • +
  • Code listings in API specs are unreadable
  • +
  • Change references to "Template Port" in the kernel +& hardware services guide
  • +
  • Fix up the links in the Platform security architecture +page
  • +
+
Major +changes between the week 12 2010 release and week 22 2010 release

Since the week 12 2010 documentation submission to the Symbian +Foundation, the following major additions have been made:

    +
  • CryptoSPI documentation.

  • +
  • API changes and compatibility breaks.

  • +
  • Time Zone Services overviews and tutorials.

  • +
  • IP Connection Management.

  • +

Bug fixes:

This release contains fixes for the +following bugs and known issues:

    +
  • Symbian^3 documentation.

  • +
  • Buildrom content is missing.

  • +
  • Some links to Multimedia example code occur more than once +in the table of contents and in landing pages.

  • +
  • Links to the Open C examples in the full example code list +are broken.

  • +
  • Broken and incorrect links in Platform security architecture +and Optional resource file statements topics.

  • +
  • The breadcrumb trails for Application framework guide, Multimedia +example code and System GUI Framework example code are wrong and contains +duplicates.

  • +
+
Major +changes between the week 03 2010 release and week 12 2010 release

Since the week 03 2010 documentation submission to the Symbian +Foundation, the following major additions have been made:

    +
  • Inclusion of API reference extracted from the Symbian^3 source +code.

  • +
  • Inclusion of API specifications.

  • +
  • A new About Symbian^3 topic, including What's new and Porting applications +from S60 5th Edition to Symbian^3.

  • +
  • A new Getting Started topic, consisting of the Symbian Foundation's +C++ Quick Start and Going Beyond Hello tutorials.

  • +
  • Integration of the Panic Codes +Reference.

  • +
  • Addition of new topics: Common Email +Guide and System Resource +Monitoring.

  • +
  • The Graphics Guide has been updated for Symbian^3. For details, +see What's +New in Graphics in Symbian^3.

  • +
  • The Classic UI Guide has been updated for Symbian^3.

  • +
  • All guides have been updated to refer to the Symbian platform +rather than to Symbian OS and to S60, apart from where it is necessary +to refer to past releases.

  • +

Bug fixes:

This release contains fixes for the +following bugs:

    +
  • Change section headings in Symbian^3 product/app +reference

  • +
  • Fix up the links in the Platform security architecture +page

  • +
  • Link to sample chapter of quick recipes book in SDK +docs

  • +
  • Remove "Using the Indexes"

  • +
  • ambiguous documentation of text-options

  • +
  • Remove references to SDN and SDN++ from Symbian Developer +Library

  • +
  • Guide landing page is empty

  • +
  • Change references to "Template Port" in the kernel +& hardware services guide

  • +
  • Example of sharing chunks between surfaces is confusing +(maybe incorrect?)

  • +
  • Comments on graphics composition overview

  • +
  • Documentation for WDP device driver migration is +wrong

  • +
  • Please Check/Update the Paths used in the Reference +Library

  • +
+
Major +changes between the week 43 2009 release and week 03 2010 release

New content:

    +
  • Classic UI Guide

  • +
  • High Level Internet Protocols Guide

  • +
  • Short Link Services Guide

  • +
  • Web Guide

  • +

The following S60 5th Edition C++ Developer's Library 'Technology +area guides' have been integrated into the Symbian guide:

    +
  • Application and UI frameworks is now in Classic UI Guide.

  • +
  • S60 UI components is now in Classic UI Guide.

  • +
  • Multimedia is now in Multimedia Guide.

  • +
  • Browsing and downloading is now in Web Guide.

  • +
  • Location is now in Location Based Services (LBS).

  • +
  • Security is now found at the top level.

  • +

The S60 Open C and Open C++ documentation has been merged +into the Symbian P.I.P.S. documentation and is now in Generic OS Services +Guide.

Other changes:

The Symbian Developer +Library is now released under the Eclipse Public License (EPL).

+
Known +issues in the week 28<?Pub Caret?> 2010 release

See Known issues with Symbian3 product developers library.

+
Upcoming +releases and improvements in the Symbian Developer Library for Product +Developers

See the Documentation Content Package Backlog.

+
Feedback

To give feedback, please go to the Symbian Foundation Bugtracker (login required).

+
+
+ diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0348B62D-1AE0-45F5-B06E-9EE2D83326E8.dita --- a/Symbian3/PDK/Source/GUID-0348B62D-1AE0-45F5-B06E-9EE2D83326E8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0348B62D-1AE0-45F5-B06E-9EE2D83326E8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -25,7 +25,7 @@ general, only the most important status indicators are displayed.

Universal status indicators displayed in the top-right corner - +
Using universal indicators in applications

The universal diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-03671C88-6911-5184-A9D4-A2D2FD69A2B9_d0e665539_href.png Binary file Symbian3/PDK/Source/GUID-03671C88-6911-5184-A9D4-A2D2FD69A2B9_d0e665539_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-03671C88-6911-5184-A9D4-A2D2FD69A2B9_d0e678366_href.png Binary file Symbian3/PDK/Source/GUID-03671C88-6911-5184-A9D4-A2D2FD69A2B9_d0e678366_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-037DFEEE-757A-5C0B-AAA7-62E3E39FAF30.dita --- a/Symbian3/PDK/Source/GUID-037DFEEE-757A-5C0B-AAA7-62E3E39FAF30.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-037DFEEE-757A-5C0B-AAA7-62E3E39FAF30.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,7 +9,7 @@ --> -Migrating from Feature Registry to Feature ManagerProvides detailed instructions for migrating Feature registry to Feature Manager runtime and buildtime.

  • Migrating to Feature Manager runtime APIs

  • Migrating to Feature Manager buildtime tooling

Migrating to Feature Manager runtime APIs

FeatureRegistry queries the presence of a feature with the functions QuerySupport() and QuerySupportS() which are now deprecated. The publishPartner version of Feature Manager implements the corresponding functionality with a choice of function calls, either static or dynamic. The SDK version only provides the static function calls.

Old New

TInt RFeatureRegistry:: QuerySupport(TUid aFeatureUid)

TInt RFeatureControl:: FeatureSupported( TUid aFeature )

TInt RFeatureRegistry:: QuerySupport(TUid aFeatureUid, TUint32& aInfo);

TInt RFeatureControl::FeatureSupported( TFeatureEntry& aFeature )

TInt static RFeatureRegistry:: QuerySupportS(TUid aFeatureUid);

TBool static CFeatureDiscovery ::IsFeatureSupportedL( TUid aFeature )

TInt static RFeatureRegistry:: QuerySupportS(TUid aFeatureUid);

Dynamic calls to the Open(), FeatureSupported() and Close() functions of an RFeatureControl object.

TInt static RFeatureRegistry:: QuerySupportS(TUid aFeatureUid, TUint32& aInfo);

TBool static CFeatureDiscovery ::IsFeatureSupportedL( TUid aFeature )

TInt static RFeatureRegistry:: QuerySupportS(TUid aFeatureUid, TUint32& aInfo);

Dynamic calls to the Open(), FeatureSupported() and Close() functions of an RFeatureControl object.

Migrating to Feature Manager buildtime tooling

The transition from Feature Registry to Feature Manager also involves changes to the process of building ROM. Features can be included in ROM as a partial build with the purpose of upgrading features, or as the corresponding section of a full build: the changes to the procedure are the same either way.

Two tools are used to automate the process: a new version of the old tool buildrom and a new tool features.

The procedure for building ROM uses a feature database in the form of an an .xml file to specify the features to be included and an .iby file to specify those to be excluded. The structure of these files has been modified slightly.

The old feature database, called featureUIDs.xml is replaced by a new version called featuredatabase.xml with a new XML structure. The old XML tags correspond to the new ones like this.

Feature Registry Feature Manager

<featureuids>

<featuredatabase>

<features>

<featureset>

<features>:: uid

<feature>::uid

<features>::name

<feature>::name

None

<feature>:: statusflags

<default>

<defaultfeaturerange>

<default>:: min

<defaultfeaturerange>:: loweruid

<default>:: max

<defaultfeaturerange>:: higheruid

<default>:: support

<defaultfeaturerange>:: support

The values of the attributes are the same in both versions of the schema. The new attribute statusflags of <feature> takes the mandatory value of 0x00000001.

You can upgrade your XML feature database in three ways.

  • by upgrading the file manually in accordance with the equivalences given,

  • by calling the tool features to perform the conversion automatically, or

  • by leaving the file as it is and calling the tool buildrom with the flag -fm.

You call the tool features like this:

features -c <destination> featureUIDs.xml

where -c is a flag forcing the conversion. The output is a file featureUIDs_converted.xml in the folder specified at <destination>.

Whether or not you force the conversion, a call to features will generate the file feature.iby and the header file featureUIDs.h.

The .iby file, called feature.iby, has a new extended syntax. There are now two new flags which override the default values for the status flags and user-defined data:

  • SF followed by a value for the status flags of the feature, and

  • UD followed by a value for the user-defined data for the feature.

For example:

EXCLUDE_FEATURE Fax SF 0x00000008 +Migrating from Feature Registry to Feature ManagerProvides detailed instructions for migrating Feature registry to Feature Manager runtime and buildtime.
  • Migrating to Feature Manager runtime APIs

  • Migrating to Feature Manager buildtime tooling

Migrating to Feature Manager runtime APIs

FeatureRegistry queries the presence of a feature with the functions QuerySupport() and QuerySupportS() which are now deprecated. The publishPartner version of Feature Manager implements the corresponding functionality with a choice of function calls, either static or dynamic. The SDK version only provides the static function calls.

Old New

TInt RFeatureRegistry:: QuerySupport(TUid aFeatureUid)

TInt RFeatureControl:: FeatureSupported( TUid aFeature )

TInt RFeatureRegistry:: QuerySupport(TUid aFeatureUid, TUint32& aInfo);

TInt RFeatureControl::FeatureSupported( TFeatureEntry& aFeature )

TInt static RFeatureRegistry:: QuerySupportS(TUid aFeatureUid);

TBool static CFeatureDiscovery ::IsFeatureSupportedL( TUid aFeature )

TInt static RFeatureRegistry:: QuerySupportS(TUid aFeatureUid);

Dynamic calls to the Open(), FeatureSupported() and Close() functions of an RFeatureControl object.

TInt static RFeatureRegistry:: QuerySupportS(TUid aFeatureUid, TUint32& aInfo);

TBool static CFeatureDiscovery ::IsFeatureSupportedL( TUid aFeature )

TInt static RFeatureRegistry:: QuerySupportS(TUid aFeatureUid, TUint32& aInfo);

Dynamic calls to the Open(), FeatureSupported() and Close() functions of an RFeatureControl object.

Migrating to Feature Manager buildtime tooling

The transition from Feature Registry to Feature Manager also involves changes to the process of building ROM. Features can be included in ROM as a partial build with the purpose of upgrading features, or as the corresponding section of a full build: the changes to the procedure are the same either way.

Two tools are used to automate the process: a new version of the old tool buildrom and a new tool features.

The procedure for building ROM uses a feature database in the form of an an .xml file to specify the features to be included and an .iby file to specify those to be excluded. The structure of these files has been modified slightly.

The old feature database, called featureUIDs.xml is replaced by a new version called featuredatabase.xml with a new XML structure. The old XML tags correspond to the new ones like this.

Feature Registry Feature Manager

<featureuids>

<featuredatabase>

<features>

<featureset>

<features>:: uid

<feature>::uid

<features>::name

<feature>::name

None

<feature>:: statusflags

<default>

<defaultfeaturerange>

<default>:: min

<defaultfeaturerange>:: loweruid

<default>:: max

<defaultfeaturerange>:: higheruid

<default>:: support

<defaultfeaturerange>:: support

The values of the attributes are the same in both versions of the schema. The new attribute statusflags of <feature> takes the mandatory value of 0x00000001.

You can upgrade your XML feature database in three ways.

  • by upgrading the file manually in accordance with the equivalences given,

  • by calling the tool features to perform the conversion automatically, or

  • by leaving the file as it is and calling the tool buildrom with the flag -fm.

You call the tool features like this:

features -c <destination> featureUIDs.xml

where -c is a flag forcing the conversion. The output is a file featureUIDs_converted.xml in the folder specified at <destination>.

Whether or not you force the conversion, a call to features will generate the file feature.iby and the header file featureUIDs.h.

The .iby file, called feature.iby, has a new extended syntax. There are now two new flags which override the default values for the status flags and user-defined data:

  • SF followed by a value for the status flags of the feature, and

  • UD followed by a value for the user-defined data for the feature.

For example:

EXCLUDE_FEATURE Fax SF 0x00000008 FEATURE Print UD 0x00000010

The possible values and significance of the status flags are listed in the enumeration TFeatureFlags. The user-defined data consists of a 32 bit integer.

If you call the tool buildrom with the new flag -fm then it will convert featureUIDs.xml into featuredatabase.xml. This flag replaces the old -f and -fr.

Feature Registry Overview Feature Manager diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-038747F2-E5A2-5739-BFF5-69B6BD0DCEB2.dita --- a/Symbian3/PDK/Source/GUID-038747F2-E5A2-5739-BFF5-69B6BD0DCEB2.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -abld command syntax \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-03A3E872-8183-4F56-976E-A6AF435742C6_d0e80445_href.png Binary file Symbian3/PDK/Source/GUID-03A3E872-8183-4F56-976E-A6AF435742C6_d0e80445_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-03A3E872-8183-4F56-976E-A6AF435742C6_d0e84643_href.png Binary file Symbian3/PDK/Source/GUID-03A3E872-8183-4F56-976E-A6AF435742C6_d0e84643_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-03A3E872-8183-4F56-976E-A6AF435742C6_d0e95454_href.png Binary file Symbian3/PDK/Source/GUID-03A3E872-8183-4F56-976E-A6AF435742C6_d0e95454_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-03A3E872-8183-4F56-976E-A6AF435742C6_d0e99650_href.png Binary file Symbian3/PDK/Source/GUID-03A3E872-8183-4F56-976E-A6AF435742C6_d0e99650_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-03AC137D-173A-558C-A2F3-9522870AC43C_d0e315969_href.png Binary file Symbian3/PDK/Source/GUID-03AC137D-173A-558C-A2F3-9522870AC43C_d0e315969_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-03AC137D-173A-558C-A2F3-9522870AC43C_d0e321959_href.png Binary file Symbian3/PDK/Source/GUID-03AC137D-173A-558C-A2F3-9522870AC43C_d0e321959_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-03BBEA31-3266-5B1C-9017-4EE7EA4AF1A8.dita --- a/Symbian3/PDK/Source/GUID-03BBEA31-3266-5B1C-9017-4EE7EA4AF1A8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-03BBEA31-3266-5B1C-9017-4EE7EA4AF1A8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -44,7 +44,7 @@ example: createsis create -cert trustedchain.pem -key eecertkey.key mypackage.pkg

The process of creating an installation file can be understood using the following illustration:

- +
Notes

While creating a SIS file using the CreateSIS tool, if you do not specify the key or certificate on the command line the create method diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-03ED031D-65DB-51DE-8238-1F2ADF3BC936_d0e270512_href.png Binary file Symbian3/PDK/Source/GUID-03ED031D-65DB-51DE-8238-1F2ADF3BC936_d0e270512_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-03ED031D-65DB-51DE-8238-1F2ADF3BC936_d0e276512_href.png Binary file Symbian3/PDK/Source/GUID-03ED031D-65DB-51DE-8238-1F2ADF3BC936_d0e276512_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-043A9408-1A97-4122-9364-965ECC08B40F.dita --- a/Symbian3/PDK/Source/GUID-043A9408-1A97-4122-9364-965ECC08B40F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-043A9408-1A97-4122-9364-965ECC08B40F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,8 +11,8 @@ PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd"> Converting from any local time to UTC - -To convert the local + +To convert the local time of a non-system time zone to UTC, use CTzConverter::ConvertToUniversalTime(), specifying the time zone to convert from:

TInt errCode = myConverter->ConvertToUniversalTime(myTime, myZoneId); diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-043CFB8D-8780-478C-A3B2-FE5838795665_d0e81300_href.png Binary file Symbian3/PDK/Source/GUID-043CFB8D-8780-478C-A3B2-FE5838795665_d0e81300_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-043CFB8D-8780-478C-A3B2-FE5838795665_d0e85498_href.png Binary file Symbian3/PDK/Source/GUID-043CFB8D-8780-478C-A3B2-FE5838795665_d0e85498_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-045F3455-2B5A-5B20-ABCE-ED202DC5078A_d0e7684_href.png Binary file Symbian3/PDK/Source/GUID-045F3455-2B5A-5B20-ABCE-ED202DC5078A_d0e7684_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-045F3455-2B5A-5B20-ABCE-ED202DC5078A_d0e7806_href.png Binary file Symbian3/PDK/Source/GUID-045F3455-2B5A-5B20-ABCE-ED202DC5078A_d0e7806_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-04820567-5745-56D3-9D9D-05E576FF7454_d0e607371_href.png Binary file Symbian3/PDK/Source/GUID-04820567-5745-56D3-9D9D-05E576FF7454_d0e607371_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-04820567-5745-56D3-9D9D-05E576FF7454_d0e646533_href.png Binary file Symbian3/PDK/Source/GUID-04820567-5745-56D3-9D9D-05E576FF7454_d0e646533_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-049A089E-FF08-5706-8485-8C9A5A0BCF6F.dita --- a/Symbian3/PDK/Source/GUID-049A089E-FF08-5706-8485-8C9A5A0BCF6F.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ - - - - - -Symbian Emulator build output locations

In versions of the OS from v9.0, all executable files (exes and libraries) are built on the Symbian emulator to epoc32\release\winscw\udeb\ (or urel\ for release builds). This location is the equivalent to \sys\bin\ on target devices.

Resource files and other non-executable files are built to the location specified in the mmp file below epoc32\release\winscw\ udeb or - urel \z\, for example, epoc32\release\winscw\ udeb or - urel \z\resource\apps\ for GUI application resources.

A copy of the built resources etc. is also put under epoc32\data\Z\, which is used when building for any target, Symbian emulator or ARM. Because the same resource files apply to all build targets, it makes sense for them to be located in a common directory.

To run an executable file, start the Symbian emulator epoc32\release\winscw\ udeb or - urel \epoc.exe, and run the program from whatever shell program the UI being used provides.

\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-04B044E7-5F10-47BC-B95F-27B62C2870E8.dita --- a/Symbian3/PDK/Source/GUID-04B044E7-5F10-47BC-B95F-27B62C2870E8.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ - - - - - -Keypad -tone -

A tone can be generated whenever a key event occurs. The tones for short -key presses (actually a key down event) and long key presses are different; -a key repeat event uses the long key press tone.

-

The keypad tone can be adjusted or turned ON or OFF by the -user.

-
\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-04B1D977-EE3F-5EC6-B1C7-68F6E4C801E2_d0e49428_href.png Binary file Symbian3/PDK/Source/GUID-04B1D977-EE3F-5EC6-B1C7-68F6E4C801E2_d0e49428_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-04B1D977-EE3F-5EC6-B1C7-68F6E4C801E2_d0e53662_href.png Binary file Symbian3/PDK/Source/GUID-04B1D977-EE3F-5EC6-B1C7-68F6E4C801E2_d0e53662_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-04D917A1-E1A0-5149-9660-80A1146D0984.dita --- a/Symbian3/PDK/Source/GUID-04D917A1-E1A0-5149-9660-80A1146D0984.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-04D917A1-E1A0-5149-9660-80A1146D0984.dita Fri Jul 16 17:23:46 2010 +0100 @@ -34,7 +34,7 @@ (shown in green).

OpenGLES component relationships - +

It is possible for the OpenGL ES and EGL implementations to communicate through a private interface that is not standardized by Symbian.

diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0504B740-FB22-4399-B16D-BE6030B512B3.dita --- a/Symbian3/PDK/Source/GUID-0504B740-FB22-4399-B16D-BE6030B512B3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0504B740-FB22-4399-B16D-BE6030B512B3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,11 +21,11 @@ button present within the input.

Split view ITU-T - + Split view QWERTY - +

In hybrid devices, when the hardware keyboard is opened, the virtual keyboard (full screen or split view) disappears.

diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0522B178-0FD5-4416-B7FE-390749F7A13D.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-0522B178-0FD5-4416-B7FE-390749F7A13D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,15 @@ + + + + + +Contacts Guide +

The Contacts package offers services for managing contacts-related +data. Contacts package includes Phonebook and Logs applications.

+
\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0528A294-AC1B-5CDD-B59C-A105F39D748F_d0e237324_href.png Binary file Symbian3/PDK/Source/GUID-0528A294-AC1B-5CDD-B59C-A105F39D748F_d0e237324_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0528A294-AC1B-5CDD-B59C-A105F39D748F_d0e243297_href.png Binary file Symbian3/PDK/Source/GUID-0528A294-AC1B-5CDD-B59C-A105F39D748F_d0e243297_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-053FFF2B-6FB1-5065-B9D1-047477F3DE01.dita --- a/Symbian3/PDK/Source/GUID-053FFF2B-6FB1-5065-B9D1-047477F3DE01.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-053FFF2B-6FB1-5065-B9D1-047477F3DE01.dita Fri Jul 16 17:23:46 2010 +0100 @@ -19,7 +19,7 @@

The following diagram illustrates the concept of the dictionary store.

Dictionary store - +

The interface to a dictionary store is provided by the CDictionaryStore abstract class. The classes for concrete dictionary stores are derived from this abstract diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0554F7DB-9102-5BB4-AD10-D6FDE77F1117_d0e464132_href.png Binary file Symbian3/PDK/Source/GUID-0554F7DB-9102-5BB4-AD10-D6FDE77F1117_d0e464132_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0554F7DB-9102-5BB4-AD10-D6FDE77F1117_d0e469977_href.png Binary file Symbian3/PDK/Source/GUID-0554F7DB-9102-5BB4-AD10-D6FDE77F1117_d0e469977_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-055E42B2-27E7-45F2-8450-5CCF4E1DEB15_d0e91710_href.png Binary file Symbian3/PDK/Source/GUID-055E42B2-27E7-45F2-8450-5CCF4E1DEB15_d0e91710_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-055E42B2-27E7-45F2-8450-5CCF4E1DEB15_d0e95908_href.png Binary file Symbian3/PDK/Source/GUID-055E42B2-27E7-45F2-8450-5CCF4E1DEB15_d0e95908_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-056165A7-E8A1-4868-8051-9EC58C5A3342.dita --- a/Symbian3/PDK/Source/GUID-056165A7-E8A1-4868-8051-9EC58C5A3342.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-056165A7-E8A1-4868-8051-9EC58C5A3342.dita Fri Jul 16 17:23:46 2010 +0100 @@ -54,7 +54,7 @@ this case, scrollbars are used as navigation indicators.

- +

Direct taps and strokes are far easier for the user to understand and pick up than abstract, indirect ones. A single view must always employ only a few diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-056B9A65-EC59-4B2E-9F10-E487343B5F5F.dita --- a/Symbian3/PDK/Source/GUID-056B9A65-EC59-4B2E-9F10-E487343B5F5F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-056B9A65-EC59-4B2E-9F10-E487343B5F5F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,58 +9,58 @@ --> -SemaphoreExample: -thread synchronisation using semaphoresExplains how to use Semaphores to achieve thread synchronization. -

It is recommended to use semaphores instead of thread priorities for the -following reasons:

    -
  • In a uniprocessor environment, setting the thread priorities does -not guarantee prioritized or serialized execution.

  • -
  • In a multiprocessor or SMP environment, thread priorities are irrelevant -as multiple threads can run simultaneously.

  • +SemaphoreExample: thread synchronisation using semaphoresExplains how to use Semaphores to achieve thread synchronization. +

    It is recommended to use semaphores instead of thread priorities +for the following reasons:

      +
    • In a uniprocessor environment, setting the thread priorities +does not guarantee prioritized or serialized execution.

    • +
    • In a multiprocessor or SMP environment, thread priorities are +irrelevant as multiple threads can run simultaneously.

    -
    Download

    Click on the following link to download -the example: SemaphoreExample.zip

    Click: browse to view the example code.

    -
    Description:

    The example creates a database containing -a table of three columns with integer entries.

    The example creates -two threads:

      -
    • WriterThread: This thread calls a periodic function -at an interval of one second, and in each iteration it inserts one row of -integers in the table.

    • -
    • ReaderThread: This thread also calls a periodic function -at an interval of one second, and in each iteration it reads one row of integers -following the last row read.

    • -

    The example uses a macro USE_SEMAPHORE to show the -difference between the code using semaphores and the code which doesn't use -semaphores. When not using semaphores, it is not guaranteed that the ReaderThread will -be able to read the database because in an SMP environment, data may not yet -have been written by the WriterThread.

    Using a semaphore -serializes the thread execution. The read operation waits on the semaphore -until it gets a signal from the write operation. This ensures that the ReaderThread only -reads a row from the database after the WriterThread has -written it.

    -
    Class summary
      +
      Download

      Click on the following link to download the example: SemaphoreExample.zip

      Click: browse to view the example code.

      +
      Description:

      The example creates a database containing a table of three columns +with integer entries.

      The example creates two threads:

        +
      • WriterThread: This thread calls a periodic +function at an interval of one second, and in each iteration it inserts +one row of integers in the table.

      • +
      • ReaderThread: This thread also calls a periodic +function at an interval of one second, and in each iteration it reads +one row of integers following the last row read.

      • +

      The example uses a macro USE_SEMAPHORE to +show the difference between the code using semaphores and the code +which doesn't use semaphores. When not using semaphores, it is not +guaranteed that the ReaderThread will be able to +read the database because in an SMP environment, data may not yet +have been written by the WriterThread.

      Using +a semaphore serializes the thread execution. The read operation waits +on the semaphore until it gets a signal from the write operation. +This ensures that the ReaderThread only reads a row +from the database after the WriterThread has written +it.

      +
      Class +summary
      • RThread - A handle to a thread.

      • RDbStoreDatabase - DBMS Store database implementation

      • RSemaphore - Used for thread synchronization.

      -
      Building and configuring

      To build the example:

        -
      • The example builds an -executable called semaphoreexample.exe in the standard -location.

      • -
      • You can build the example -from your IDE or the command line.

        If you use an IDE, import the bld.inf file -of the example into your IDE, and use the build command of the IDE.

        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:

        bldmake -bldfiles

        abld build

        How to use bldmake and How to use abld describe -how to use the SBSv1 build tools.

      • +
        Building +and configuring

        To build the example:

          +
        • The example +builds an executable called semaphoreexample.exe in the standard location.

        • +
        • You can build +the example from your IDE or the command line.

          If you use +an IDE, import the bld.inf file of the example +into your IDE, and use the build command of the IDE.

          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:

          bldmake bldfiles

          abld +build .

        -
        Running the example

        The example code contains a -macroUSE_SEMAPHORE in the mmp file. -By default it is commented out and on execution the example runs without using -semaphores; the macro should be uncommented to use semaphores. The console -output will generally look the same whether using semaphores or not if there -is a single processor, but differences will occur in an SMP environment. Run -the example following the instructions provided in the console.

        +
        Running +the example

        The example code contains a macroUSE_SEMAPHORE in the mmp file. By default it is commented +out and on execution the example runs without using semaphores; the +macro should be uncommented to use semaphores. The console output +will generally look the same whether using semaphores or not if there +is a single processor, but differences will occur in an SMP environment. +Run the example following the instructions provided in the console.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-057891A5-2394-489E-9323-91BE256F2188_d0e92399_href.png Binary file Symbian3/PDK/Source/GUID-057891A5-2394-489E-9323-91BE256F2188_d0e92399_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-057891A5-2394-489E-9323-91BE256F2188_d0e96597_href.png Binary file Symbian3/PDK/Source/GUID-057891A5-2394-489E-9323-91BE256F2188_d0e96597_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-058FAE44-DF72-53E2-BE62-EDC840A7C87F_d0e376244_href.png Binary file Symbian3/PDK/Source/GUID-058FAE44-DF72-53E2-BE62-EDC840A7C87F_d0e376244_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-058FAE44-DF72-53E2-BE62-EDC840A7C87F_d0e382088_href.png Binary file Symbian3/PDK/Source/GUID-058FAE44-DF72-53E2-BE62-EDC840A7C87F_d0e382088_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-05C87497-738B-473C-B5B2-BE46D32225F5_d0e94566_href.png Binary file Symbian3/PDK/Source/GUID-05C87497-738B-473C-B5B2-BE46D32225F5_d0e94566_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-05C87497-738B-473C-B5B2-BE46D32225F5_d0e98764_href.png Binary file Symbian3/PDK/Source/GUID-05C87497-738B-473C-B5B2-BE46D32225F5_d0e98764_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-063020E5-51C0-45C3-8B8B-015385FA0928.dita --- a/Symbian3/PDK/Source/GUID-063020E5-51C0-45C3-8B8B-015385FA0928.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-063020E5-51C0-45C3-8B8B-015385FA0928.dita Fri Jul 16 17:23:46 2010 +0100 @@ -18,14 +18,14 @@ Calling freopen() once more, the user can change the filename during execution. This helps to redirect application printf() messages into a log file.

        -
        Download

        Click +

        Download

        Click on the following link to download the example: redirectprintf.zip

        Click: browse to view the example code.

        -
        Design and +<section id="GUID-7E7C4564-B10E-41F9-8A9D-D8A6C5E9C51C-GENID-1-12-1-14-1-1-5-1-3-1-11-1-15-1-3-3"><title>Design and Implementation

        The following sections provide information about the implementation of the example.

        Capabilities

        The program capabilities are defined in redirectprintf.mmp : CAPABILITY NONE.
        -
        Building and +<section id="GUID-67A72761-1D92-46D1-B1C9-7455978BDE4E-GENID-1-12-1-14-1-1-5-1-3-1-11-1-15-1-3-4"><title>Building and Using To build the example application, go to the redirectprintf\group directory and build the application. The definition for the whole application can be found in the bld.inf file in the group subdirectory of the applications diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-064302D7-3598-57C2-89B7-CED294BE78AE.dita --- a/Symbian3/PDK/Source/GUID-064302D7-3598-57C2-89B7-CED294BE78AE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-064302D7-3598-57C2-89B7-CED294BE78AE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,6 +9,6 @@ --> -Certificate Store FrameworkCertificate store (certstore) framework provides interfaces for implementing certstore. A certstore is a database that stores certificates. The framework provide functionalities such as generation, storage and retrieval of certificates, assigning trust status to certificates and retrieving list of applications trusting a certificate.
        Description

        The certstore framework is an extension framework of CryptoToken Framework. The framework provides interfaces that must be implemented to retrieve certificates as tokens from the store.

        +<concept xml:lang="en" id="GUID-064302D7-3598-57C2-89B7-CED294BE78AE"><title>Certificate Store FrameworkCertificate store (certstore) framework provides interfaces for implementing certstore. A certstore is a database that stores certificates. The framework provide functionalities such as generation, storage and retrieval of certificates, assigning trust status to certificates and retrieving list of applications trusting a certificate.
        Description

        The certstore framework is an extension framework of CryptoToken Framework. The framework provides interfaces that must be implemented to retrieve certificates as tokens from the store.

        Certstore Framework Implementation -

        Classes

        Description

        MCTTokenInterface

        Provides an interface for the implementation of an appropriate token

        MCertStore

        Defines an interface for retrieving details of a stored certificate

        MCTCertStore

        Defines an interface to implement a read-only certstore using the token framework. This class allows retrieving details of a certificate stored using the CryptoToken framework.

        MCTWritableCertStore

        Defines an interface to implement a writable certstore. This class allows modifications of the certstore.

        Device creators can use the interfaces provided by the framework to implement certstore for managing certificates.

        CryptoToken Framework Overview Unified Certstore \ No newline at end of file +

        Classes

        Description

        MCTTokenInterface

        Provides an interface for the implementation of an appropriate token

        MCertStore

        Defines an interface for retrieving details of a stored certificate

        MCTCertStore

        Defines an interface to implement a read-only certstore using the token framework. This class allows retrieving details of a certificate stored using the CryptoToken framework.

        MCTWritableCertStore

        Defines an interface to implement a writable certstore. This class allows modifications of the certstore.

        Device creators can use the interfaces provided by the framework to implement certstore for managing certificates.

        CryptoToken Framework Overview Unified Certstore
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-067BC702-4F66-5CAF-952D-7CFA35F5EB1E.dita --- a/Symbian3/PDK/Source/GUID-067BC702-4F66-5CAF-952D-7CFA35F5EB1E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-067BC702-4F66-5CAF-952D-7CFA35F5EB1E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,5 +9,5 @@ --> -Twip to Pixel Mapping

        This topic provides an introduction to two classes that embody the important GUI features of device independence and the ability to zoom.

        Two desirable facilities of a GUI are:

        • device independence

        • zooming to reveal greater levels of detail or, conversely, more of a document

        These two facilities are embodied in the two classes MGraphicsDeviceMap and TZoomFactor.

        Device independence is facilitated by storing drawings and text in device-independent form and then converting the device-independent units (twips) into device-dependent units (pixels) for different devices such as screens and printers. The conversion interface is MGraphicsDeviceMap, and it is implemented by graphics devices.

        TZoomFactor also implements this interface. It takes a mapping between twips and pixels, and then also applies a zooming factor: the larger the zooming factor, the more pixels per twip. The relationship between the classes is shown below:

        Note that TZoomFactor not only implements MGraphicsDeviceMap but also uses it. The point is that the MGraphicsDeviceMap -supporting object used can either be a graphics device, or another TZoomFactor. This allows zooming to be applied to an already zoomed mapping.

        Using TZoomFactor and +Twip to Pixel Mapping

        This topic provides an introduction to two classes that embody the important GUI features of device independence and the ability to zoom.

        Two desirable facilities of a GUI are:

        • device independence

        • zooming to reveal greater levels of detail or, conversely, more of a document

        These two facilities are embodied in the two classes MGraphicsDeviceMap and TZoomFactor.

        Device independence is facilitated by storing drawings and text in device-independent form and then converting the device-independent units (twips) into device-dependent units (pixels) for different devices such as screens and printers. The conversion interface is MGraphicsDeviceMap, and it is implemented by graphics devices.

        TZoomFactor also implements this interface. It takes a mapping between twips and pixels, and then also applies a zooming factor: the larger the zooming factor, the more pixels per twip. The relationship between the classes is shown below:

        Note that TZoomFactor not only implements MGraphicsDeviceMap but also uses it. The point is that the MGraphicsDeviceMap -supporting object used can either be a graphics device, or another TZoomFactor. This allows zooming to be applied to an already zoomed mapping.

        Using TZoomFactor and MGraphicsDeviceMap Graphics Device Interface Concepts
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-06B287CD-C19A-4CAC-8378-5563C552448B_d0e86014_href.png Binary file Symbian3/PDK/Source/GUID-06B287CD-C19A-4CAC-8378-5563C552448B_d0e86014_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-06B287CD-C19A-4CAC-8378-5563C552448B_d0e90212_href.png Binary file Symbian3/PDK/Source/GUID-06B287CD-C19A-4CAC-8378-5563C552448B_d0e90212_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-06CB380C-A0F9-5AAE-B66E-AFCAABE9BA39.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-06CB380C-A0F9-5AAE-B66E-AFCAABE9BA39.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Dependency diagram for hash.dll on Symbian OS v8.1

        The diagram below shows the inter-dependencies between pbe.dll (shaded) and its clients. Pbe.dll imports hash.dll, cryptography.dll and random.dll, and also euser.dll from the base/e32 component. Line colour has no significance.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-074F3499-54FE-58BC-A0F4-D8EA632AF76B.dita --- a/Symbian3/PDK/Source/GUID-074F3499-54FE-58BC-A0F4-D8EA632AF76B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-074F3499-54FE-58BC-A0F4-D8EA632AF76B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,7 +9,7 @@ --> -Externalising a Swizzle

        Typically, externalizing a Swizzle is a two stage process which involves:

        • externalizing the in-memory object which the Swizzle represents, to its own stream

        • externalizing the resulting stream ID.

        For example, given a container type object, CClassABC, with a data member TSwizzle<CClassB> iB representing a CClassB object in memory, the diagram below illustrates the result of storing the container object.

        The following code fragments illustrates the process.

        iB is a CClassB type component of a class CClassABC, and is represented by a Swizzle. The data member is defined as:

        class CCClassABC : public CBase +Externalising a Swizzle

        Typically, externalizing a Swizzle is a two stage process which involves:

        • externalizing the in-memory object which the Swizzle represents, to its own stream

        • externalizing the resulting stream ID.

        For example, given a container type object, CClassABC, with a data member TSwizzle<CClassB> iB representing a CClassB object in memory, the diagram below illustrates the result of storing the container object.

        The following code fragments illustrates the process.

        iB is a CClassB type component of a class CClassABC, and is represented by a Swizzle. The data member is defined as:

        class CCClassABC : public CBase { ... TSwizzle<CClassB> iB; @@ -45,4 +45,4 @@ aStream << iB ... } -

        At this point, the Swizzle still represents the CClassB object as a pointer, and the object itself is still in memory.

        The mechanism underlying the implementation of the stream operator<<, assumes that the stream ID associated with the Swizzle has been placed in the store map. It also assumes that the RStoreWriteStream object has been constructed, specifying the store map as an externalizer.

        The end result of the operation aStream << iB;, is to externalise, to the stream, the stream ID associated with the Swizzle iB. The following diagram shows this:

        \ No newline at end of file +

        At this point, the Swizzle still represents the CClassB object as a pointer, and the object itself is still in memory.

        The mechanism underlying the implementation of the stream operator<<, assumes that the stream ID associated with the Swizzle has been placed in the store map. It also assumes that the RStoreWriteStream object has been constructed, specifying the store map as an externalizer.

        The end result of the operation aStream << iB;, is to externalise, to the stream, the stream ID associated with the Swizzle iB. The following diagram shows this:

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-07791D92-4B0F-5D11-9874-4C03FA1A2C02.dita --- a/Symbian3/PDK/Source/GUID-07791D92-4B0F-5D11-9874-4C03FA1A2C02.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-07791D92-4B0F-5D11-9874-4C03FA1A2C02.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,35 +1,36 @@ - - - - - -MClasses1-3: -abstract interface classes -
        Description

        The three examples show the use of -‘M’ (abstract interface) classes, the only type of multiple inheritance used -on the Symbian platform.

        They show how interfaces can be used to define -a protocol. The interface is implemented by a protocol provider, and called -by a protocol user. The user is not supposed to know anything about the provider's -implementation, only about the protocol it's interested in.

        -
        Download

        Click on the following links to download -the examples:

        MClasses1.zip

        MClasses2.zip

        MClasses3.zip

        Click on the following link to -download additional files: CommonFramework.zip.

        Click the following links -to view the example code.

        MClasses1

        MClasses2

        MClasses3

        Click browse CommonFramework to view the additional -files.

        -
        Build

        The examples each include the two project -files needed for building: bld.inf and the .mmp file.

        The Symbian platform build -process describes how to build these applications. They results in -executables called:

        \epoc32\release\<target>\<urel -or udeb>\MCLASSES1.EXE.

        \epoc32\release\<target>\<urel -or udeb>\MCLASSES2.EXE.

        \epoc32\release\<target>\<urel -or udeb>\MCLASSES3.EXE.

        -
        Usage

        Run the executables MCLASSES1.EXE, MCLASSES2.EXE and MCLASSES3.EXE.

        Executables for the emulator targets wins and winscw can -be run on your PC. Executables for ARM targets must be copied to your target -platform before being run.

        + + + + + +MClasses1-3: abstract interface classes +
        Description

        The three examples show the +use of ‘M’ (abstract interface) classes, the only type of multiple +inheritance used on the Symbian platform.

        They show how interfaces +can be used to define a protocol. The interface is implemented by +a protocol provider, and called by a protocol user. The user is not +supposed to know anything about the provider's implementation, only +about the protocol it's interested in.

        +
        Download

        Click on the following links to +download the examples:

        MClasses1.zip

        MClasses2.zip

        MClasses3.zip

        Click on the following +link to download additional files: CommonFramework.zip.

        Click the following +links to view the example code.

        MClasses1

        MClasses2

        MClasses3

        Click browse CommonFramework to view the additional +files.

        +
        Build

        The examples each include the two +project files needed for building: bld.inf and +the .mmp file.

        The Symbian platform +build process describes how to build these applications. They result +in executables called:

        \epoc32\release\<target>\<urel +or udeb>\MCLASSES1.EXE.

        \epoc32\release\<target>\<urel +or udeb>\MCLASSES2.EXE.

        \epoc32\release\<target>\<urel +or udeb>\MCLASSES3.EXE.

        +
        Usage

        Run the executables MCLASSES1.EXE, MCLASSES2.EXE and MCLASSES3.EXE.

        Executables for the emulator targets wins and winscw can be run on your PC. Executables +for ARM targets must be copied to your target platform before being +run.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-077B0CE8-FDC1-5BE9-B356-F8E545A0A53D_d0e276163_href.png Binary file Symbian3/PDK/Source/GUID-077B0CE8-FDC1-5BE9-B356-F8E545A0A53D_d0e276163_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-077B0CE8-FDC1-5BE9-B356-F8E545A0A53D_d0e282163_href.png Binary file Symbian3/PDK/Source/GUID-077B0CE8-FDC1-5BE9-B356-F8E545A0A53D_d0e282163_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-07A42662-87A1-4537-89B9-F87DFC8481E8.dita --- a/Symbian3/PDK/Source/GUID-07A42662-87A1-4537-89B9-F87DFC8481E8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-07A42662-87A1-4537-89B9-F87DFC8481E8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ indicator, and the corresponding top-right area for the battery level indicator.

        Signal and battery indicators on the sides of the status pane. - +

        The signal indicator is a part of the Status pane, and it is displayed in all states where the Status pane exists. Indicators consist of a bar graph diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-07B6D7EE-575A-5E8E-A2BB-8893F84F7F6D_d0e535715_href.jpg Binary file Symbian3/PDK/Source/GUID-07B6D7EE-575A-5E8E-A2BB-8893F84F7F6D_d0e535715_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-07B6D7EE-575A-5E8E-A2BB-8893F84F7F6D_d0e543175_href.jpg Binary file Symbian3/PDK/Source/GUID-07B6D7EE-575A-5E8E-A2BB-8893F84F7F6D_d0e543175_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-07C031C2-7FFC-5B0E-9691-E6E678E65C4B.dita --- a/Symbian3/PDK/Source/GUID-07C031C2-7FFC-5B0E-9691-E6E678E65C4B.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Resource file source format \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-07D2ED79-90B2-4ABC-A61F-108DAEE21955.dita --- a/Symbian3/PDK/Source/GUID-07D2ED79-90B2-4ABC-A61F-108DAEE21955.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-07D2ED79-90B2-4ABC-A61F-108DAEE21955.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,12 +11,12 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Implementing framework requirements -Application Menu +Application Menu

        In the Symbian platform, mobile device users start applications from the application menu. When the mobile device user selects an application, the application framework calls the application's entry point to launch the application. In some cases, applications can also be started by other executables.

        -Application launch +Application launch

        When an application starts, objects are created in the following order:

        1. application diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-07F65EEA-5969-5E56-9570-245712FB3EE3_d0e341787_href.png Binary file Symbian3/PDK/Source/GUID-07F65EEA-5969-5E56-9570-245712FB3EE3_d0e341787_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-07F65EEA-5969-5E56-9570-245712FB3EE3_d0e347738_href.png Binary file Symbian3/PDK/Source/GUID-07F65EEA-5969-5E56-9570-245712FB3EE3_d0e347738_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-08152DC3-2A5D-42AC-B722-3D49275FE548_d0e14596_href.png Binary file Symbian3/PDK/Source/GUID-08152DC3-2A5D-42AC-B722-3D49275FE548_d0e14596_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-08152DC3-2A5D-42AC-B722-3D49275FE548_d0e14692_href.png Binary file Symbian3/PDK/Source/GUID-08152DC3-2A5D-42AC-B722-3D49275FE548_d0e14692_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0817AD1D-58CF-5108-ACBF-26DFD4BA395E.dita --- a/Symbian3/PDK/Source/GUID-0817AD1D-58CF-5108-ACBF-26DFD4BA395E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0817AD1D-58CF-5108-ACBF-26DFD4BA395E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,86 +1,80 @@ - - - - - -Descriptors -OverviewThis document provides an overview of descriptors. -

          Purpose

          Manipulates -string and data buffers.

          -
          Description

          Descriptors -are a family of classes that are used in Symbian platform for string handling. -They are used in preference to NULL-terminated C strings. The same classes -are used for general binary data.

          The basic classification of descriptor -types is given below. Concrete descriptor classes implement variations on -these basic types for different data widths and for different abilities to -modify the data. The names of the concrete classes follow certain naming conventions -that modify the basic name given in the table.

          Basic -classification

          - - - -

          Type

          -

          Description

          -

          Basic name

          -
          - -

          abstract

          -

          Base interface: allows descriptors of different types to be use -polymorphically

          -

          TDes

          -
          - -

          buffer

          -

          Stack based: contains the data as part of itself. Buffer descriptors -have a maximum length set at compile time.

          -

          TBuf

          -
          - -

          pointer

          -

          Refer to data stored elsewhere that is not owned by the descriptor

          -

          TPtr

          -
          - -

          heap

          -

          Refers to data stored on the heap that is owned by the descriptor. -The maximum length of this data can be set and changed dynamically.

          -

          HBufC

          RBuf

          -
          - - -

          Width

          Descriptor -types can store 8-bit or 16-bit data. These types are indicated by the convention -of appending 8 or 16 on the basic name, e.g. TDes16. In -practice, the basic names correspond to 16-bit types, for example TBuf is -defined to be TBuf16.

          Modifiable and non-modifiable

          Modifiable descriptor types -have an interface that allows callers to alter their contents, such as appending -characters.

          Non-modifiable descriptor types can have their contents -reset, but not modified. The convention is for non-modifiable types to append -a C on the basic name, e.g. TBufC.

          Heap type descriptors -are an exceptional case: they are available only in the non-modifiable form, -but can, nevertheless, be modified through use of a pointer: see HBufC::Des(). -Alternatively, you can use the RBuf descriptor, which is -simpler to use than HBufC. The general rule is:

            -
          • use HBufC for -data that rarely changes.

          • -
          • Use RBuf for -data that changes frequently.

          • -

          Example code

          For -examples, see:

            -
          • Descriptor Example -Code

          • -
          • Descriptors -Cookbook at the Symbian Foundation.

          • -
          • S60 Platform: Descriptor Example v2.1 on Forum Nokia.

          • -
          -
          See also

          Character Representation -Of Real Numbers Overview

          Dynamic -Buffers Overview

          Literals -Overview

          + + + + + +Descriptors OverviewThis document provides an overview of descriptors. +
          Purpose

          Manipulates string and data buffers.

          +
          Description

          Descriptors are a family of classes that are used in Symbian +platform for string handling. They are used in preference to NULL-terminated +C strings. The same classes are used for general binary data.

          The basic classification of descriptor types is given below. +Concrete descriptor classes implement variations on these basic types +for different data widths and for different abilities to modify the +data. The names of the concrete classes follow certain naming conventions +that modify the basic name given in the table.

          Basic classification

          + + + + +

          Type

          +

          Description

          +

          Basic name

          +
          + +

          abstract

          +

          Base interface: allows descriptors of different types to +be use polymorphically

          +

          TDes

          +
          + +

          buffer

          +

          Stack based: contains the data as part of itself. Buffer +descriptors have a maximum length set at compile time.

          +

          TBuf

          +
          + +

          pointer

          +

          Refer to data stored elsewhere that is not owned by the +descriptor

          +

          TPtr

          +
          + +

          heap

          +

          Refers to data stored on the heap that is owned by the descriptor. +The maximum length of this data can be set and changed dynamically.

          +

          HBufC

          RBuf

          +
          + + +

          Width

          Descriptor types can store 8-bit or 16-bit data. +These types are indicated by the convention of appending 8 or 16 on +the basic name, e.g. TDes16. In practice, the basic +names correspond to 16-bit types, for example TBuf is defined to be TBuf16.

          Modifiable and non-modifiable

          Modifiable descriptor +types have an interface that allows callers to alter their contents, +such as appending characters.

          Non-modifiable descriptor types +can have their contents reset, but not modified. The convention is +for non-modifiable types to append a C on the basic name, e.g. TBufC.

          Heap type descriptors are an exceptional +case: they are available only in the non-modifiable form, but can, +nevertheless, be modified through use of a pointer: see HBufC::Des(). Alternatively, you can use the RBuf descriptor, +which is simpler to use than HBufC. The general rule +is:

            +
          • Use HBufC for data that rarely changes.

          • +
          • Use RBuf for data that changes frequently.

          • +

          Example code

          For +examples, see:

            +
          • Descriptor +Example Code

          • +
          • Descriptors Cookbook at the Symbian Foundation.

          • +
          • S60 Platform: Descriptor Example v2.1 on Forum +Nokia.

          • +
          +
          See +also

          Character Representation Of Real Numbers Overview

          Dynamic Buffers +Overview

          Literals Overview

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0822B030-E776-4BD5-B9C9-23D3821BCE1F.dita --- a/Symbian3/PDK/Source/GUID-0822B030-E776-4BD5-B9C9-23D3821BCE1F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0822B030-E776-4BD5-B9C9-23D3821BCE1F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -38,15 +38,15 @@ one or the other should happen for every item in the list.

          Select action opens a view - + Select action performs a command - + Context sensitive Options menu opened with the Selection key - +

          The keypad functions for selection lists are as follows:

          Default key events @@ -146,7 +146,7 @@ </table> <fig id="GUID-4149CCA2-D8FE-4393-8D82-A736EF5337C5"> <title>Selection lists - +
          Using selection lists in applications

          The API to use for selection lists diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-084C5F8F-3310-5BDE-BB4B-110361D45AB0_d0e321813_href.png Binary file Symbian3/PDK/Source/GUID-084C5F8F-3310-5BDE-BB4B-110361D45AB0_d0e321813_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-084C5F8F-3310-5BDE-BB4B-110361D45AB0_d0e327799_href.png Binary file Symbian3/PDK/Source/GUID-084C5F8F-3310-5BDE-BB4B-110361D45AB0_d0e327799_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-085CD9C3-706F-51E7-A1D5-95483D3C9254_d0e147882_href.png Binary file Symbian3/PDK/Source/GUID-085CD9C3-706F-51E7-A1D5-95483D3C9254_d0e147882_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-085CD9C3-706F-51E7-A1D5-95483D3C9254_d0e150123_href.png Binary file Symbian3/PDK/Source/GUID-085CD9C3-706F-51E7-A1D5-95483D3C9254_d0e150123_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-08698D45-1F37-553A-9497-0081271535A1_d0e167629_href.png Binary file Symbian3/PDK/Source/GUID-08698D45-1F37-553A-9497-0081271535A1_d0e167629_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-08698D45-1F37-553A-9497-0081271535A1_d0e173722_href.png Binary file Symbian3/PDK/Source/GUID-08698D45-1F37-553A-9497-0081271535A1_d0e173722_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0886F421-4895-5007-AAE7-0013E9FF211F_d0e231831_href.png Binary file Symbian3/PDK/Source/GUID-0886F421-4895-5007-AAE7-0013E9FF211F_d0e231831_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0886F421-4895-5007-AAE7-0013E9FF211F_d0e237826_href.png Binary file Symbian3/PDK/Source/GUID-0886F421-4895-5007-AAE7-0013E9FF211F_d0e237826_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-08A6B93F-92CD-5182-B142-D353E78016F3_d0e658855_href.png Binary file Symbian3/PDK/Source/GUID-08A6B93F-92CD-5182-B142-D353E78016F3_d0e658855_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-08A6B93F-92CD-5182-B142-D353E78016F3_d0e671682_href.png Binary file Symbian3/PDK/Source/GUID-08A6B93F-92CD-5182-B142-D353E78016F3_d0e671682_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-08E31D57-A84D-5B6B-B16F-3F7025A763E9_d0e338593_href.png Binary file Symbian3/PDK/Source/GUID-08E31D57-A84D-5B6B-B16F-3F7025A763E9_d0e338593_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-08E31D57-A84D-5B6B-B16F-3F7025A763E9_d0e344565_href.png Binary file Symbian3/PDK/Source/GUID-08E31D57-A84D-5B6B-B16F-3F7025A763E9_d0e344565_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-08ED8657-DB96-59AC-9016-602BD5680752.dita --- a/Symbian3/PDK/Source/GUID-08ED8657-DB96-59AC-9016-602BD5680752.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-08ED8657-DB96-59AC-9016-602BD5680752.dita Fri Jul 16 17:23:46 2010 +0100 @@ -28,7 +28,7 @@ -

          IsSupportedL() returns KErrNone if +

          IsSupportedL() returns KErrNone if the feature is supported or else an error message.

          Querying diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-09044578-9ADB-540F-A854-A818EA3970B7_d0e342094_href.png Binary file Symbian3/PDK/Source/GUID-09044578-9ADB-540F-A854-A818EA3970B7_d0e342094_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-09044578-9ADB-540F-A854-A818EA3970B7_d0e348045_href.png Binary file Symbian3/PDK/Source/GUID-09044578-9ADB-540F-A854-A818EA3970B7_d0e348045_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-09142C26-0AFA-510E-836D-010EE07A1549_d0e235717_href.png Binary file Symbian3/PDK/Source/GUID-09142C26-0AFA-510E-836D-010EE07A1549_d0e235717_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-09142C26-0AFA-510E-836D-010EE07A1549_d0e241690_href.png Binary file Symbian3/PDK/Source/GUID-09142C26-0AFA-510E-836D-010EE07A1549_d0e241690_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-09263C33-EE63-530C-A6B9-70806F0BC16D-master.png Binary file Symbian3/PDK/Source/GUID-09263C33-EE63-530C-A6B9-70806F0BC16D-master.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-09263C33-EE63-530C-A6B9-70806F0BC16D_d0e724127_href.png Binary file Symbian3/PDK/Source/GUID-09263C33-EE63-530C-A6B9-70806F0BC16D_d0e724127_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-092C18D4-A525-5562-9BF6-41435E400290.dita --- a/Symbian3/PDK/Source/GUID-092C18D4-A525-5562-9BF6-41435E400290.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-092C18D4-A525-5562-9BF6-41435E400290.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,19 +16,20 @@

          The purpose is to create a basic multithreading example showing the usage of the LibpThread APIs. This example also shows how multi-threading is used to achieve concurrency in tasks and sharing of resources.

          -
          Download

          Click on the following link to download the example: LibpThreadExample.zip

          Click: browse to view the example code.

          -
          Description

          The following sections provide more information about the steps -that the example performs.

          Thread Synchronisation

          The example creates three threads named ThreadOne, -ThreadTwo and ThreadThree. The threads write "One", "Two" and "Three" -five times in a text file. The text file, located in epoc32\winscw\c\newfile.txt, is used as a shared resource for all three threads. A mutex is +

          Download

          Click on the following link to download the example: LibpThreadExample.zip

          Click: browse to view the example code.

          +
          Description

          The following sections provide more information about the steps +that the example performs.

          Thread Synchronisation

          The example creates three threads named ThreadOne, ThreadTwo +and ThreadThree. The threads write "One", "Two" and "Three" five times +in a text file. The text file, located in epoc32\winscw\c\newfile.txt, is used as a shared resource for all three threads. A mutex is used to ensure that first ThreadOne writes in the file, then ThreadTwo and then ThreadThree. If the mutex is not used all the threads can simultaneously write in the file. This can be seen by commenting out pthread_mutex_lock and pthread_mutex_unlock in the code.

          Related APIs

          pthread_mutex_lock(pthread_mutex_t *)

          pthread_mutex_unlock(pthread_mutex_t *)

          pthread_join(pthread_t,void **)

          pthread_mutex_t

          -
          Build

          The Symbian -build process describes how to build this example application.

          The example builds an executable called LibpThreadExample.exe in the standard locations.

          To run the example, start LibpThreadExample.exe from the file system or from your -IDE. After launching the executable, depending on the emulator you -are using, you may need to navigate away from the application launcher -or shell screen to view the console.

          +
          Build

          The Symbian build process describes how to build this example +application.

          The example builds an executable +called LibpThreadExample.exe in the standard +locations.

          To run the example, start LibpThreadExample.exe from the file system or from your IDE. After launching the executable, +depending on the emulator you are using, you may need to navigate +away from the application launcher or shell screen to view the console.

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0991E536-97B2-4EAA-9448-A090BD073140_d0e100003_href.png Binary file Symbian3/PDK/Source/GUID-0991E536-97B2-4EAA-9448-A090BD073140_d0e100003_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0991E536-97B2-4EAA-9448-A090BD073140_d0e104088_href.png Binary file Symbian3/PDK/Source/GUID-0991E536-97B2-4EAA-9448-A090BD073140_d0e104088_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-09A58B23-68EA-58D7-BBC9-E7F4C4BF55D7_d0e580777_href.png Binary file Symbian3/PDK/Source/GUID-09A58B23-68EA-58D7-BBC9-E7F4C4BF55D7_d0e580777_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-09A58B23-68EA-58D7-BBC9-E7F4C4BF55D7_d0e630065_href.png Binary file Symbian3/PDK/Source/GUID-09A58B23-68EA-58D7-BBC9-E7F4C4BF55D7_d0e630065_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-09A760FD-4C2A-5F79-91F2-DCC25A63699C.dita --- a/Symbian3/PDK/Source/GUID-09A760FD-4C2A-5F79-91F2-DCC25A63699C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-09A760FD-4C2A-5F79-91F2-DCC25A63699C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -45,7 +45,7 @@ following diagram is an example of a content file. The same diagram is used in the procedure to illustrate the implementation of Consumer API.

          Example content file - +
          Procedure
          1. Create a content object.

          2. @@ -84,7 +84,7 @@ as a jpeg image is a container, it's just that the file only has the "DEFAULT" object embedded inside.

            So, when the example file shown earlier is opened, the following objects can be seen by the CContent:

            - +

            In this top level container, there is only one embedded content object visible (the .jpg file) and two embedded container objects.

            // Create an array to store the results of CContent::GetEmbeddedObjectsL() @@ -118,7 +118,7 @@ // Open the first container content->OpenContainer(UniqueId);

            Now CContent can see the contents of Container 1:

            - +

            At this point, listing the objects that CContent can see gives six MP3 files and one container object.

            // Get the embedded content objects in the current container content->GetEmbeddedObjectsL(myArray, EContentObject); @@ -266,6 +266,6 @@ content->GetEmbeddedObjectsL(myArray, EContainerObject); i = myArray.Count(); // One container object myArray.ResetAndDestroy(); - +
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-09E44FE5-6BEE-49FF-8BBF-CBB3C066EE10.dita --- a/Symbian3/PDK/Source/GUID-09E44FE5-6BEE-49FF-8BBF-CBB3C066EE10.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-09E44FE5-6BEE-49FF-8BBF-CBB3C066EE10.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,7 +17,7 @@

          Before listening for channel changes, you must open the sensor channel.

          - + Create a channel listener implementation for the MSensrvChannelListener interface. class ChannelListener:public MSensrvChannelListener diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-09EE01E2-BF5E-5302-BA25-46C440ADECF5_d0e378223_href.png Binary file Symbian3/PDK/Source/GUID-09EE01E2-BF5E-5302-BA25-46C440ADECF5_d0e378223_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-09EE01E2-BF5E-5302-BA25-46C440ADECF5_d0e384076_href.png Binary file Symbian3/PDK/Source/GUID-09EE01E2-BF5E-5302-BA25-46C440ADECF5_d0e384076_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-09EFBBDE-780D-5A16-8E3B-78DEFF1F8938_d0e453895_href.png Binary file Symbian3/PDK/Source/GUID-09EFBBDE-780D-5A16-8E3B-78DEFF1F8938_d0e453895_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-09EFBBDE-780D-5A16-8E3B-78DEFF1F8938_d0e459740_href.png Binary file Symbian3/PDK/Source/GUID-09EFBBDE-780D-5A16-8E3B-78DEFF1F8938_d0e459740_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0A13A931-016C-5325-97AF-2DE0B210DF2F.dita --- a/Symbian3/PDK/Source/GUID-0A13A931-016C-5325-97AF-2DE0B210DF2F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0A13A931-016C-5325-97AF-2DE0B210DF2F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -53,7 +53,7 @@ Window Server

          The Window Server controls access by many client applications, to the machine’s screen, keyboard and pointer.

          - +

          The Window Server thread runs at a higher priority than any application; only the kernel runs at a higher priority. Therefore, all applications' requests for screen updates, and all handling of @@ -79,7 +79,7 @@ we provide a summary of the key concepts.

          Window Server client-side API classes - +
          @@ -178,18 +178,12 @@ the Window Server and write to the screen directly. This avoids client-server communication and as a result is faster. However, some interaction with the Window Server is needed to prevent the application from drawing -over other application's data.

          In ScreenPlay, Symbian recommends -the use of external surfaces in preference to DSA. However, support for -DSA is maintained for backward compatibility reasons, although there -are some subtle changes in the support offered.

          ScreenPlay does -not support the mixing of CWindowGc and DSA rendering -to the same window. When DSA rendering is present, any CWindowGc rendering to the same window is ignored. For example, an application -that uses CWindowGC rendering in one part of a window -and DSA rendering in another part will not work as expected in a ScreenPlay -environment. Similarly, CWindowGc rendering can no -longer be used to seed the DSA content as it could previously. However, CWindowGc rendering can be provided but it is not rendered -until the DSA rendering finishes. It is therefore best to avoid mixing -the rendering types in the same window.

          +over other application's data.

          On ScreenPlay, support for +direct screen access (DSA) is maintained for backward compatibility +reasons, although Symbian recommends the use of external surfaces in preference to DSA. However, whereas on some earlier devices, +applications might work without fully conforming to the rules of DSA, +these rules are now necessarily enforced. See DSA Migration Guide for information about the guidelines applications must follow in +order to be able to run correctly on a ScreenPlay device.

          diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0A24FF35-5A61-5305-812B-632F20F0395D_d0e454299_href.png Binary file Symbian3/PDK/Source/GUID-0A24FF35-5A61-5305-812B-632F20F0395D_d0e454299_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0A24FF35-5A61-5305-812B-632F20F0395D_d0e460144_href.png Binary file Symbian3/PDK/Source/GUID-0A24FF35-5A61-5305-812B-632F20F0395D_d0e460144_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0A61CB48-B8EA-5516-B24E-65898CDF2566.dita --- a/Symbian3/PDK/Source/GUID-0A61CB48-B8EA-5516-B24E-65898CDF2566.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0A61CB48-B8EA-5516-B24E-65898CDF2566.dita Fri Jul 16 17:23:46 2010 +0100 @@ -541,7 +541,7 @@ the C32 server. Each of these configurations is explained in more detail below.

          Figure 1 - No CSYs in main thread: RootServer with 4 C32 CPMs - +

          Referring to Figure 1, the following can be observed:

          1. The Main Thread has WorkerId=0, Role as Dealer and is configured to load no CSY

          2. @@ -573,7 +573,7 @@ Figure 2 - All CSYs in main thread: RootServer with single C32 CPM - +

            In Figure 2 the CPM loads any CSYs, and so should contain CSYList tag in the IniData section.

            The Main Thread has WorkerId=0, Role as Dealer and is configured to load any CSY. In this configuration @@ -585,7 +585,7 @@ Figure 3 - Some CSYs in main thread: RootServer with 3 CPMs - +

            From Figure 3, the following can be observed.

            1. The Main Thread has WorkerId=0, Role as Dealer and is configured to load HSDPA csy

            2. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0A7AB5BF-B126-4A3C-AC0D-C5443C06A82E.dita --- a/Symbian3/PDK/Source/GUID-0A7AB5BF-B126-4A3C-AC0D-C5443C06A82E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0A7AB5BF-B126-4A3C-AC0D-C5443C06A82E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -32,7 +32,7 @@ possible solution is to send the cancel completion message from the RunL() function call of the server.

              Error in cancellation sequence - + Client code// [...] //Whilst running diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0A932926-281D-5465-9F38-E5FA8AA7EBD4.dita --- a/Symbian3/PDK/Source/GUID-0A932926-281D-5465-9F38-E5FA8AA7EBD4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0A932926-281D-5465-9F38-E5FA8AA7EBD4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,7 +17,7 @@ following illustration shows the steps for creating a CSIPContactHeader instance.

              Creating a Contact Header - +
              Error handling

              If an error occurs during a synchronous operation initiated by the client, the diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0AD34BA6-D0C5-5AD7-B8E1-F737BB5FC0AC.dita --- a/Symbian3/PDK/Source/GUID-0AD34BA6-D0C5-5AD7-B8E1-F737BB5FC0AC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0AD34BA6-D0C5-5AD7-B8E1-F737BB5FC0AC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -22,7 +22,7 @@

              The classes involved with redraw stores are as follows:

              Redraw stores class diagram - +

              CWsRedrawMsgWindow is the class representing a redraw store. Draw commands are stored in a number of segments, stored in the nested diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0B0EF90E-45A4-467F-8CD9-33FBC612B3BD_d0e2460_href.png Binary file Symbian3/PDK/Source/GUID-0B0EF90E-45A4-467F-8CD9-33FBC612B3BD_d0e2460_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0B0EF90E-45A4-467F-8CD9-33FBC612B3BD_d0e2470_href.png Binary file Symbian3/PDK/Source/GUID-0B0EF90E-45A4-467F-8CD9-33FBC612B3BD_d0e2470_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0B151FE8-21E1-58A1-BEB3-5502EDF052C0_d0e109584_href.png Binary file Symbian3/PDK/Source/GUID-0B151FE8-21E1-58A1-BEB3-5502EDF052C0_d0e109584_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0B151FE8-21E1-58A1-BEB3-5502EDF052C0_d0e112007_href.png Binary file Symbian3/PDK/Source/GUID-0B151FE8-21E1-58A1-BEB3-5502EDF052C0_d0e112007_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0B1A4D73-AB81-586C-9D95-A0F5EE1F4BC7_d0e541071_href.png Binary file Symbian3/PDK/Source/GUID-0B1A4D73-AB81-586C-9D95-A0F5EE1F4BC7_d0e541071_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0B1A4D73-AB81-586C-9D95-A0F5EE1F4BC7_d0e548531_href.png Binary file Symbian3/PDK/Source/GUID-0B1A4D73-AB81-586C-9D95-A0F5EE1F4BC7_d0e548531_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0B41947E-B710-5D89-AEEF-6EFF496BAD96_d0e458990_href.png Binary file Symbian3/PDK/Source/GUID-0B41947E-B710-5D89-AEEF-6EFF496BAD96_d0e458990_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0B41947E-B710-5D89-AEEF-6EFF496BAD96_d0e464835_href.png Binary file Symbian3/PDK/Source/GUID-0B41947E-B710-5D89-AEEF-6EFF496BAD96_d0e464835_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0B45D491-F88A-5036-A51C-9BFD6DB574D5_d0e63250_href.png Binary file Symbian3/PDK/Source/GUID-0B45D491-F88A-5036-A51C-9BFD6DB574D5_d0e63250_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0B45D491-F88A-5036-A51C-9BFD6DB574D5_d0e67481_href.png Binary file Symbian3/PDK/Source/GUID-0B45D491-F88A-5036-A51C-9BFD6DB574D5_d0e67481_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0B4D4675-2CFB-5964-A869-7275202AC71D.dita --- a/Symbian3/PDK/Source/GUID-0B4D4675-2CFB-5964-A869-7275202AC71D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0B4D4675-2CFB-5964-A869-7275202AC71D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -34,7 +34,7 @@ Write code to handle the Location Server setting GPS options The PSY can also be passed options for a position request. The parameters are obtained through accessor methods provided on the CPositioner class. The CPositioner base class provides a default implementation that retrieves the options provided by the client application when it makes a location request. The PSY implementation can override these methods if required: CPositioner::GetMaxAge() A client application may specify a maximum age when performing a position request. This means that a position can be returned from an old measurement as long as the position is not older than the specified maximum age. Supporting maximum age is optional in a PSY. If the PSY developer wants to support the maximum age, the PSY must be implemented to cache the latest position estimate. GetMaxAge() is the function that the PSY implementation can use to retrieve the maximum age specified by the client. CPositioner::IsPartialUpdateAllowed() A client application may specify that it accepts incomplete location information. Incomplete location information is only required to contain the time and the PSY ID. It is not required to include latitude or longitude. For example, a GPS PSY may read NMEA sentences, which does not include a fix because the terminal is indoors. The GPS PSY could still return satellite information to the client if partial updates are allowed. The PSY can check if partial location information is accepted by the client by calling IsPartialUpdateAllowed(). If ETrue is returned, then the PSY can return an incomplete fix. CPositioner::GetRequiredPositionQuality() A client application may specify a required position quality. The PSY can use the position quality if it is possible to specify the required quality of position to the positioning technology that it encapsulates. GetRequiredPositionQuality() returns KErrNotFound if no quality has been specified by the client. Important Note: GetRequiredPositionQuality() is not currently supported and always returns KErrNotFound. Write code to handle a single location request When a client requests location information from the Location Framework, the framework forwards the request to a PSY instance. CPositioner provides a pure virtual method CPositioner::NotifyPositionUpdate() that must be implemented by the PSY in order to handle a position request. NotifyPositionUpdate() is an asynchronous call and must be implemented in the PSY to return at once. If positioning takes time, it should be implemented using active objects, otherwise the Location Server is blocked for the time that a position fix is being obtained by the PSY. NotifyPositionUpdate() has a TRequestStatus parameter which is used to signal that the position acquisition is complete. NotifyPositionUpdate () also has a TPositionInfoBase as an output parameter. This object is used to pass position information back to the client. TPositionInfoBase is an abstract class and the actual class hierarchy of the position information object can be obtained by calling TPositionInfoBase::PositionClassType(). The PSY must cast the position information object to the actual subclass and the appropriate position information filled in. PSYs can support different sets of position information classes but TPositionInfo and HGenericPositionInfo are mandatory. The position information class must store data as specified by the WGS84 geodetic datum. The PSY must also report the data quality status while returning position information. This sequence diagram of figure 1 shows the steps that are involved when the Location Framework makes a request for a position update from a PSY. Figure 1. Handling a request for position information. - The following code example shows how to process a location request. void CPosExamplePositioner::NotifyPositionUpdate( + The following code example shows how to process a location request. void CPosExamplePositioner::NotifyPositionUpdate( TPositionInfoBase& aPosInfo, TRequestStatus& aStatus) { @@ -68,9 +68,9 @@ } Write code to handle periodic location requests (tracking) A client application can request periodic position updates from the Location Framework. This is known as tracking. If the client application continues to reissue position requests as soon as the last request completes then it receives periodic position updates. The Location Framework sends a position request to a PSY when a location update is required by a client. The PSY must be ready to give position information as soon as the Location Framework sends a request. A PSY needs to know about the requirement for periodic position requests if the underlying positioning technology needs to be kept powered in order to provide fast position updates. Conversely, a PSY can go into standby mode if it knows that it is a long time until the next request. To support tracking the PSY must implement the following virtual methods in CPositioner: CPositioner::TrackingOverridden() must be implemented by the PSY CPositioner subclass to return ETrue. This indicates that the PSY implements specific logic to handle periodic position updates. The default implementation for TrackingOverridden in CPositioner returns EFalse. CPositioner::StopTracking() must be overridden by the PSY CPositioner subclass. It is called by the Location Framework to signal that the tracking session has been closed so the PSY can put the positioning technology hardware into standby mode. The default implementation for StopTracking() in CPositioner does not perform any action. If a PSY implementation returns ETrue from CPositioner::TrackingOverridden() then it should provide an implementation of StopTracking(). CPositioner::StartTrackingL() must be overridden by the PSY CPositioner subclass. It is called by the Location Framework to signal that the Location Server has started a tracking session. The PSY can start the positioning technology specific device/protocol and keep it in state where position information can be obtained quickly. The periodicity of position updates requested by theclient application is passed as an input parameter to this method. If the PSY cannot support the periodicity, it must return fixes as frequently as possible. The default implementation for StartTrackingL() in CPositioner leaves with KErrNotSupported. If the PSY implementation returns ETrue from TrackingOverridden then it needs to provide an implementation of StartTrackingL(). Figure 2 shows the steps that are involved when the Location Framework initiates a periodic position request from a PSY: Figure 2. Handling periodic position determination request - Write code to handle request cancellation When the client requests cancellation of an outstanding location request from the Location Framework, the framework forwards the request to the corresponding PSY instance. The CPositioner provides a pure virtual method CPositioner::CancelNotifyPositionUpdate() that has to be implemented by the PSY in order to handle cancellation of a position request. CancelNotifyPositionUpdate() must be implemented to cancel any outstanding request in the PSY. Typically this involves cancelling some active object. If there is an outstanding request, it must be completed with the code KErrCancel. Figure 3 shows the steps that are involved when the Location framework initiates a cancel request for an outstanding position request. + Write code to handle request cancellation When the client requests cancellation of an outstanding location request from the Location Framework, the framework forwards the request to the corresponding PSY instance. The CPositioner provides a pure virtual method CPositioner::CancelNotifyPositionUpdate() that has to be implemented by the PSY in order to handle cancellation of a position request. CancelNotifyPositionUpdate() must be implemented to cancel any outstanding request in the PSY. Typically this involves cancelling some active object. If there is an outstanding request, it must be completed with the code KErrCancel. Figure 3 shows the steps that are involved when the Location framework initiates a cancel request for an outstanding position request. Figure 3. Cancelling a position determination request - void CPosExamplePositioner::CancelNotifyPositionUpdate() + void CPosExamplePositioner::CancelNotifyPositionUpdate() { // Since the Example PSY can deliver a position very // fast it has been implemented synchronously which diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0B6222F1-F5A1-5E9A-B495-C68585C92022.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-0B6222F1-F5A1-5E9A-B495-C68585C92022.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,15 @@ + + + + + +Universal Software Install +FrameworkThe Universal Software Install Framework provides standard interfaces +for installing, registering, verifying, restoring and uninstalling software +packages on a device such as SIS files. \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0BAE2D0E-604B-4A62-B5EB-AC68EAF7F589.dita --- a/Symbian3/PDK/Source/GUID-0BAE2D0E-604B-4A62-B5EB-AC68EAF7F589.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ - - - - - -Navigating -in applications -

              The traditional hierarchical tree structure forms the basis for navigation. -The user can move forward from one node (state) by opening an available item -or selecting an option from a menu. The Back function (available in the right -softkey Back) returns to the previous level in the hierarchy. In the initial -state of an application (number 1 in the figure below), the Exit function -replaces Back in the right softkey and is used for closing the application.

              - -Example of the basic state hierarchy in an application. The solid lines -indicate moving forward from a state into a sub-state. The dotted lines are -backward moves to the previous level. - - - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0BD22FDB-1A5C-56AA-A7FC-BD2271B2F928.dita --- a/Symbian3/PDK/Source/GUID-0BD22FDB-1A5C-56AA-A7FC-BD2271B2F928.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0BD22FDB-1A5C-56AA-A7FC-BD2271B2F928.dita Fri Jul 16 17:23:46 2010 +0100 @@ -31,7 +31,7 @@ with the Backup Engine which in turn calls data owner applications for data request or supply. The backup server finally transfers the data to and from the host PC.

              - +

              In the CSBEClient API, RequestDataL() and SupplyDataL() are two major functions for backup and restore:

              • For a backup, the backup @@ -43,7 +43,7 @@ which supplies the data to the Backup Engine for a restore.

              A particular type of conn::CSBGenericTransferType is passed to these functions depending on the data to be transferred, such as -a snapshot or incremental data. Refer to the Creating +a snapshot or incremental data. Refer to the Creating transfer types section for an example.

              The backup and restore sections below describe the conn::CSBEClient function calls. The sequence of the calls depends on the requests from the host PC and the @@ -61,7 +61,7 @@ call for partial and incremental data restore. -Creating Transfer +Creating Transfer Types describes how to create a particular conn::CSBGenericTransferType transfer data type. The data type is passed to the conn::CSBEClient to transfer the data from or to the Backup Engine. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0BF06E5D-BEEF-5E15-894E-FA605FA12E33.dita --- a/Symbian3/PDK/Source/GUID-0BF06E5D-BEEF-5E15-894E-FA605FA12E33.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0BF06E5D-BEEF-5E15-894E-FA605FA12E33.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Privacy Protocol Module OverviewThe Privacy Protocol Module (PPM) is an optional LBS component that allows the LBS subsystem to process privacy requests from the device domestic OS. The privacy request may have been received from the network or from an installed application.

              Purpose

              The Network Gateway (NG) is the LBS subsystem component that interfaces the LBS subsystem with a network. The NG loads a Protocol Module to support a specific protocol and location based services architecture.

              A Protocol Module such as the SUPL Protocol Module interfaces directly to the network to process privacy requests and location requests. The Privacy Protocol Module allows the LBS subsystem to process privacy requests from the device domestic OS.

              Required background

              A knowledge of LBS Privacy Requests is assumed.

              Key concepts and terms

              See Privacy Requests for key concepts.

              Architecture

              Figure 1 shows the Privacy Protocol Module in context in the LBS subsystem.

              The PPM is an optional LBS component. To use the PPM, LBS must be configured so that the PPM is part of the LBS subsystem and so that the Network Gateway loads it on startup.

              The PPM is a Protocol Module ECOM plug-in that implements the Network Protocol Module API. The Network Protocol Module API defines functions for processing both privacy requests and location requests. The PPM implements only the privacy request processing functions and cannot be used to process location requests.

              The PPM contains a server that handles privacy requests sent from one of two PPM client libraries. A client process uses one of the client libraries to send privacy requests to the PPM and to receive privacy responses (acceptance or denial of the request). The PPM starts the LBS subsystem if it is not running when a privacy request is received.

              Privacy requests are sent into the LBS subsystem via the Network Gateway. They are processed by a Privacy Controller or Privacy Notifier (not shown on figure 1) which returns a privacy response.

              Note that the PPM does not connect directly to the network to receive privacy requests. In figure 1, the Privacy Client executables are processes that run in the domestic OS. They receive privacy requests and use one of the PPM client libraries to send them into the LBS subsystem.

              Figure 1. Privacy Protocol Module and client libraries. -
              APIs

              There are two APIs that can be used to send privacy requests to the PPM.

          API Description

          Privacy Request API

          An API used to forward privacy requests to the PPM. Packaged in lbsprivacyrequest.dll.

          Network Privacy API

          The API that was formerly provided by the S60 Privacy Framework. Packaged in eposnwprv.dll.

        Typical uses

        The PPM can be used when a device creator wants to use the LBS subsystem to process privacy requests.

        The privacy request is typically sent to the PPM by a process running in the device domestic OS. The process may have received the request either from the network or from an installed application.

        Privacy +
        APIs

        There are two APIs that can be used to send privacy requests to the PPM.

        API Description

        Privacy Request API

        An API used to forward privacy requests to the PPM. Packaged in lbsprivacyrequest.dll.

        Network Privacy API

        The API that was formerly provided by the S60 Privacy Framework. Packaged in eposnwprv.dll.

        Typical uses

        The PPM can be used when a device creator wants to use the LBS subsystem to process privacy requests.

        The privacy request is typically sent to the PPM by a process running in the device domestic OS. The process may have received the request either from the network or from an installed application.

        Privacy Requests Privacy Request API Network Privacy API \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0BF25E2A-99B9-5558-B805-019430409518.dita --- a/Symbian3/PDK/Source/GUID-0BF25E2A-99B9-5558-B805-019430409518.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -SBSv1 and SBSv2 Build Systems

        Symbian provides two command line build systems, called SBSv1 and SBSv2, to build Symbian platform and applications developed for Symbian platform.

        SBSv1 is the name that is now given to the bldmake and abld build tools that have been provided on Symbian platform kits since Symbian OS v6. In SBSv1 , bldmake first generates top-level makefiles for a component, then abld builds the component. The bldmake and the abld commands must be run from the directory containing the bld.inf file. The documentation for the these tools is provided in the Symbian Developer Library. For more information, see How to use bldmake and How to use abld.

        SBSv2 is a newer build system. Its advantages over SBSv1 include:

        • It can run on both Microsoft Windows and Linux operating systems.

        • It can use third-party make engine to run parallel builds.

        • It can build the entire Symbian platform from a system definition file.

        • It generates and builds the makefiles in a single step.

        • It can be used from any directory location.

        Though SBSv2 uses the same build metadata files (bld.inf and .mmp) as SBSv1 for building Symbian platform, SBSv2 can help achieve improved build speed over SBSv1.

        For more information about SBSv2, see the Symbian Build System v2 documentation that is provided with the Platform Developer Toolkit.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0C01305E-9E73-4E44-BD13-361C93CC5E79_d0e423843_href.png Binary file Symbian3/PDK/Source/GUID-0C01305E-9E73-4E44-BD13-361C93CC5E79_d0e423843_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0C01305E-9E73-4E44-BD13-361C93CC5E79_d0e429696_href.png Binary file Symbian3/PDK/Source/GUID-0C01305E-9E73-4E44-BD13-361C93CC5E79_d0e429696_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0C435514-EEC6-5660-BB5F-535790349632.dita --- a/Symbian3/PDK/Source/GUID-0C435514-EEC6-5660-BB5F-535790349632.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0C435514-EEC6-5660-BB5F-535790349632.dita Fri Jul 16 17:23:46 2010 +0100 @@ -30,7 +30,7 @@

        The interfaces for power management on the kernel-side are shown in the following diagram:

        - +
        • The power manager manages @@ -73,7 +73,7 @@ into the Symbian platform internal DPowerManager object.

          The power controller is responsible for tracking wake-up events, notifying the power manager of such events through a call to DPowerController::WakeUpEvent().

          - +
      Power handlers

      Device drivers interface to the power manager through the DPowerHandler class. @@ -88,7 +88,7 @@ The power manager calls DPowerHandler::PowerUp() when it requests a power state transition to the Active state. The driver must respond to a power transition notification after it has dealt with it by calling DPowerHandler::PowerUpDone() or DPowerHandler::PowerDownDone() as appropriate.

      - +
      Shared power sources

      Note: this information applies to Symbian platform before diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0C7CDC47-6B42-5A20-BED8-086DA81D272E-GENID-1-12-1-26-1-1-11-1-1-6-1-3-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-0C7CDC47-6B42-5A20-BED8-086DA81D272E-GENID-1-12-1-26-1-1-11-1-1-6-1-3-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,69 @@ + + + + + +PBE +-- guide +

        +
      • What is PBE?

      • +
      • What is PBE used for?

      • +
      • Base classes and their derived classes

      • +
      • Example +code

      • +
      +
      What is PBE?

      PBE +provides an API to encrypt and decrypt data with a user-supplied password. +It is intended to be used by applications, such as editors or database programs, +that might provide the ability to encrypt a user's documents. It aims to be +secure and easy to use, and attempts to overcome the common pitfalls of encryption +based on user-supplied passwords. Specifically, it uses a PKCS#5 -based key derivation function to create the +symmetric key based on the user's password.

      PKCS#5 is the Password Based Encryption standard produced +by RSA laboratories. It describes a method to generate a symmetric key based +on a password. We use PKCS#5 v2.0 (specified in RFC 2898), which is able to generate unlimited key +length.

      The PBE algorithm generates a symmetric key based on a password, +which is provided by the user. To impede dictionary attacks, the password +is appended with a salt before being digested to produce the key; the salt +is generated using a pseudo random number generator. Furthermore, the PBE +algorithm by which the keys are derived is iterated a number of times, the +default being KDefaultIterations. As the ciphers operate +in CBC mode, a randomly selected Initialization Vector (IV) is passed to them +as a seed. Note that the salt value, iteration count value, and the IV (i.e., +the CPBEncryptParms object) do not have to be kept secret +and can be sent along with the ciphertext.

      PBE provides APIs for encrypting +a single object (CPBEncryptElement) and multiple objects +(CPBEncryptSet). The latter is useful in the situation if +one wants random access to an encrypted source consisting of multiple, independent +elements; for example a database or a store.

      +
      What is PBE +used for?

      PBE is used to implement Secure +Stream Encryption, which can be used, for example:

        +
      • to password protect +a database file

      • +
      • to store contacts encrypted +on a mobile phone.

      • +
      +
      Base classes +and their derived classes

      The diagrams below show the main classes +used in password based encryption and which are implemented in pbe.dll. +Blue dotted arrows indicate that a class is contained or used by another class. +The arrows are labelled with the variable(s) through which the pointed class +is accessible. The color of the boxes indicates the type of Symbian class, +i.e., M, C, R or T class. +For detailed information on each component see the Cryptography API Reference +material.

      +The inheritance diagram above shows the <codeph>CPBEncryptionBase</codeph> abstract +base class. Also shown are the following classes from the Cryptography API: <codeph>CPBEncryptElement</codeph>, <codeph>CPBEncryptSet</codeph>, <codeph>CPBAuthData</codeph>, <codeph>CPBEncryptionData</codeph>, and <codeph>CPBEncryptParams</codeph>. + + +The inheritance diagram above shows the <codeph>CPBEncryptor</codeph> abstract +base class. Also shown are the following classes from the Cryptography API: <codeph>CPBDecryptor</codeph>, <codeph>CPBDecryptorElement</codeph>, <codeph>CPBDecryptorSet</codeph>, <codeph>CSymmetricCipher</codeph>, <codeph>CPBEncryptorElement</codeph>, <codeph>CPBEncryptorSet</codeph>. + +
      + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0C7CDC47-6B42-5A20-BED8-086DA81D272E-GENID-1-12-1-26-1-1-9-1-4-1-9-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-0C7CDC47-6B42-5A20-BED8-086DA81D272E-GENID-1-12-1-26-1-1-9-1-4-1-9-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,69 @@ + + + + + +PBE +-- guide +
        +
      • What is PBE?

      • +
      • What is PBE used for?

      • +
      • Base classes and their derived classes

      • +
      • Example +code

      • +
      +
      What is PBE?

      PBE +provides an API to encrypt and decrypt data with a user-supplied password. +It is intended to be used by applications, such as editors or database programs, +that might provide the ability to encrypt a user's documents. It aims to be +secure and easy to use, and attempts to overcome the common pitfalls of encryption +based on user-supplied passwords. Specifically, it uses a PKCS#5 -based key derivation function to create the +symmetric key based on the user's password.

      PKCS#5 is the Password Based Encryption standard produced +by RSA laboratories. It describes a method to generate a symmetric key based +on a password. We use PKCS#5 v2.0 (specified in RFC 2898), which is able to generate unlimited key +length.

      The PBE algorithm generates a symmetric key based on a password, +which is provided by the user. To impede dictionary attacks, the password +is appended with a salt before being digested to produce the key; the salt +is generated using a pseudo random number generator. Furthermore, the PBE +algorithm by which the keys are derived is iterated a number of times, the +default being KDefaultIterations. As the ciphers operate +in CBC mode, a randomly selected Initialization Vector (IV) is passed to them +as a seed. Note that the salt value, iteration count value, and the IV (i.e., +the CPBEncryptParms object) do not have to be kept secret +and can be sent along with the ciphertext.

      PBE provides APIs for encrypting +a single object (CPBEncryptElement) and multiple objects +(CPBEncryptSet). The latter is useful in the situation if +one wants random access to an encrypted source consisting of multiple, independent +elements; for example a database or a store.

      +
      What is PBE +used for?

      PBE is used to implement Secure +Stream Encryption, which can be used, for example:

        +
      • to password protect +a database file

      • +
      • to store contacts encrypted +on a mobile phone.

      • +
      +
      Base classes +and their derived classes

      The diagrams below show the main classes +used in password based encryption and which are implemented in pbe.dll. +Blue dotted arrows indicate that a class is contained or used by another class. +The arrows are labelled with the variable(s) through which the pointed class +is accessible. The color of the boxes indicates the type of Symbian class, +i.e., M, C, R or T class. +For detailed information on each component see the Cryptography API Reference +material.

      +The inheritance diagram above shows the <codeph>CPBEncryptionBase</codeph> abstract +base class. Also shown are the following classes from the Cryptography API: <codeph>CPBEncryptElement</codeph>, <codeph>CPBEncryptSet</codeph>, <codeph>CPBAuthData</codeph>, <codeph>CPBEncryptionData</codeph>, and <codeph>CPBEncryptParams</codeph>. + + +The inheritance diagram above shows the <codeph>CPBEncryptor</codeph> abstract +base class. Also shown are the following classes from the Cryptography API: <codeph>CPBDecryptor</codeph>, <codeph>CPBDecryptorElement</codeph>, <codeph>CPBDecryptorSet</codeph>, <codeph>CSymmetricCipher</codeph>, <codeph>CPBEncryptorElement</codeph>, <codeph>CPBEncryptorSet</codeph>. + +
      +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0C7CDC47-6B42-5A20-BED8-086DA81D272E.dita --- a/Symbian3/PDK/Source/GUID-0C7CDC47-6B42-5A20-BED8-086DA81D272E.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ - - - - - -PBE --- guide -
        -
      • What is PBE?

      • -
      • What is PBE used for?

      • -
      • Base classes and their derived classes

      • -
      • Example -code

      • -
      -
      What is PBE?

      PBE -provides an API to encrypt and decrypt data with a user-supplied password. -It is intended to be used by applications, such as editors or database programs, -that might provide the ability to encrypt a user's documents. It aims to be -secure and easy to use, and attempts to overcome the common pitfalls of encryption -based on user-supplied passwords. Specifically, it uses a PKCS#5 -based key derivation function to create the -symmetric key based on the user's password.

      PKCS#5 is the Password Based Encryption standard produced -by RSA laboratories. It describes a method to generate a symmetric key based -on a password. We use PKCS#5 v2.0 (specified in RFC 2898), which is able to generate unlimited key -length.

      The PBE algorithm generates a symmetric key based on a password, -which is provided by the user. To impede dictionary attacks, the password -is appended with a salt before being digested to produce the key; the salt -is generated using a pseudo random number generator. Furthermore, the PBE -algorithm by which the keys are derived is iterated a number of times, the -default being KDefaultIterations. As the ciphers operate -in CBC mode, a randomly selected Initialization Vector (IV) is passed to them -as a seed. Note that the salt value, iteration count value, and the IV (i.e., -the CPBEncryptParms object) do not have to be kept secret -and can be sent along with the ciphertext.

      PBE provides APIs for encrypting -a single object (CPBEncryptElement) and multiple objects -(CPBEncryptSet). The latter is useful in the situation if -one wants random access to an encrypted source consisting of multiple, independent -elements; for example a database or a store.

      -
      What is PBE -used for?

      PBE is used to implement Secure -Stream Encryption, which can be used, for example:

        -
      • to password protect -a database file

      • -
      • to store contacts encrypted -on a mobile phone.

      • -
      -
      Base classes -and their derived classes

      The diagrams below show the main classes -used in password based encryption and which are implemented in pbe.dll. -Blue dotted arrows indicate that a class is contained or used by another class. -The arrows are labelled with the variable(s) through which the pointed class -is accessible. The color of the boxes indicates the type of Symbian class, -i.e., M, C, R or T class. -For detailed information on each component see the Cryptography API Reference -material.

      -The inheritance diagram above shows the <codeph>CPBEncryptionBase</codeph> abstract -base class. Also shown are the following classes from the Cryptography API: <codeph>CPBEncryptElement</codeph>, <codeph>CPBEncryptSet</codeph>, <codeph>CPBAuthData</codeph>, <codeph>CPBEncryptionData</codeph>, and <codeph>CPBEncryptParams</codeph>. - - -The inheritance diagram above shows the <codeph>CPBEncryptor</codeph> abstract -base class. Also shown are the following classes from the Cryptography API: <codeph>CPBDecryptor</codeph>, <codeph>CPBDecryptorElement</codeph>, <codeph>CPBDecryptorSet</codeph>, <codeph>CSymmetricCipher</codeph>, <codeph>CPBEncryptorElement</codeph>, <codeph>CPBEncryptorSet</codeph>. - -
      -
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0C814ED6-3F64-4E0E-9C47-654AEDADBA90.dita --- a/Symbian3/PDK/Source/GUID-0C814ED6-3F64-4E0E-9C47-654AEDADBA90.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0C814ED6-3F64-4E0E-9C47-654AEDADBA90.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,238 +9,225 @@ --> -Going -Beyond Hello: A Tutorial for Symbian C++ ApplicationsThis tutorial shows how you can extend that basic example to create -a small paint application, along the way learning more about the application -frameworks (e.g. defining menus, how to handle touch-screen events, drawing -to the screen etc.). -

      In the Symbian C++ -Quick Start you learned how to create a basic example application using -Carbide.c++, and how to build and run it on the Windows emulator and on a -device.

      -

      Comes with Code: File: -HelloSymbianWorld Example Code.zip

      -
      Application -Structure

      Carbide.c++ offers two ways of exploring your project. -The traditional Project Explorer window, which can also be found in -Eclipse, lists the files belonging to the project in the same directory structure -as in the file system.

      The Symbian Project Navigator contains -the same contents, but displays them in a logical hierarchy according to Symbian -Conventions.

      You might wonder why a basic "Hello World" application -contains so many files. The answer is straightforward - a much simpler Hello -World wouldn’t be a very good starting point for real-world applications. -

      Instead the wizard generates the project for a complete and readily -extensible application. The project separates code and data, and uses a form -of the model -view controller pattern for structuring your code. The application -already reacts to system events and contains everything that is required for -localization.

      What are the directories of a project? - +Going Beyond Hello: A Tutorial for Symbian C++ ApplicationsThis tutorial shows how you can extend that basic example +to create a small paint application, along the way learning more about +the application frameworks (e.g. defining menus, how to handle touch-screen +events, drawing to the screen etc.). +

      In the Symbian +C++ Quick Start you learned how to create a basic example application +using Carbide.c++, and how to build and run it on the Windows emulator +and on a device.

      +

      Comes with Code: File: HelloSymbianWorld Example Code.zip

      +
      Application Structure

      Carbide.c++ offers two ways +of exploring your project. The traditional Project Explorer window, which can also be found in Eclipse, lists the files belonging +to the project in the same directory structure as in the file system. +

      The Symbian Project Navigator contains the same contents, +but displays them in a logical hierarchy according to Symbian Conventions.

      You might wonder +why a basic "Hello World" application contains so many files. The +answer is straightforward - a much simpler Hello World wouldn’t be +a very good starting point for real-world applications.

      Instead +the wizard generates the project for a complete and readily extensible +application. The project separates code and data, and uses a form +of the model view controller pattern for structuring +your code. The application already reacts to system events and contains +everything that is required for localization.

      What +are the directories of a project? +

      \group

        -
      • bld.inf: Component-definition file. This specifies the mmp files -that belong to your component, any shared header files that it exports, and -the default build targets (e.g. GCCE, WINSCW).

          -
        • Bld.inf is used to generate the makefiles and abld.bat used -to build for the command-line (see Symbian -C++ Quick Start).

        • -
        • This file is the starting point when you want to import a Symbian C++ -project into Carbide.c++, because it contains references to all executables -in your project (see the section on Importing Other Examples).

        • +
        • bld.inf: Component-definition file. This specifies the mmp files that belong to your component, any shared header +files that it exports, and the default build targets (e.g. GCCE, WINSCW).

            +
          • Bld.inf is used to generate the makefiles +and abld.bat used to build for the command-line (see Symbian C++ Quick +Start).

          • +
          • This file is the starting point when you want to import a Symbian +C++ project into Carbide.c++, because it contains references to all +executables in your project (see the section on Importing Other Examples).

        • -
        • HelloWorld.mmp: Project-definition file. This specifies how -to build an executable (in this case HelloWorld.exe) in a -platform- and compiler-independent way. It contains information such as resource -files to be compiled, source files to include when compiling, and the libraries -to include when linking.

        • -
        • Icons_aif_scalable_dc.mk: Makefile used to create the application's -icon from the *.svg file in the /gfx folder.

        • +
        • HelloWorld.mmp: Project-definition file. This specifies +how to build an executable (in this case HelloWorld.exe) in a platform- and compiler-independent way. It contains information +such as resource files to be compiled, source files to include when +compiling, and the libraries to include when linking.

        • +
        • Icons_aif_scalable_dc.mk: Makefile used to create the +application's icon from the *.svg file in the /gfx folder.

        \src

          -
        • HelloWorldApplication.cpp: This file contains the entry point -for the EXE file (E32Main()) as well as the implementation -of the Application class (which provides some basic functionality for the -GUI framework). Normally this is "boilerplate" code and you do not need to -make any changes.

        • -
        • HelloWorldDocument.cpp: This class is supposed to take care -of the persistent data model of your application and therefore provides some -functions to load and save .ini files. This mechanism is -disabled by default - for most applications you may treat this as "boilerplate" -code.

        • -
        • HelloWorldAppUi.cpp: This is the main controller of your application. -It contains the logic for handling application-wide events (so you don’t have -to handle, for example, the exit event in every view). It owns all the views -that you use.

        • -
        • HelloWorldContainerView.cpp: This is a kind of controller, which -is responsible for handling events and the UI elements of the currently visible -view. It’s not visible itself, but owns and manages the Container (below), -which corresponds to the view in the traditional model view controller pattern.

        • -
        • HelloWorldContainer.cpp: Contains the UI elements that should -be displayed by the view. Therefore, the ContainerView and the Container usually -have a very strong relationship.

        • +
        • HelloWorldApplication.cpp: This file contains the entry +point for the EXE file (E32Main()) as well as the +implementation of the Application class (which provides some basic +functionality for the GUI framework). Normally this is "boilerplate" +code and you do not need to make any changes.

        • +
        • HelloWorldDocument.cpp: This class is supposed to take +care of the persistent data model of your application and therefore +provides some functions to load and save .ini files. +This mechanism is disabled by default - for most applications you +may treat this as "boilerplate" code.

        • +
        • HelloWorldAppUi.cpp: This is the main controller of +your application. It contains the logic for handling application-wide +events (so you don’t have to handle, for example, the exit event in +every view). It owns all the views that you use.

        • +
        • HelloWorldContainerView.cpp: This is a kind of controller, +which is responsible for handling events and the UI elements of the +currently visible view. It’s not visible itself, but owns and manages +the Container (below), which corresponds to the view in the +traditional model view controller pattern.

        • +
        • HelloWorldContainer.cpp: Contains the UI elements that +should be displayed by the view. Therefore, the ContainerView and +the Container usually have a very strong relationship.

        During start-up, one class instance creates the next:

        - +

        \inc

          -
        • HelloWorldApplication.h, HelloWorldDocument.h, HelloWorldAppUi.h, HelloWorldContainerView.h, HelloWorldContainer.h: Header files corresponding to each of the main source files above.

        • -
        • HelloWorld.hrh: UIDs/identifiers for UI elements including views. -These are shared between the resource file definitions for UI elements and -the source code command handlers.

        • +
        • HelloWorldApplication.h, HelloWorldDocument.h, HelloWorldAppUi.h, HelloWorldContainerView.h, HelloWorldContainer.h: Header files corresponding to each of +the main source files above.

        • +
        • HelloWorld.hrh: UIDs/identifiers for UI elements including +views. These are shared between the resource file definitions for +UI elements and the source code command handlers.

        • HelloWorld.pan: Panic code and method definitions.

        \data

          -
        • HelloWorld_reg.rss: Contains registration information about -the application, such as its title.

        • -
        • HelloWorld.rss: Main resource file. Contains additional information -about the application, as well as user interface and text resource definitions. -

        • -
        • HelloWorld.loc, HelloWorld.l01: Localization files. Strings -used by UI are defined in separate localization resource files. Each file -has the format .lxx, where xx is a language specific -numeric file extension - e.g. UK English is ‘01’, French ‘02’ and German ‘03’. -The .loc file is a kind of junction that #includes the -language specific files. The languages are compiled into separate resource -files (extension .rxx; the resource file for the current -language is loaded by the UI framework at runtime

        • +
        • HelloWorld_reg.rss: Contains registration information +about the application, such as its title.

        • +
        • HelloWorld.rss: Main resource file. Contains additional +information about the application, as well as user interface and text +resource definitions.

        • +
        • HelloWorld.loc, HelloWorld.l01: Localization +files. Strings used by UI are defined in separate localization resource +files. Each file has the format .lxx, where xx is a language specific numeric file extension - e.g. UK English +is ‘01’, French ‘02’ and German ‘03’. The .loc file +is a kind of junction that #includes the language +specific files. The languages are compiled into separate resource +files (extension .rxx; the resource file for the +current language is loaded by the UI framework at runtime

        \gfx

          -
        • list_icon.bmp, list_icon_mask.bmp, mark_icon.bmp, mark_icon_mask.bmp: -Bitmap and bitmap masks. These are compiled into the MultiBitMap (mbm) -format for display in the application.

        • -
        • qgn_menu_HelloWorld.svg: SVG-T image that gets compiled into -the HelloWorld_aif.mif MultiImageFile (mif) -used for the application icon.

        • +
        • list_icon.bmp, list_icon_mask.bmp, mark_icon.bmp, mark_icon_mask.bmp: Bitmap and bitmap masks. These are compiled +into the MultiBitMap (mbm) format for display in +the application.

        • +
        • qgn_menu_HelloWorld.svg: SVG-T image that gets compiled +into the HelloWorld_aif.mif MultiImageFile (mif) used for the application icon.

        \sis

          -
        • HelloWorld.pkg: Defines the contents that should be packaged -into the installable .sis file for the device. This includes -the executable as well as all resources required by the application (graphics -and so on).

        • -
        • HelloWorld.sis: Compressed and self-contained installation file -for the device. Compiled based on the package file.

        • -
        • HelloWorld.sisx: .sis file which has been signed -with a certificate (in this case self-signed).

        • +
        • HelloWorld.pkg: Defines the contents that should be +packaged into the installable .sis file for the device. +This includes the executable as well as all resources required by +the application (graphics and so on).

        • +
        • HelloWorld.sis: Compressed and self-contained installation +file for the device. Compiled based on the package file.

        • +
        • HelloWorld.sisx: .sis file which has +been signed with a certificate (in this case self-signed).

      Extending -Hello World – Drawing

      To make our application a little bit more -interactive, we are going to implement a simple paint tool, allowing the user -to draw lines by touching the screen.

      We could draw the lines directly -on the screen, but then everything would get lost when something caused our -application to redraw the screen – for example, a telephone call that came -through while our application was running. Therefore, we have to draw the -lines to a bitmap, which is simply copied to the screen whenever required. -

      Another solution (more difficult but also more flexible!) would be -to store all lines in a list and to iterate over the list each time the application +Hello World – Drawing

      To make our application a little bit +more interactive, we are going to implement a simple paint tool, allowing +the user to draw lines by touching the screen.

      We could +draw the lines directly on the screen, but then everything would get +lost when something caused our application to redraw the screen – +for example, a telephone call that came through while our application +was running. Therefore, we have to draw the lines to a bitmap, which +is simply copied to the screen whenever required.

      Another +solution (more difficult but also more flexible!) would be to store +all lines in a list and to iterate over the list each time the application needs to draw the contents of the screen.

      -
      Using the -SDK Documentation

      The class that can handle bitmap data is called CFbsBitmap. -Let’s take a look at the documentation for this class to find out more about -the required header files, libraries and available methods.

      Search the -online documentation for the class you're interested in, in this case CFbsBitmap. CFbsBitmap -in Os Font_and_Bitmap_Server should be (one of the) first topics you -find.

      If you're working offline you can also search for documentation -in the SDK. Start menu: Start - S60 Developer Tools - 5th Edition -SDK, v1.0 - SDK Documentation

      Right at the top of the -reference page you will see that the header file we need to use is FBS.H and -the library we need to link against is called fbscli.lib.

      - -

      This class is capable of storing a bitmap. It's also possible to -get direct access to the bitmap data. However for more convenient methods -of drawing we will work through a drawing device and context.

      To -find out more about bitmaps, contexts and drawing functions, Search for ‘bitmaps’ in the documentation, and go to the page Bitmaps -in Using Bitmaps, or Using Bitmaps in Using Graphics Device Interfaces. - Symbian provides several different device and context classes. For our -application we’re going to use CFbsBitmapDevice (header file: bitdev.h, -library: bitgdi.lib) and CFbsBitGc (header -file: bitstd.h, library: bitgdi.lib).

      -
      Adding Libraries -To a Project

      In the previous step, we determined that we need two -libraries in order to use all three bitmap-related classes: fbscli.lib and bitgdi.lib. -To add them to our project, open the HelloWorld.mmp project -file (in the /group/ folder if you’re using the Project -Explorer window). Switch to the Libraries tab. At the top of -this page, you will see a list of included libraries. fbscli.lib is -already in the list, so we don’t need to add it. However bitgdi.lib is -missing.

      There are more libraries in the list than are used by our -project (added by the wizard!). These cause no harm so we choose not to remove -them.

      Click on the Add button. Search for bitgdi.lib in -the list and add it to the Libraries list.

      - -

      When you’re finished, make sure that both libraries are in the Libraries list. -

      When you compile your application again, Carbide.c++ will detect -the changes in the .mmp file and ask you what to do. Click on Compile and -Link to update the project with the changes we have made to the .mmp file. - +

      Using +the SDK Documentation

      The class that can handle bitmap data +is called CFbsBitmap. Let’s take a look at the documentation +for this class to find out more about the required header files, libraries +and available methods.

      Search the online documentation for the class you're interested +in, in this case CFbsBitmap. CFbsBitmap in Os Font_and_Bitmap_Server should +be (one of the) first topics you find.

      If you're +working offline you can also search for documentation in the SDK. Start menu: Start - S60 Developer Tools - 5th Edition SDK, +v1.0 - SDK Documentation

      Right at the top of the +reference page you will see that the header file we need to use is FBS.H and the library we need to link against is called fbscli.lib.

      + +

      This class is capable of storing a bitmap. It's also possible +to get direct access to the bitmap data. However for more convenient +methods of drawing we will work through a drawing device and context. +

      To find out more about bitmaps, contexts and drawing functions, Search for ‘bitmaps’ in the documentation, +and go to the page Bitmaps in Using Bitmaps, or Using Bitmaps +in Using Graphics Device Interfaces. Symbian provides several +different device and context classes. For our application we’re going +to use CFbsBitmapDevice (header file: bitdev.h, library: bitgdi.lib) and CFbsBitGc (header file: bitstd.h, library: bitgdi.lib).

      +
      Adding +Libraries To a Project

      In the previous step, we determined +that we need two libraries in order to use all three bitmap-related +classes: fbscli.lib and bitgdi.lib. To add them to our project, open the HelloWorld.mmp project file (in the /group/ folder if you’re using +the Project Explorer window). Switch to the Libraries tab. At the top of this page, you will see a list of included +libraries. fbscli.lib is already in the list, so +we don’t need to add it. However bitgdi.lib is missing.

      There are more libraries in the list than are used by our project +(added by the wizard!). These cause no harm so we choose not to remove +them.

      Click on the Add button. Search for bitgdi.lib in the list and add it to the Libraries list.

      + +

      When you’re finished, make sure that both libraries are in +the Libraries list.

      When you compile your application +again, Carbide.c++ will detect the changes in the .mmp file and ask +you what to do. Click on Compile and Link to update the project +with the changes we have made to the .mmp file. +

      -
      Creating Bitmaps

      Now -the libraries have been added, we can use the bitmap classes in our project. -Open the file HelloWorldContainer.h and add the following -include statements:

      #include <fbs.h> +
      Creating +Bitmaps

      Now the libraries have been added, we can use the +bitmap classes in our project. Open the file HelloWorldContainer.h and add the following include statements:

      #include <fbs.h> #include <bitdev.h> #include <bitstd.h> -

      We also need to store the bitmap objects as instance (member) -variables. Add the following definitions to a private section of the CHelloWorldContainer class. -Be careful not to write anything into areas managed by the UI designer, because -your changes could be overwritten. These areas are marked by comments. -

      private: +

      We also need to store the bitmap objects as instance +(member) variables. Add the following definitions to a private section +of the CHelloWorldContainer class. Be careful not +to write anything into areas managed by the UI designer, because your +changes could be overwritten. These areas are marked by comments. +

      private: CFbsBitmap* iBitmap; CFbsBitmapDevice* iBmpDevice; -CFbsBitGc* iBmpGc;

      Symbian C++ uses some naming conventions. Instance variables should have a lowercase i at -the beginning of the variable name (iBitmap). Arguments should -be marked by an a (aBitmap). Normal local variables that -you create inside a function do not need any prefix. That way, you instantly -know where the variable is coming from – this is very important when deleting -objects. Next, we want to create the bitmap. Define and implement a new -method:

      void CHelloWorldContainer::CreateBitmapsL()

      Let’s -go line by line through the required code for this method: First, we have -to make sure that any previous objects are deleted if they already exist. -This would be required (for example) if the running application needs to re-create -the bitmap because the screen layout changes. You don’t need to add an if -statement to check if the pointer is NULL beforehand – the C++ delete statement -only deletes the object if the pointer is not NULL. You do however need to -ensure that the objects are set to NULL after deletion to avoid possible "double -deletion" in the destructor.

      delete iBitmap; iBitmap = NULL; +CFbsBitGc* iBmpGc;

      Symbian C++ uses some naming conventions. Instance variables should +have a lowercase i at the beginning of the variable +name (iBitmap). Arguments should be marked by an +a (aBitmap). Normal local variables that you create +inside a function do not need any prefix. That way, you instantly +know where the variable is coming from – this is very important when +deleting objects. Next, we want to create the bitmap. Define and +implement a new method:

      void CHelloWorldContainer::CreateBitmapsL()

      Let’s go line by line through the required code for this method: + First, we have to make sure that any previous objects are deleted +if they already exist. This would be required (for example) if the +running application needs to re-create the bitmap because the screen +layout changes. You don’t need to add an if statement to check if +the pointer is NULL beforehand – the C++ delete statement +only deletes the object if the pointer is not NULL. You do however +need to ensure that the objects are set to NULL after deletion to +avoid possible "double deletion" in the destructor.

      delete iBitmap; iBitmap = NULL; delete iBmpDevice; iBmpDevice = NULL; -delete iBmpGc; iBmpGc = NULL;

      This following line of code should -look familiar – it simply creates an instance of the CFbsBitmap class: -

      iBitmap = new (ELeave) CFbsBitmap();

      The -(ELeave) parameter is Symbian C++ specific. This causes a leave (the -Symbian C++ equivalent of standard exceptions) if allocating the object fails -– for example, because there is not enough free memory. With the (ELeave), -you don’t have to manually check if the pointer is actually pointing to a -valid object after creating the object instance. You can find out more about -leaves in Fundamentals -of C++.

      We do not handle the potential leave here; that’s -why the method name (CreateBitmapL()) has a trailing L to -show that it can also leave. More on this topic in a moment.

      Now, -it’s time to let the CFbsBitmap class allocate the memory -for the bitmap it is going to manage. The available drawing size for our container -can be queried by the method Size() from its base class. EColor16MU specifies -the color depth – in this case, it’s a true color display mode with 32 bits -per pixel; the top byte is unused. The color mode EColor16MA would -use the top byte for the alpha channel, several other modes are available -as well.

      iBitmap->Create(Size(), EColor16MU); -

      The next line creates a graphics device based on the bitmap. A graphics -device represents the medium being drawn to and is needed to create a graphics -context. The use of a NewL() method is common in Symbian -C++; it is a static factory function which returns a fully constructed object -of the desired type.

      iBmpDevice = CFbsBitmapDevice::NewL(iBitmap); -

      A graphics context provides a large number of drawing operations, -along with state settings defining how the drawing is performed. The bitmap -graphics context used here is a specialization of the generic graphics context -and adds some methods that can be used for bitmaps only – such as clearing -and copying rectangular areas.

      iBmpDevice->CreateContext(iBmpGc); -

      Whenever you create objects, it’s best to think about where and when -they are going to be deleted right away. Memory leaks are a serious issue -on a mobile device where no virtual memory is available and the main memory -is limited to 30-80 MB. Therefore, go to the destructor of CHelloWorldContainer and -add the required statements for deleting the three objects:

      delete iBmpGc; +delete iBmpGc; iBmpGc = NULL;

      This following line of +code should look familiar – it simply creates an instance of the CFbsBitmap class:

      iBitmap = new (ELeave) +CFbsBitmap();

      The (ELeave) +parameter is Symbian C++ specific. This causes a leave (the Symbian C++ equivalent of standard +exceptions) if allocating the object fails – for example, because +there is not enough free memory. With the (ELeave), you don’t have to manually check if the pointer is actually pointing +to a valid object after creating the object instance. You can find +out more about leaves in Fundamentals of C++.

      We do not handle +the potential leave here; that’s why the method name (CreateBitmapL()) has a trailing L to show that it can also leave. More on this topic +in a moment.

      Now, it’s time to let the CFbsBitmap class allocate the memory for the bitmap it is going to manage. +The available drawing size for our container can be queried by the +method Size() from its base class. EColor16MU specifies the color depth – in this case, it’s a true color display +mode with 32 bits per pixel; the top byte is unused. The color mode EColor16MA would use the top byte for the alpha channel, +several other modes are available as well.

      iBitmap->Create(Size(), +EColor16MU);

      The next line creates a graphics device +based on the bitmap. A graphics device represents the medium being +drawn to and is needed to create a graphics context. The use of a NewL() method is common in Symbian C++; it is a static factory +function which returns a fully constructed object of the desired type. +

      iBmpDevice = CFbsBitmapDevice::NewL(iBitmap);

      A graphics context provides a large number of drawing +operations, along with state settings defining how the drawing is +performed. The bitmap graphics context used here is a specialization +of the generic graphics context and adds some methods that can be +used for bitmaps only – such as clearing and copying rectangular areas. +

      iBmpDevice->CreateContext(iBmpGc);

      Whenever you create objects, it’s best to think about where and +when they are going to be deleted right away. Memory leaks are a serious +issue on a mobile device where no virtual memory is available and +the main memory is limited to 30-80 MB. Therefore, go to the destructor +of CHelloWorldContainer and add the required statements +for deleting the three objects:

      delete iBmpGc; delete iBmpDevice; -delete iBitmap;

      The next step addresses the remaining -question: where to call the CreateBitmapsL() method. Of course, -you could do this from the construction methods of the class. But what if, -while your application is running, the user physically turns the phone, causing -it to switch from portrait to landscape mode? Because the bitmap was created -with the portrait size in mind, the user would no longer be able to use the -full screen for drawing.

      Therefore, we have to react to events that -inform us when the screen size is changed. In those situations, SizeChanged() is -executed. When the container is first constructed, its size changes as well. -Because of this, we can simply call our CreateBitmapsL() method -from within SizeChanged():

      void CHelloWorldContainer::SizeChanged() +delete iBitmap;

      The next step addresses the +remaining question: where to call the CreateBitmapsL() method. Of course, you could do this from the construction methods +of the class. But what if, while your application is running, the +user physically turns the phone, causing it to switch from portrait +to landscape mode? Because the bitmap was created with the portrait +size in mind, the user would no longer be able to use the full screen +for drawing.

      Therefore, we have to react to events that +inform us when the screen size is changed. In those situations, SizeChanged() is executed. When the container is first constructed, +its size changes as well. Because of this, we can simply call our CreateBitmapsL() method from within SizeChanged():

      void CHelloWorldContainer::SizeChanged() { CCoeControl::SizeChanged(); LayoutControls(); @@ -250,70 +237,62 @@ { TRAPD(err, CreateBitmapsL()); } - }

      In the source code above, an additional check ensures -that the bitmap is only re-created if the size available for the container -is really different to the existing bitmap size – the SizeChanged() method -is also called, for example, when the option menu obscures part of our view. -This does not affect the available space for our drawing area and therefore -should not lead to re-creating the bitmap.

      But what is the TRAPD() statement -doing here? Let’s use this to take a closer look at the concept of leaves.

      Leaves

      When -programming using Symbian C++, an L is appended to the name of methods that -can leave (usually because it contains other methods that can leave and does -not choose to "TRAP" them). Note: this is a helpful convention, but is not -checked or required by the compiler.

      Our CreateBitmapsL() method -contains two methods that can leave: the (ELeave) parameter -causes a leave if there is not enough memory to allocate the object. The NewL() method -from the graphics device also has a trailing L – meaning -that this method can also leave. We did not catch any (all) of those leaves -in the CreateBitmapsL() method so it was named with a trailing L. -

      Any leaves are passed up in the call stack until caught by a TRAPD macro. -The SizeChanged() method traps any leaves from CreateBitmapsL() and -consequently does not need to have a trailing L. -

      The error code of the leave is stored in the err variable, which -is declared as a normal integer by this macro. It would be a good idea to -take a look at the contents of this variable and to handle errors instead -of ignoring them as we’re doing here. But for the sake of simplicity, we do -not handle any errors that might occur in this situation.

      Tip

      A -good way to automatically check your code for potential problems is to use -the CodeScanner tool that comes with Carbide.c++. It is a static code-analysis -tool looking at Symbian coding rules and standards. Find out more at: http://carbidehelp.nokia.com/help/topic/com.nokia.carbide.cpp.codescanner/html/codescanner.htm

      -
      Handling Touch -Events

      Before we start handling the touch events, we need one more -instance variable in our code. To draw a line from one touch position to the -next, it’s necessary to save the first position. Therefore, add the following -private instance variable to CHelloWorldContainer: TPoint iLastPos;

      TPoint is -a convenience class that stores two integers that can be used as co-ordinates. -Additionally, it provides some methods to modify the point. We do not need -to initialize the variable in the constructor of the CHelloWorldContainer class -– the container class is indirectly derived from the class CBase, -which automatically zero-initializes all member variables. Touch events -are delivered to the container class, which is responsible for managing the -visible UI content in the main pane of your application. To handle the events -ourselves, we have to override the following method in CHelloWorldContainer:

      void -CHelloWorldContainer::HandlePointerEventL(const TPointerEvent& aPointerEvent)

      Define -this method in the header file (can be private or protected) and add its implementation -in the .cpp file. The information about the new event -is sent through the argument aPointerEvent. We are interested -in the up event for the first button (there is only one in current touch devices; -you can’t click with a right button as you would with a mouse). Whenever the -user releases the stylus or finger from the touch screen, we want to draw -a line to this position. Put the following code into this if statement: if (aPointerEvent.iType == TPointerEvent::EButton1Up) + }

      In the source code above, an additional +check ensures that the bitmap is only re-created if the size available +for the container is really different to the existing bitmap size +– the SizeChanged() method is also called, for example, +when the option menu obscures part of our view. This does not affect +the available space for our drawing area and therefore should not +lead to re-creating the bitmap.

      But what is the TRAPD() statement doing here? Let’s use this to take a closer +look at the concept of leaves.

      Leaves

      When +programming using Symbian C++, an L is appended to the name of methods +that can leave (usually because it contains other methods that can +leave and does not choose to "TRAP" them). Note: this is a helpful +convention, but is not checked or required by the compiler.

      Our CreateBitmapsL() method contains two methods +that can leave: the (ELeave) parameter causes a leave +if there is not enough memory to allocate the object. The NewL() method from the graphics device also has a trailing L – meaning that this method can also leave. We did not +catch any (all) of those leaves in the CreateBitmapsL() method so it was named with a trailing L.

      Any leaves are passed up in the call stack until caught by a TRAPD macro. The SizeChanged() method traps +any leaves from CreateBitmapsL() and consequently +does not need to have a trailing L.

      The error code of the leave is stored in the err variable, which +is declared as a normal integer by this macro. It would be a good +idea to take a look at the contents of this variable and to handle +errors instead of ignoring them as we’re doing here. But for the sake +of simplicity, we do not handle any errors that might occur in this +situation.

      Tip

      A good way to automatically +check your code for potential problems is to use the CodeScanner tool that comes with Carbide.c++. It is a static code-analysis tool +looking at Symbian coding rules and standards. Find out more at: http://carbidehelp.nokia.com/help/topic/com.nokia.carbide.cpp.codescanner/html/codescanner.htm

      +
      Handling +Touch Events

      Before we start handling the touch events, +we need one more instance variable in our code. To draw a line from +one touch position to the next, it’s necessary to save the first position. +Therefore, add the following private instance variable to CHelloWorldContainer: TPoint iLastPos;

      TPoint is a convenience class that stores +two integers that can be used as co-ordinates. Additionally, it provides +some methods to modify the point. We do not need to initialize the +variable in the constructor of the CHelloWorldContainer class – the container class is indirectly derived from the class CBase, which automatically zero-initializes all member variables. + Touch events are delivered to the container class, which is responsible +for managing the visible UI content in the main pane of your application. +To handle the events ourselves, we have to override the following +method in CHelloWorldContainer:

      void +CHelloWorldContainer::HandlePointerEventL(const TPointerEvent& +aPointerEvent)

      Define this method in the header file +(can be private or protected) and add its implementation in the .cpp file. The information about the new event is sent +through the argument aPointerEvent. We are interested +in the up event for the first button (there is only one in current +touch devices; you can’t click with a right button as you would with +a mouse). Whenever the user releases the stylus or finger from the +touch screen, we want to draw a line to this position. Put the following +code into this if statement: if (aPointerEvent.iType == TPointerEvent::EButton1Up) { - }

      Drawing the line itself is rather simple. First, define -the color and style that should be used for drawing, then call the function -for drawing the line. Note that the settings concerning the color and style -stay active until they are changed again in this graphics context – you do -not need to set them every time when executing consecutive drawing operations.

      iBmpGc->SetPenColor(KRgbRed); + }

      Drawing the line itself is rather simple. First, +define the color and style that should be used for drawing, then call +the function for drawing the line. Note that the settings concerning +the color and style stay active until they are changed again in this +graphics context – you do not need to set them every time when executing +consecutive drawing operations.

      iBmpGc->SetPenColor(KRgbRed); iBmpGc->SetPenSize(TSize(2,2)); -iBmpGc->DrawLine(iLastPos, aPointerEvent.iPosition);

      Next, we -have to save the new position, because it will be required as the starting -point for the next line.

      iLastPos = aPointerEvent.iPosition;

      Finally, -issue a request to the framework to redraw the screen. Otherwise, the user -won’t see the new line!

      DrawDeferred();

      At the end -of the method, also call the HandlePointerEventL() method -of the base class (the container is derived from CCoeControl, -because it is a normal UI control by itself):

      CCoeControl::HandlePointerEventL(aPointerEvent);

      To -sum it up, this is the final code for the HandlePointerEvent() method:

      void CHelloWorldContainer::HandlePointerEventL(const TPointerEvent& aPointerEvent) +iBmpGc->DrawLine(iLastPos, aPointerEvent.iPosition);

      Next, we have to save the new position, because it will be required +as the starting point for the next line.

      iLastPos = aPointerEvent.iPosition;

      Finally, issue a request to the framework to redraw the screen. +Otherwise, the user won’t see the new line!

      DrawDeferred();

      At the end of the method, also call the HandlePointerEventL() method of the base class (the container is derived from CCoeControl, because it is a normal UI control by itself):

      CCoeControl::HandlePointerEventL(aPointerEvent);

      To sum it up, this is the final code for the HandlePointerEvent() method:

      void CHelloWorldContainer::HandlePointerEventL(const TPointerEvent& aPointerEvent) { if (aPointerEvent.iType == TPointerEvent::EButton1Up) { @@ -324,132 +303,127 @@ DrawDeferred(); } CCoeControl::HandlePointerEventL(aPointerEvent); - }

      We’ve already added all the code required for drawing -to the bitmap, but this bitmap still has to be transferred to the screen. -The CHelloWorldContainer::Draw() method is called when the -system wants the contents of the container to be redrawn. Therefore, we need -to add the following line of code to the end of the Draw() method, -which copies the bitmap to the top left of the graphics context of the screen:

      gc.BitBlt(TPoint(0, -0), iBitmap);

      Now compile the project. It should already work – -you can draw red lines by just clicking inside the main pane of the emulator!

      - + }

      We’ve already added all the code required for +drawing to the bitmap, but this bitmap still has to be transferred +to the screen. The CHelloWorldContainer::Draw() method +is called when the system wants the contents of the container to be +redrawn. Therefore, we need to add the following line of code to the +end of the Draw() method, which copies the bitmap +to the top left of the graphics context of the screen:

      gc.BitBlt(TPoint(0, 0), iBitmap);

      Now compile the project. +It should already work – you can draw red lines by just clicking inside +the main pane of the emulator!

      +
      Defining -a Menu

      The application would be improved if the user could clear -the drawing during use, rather than having to restart it. This section shows -how you add and handle menu items to provide this functionality, and to exit -the application Open the HelloWorldContainer.uidesign document. -You can find it in the root folder of your project in the Project Explorer or -in the UI Designs folder of the Symbian Project Navigator.

      Click -on the Options menu item below the UI design to reveal the menu. As -indicated, you simply need to click on the empty menu item and start typing.

      - -

      Add two menu items – Clear (for clearing the image) and Exit (for -closing the application).

      Then click once on the Exit menu item -to select it. Go to the Behavior group of the Properties window -and change the command ID to EAknCmdExit (this is available -in the drop-down list). This command will also be sent to your application -if the operating system wants to shut it down, for example, when the phone -does not have enough memory left. Therefore, it is necessary that every application -always responds to this event and instantly shuts the application down. It -is already handled by the basic application that the Carbide.c++ wizard generated -for you; you don’t need to implement the command handling for this event yourself.

      - -

      If you try your application now, you will see that the Exit menu -item already works.

      Tip

      When testing the application, -always quit your application using the Exit command (rather than just -closing the emulator). The application environment will then automatically -check for memory leaks. If you just shut down the emulator you may not discover -the leak until much later, making it a lot more difficult to find the cause.

      -
      Clearing the -Drawing

      Whenever the Clear menu item is selected the view -class method CHelloWorldContainerView::HandleCommandL() is -called with the command ID of the menu item as a parameter.

      If we -want to handle the menu item, the UI designer can create the necessary code -for us. Right-click on the menu item and choose Handle ‘selected’ Event. -The UI designer will ask you to save the design – choose Yes. The code -will then be generated and you will jump into the code view to a new method -called HandleClearMenuItemSelectedL() – a more convenient -place to put your command-handling code than directly in a big HandleCommandL() method -that receives all commands. The auto-generated source code therefore calls -the new extra method from within HandleCommandL() (take a +a Menu

      The application would be improved if the user could +clear the drawing during use, rather than having to restart it. This +section shows how you add and handle menu items to provide this functionality, +and to exit the application Open the HelloWorldContainer.uidesign document. You can find it in the root folder of your project in +the Project Explorer or in the UI Designs folder of +the Symbian Project Navigator.

      Click on the Options menu item below the UI design to reveal the menu. As indicated, +you simply need to click on the empty menu item and start typing.

      + +

      Add two menu items – Clear (for clearing the image) +and Exit (for closing the application).

      Then click +once on the Exit menu item to select it. Go to the Behavior group of the Properties window and change the command ID +to EAknCmdExit (this is available in the drop-down +list). This command will also be sent to your application if the operating +system wants to shut it down, for example, when the phone does not +have enough memory left. Therefore, it is necessary that every application +always responds to this event and instantly shuts the application +down. It is already handled by the basic application that the Carbide.c++ +wizard generated for you; you don’t need to implement the command +handling for this event yourself.

      + +

      If you try your application now, you will see that the Exit +menu item already works.

      Tip

      When testing +the application, always quit your application using the Exit command (rather than just closing the emulator). The application +environment will then automatically check for memory leaks. If you +just shut down the emulator you may not discover the leak until much +later, making it a lot more difficult to find the cause.

      +
      Clearing +the Drawing

      Whenever the Clear menu item is selected +the view class method CHelloWorldContainerView::HandleCommandL() is called with the command ID of the menu item as a parameter. +

      If we want to handle the menu item, the UI designer can create +the necessary code for us. Right-click on the menu item and choose Handle ‘selected’ Event. The UI designer will ask you to save +the design – choose Yes. The code will then be generated and +you will jump into the code view to a new method called HandleClearMenuItemSelectedL() – a more convenient place to put your command-handling code than +directly in a big HandleCommandL() method that receives +all commands. The auto-generated source code therefore calls the new +extra method from within HandleCommandL() (take a look at that method to see what really happens).

      - -

      Now, we only need to tell the container that it should clear its -bitmap buffer. To do this, create a new public method in the container:

      void CHelloWorldContainer::ClearDrawing() + +

      Now, we only need to tell the container that it should clear +its bitmap buffer. To do this, create a new public method in the container:

      void CHelloWorldContainer::ClearDrawing() { iBmpGc->Clear(); DrawDeferred(); - }

      Now, call this method from the menu item handler method. -As explained in the section about the application architecture, the view class -(CHelloWorldContainerView) is the controller and owner for/of -the container class (CHelloWorldContainer). Therefore, this -class has a pointer to the container as an instance variable, which you can -use to clear the drawing.

      TBool CHelloWorldContainerView::HandleClearMenuItemSelectedL(TInt aCommand) + }

      Now, call this method from the menu item handler +method. As explained in the section about the application architecture, +the view class (CHelloWorldContainerView) is the +controller and owner for/of the container class (CHelloWorldContainer). Therefore, this class has a pointer to the container as an instance +variable, which you can use to clear the drawing.

      TBool CHelloWorldContainerView::HandleClearMenuItemSelectedL(TInt aCommand) { iHelloWorldContainer->ClearDrawing(); return ETrue; - }

      The menu command should now clear the image.

      Congratulations, -you have completed the tutorial and have created your own small mobile painting -application!

      -
      Further Exercises

      As -an exercise, it’s a good idea to extend the application by yourself – for -example, you could add some menu items that allow the end user to change the -color of the pen.

      Tip

      It’s a good idea to learn -keyboard shortcuts as early as possible, because they can significantly increase -the efficiency of your work. For example, you can press Ctrl + B to -build the project, instead of using the icon or the menu commands. Also very -helpful: Ctrl + Shift + F automatically formats and indents your code. -You can get a full list of commands by pressing Ctrl + 3. A hot keys -list appears when you press Ctrl + Shift + L.

      Importing -Other Examples

      The S60 SDK itself installs many examples; additional -applications can be downloaded from the developer.symbian.org and Forum Nokia -(see the Related Info section for more information). To import ready-made + }

      The menu command should now clear the image.

      Congratulations, you have completed the tutorial and have created +your own small mobile painting application!

      +
      Further +Exercises

      As an exercise, it’s a good idea to extend the +application by yourself – for example, you could add some menu items +that allow the end user to change the color of the pen.

      Tip

      It’s a good idea to learn keyboard shortcuts +as early as possible, because they can significantly increase the +efficiency of your work. For example, you can press Ctrl + B to build the project, instead of using the icon or the menu commands. +Also very helpful: Ctrl + Shift + F automatically formats and +indents your code. You can get a full list of commands by pressing Ctrl + 3. A hot keys list appears when you press Ctrl + Shift ++ L.

      Importing Other Examples

      The S60 +SDK itself installs many examples; additional applications can be +downloaded from the developer.symbian.org and Forum Nokia (see the +Related Info section for more information). To import ready-made applications in Carbide.c++, go to File | Import. In the following dialog, select Symbian OS Bld.inf file and click Next.

      - -

      Now, click Browse and navigate to the bld.inf file -of the project you want to import. It’s usually stored in the /group/ subfolder -of the project.

      - -

      In the following step, select which SDKs you would like to use. The -same considerations as those explained when creating your Hello World application -apply.

      - -

      You can usually accept the default values for the next step and let -the wizard import everything.

      In the last step, you have to define -the Project Properties. In most cases, you can leave the default values.

      - -

      Afterwards, the project is imported and you can start working. The -project contents will not be copied to the current Carbide.c++ workspace, -so you will work directly on the original directory and the original files. -Copy the project to a different directory first if you want to keep the original -project or example in its original state – for example, into the workspace -directory.

      Troubleshooting: If importing the -project fails, take special care of the last step of the import process: the -root directory should be set correctly to the root directory of the project -and not one level above it. Also, the project name should be the same as the -last part of the root directory. From time to time, the default values are -not configured properly, causing problems in the import process.

      Warning

      Do -not use the standard (Eclipse) project import! The reason is that this import -method would also import all build configuration settings, including references -to installed SDKs and paths on the original system. Therefore, if you import -a project from somebody else but don’t have the SDK installed in exactly the -same directory, the build configurations will no longer work. The bld.inf import -method recreates the SDK bindings and only imports the real contents of the -project.

      -
      Summary

      This -part of the tutorial has shown how we can extend the basic skeleton from the Symbian C++ Quick Start to -create a small paint application. The tutorial explains the application framework, -including how you define menus, how to handle touch-screen events, drawing -to the screen etc.

      -
      Related Info
        -
      • Symbian C++ -Quick Start

      • -
      • Getting -Started with Debugging on the Device

      • -
      • File: -HelloSymbianWorld Example Code.zip (code example associated with this -article)

      • + +

        Now, click Browse and navigate to the bld.inf file of the project you want to import. It’s usually +stored in the /group/ subfolder of the project.

        + +

        In the following step, select which SDKs you would like to +use. The same considerations as those explained when creating your +Hello World application apply.

        + +

        You can usually accept the default values for the next step +and let the wizard import everything.

        In the last step, +you have to define the Project Properties. In most cases, you +can leave the default values.

        + +

        Afterwards, the project is imported and you can start working. +The project contents will not be copied to the current Carbide.c++ +workspace, so you will work directly on the original directory and +the original files. Copy the project to a different directory first +if you want to keep the original project or example in its original +state – for example, into the workspace directory.

        Troubleshooting: If importing the project fails, take special +care of the last step of the import process: the root directory should +be set correctly to the root directory of the project and not one +level above it. Also, the project name should be the same as the last +part of the root directory. From time to time, the default values +are not configured properly, causing problems in the import process.

        Warning

        Do not use the standard (Eclipse) +project import! The reason is that this import method would also import +all build configuration settings, including references to installed +SDKs and paths on the original system. Therefore, if you import a +project from somebody else but don’t have the SDK installed in exactly +the same directory, the build configurations will no longer work. +The bld.inf import method recreates the SDK bindings +and only imports the real contents of the project.

      +
      Summary

      This part of the tutorial has shown how we can extend the basic +skeleton from the Symbian C++ Quick Start to create a small paint application. +The tutorial explains the application framework, including how you +define menus, how to handle touch-screen events, drawing to the screen +etc.

      +
      Related +Info
        +
      • Symbian +C++ Quick Start

      • +
      • Getting Started with Debugging on the Device

      • +
      • File: HelloSymbianWorld Example Code.zip +(code example associated with this article)

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0CA7F22E-59D7-4D65-9D6C-735E4E0F0454.dita --- a/Symbian3/PDK/Source/GUID-0CA7F22E-59D7-4D65-9D6C-735E4E0F0454.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0CA7F22E-59D7-4D65-9D6C-735E4E0F0454.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,8 +14,8 @@

      Before setting channel properties, you must open the sensor channel.

      - -Create a TSensrvProperty property + +Create a TSensrvProperty property object for setting the KSensrvPropIdDataRate property using the TSensrvProperty(const TSensrvPropertyId,const TInt,const TInt) constructor. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0CA8B17D-92D7-4293-B611-E0DDA05A6579_d0e63646_href.png Binary file Symbian3/PDK/Source/GUID-0CA8B17D-92D7-4293-B611-E0DDA05A6579_d0e63646_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0CA8B17D-92D7-4293-B611-E0DDA05A6579_d0e67868_href.png Binary file Symbian3/PDK/Source/GUID-0CA8B17D-92D7-4293-B611-E0DDA05A6579_d0e67868_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66.dita --- a/Symbian3/PDK/Source/GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0CBD2728-DB7E-55FF-929A-E5BF279A1B66.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,67 +9,57 @@ --> -BIOMessageMgr: -BIO Message manager using the message server +BIOMessageMgr: BIO Message manager using the message server

      The BIO Message manager example comprises two projects BIOMessage.exe and BIOParser.dll. -The BIOMessage.exe example connects to the message server, -creates a BIO message and sends the registered parser DLL and message entry -to BIOParser.dll.

      -
      Download

      Click -on the following link to download the example: Biomsgexample.zip

      Click: browse to view the example code.

      -
      BIOMessage: BIO messaging using the message server

      Description

      This -example code demonstrates BIO messaging using RSendAs and RSendAsMessage and -other supporting classes as mentioned in the Class -Summary below.

      The BIOMessage example -code provides the following functionality:

      Creating a session

      void CBioMessage::Connect();

      Creates -a session with the message server using RSendAs.

      The -generated console output looks like this:

      - +The BIOMessage.exe example connects to the message +server, creates a BIO message and sends the registered parser DLL +and message entry to BIOParser.dll.

      +
      Download

      Click on the following link to download the example: Biomsgexample.zip

      Click: browse to view the example code.

      +
      BIOMessage: +BIO messaging using the message server

      Description

      This example code demonstrates BIO messaging using RSendAs and RSendAsMessage and other +supporting classes as mentioned in the Class Summary below.

      The BIOMessage example code provides the following functionality:

      Creating +a session

      void CBioMessage::Connect();

      Creates a session with the message server using RSendAs.

      The generated console output looks like this:

      +

      Creating a BIO message

      void CBioMessage::Create(RSendAsMessage& aMessage);

      This function does the following:

        -
      • creates a BIO message -of VCard type

      • -
      • sets the message body -text

      • -
      • adds the message recipients -for the message to be sent.

      • +
      • creates a BIO +message of VCard type

      • +
      • sets the message +body text

      • +
      • adds the message +recipients for the message to be sent.

      The generated console output looks like this:

      - -

      Sending the BIO message

      void CBioMessage::Send(RSendAsMessage& aMessage);

      Sends the message to the recipients.

      The generated console output -looks like this:

      - -

      Creating the parser

      CBioParser::NewL(CMsvEntry* aEntry);

      Creates a CBioParser object based on the message entry.

      Parsing -the BIO message

      CBioParser::ParserL();

      This -function does the following:

        -
      • calls ExtractMessageBodyL() to -extract the message body text from CMsvStore, the message -store

      • -
      • finds, loads and maintains -a reference count of client processes for a BIO parser DLL

      • -
      • parses the message body -text.

      • + +

        Sending the BIO message

        void CBioMessage::Send(RSendAsMessage& aMessage);

        Sends the message to the recipients.

        The generated console +output looks like this:

        + +

        Creating the parser

        CBioParser::NewL(CMsvEntry* aEntry);

        Creates a CBioParser object based on the message +entry.

        Parsing the BIO message

        CBioParser::ParserL();

        This function does the following:

          +
        • calls ExtractMessageBodyL() to extract the message body text from CMsvStore, the message store

        • +
        • finds, loads +and maintains a reference count of client processes for a BIO parser +DLL

        • +
        • parses the message +body text.

        The generated console output looks like this:

        - +

        Class Summary

        RSendAs

        RSendAsMessage

        CSendAsMessageTypes

        CSendAsAccounts

        CRegisteredParserDll

        CBIODatabase

        CMsvStore

      -
      BIOParser: BIO message parsing

      Description

      This -example code demonstrates the parsing of the message. CBIOExampleParser is -the wrapper class which uses CBaseScriptParser2 and other -supporting classes mentioned in the Class -Summary below.

      The BIOParser example code -provides the following functionality:

      Creating the parser

      CBIOExampleParser* CBIOExampleParser::NewL(CRegisteredParserDll& aRegisteredParserDll, CMsvEntry& aEntry, RFs& aFs);

      Creates a CBIOExampleParser object based on the registered -parser DLL and the message entry.

      Parsing the BIO message

      void CBIOExampleParser::ParseL();

      Parses -the BIO message.

      Processing the BIO message

      CBIOExampleParser::ProcessL();

      Processes -the parsed data.

      Class -Summary

      CBaseScriptParser2

      -
      Build

      The BIOMessageMgr example -code includes the following project files for building the application: BIOParser.mmp, BIOMessage.mmp and bld.inf.

      The Symbian -build process describes how to build this application.

      In CodeWarrior: -firstly, 'make' the BIOParser.mcp which creates BIOParser.dll and BIOParser.lib in \epoc32\release\winscw\ <build_variant>, then secondly, -make BIOMessage.exe in the same directory. Run BIOMessage.mcp, -which runs BIOMessage.exe thus launching the emulator.

      -
      Usage

      Launch the target. For emulator targets, -run: \epoc32\release\<wins or winscw>\<urel or udeb>\BIOMessage.exe. -If TechView emulator is used, to run the application go to System menu and -click on Open files / programs window. Start the "BIO Messaging Example" application.

      Step -through each phase of the example by pressing the space bar or by tapping -on the window drawn by the example.

      +
      BIOParser: +BIO message parsing

      Description

      This example +code demonstrates the parsing of the message. CBIOExampleParser is the wrapper class which uses CBaseScriptParser2 and other supporting classes mentioned in the Class Summary below.

      The BIOParser example code provides the following functionality:

      Creating +the parser

      CBIOExampleParser* CBIOExampleParser::NewL(CRegisteredParserDll& aRegisteredParserDll, CMsvEntry& aEntry, RFs& aFs);

      Creates a CBIOExampleParser object based on +the registered parser DLL and the message entry.

      Parsing +the BIO message

      void CBIOExampleParser::ParseL();

      Parses the BIO message.

      Processing the BIO message

      CBIOExampleParser::ProcessL();

      Processes the parsed data.

      Class Summary

      CBaseScriptParser2

      +
      Build

      The BIOMessageMgr example code includes +the following project files for building the application: BIOParser.mmp, BIOMessage.mmp and bld.inf.

      The Symbian build process describes how +to build this application.

      In CodeWarrior: +firstly, 'make' the BIOParser.mcp which creates BIOParser.dll and BIOParser.lib in \epoc32\release\winscw\ <build_variant>, then +secondly, make BIOMessage.exe in the same directory. +Run BIOMessage.mcp, which runs BIOMessage.exe thus launching the emulator.

      +
      Usage

      Launch the target. For emulator targets, run: \epoc32\release\<wins +or winscw>\<urel or udeb>\BIOMessage.exe. +If TechView emulator is used, to run the application go to System +menu and click on Open files / programs window. Start the "BIO Messaging +Example" application.

      Step through each phase of the example +by pressing the space bar or by tapping on the window drawn by the +example.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0CCCF088-E636-4C12-AA5E-3E2CB04424AD_d0e424006_href.png Binary file Symbian3/PDK/Source/GUID-0CCCF088-E636-4C12-AA5E-3E2CB04424AD_d0e424006_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0CCCF088-E636-4C12-AA5E-3E2CB04424AD_d0e429859_href.png Binary file Symbian3/PDK/Source/GUID-0CCCF088-E636-4C12-AA5E-3E2CB04424AD_d0e429859_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0CD18555-07EB-545D-9D47-D69A6BE6D2C8.dita --- a/Symbian3/PDK/Source/GUID-0CD18555-07EB-545D-9D47-D69A6BE6D2C8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0CD18555-07EB-545D-9D47-D69A6BE6D2C8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Standard SMS Converter

      This section describes the Standard SMS Converter and the alphabet it supports.

      Introduction

      The Standard SMS Converter is a built-in converter based on the GSM 7-bit encoding. This converter is identified by the KCharacterSetIdentifierSms7Bit UID, which is defined in the charconv.h header file. To better understand the different character set of each SMS converter, the Standard SMS Converter is set as the baseline. Any differences or additions to the character set of Standard SMS Converter are listed.

      For all of the converters, any undefined Unicode is converted to a question mark (?)–GSM code 0x37. Any code outside GSM 0x00 ~0x7F is converted to the Unicode replacement character 0xFFFD.

      Alphabet

      The highlighted boxes in Figure 1 illustrate the alphabet of the standard SMS converter:

      • GSM 7-bit default alphabet

      • GSM 7-bit default alphabet extension table

      • Extra lossy conversions–shown as Lossy Characters 1 in Figure 4.

      Figure 1

      Alphabet of the Standard SMS Converter -

      For information about the GSM 7-bit default alphabet and extension table, see 3GPP TS 23.038 V8.1.0. The table below lists the extra lossy conversions supported by the standard converter.

      Character

      Unicode

      GSM

      Converted Character

      ç LATIN SMALL LETTER C WITH CEDILLA

      0x00E7

      0x09

      Ç LATIN CAPITAL LETTER C WITH CEDILLA

      δ GREEK SMALL LETTER DELTA

      0x03B4

      0x10

      Δ GREEK CAPITAL LETTER DELTA

      φ GREEK SMALL LETTER PHI

      0x03C6

      0x12

      Φ GREEK CAPITAL LETTER PHI

      ϕ GREEK PHI SYMBOL

      0x03D5

      0x12

      Φ GREEK CAPITAL LETTER PHI

      γ GREEK SMALL LETTER GAMMA

      0x03B3

      0x13

      Γ GREEK CAPITAL LETTER GAMMA

      λ GREEK SMALL LETTER LAMDA

      0x03BB

      0x14

      Λ GREEK CAPITAL LETTER LAMDA

      Ω GREEK CAPITAL LETTER OMEGA

      0x03A9

      0x15

      Ω GREEK CAPITAL LETTER OMEGA

      ω GREEK SMALL LETTER OMEGA

      0x03C9

      0x15

      Ω GREEK CAPITAL LETTER OMEGA

      ώ GREEK SMALL LETTER OMEGA WITH TONOS

      0x03CE

      0x15

      Ω GREEK CAPITAL LETTER OMEGA

      Ω OHM SIGN

      0x2126

      0x15

      Ω GREEK CAPITAL LETTER OMEGA

      π GREEK SMALL LETTER PI

      0x03C0

      0x16

      Π GREEK CAPITAL LETTER PI

      ∏ N-ARY PRODUCT

      0x220F

      0x16

      Π GREEK CAPITAL LETTER PI

      ψ GREEK SMALL LETTER PSI

      0x03C8

      0x17

      Ψ GREEK CAPITAL LETTER PSI

      ς GREEK SMALL LETTER FINAL SIGMA

      0x03C2

      0x18

      Σ GREEK CAPITAL LETTER SIGMA

      σ GREEK SMALL LETTER SIGMA

      0x03C3

      0x18

      Σ GREEK CAPITAL LETTER SIGMA

      ∑ N-ARY SUMMATION

      0x2211

      0x18

      Σ GREEK CAPITAL LETTER SIGMA

      θ GREEK SMALL LETTER THETA

      0x03B8

      0x19

      Θ GREEK CAPITAL LETTER THETA

      ϑ GREEK THETA SYMBOL

      0x03D1

      0x19

      Θ GREEK CAPITAL LETTER THETA

      ξ GREEK SMALL LETTER XI

      0x03BE

      0x1A

      Ξ GREEK CAPITAL LETTER XI

      (FORM FEED)

      0x000C

      0x1B0A

      (PAGE BREAK)

      À LATIN CAPITAL LETTER A WITH GRAVE

      0x00C0

      0x41

      A LATIN CAPITAL LETTER A

      Á LATIN CAPITAL LETTER A WITH ACUTE

      0x00C1

      0x41

      A LATIN CAPITAL LETTER A

      Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX

      0x00C2

      0x41

      A LATIN CAPITAL LETTER A

      Ã LATIN CAPITAL LETTER A WITH TILDE

      0x00C3

      0x41

      A LATIN CAPITAL LETTER A

      Ά GREEK CAPITAL LETTER ALPHA WITH TONOS

      0x0386

      0x41

      A LATIN CAPITAL LETTER A

      Α GREEK CAPITAL LETTER ALPHA

      0x0391

      0x41

      A LATIN CAPITAL LETTER A

      ά GREEK SMALL LETTER ALPHA WITH TONOS

      0x03AC

      0x41

      A LATIN CAPITAL LETTER A

      α GREEK SMALL LETTER ALPHA

      0x03B1

      0x41

      A LATIN CAPITAL LETTER A

      Β GREEK CAPITAL LETTER BETA

      0x0392

      0x42

      B LATIN CAPITAL LETTER B

      β GREEK SMALL LETTER BETA

      0x03B2

      0x42

      B LATIN CAPITAL LETTER B

      ϐ GREEK BETA SYMBOL

      0x03D0

      0x42

      B LATIN CAPITAL LETTER B

      È LATIN CAPITAL LETTER E WITH GRAVE

      0x00C8

      0x45

      E LATIN CAPITAL LETTER E

      Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX

      0x00CA

      0x45

      E LATIN CAPITAL LETTER E

      Ë LATIN CAPITAL LETTER E WITH DIAERESIS

      0x00CB

      0x45

      E LATIN CAPITAL LETTER E

      Έ GREEK CAPITAL LETTER EPSILON WITH TONOS

      0x0388

      0x45

      E LATIN CAPITAL LETTER E

      Ε GREEK CAPITAL LETTER EPSILON

      0x0395

      0x45

      E LATIN CAPITAL LETTER E

      έ GREEK SMALL LETTER EPSILON WITH TONOS

      0x03AD

      0x45

      E LATIN CAPITAL LETTER E

      ε GREEK SMALL LETTER EPSILON

      0x03B5

      0x45

      E LATIN CAPITAL LETTER E

      Ή GREEK CAPITAL LETTER ETA WITH TONOS

      0x0389

      0x48

      H LATIN CAPITAL LETTER H

      Η GREEK CAPITAL LETTER ETA

      0x0397

      0x48

      H LATIN CAPITAL LETTER H

      ή GREEK SMALL LETTER ETA WITH TONOS

      0x03AE

      0x48

      H LATIN CAPITAL LETTER H

      η GREEK SMALL LETTER ETA

      0x03B7

      0x48

      H LATIN CAPITAL LETTER H

      Ì LATIN CAPITAL LETTER I WITH GRAVE

      0x00CC

      0x49

      I LATIN CAPITAL LETTER I

      Í LATIN CAPITAL LETTER I WITH ACUTE

      0x00CD

      0x49

      I LATIN CAPITAL LETTER I

      Î LATIN CAPITAL LETTER I WITH CIRCUMFLEX

      0x00CE

      0x49

      I LATIN CAPITAL LETTER I

      Ï LATIN CAPITAL LETTER I WITH DIAERESIS

      0x00CF

      0x49

      I LATIN CAPITAL LETTER I

      Ί GREEK CAPITAL LETTER IOTA WITH TONOS

      0x038A

      0x49

      I LATIN CAPITAL LETTER I

      ΐ GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS

      0x0390

      0x49

      I LATIN CAPITAL LETTER I

      Ι GREEK CAPITAL LETTER IOTA

      0x0399

      0x49

      I LATIN CAPITAL LETTER I

      Ϊ GREEK CAPITAL LETTER IOTA WITH DIALYTIKA

      0x03AA

      0x49

      I LATIN CAPITAL LETTER I

      ί GREEK SMALL LETTER IOTA WITH TONOS

      0x03AF

      0x49

      I LATIN CAPITAL LETTER I

      ι GREEK SMALL LETTER IOTA

      0x03B9

      0x49

      I LATIN CAPITAL LETTER I

      ϊ GREEK SMALL LETTER IOTA WITH DIALYTIKA

      0x03CA

      0x49

      I LATIN CAPITAL LETTER I

      Κ GREEK CAPITAL LETTER KAPPA

      0x039A

      0x4B

      K LATIN CAPITAL LETTER K

      κ GREEK SMALL LETTER KAPPA

      0x03BA

      0x4B

      K LATIN CAPITAL LETTER K

      Μ GREEK CAPITAL LETTER MU

      0x039C

      0x4D

      M LATIN CAPITAL LETTER M

      μ GREEK SMALL LETTER MU

      0x03BC

      0x4D

      M LATIN CAPITAL LETTER M

      Ν GREEK CAPITAL LETTER NU

      0x039D

      0x4E

      N LATIN CAPITAL LETTER N

      ν GREEK SMALL LETTER NU

      0x03BD

      0x4E

      N LATIN CAPITAL LETTER N

      Ò LATIN CAPITAL LETTER O WITH GRAVE

      0x00D2

      0x4F

      O LATIN CAPITAL LETTER O

      Ó LATIN CAPITAL LETTER O WITH ACUTE

      0x00D3

      0x4F

      O LATIN CAPITAL LETTER O

      Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX

      0x00D4

      0x4F

      O LATIN CAPITAL LETTER O

      Õ LATIN CAPITAL LETTER O WITH TILDE

      0x00D5

      0x4F

      O LATIN CAPITAL LETTER O

      Ό GREEK CAPITAL LETTER OMICRON WITH TONOS

      0x038C

      0x4F

      O LATIN CAPITAL LETTER O

      Ο GREEK CAPITAL LETTER OMICRON

      0x039F

      0x4F

      O LATIN CAPITAL LETTER O

      ο GREEK SMALL LETTER OMICRON

      0x03BF

      0x4F

      O LATIN CAPITAL LETTER O

      ό GREEK SMALL LETTER OMICRON WITH TONOS

      0x03CC

      0x4F

      O LATIN CAPITAL LETTER O

      Ρ GREEK CAPITAL LETTER RHO

      0x03A1

      0x50

      P LATIN CAPITAL LETTER P

      ρ GREEK SMALL LETTER RHO

      0x03C1

      0x50

      P LATIN CAPITAL LETTER P

      Τ GREEK CAPITAL LETTER TAU

      0x03A4

      0x54

      T LATIN CAPITAL LETTER T

      τ GREEK SMALL LETTER TAU

      0x03C4

      0x54

      T LATIN CAPITAL LETTER T

      Ù LATIN CAPITAL LETTER U WITH GRAVE

      0x00D9

      0x55

      U LATIN CAPITAL LETTER U

      Ú LATIN CAPITAL LETTER U WITH ACUTE

      0x00DA

      0x55

      U LATIN CAPITAL LETTER U

      Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX

      0x00DB

      0x55

      U LATIN CAPITAL LETTER U

      Χ GREEK CAPITAL LETTER CHI

      0x03A7

      0x58

      X LATIN CAPITAL LETTER X

      χ GREEK SMALL LETTER CHI

      0x03C7

      0x58

      X LATIN CAPITAL LETTER X

      Ý LATIN CAPITAL LETTER Y WITH ACUTE

      0x00DD

      0x59

      Y LATIN CAPITAL LETTER Y

      Ύ GREEK CAPITAL LETTER UPSILON WITH TONOS

      0x038E

      0x59

      Y LATIN CAPITAL LETTER Y

      Υ GREEK CAPITAL LETTER UPSILON

      0x03A5

      0x59

      Y LATIN CAPITAL LETTER Y

      Ϋ GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA

      0x03AB

      0x59

      Y LATIN CAPITAL LETTER Y

      ΰ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS

      0x03B0

      0x59

      Y LATIN CAPITAL LETTER Y

      υ GREEK SMALL LETTER UPSILON

      0x03C5

      0x59

      Y LATIN CAPITAL LETTER Y

      ϋ GREEK SMALL LETTER UPSILON WITH DIALYTIKA

      0x03CB

      0x59

      Y LATIN CAPITAL LETTER Y

      ύ GREEK SMALL LETTER UPSILON WITH TONOS

      0x03CD

      0x59

      Y LATIN CAPITAL LETTER Y

      ϒ GREEK UPSILON WITH HOOK SYMBOL

      0x03D2

      0x59

      Y LATIN CAPITAL LETTER Y

      ϓ GREEK UPSILON WITH ACUTE AND HOOK SYMBOL

      0x03D3

      0x59

      Y LATIN CAPITAL LETTER Y

      ϔ GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL

      0x03D4

      0x59

      Y LATIN CAPITAL LETTER Y

      Ζ GREEK CAPITAL LETTER ZETA

      0x0396

      0x5A

      Z LATIN CAPITAL LETTER Z

      ζ GREEK SMALL LETTER ZETA

      0x03b6

      0x5A

      Z LATIN CAPITAL LETTER Z

      á LATIN SMALL LETTER A WITH ACUTE

      0x00E1

      0x61

      a LATIN SMALL LETTER A

      â LATIN SMALL LETTER A WITH CIRCUMFLEX

      0x00E2

      0x61

      a LATIN SMALL LETTER A

      ã LATIN SMALL LETTER A WITH TILDE

      0x00E3

      0x61

      a LATIN SMALL LETTER A

      ê LATIN SMALL LETTER E WITH CIRCUMFLEX

      0x00EA

      0x65

      e LATIN SMALL LETTER E

      ë LATIN SMALL LETTER E WITH DIAERESIS

      0x00EB

      0x65

      e LATIN SMALL LETTER E

      í LATIN SMALL LETTER I WITH ACUTE

      0x00ED

      0x69

      i LATIN SMALL LETTER I

      î LATIN SMALL LETTER I WITH CIRCUMFLEX

      0x00EE

      0x69

      i LATIN SMALL LETTER I

      ï LATIN SMALL LETTER I WITH DIAERESIS

      0x00EF

      0x69

      i LATIN SMALL LETTER I

      ó LATIN SMALL LETTER O WITH ACUTE

      0x00f3

      0x6F

      o LATIN SMALL LETTER O

      ô LATIN SMALL LETTER O WITH CIRCUMFLEX

      0x00F4

      0x6F

      o LATIN SMALL LETTER O

      õ LATIN SMALL LETTER O WITH TILDE

      0x00F5

      0x6F

      o LATIN SMALL LETTER O

      ú LATIN SMALL LETTER U WITH ACUTE

      0x00FA

      0x75

      u LATIN SMALL LETTER U

      û LATIN SMALL LETTER U WITH CIRCUMFLEX

      0x00FB

      0x75

      u LATIN SMALL LETTER U

      ý LATIN SMALL LETTER Y WITH ACUTE

      0x00FD

      0x79

      y LATIN SMALL LETTER Y

      ÿ LATIN SMALL LETTER Y WITH DIAERESIS

      0x00FF

      0x79

      y LATIN SMALL LETTER Y

      See also

      SMS Encodings and Converters Overview

      \ No newline at end of file +

      For information about the GSM 7-bit default alphabet and extension table, see 3GPP TS 23.038 V8.1.0. The table below lists the extra lossy conversions supported by the standard converter.

      Character

      Unicode

      GSM

      Converted Character

      ç LATIN SMALL LETTER C WITH CEDILLA

      0x00E7

      0x09

      Ç LATIN CAPITAL LETTER C WITH CEDILLA

      δ GREEK SMALL LETTER DELTA

      0x03B4

      0x10

      Δ GREEK CAPITAL LETTER DELTA

      φ GREEK SMALL LETTER PHI

      0x03C6

      0x12

      Φ GREEK CAPITAL LETTER PHI

      ϕ GREEK PHI SYMBOL

      0x03D5

      0x12

      Φ GREEK CAPITAL LETTER PHI

      γ GREEK SMALL LETTER GAMMA

      0x03B3

      0x13

      Γ GREEK CAPITAL LETTER GAMMA

      λ GREEK SMALL LETTER LAMDA

      0x03BB

      0x14

      Λ GREEK CAPITAL LETTER LAMDA

      Ω GREEK CAPITAL LETTER OMEGA

      0x03A9

      0x15

      Ω GREEK CAPITAL LETTER OMEGA

      ω GREEK SMALL LETTER OMEGA

      0x03C9

      0x15

      Ω GREEK CAPITAL LETTER OMEGA

      ώ GREEK SMALL LETTER OMEGA WITH TONOS

      0x03CE

      0x15

      Ω GREEK CAPITAL LETTER OMEGA

      Ω OHM SIGN

      0x2126

      0x15

      Ω GREEK CAPITAL LETTER OMEGA

      π GREEK SMALL LETTER PI

      0x03C0

      0x16

      Π GREEK CAPITAL LETTER PI

      ∏ N-ARY PRODUCT

      0x220F

      0x16

      Π GREEK CAPITAL LETTER PI

      ψ GREEK SMALL LETTER PSI

      0x03C8

      0x17

      Ψ GREEK CAPITAL LETTER PSI

      ς GREEK SMALL LETTER FINAL SIGMA

      0x03C2

      0x18

      Σ GREEK CAPITAL LETTER SIGMA

      σ GREEK SMALL LETTER SIGMA

      0x03C3

      0x18

      Σ GREEK CAPITAL LETTER SIGMA

      ∑ N-ARY SUMMATION

      0x2211

      0x18

      Σ GREEK CAPITAL LETTER SIGMA

      θ GREEK SMALL LETTER THETA

      0x03B8

      0x19

      Θ GREEK CAPITAL LETTER THETA

      ϑ GREEK THETA SYMBOL

      0x03D1

      0x19

      Θ GREEK CAPITAL LETTER THETA

      ξ GREEK SMALL LETTER XI

      0x03BE

      0x1A

      Ξ GREEK CAPITAL LETTER XI

      (FORM FEED)

      0x000C

      0x1B0A

      (PAGE BREAK)

      À LATIN CAPITAL LETTER A WITH GRAVE

      0x00C0

      0x41

      A LATIN CAPITAL LETTER A

      Á LATIN CAPITAL LETTER A WITH ACUTE

      0x00C1

      0x41

      A LATIN CAPITAL LETTER A

      Â LATIN CAPITAL LETTER A WITH CIRCUMFLEX

      0x00C2

      0x41

      A LATIN CAPITAL LETTER A

      Ã LATIN CAPITAL LETTER A WITH TILDE

      0x00C3

      0x41

      A LATIN CAPITAL LETTER A

      Ά GREEK CAPITAL LETTER ALPHA WITH TONOS

      0x0386

      0x41

      A LATIN CAPITAL LETTER A

      Α GREEK CAPITAL LETTER ALPHA

      0x0391

      0x41

      A LATIN CAPITAL LETTER A

      ά GREEK SMALL LETTER ALPHA WITH TONOS

      0x03AC

      0x41

      A LATIN CAPITAL LETTER A

      α GREEK SMALL LETTER ALPHA

      0x03B1

      0x41

      A LATIN CAPITAL LETTER A

      Β GREEK CAPITAL LETTER BETA

      0x0392

      0x42

      B LATIN CAPITAL LETTER B

      β GREEK SMALL LETTER BETA

      0x03B2

      0x42

      B LATIN CAPITAL LETTER B

      ϐ GREEK BETA SYMBOL

      0x03D0

      0x42

      B LATIN CAPITAL LETTER B

      È LATIN CAPITAL LETTER E WITH GRAVE

      0x00C8

      0x45

      E LATIN CAPITAL LETTER E

      Ê LATIN CAPITAL LETTER E WITH CIRCUMFLEX

      0x00CA

      0x45

      E LATIN CAPITAL LETTER E

      Ë LATIN CAPITAL LETTER E WITH DIAERESIS

      0x00CB

      0x45

      E LATIN CAPITAL LETTER E

      Έ GREEK CAPITAL LETTER EPSILON WITH TONOS

      0x0388

      0x45

      E LATIN CAPITAL LETTER E

      Ε GREEK CAPITAL LETTER EPSILON

      0x0395

      0x45

      E LATIN CAPITAL LETTER E

      έ GREEK SMALL LETTER EPSILON WITH TONOS

      0x03AD

      0x45

      E LATIN CAPITAL LETTER E

      ε GREEK SMALL LETTER EPSILON

      0x03B5

      0x45

      E LATIN CAPITAL LETTER E

      Ή GREEK CAPITAL LETTER ETA WITH TONOS

      0x0389

      0x48

      H LATIN CAPITAL LETTER H

      Η GREEK CAPITAL LETTER ETA

      0x0397

      0x48

      H LATIN CAPITAL LETTER H

      ή GREEK SMALL LETTER ETA WITH TONOS

      0x03AE

      0x48

      H LATIN CAPITAL LETTER H

      η GREEK SMALL LETTER ETA

      0x03B7

      0x48

      H LATIN CAPITAL LETTER H

      Ì LATIN CAPITAL LETTER I WITH GRAVE

      0x00CC

      0x49

      I LATIN CAPITAL LETTER I

      Í LATIN CAPITAL LETTER I WITH ACUTE

      0x00CD

      0x49

      I LATIN CAPITAL LETTER I

      Î LATIN CAPITAL LETTER I WITH CIRCUMFLEX

      0x00CE

      0x49

      I LATIN CAPITAL LETTER I

      Ï LATIN CAPITAL LETTER I WITH DIAERESIS

      0x00CF

      0x49

      I LATIN CAPITAL LETTER I

      Ί GREEK CAPITAL LETTER IOTA WITH TONOS

      0x038A

      0x49

      I LATIN CAPITAL LETTER I

      ΐ GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS

      0x0390

      0x49

      I LATIN CAPITAL LETTER I

      Ι GREEK CAPITAL LETTER IOTA

      0x0399

      0x49

      I LATIN CAPITAL LETTER I

      Ϊ GREEK CAPITAL LETTER IOTA WITH DIALYTIKA

      0x03AA

      0x49

      I LATIN CAPITAL LETTER I

      ί GREEK SMALL LETTER IOTA WITH TONOS

      0x03AF

      0x49

      I LATIN CAPITAL LETTER I

      ι GREEK SMALL LETTER IOTA

      0x03B9

      0x49

      I LATIN CAPITAL LETTER I

      ϊ GREEK SMALL LETTER IOTA WITH DIALYTIKA

      0x03CA

      0x49

      I LATIN CAPITAL LETTER I

      Κ GREEK CAPITAL LETTER KAPPA

      0x039A

      0x4B

      K LATIN CAPITAL LETTER K

      κ GREEK SMALL LETTER KAPPA

      0x03BA

      0x4B

      K LATIN CAPITAL LETTER K

      Μ GREEK CAPITAL LETTER MU

      0x039C

      0x4D

      M LATIN CAPITAL LETTER M

      μ GREEK SMALL LETTER MU

      0x03BC

      0x4D

      M LATIN CAPITAL LETTER M

      Ν GREEK CAPITAL LETTER NU

      0x039D

      0x4E

      N LATIN CAPITAL LETTER N

      ν GREEK SMALL LETTER NU

      0x03BD

      0x4E

      N LATIN CAPITAL LETTER N

      Ò LATIN CAPITAL LETTER O WITH GRAVE

      0x00D2

      0x4F

      O LATIN CAPITAL LETTER O

      Ó LATIN CAPITAL LETTER O WITH ACUTE

      0x00D3

      0x4F

      O LATIN CAPITAL LETTER O

      Ô LATIN CAPITAL LETTER O WITH CIRCUMFLEX

      0x00D4

      0x4F

      O LATIN CAPITAL LETTER O

      Õ LATIN CAPITAL LETTER O WITH TILDE

      0x00D5

      0x4F

      O LATIN CAPITAL LETTER O

      Ό GREEK CAPITAL LETTER OMICRON WITH TONOS

      0x038C

      0x4F

      O LATIN CAPITAL LETTER O

      Ο GREEK CAPITAL LETTER OMICRON

      0x039F

      0x4F

      O LATIN CAPITAL LETTER O

      ο GREEK SMALL LETTER OMICRON

      0x03BF

      0x4F

      O LATIN CAPITAL LETTER O

      ό GREEK SMALL LETTER OMICRON WITH TONOS

      0x03CC

      0x4F

      O LATIN CAPITAL LETTER O

      Ρ GREEK CAPITAL LETTER RHO

      0x03A1

      0x50

      P LATIN CAPITAL LETTER P

      ρ GREEK SMALL LETTER RHO

      0x03C1

      0x50

      P LATIN CAPITAL LETTER P

      Τ GREEK CAPITAL LETTER TAU

      0x03A4

      0x54

      T LATIN CAPITAL LETTER T

      τ GREEK SMALL LETTER TAU

      0x03C4

      0x54

      T LATIN CAPITAL LETTER T

      Ù LATIN CAPITAL LETTER U WITH GRAVE

      0x00D9

      0x55

      U LATIN CAPITAL LETTER U

      Ú LATIN CAPITAL LETTER U WITH ACUTE

      0x00DA

      0x55

      U LATIN CAPITAL LETTER U

      Û LATIN CAPITAL LETTER U WITH CIRCUMFLEX

      0x00DB

      0x55

      U LATIN CAPITAL LETTER U

      Χ GREEK CAPITAL LETTER CHI

      0x03A7

      0x58

      X LATIN CAPITAL LETTER X

      χ GREEK SMALL LETTER CHI

      0x03C7

      0x58

      X LATIN CAPITAL LETTER X

      Ý LATIN CAPITAL LETTER Y WITH ACUTE

      0x00DD

      0x59

      Y LATIN CAPITAL LETTER Y

      Ύ GREEK CAPITAL LETTER UPSILON WITH TONOS

      0x038E

      0x59

      Y LATIN CAPITAL LETTER Y

      Υ GREEK CAPITAL LETTER UPSILON

      0x03A5

      0x59

      Y LATIN CAPITAL LETTER Y

      Ϋ GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA

      0x03AB

      0x59

      Y LATIN CAPITAL LETTER Y

      ΰ GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS

      0x03B0

      0x59

      Y LATIN CAPITAL LETTER Y

      υ GREEK SMALL LETTER UPSILON

      0x03C5

      0x59

      Y LATIN CAPITAL LETTER Y

      ϋ GREEK SMALL LETTER UPSILON WITH DIALYTIKA

      0x03CB

      0x59

      Y LATIN CAPITAL LETTER Y

      ύ GREEK SMALL LETTER UPSILON WITH TONOS

      0x03CD

      0x59

      Y LATIN CAPITAL LETTER Y

      ϒ GREEK UPSILON WITH HOOK SYMBOL

      0x03D2

      0x59

      Y LATIN CAPITAL LETTER Y

      ϓ GREEK UPSILON WITH ACUTE AND HOOK SYMBOL

      0x03D3

      0x59

      Y LATIN CAPITAL LETTER Y

      ϔ GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL

      0x03D4

      0x59

      Y LATIN CAPITAL LETTER Y

      Ζ GREEK CAPITAL LETTER ZETA

      0x0396

      0x5A

      Z LATIN CAPITAL LETTER Z

      ζ GREEK SMALL LETTER ZETA

      0x03b6

      0x5A

      Z LATIN CAPITAL LETTER Z

      á LATIN SMALL LETTER A WITH ACUTE

      0x00E1

      0x61

      a LATIN SMALL LETTER A

      â LATIN SMALL LETTER A WITH CIRCUMFLEX

      0x00E2

      0x61

      a LATIN SMALL LETTER A

      ã LATIN SMALL LETTER A WITH TILDE

      0x00E3

      0x61

      a LATIN SMALL LETTER A

      ê LATIN SMALL LETTER E WITH CIRCUMFLEX

      0x00EA

      0x65

      e LATIN SMALL LETTER E

      ë LATIN SMALL LETTER E WITH DIAERESIS

      0x00EB

      0x65

      e LATIN SMALL LETTER E

      í LATIN SMALL LETTER I WITH ACUTE

      0x00ED

      0x69

      i LATIN SMALL LETTER I

      î LATIN SMALL LETTER I WITH CIRCUMFLEX

      0x00EE

      0x69

      i LATIN SMALL LETTER I

      ï LATIN SMALL LETTER I WITH DIAERESIS

      0x00EF

      0x69

      i LATIN SMALL LETTER I

      ó LATIN SMALL LETTER O WITH ACUTE

      0x00f3

      0x6F

      o LATIN SMALL LETTER O

      ô LATIN SMALL LETTER O WITH CIRCUMFLEX

      0x00F4

      0x6F

      o LATIN SMALL LETTER O

      õ LATIN SMALL LETTER O WITH TILDE

      0x00F5

      0x6F

      o LATIN SMALL LETTER O

      ú LATIN SMALL LETTER U WITH ACUTE

      0x00FA

      0x75

      u LATIN SMALL LETTER U

      û LATIN SMALL LETTER U WITH CIRCUMFLEX

      0x00FB

      0x75

      u LATIN SMALL LETTER U

      ý LATIN SMALL LETTER Y WITH ACUTE

      0x00FD

      0x79

      y LATIN SMALL LETTER Y

      ÿ LATIN SMALL LETTER Y WITH DIAERESIS

      0x00FF

      0x79

      y LATIN SMALL LETTER Y

      See also

      SMS Encodings and Converters Overview

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0CDD535C-9F46-43F3-A1CC-1A4A0E74629A_d0e17786_href.png Binary file Symbian3/PDK/Source/GUID-0CDD535C-9F46-43F3-A1CC-1A4A0E74629A_d0e17786_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0CDD535C-9F46-43F3-A1CC-1A4A0E74629A_d0e19778_href.png Binary file Symbian3/PDK/Source/GUID-0CDD535C-9F46-43F3-A1CC-1A4A0E74629A_d0e19778_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0D093559-793F-5CDC-BB66-8FE1C8A3850E.dita --- a/Symbian3/PDK/Source/GUID-0D093559-793F-5CDC-BB66-8FE1C8A3850E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0D093559-793F-5CDC-BB66-8FE1C8A3850E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -19,13 +19,13 @@ other techniques.

      Transient tables

      Transient tables are created by the database engine to compute intermediate results.

      Transient tables are stored on disk by default, which may result in unexpected I/O calls -that will probably have a negative impact on database performance.

      Prevent datafile corruption

      Datafile +that will probably have a negative impact on database performance.

      Prevent datafile corruption

      Datafile corruption is corruption of the file containing a database with invalid data.

      Datafile corruption can occur after a system crash or loss of power. SQLite maintains files called rollback journals from which the last valid state of a database can be reconstructed. However, if a rollback journal is removed or renamed during recovery from a crash, for instance in the course of application recovery -the database will remain corrupted.

      SQL index tips

      Indexes +the database will remain corrupted.

      SQL index tips

      Indexes are added either manually or automatically to columns of a data table to speed up SELECT operations.

      Indexes greatly speed up the performance of SELECT statements but can impact on insertions, updates and deletions and diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0D1E30D8-D900-5FD9-BD1F-1B93BAD8AEF5.dita --- a/Symbian3/PDK/Source/GUID-0D1E30D8-D900-5FD9-BD1F-1B93BAD8AEF5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0D1E30D8-D900-5FD9-BD1F-1B93BAD8AEF5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -What are fieldsThis topic describes the structure of a field. A field is an item that can be stored in the Comms Database.

      A field is a container and an element. A field is the basic unit of information in the Comms Database.

      A field is represented by the templated class CMDBField <T>. The template parameter defines the type of data that the field contains. For example TInt, TDesC, TBool

      Fields are collected into records.

      Getting data from a field

      An overloaded conversion operator converts the data value in a CMDBField <T> object to the template type. The template type is the type defined by the characters T. The operator allows you to use a CMDBField<T> object on the right-hand side of an assignment call. The operator also allows you to pass a CMDBField<T> object into a function that requires items of the template type.

      The value of a field in memory is NULL:

      • if the caller has not set the value

      • if the field as not been loaded from the Comms Database

      If the value of a field is NULL after the field has been successfully loaded from the Comms Database, the field has been explicitly set to NULL by the writer of the record.

      Setting data into a field

      A field has an assignment operator. A type T field accepts a type T item on the right-hand side of an assignment.

      A descriptor has variable length data. You need to set the size of the buffer that the field uses to store data. You must call SetMaxLengthL() on the CMDBField <T> object and pass the length of the data to be added. You then use the assignment operator. The length that you set must be enough or the assignment operator does not work. The SetL() function is an alternative method. This function calculates the length of a descriptor parameter for a descriptor field type and performs the allocation and assignment.

      \ No newline at end of file +What are fieldsThis topic describes the structure of a field. A field is an item that can be stored in the Comms Database.

      A field is a container and an element. A field is the basic unit of information in the Comms Database.

      A field is represented by the templated class CMDBField <T>. The template parameter defines the type of data that the field contains. For example TInt, TDesC, TBool

      Fields are collected into records.

      Getting data from a field

      An overloaded conversion operator converts the data value in a CMDBField <T> object to the template type. The template type is the type defined by the characters T. The operator allows you to use a CMDBField<T> object on the right-hand side of an assignment call. The operator also allows you to pass a CMDBField<T> object into a function that requires items of the template type.

      The value of a field in memory is NULL:

      • if the caller has not set the value

      • if the field as not been loaded from the Comms Database

      If the value of a field is NULL after the field has been successfully loaded from the Comms Database, the field has been explicitly set to NULL by the writer of the record.

      Setting data into a field

      A field has an assignment operator. A type T field accepts a type T item on the right-hand side of an assignment.

      A descriptor has variable length data. You need to set the size of the buffer that the field uses to store data. You must call SetMaxLengthL() on the CMDBField <T> object and pass the length of the data to be added. You then use the assignment operator. The length that you set must be enough or the assignment operator does not work. The SetL() function is an alternative method. This function calculates the length of a descriptor parameter for a descriptor field type and performs the allocation and assignment.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0D2F811C-81C3-526F-8EA4-98E50261BF4B.dita --- a/Symbian3/PDK/Source/GUID-0D2F811C-81C3-526F-8EA4-98E50261BF4B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0D2F811C-81C3-526F-8EA4-98E50261BF4B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ classes and structs that form the DMA Framework. The individual items are described in more detail below.

      - +
      The DMA Software Controller

      This is the TDmac object. It has @@ -55,7 +55,7 @@ 1000 bytes long. Assume that the DMA descriptors are allocated in a pool starting at address 600. The following diagram shows the scatter/gather list that the device driver might create:

      - +

      If the DMA controller supports the scatter/gather arrangement, then the framework uses a structure that will be specific to the hardware. This structure is defined in the platform specific layer.

      If the DMA controller @@ -84,7 +84,7 @@ and each descriptor is always associated with the header of same index, so that there is always a one-to-one relationship between the header and the descriptor.

      - +

      In the current design, the only information in the descriptor header is a pointer, SDmaDesHdr::iNext, that is used to chain headers together on various lists. So, although the pool of headers is allocated as @@ -119,7 +119,7 @@ always true when the request is queued (i.e. when the request is being transferred or is still pending). The following diagram shows an idle request with three fragments.

      - +

      Splitting a request into fragments is useful because:

      • it insulates device drivers from the maximum transfer size supported by the underlying DMA controller.

      • @@ -183,7 +183,7 @@ following diagram shows a DMA channel with a three-fragment request being transferred and a two-fragment one pending. The fragment currently being transferred is the second one of the first request.

        - +

        The TDmaChannel class contains the code and data that is common to all of the channel types. The code and data for the specific channel types: single buffer, double buffer, and scatter/gather channels, @@ -192,17 +192,17 @@ State Machine

        For reference purposes, the following diagram shows the state machine that TDmaSbChannel implements to deal with a single buffer channel.

        - +

        TDmaDbChannel State Machine

        For reference purposes, the following diagram shows the state machine that TDmaDbChannel implements to deal with a double buffer channel.

        - +

        TDmaSgChannel State Machine

        For reference purposes, the following diagram shows the state machine that TDmaSgChannel implements to deal with a scatter/gather channel.

        - +
      Streaming and Scatter/Gather DMA Controllers

      When a transfer request is queued @@ -212,7 +212,7 @@ they must also be linked together.

      The following diagram shows how headers and descriptors for a new request are appended to the existing ones for a DMA controller. The dashed arrows represent the new links.

      - +

      Note that hardware descriptors are linked together using physical addresses, not virtual ones.

      Linking hardware descriptors together is implemented in the platform specific layer. There are two issues to consider:

        diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0D3060BE-8C0F-564A-8979-C9A88C49C5E8_d0e108723_href.png Binary file Symbian3/PDK/Source/GUID-0D3060BE-8C0F-564A-8979-C9A88C49C5E8_d0e108723_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0D3060BE-8C0F-564A-8979-C9A88C49C5E8_d0e111166_href.png Binary file Symbian3/PDK/Source/GUID-0D3060BE-8C0F-564A-8979-C9A88C49C5E8_d0e111166_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0D619063-F2DB-53FC-A5E6-BC09AD915FA4.dita --- a/Symbian3/PDK/Source/GUID-0D619063-F2DB-53FC-A5E6-BC09AD915FA4.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ - - - - - -Resource -member initialisation overview -

        The resource initialiser has different forms depending on whether a single, -simple, member is being initialised, or whether a struct or an array is being -initialised:

        -<resource-initialiser> -resource-initialiser ::= - <member-name> [ (<length-limit>) ] = <initialiser><initialiser> -initialiser ::= - <simple-initialiser> | <struct-initialiser> | <array-initialiser> -

        Resource members may be initialised by default (in the struct definition) -or explicitly initialised (in the resource definition).

        -

        In general,

        -
          -
        • If a member is initialised -in a RESOURCE statement, then that is its value.

        • -
        • If a member is initialised -in a STRUCT statement, then that is its value for all resources -which do not explicitly initialise it.

        • -
        • If a member is neither initialised -in a RESOURCE statement nor a STRUCT statement, -then: BYTE, WORD and DOUBLE members -contain zero; TEXT, LTEXT and BUF members -contain an empty string.

        • -
        • It is an error for LINK and LLINK members -to have no explicit value, so they must be initialised, either by default -(in the STRUCT statement) or explicitly (in the RESOURCE statement).

        • -
        • SRLINK members -may not be initialised (either in the STRUCT statement or -a RESOURCE statement) since they are automatically assigned -the resource id of the resource in which they appear.

        • -
        • Members which are themselves STRUCT s -may not be default initialised. They can only be initialised in the RESOURCE definition. -If they are not explicitly initialised, they will take up zero bytes in the -resource file. For example, given the following STRUCT definition:

          STRUCT TEST2 - { - WORD value; - STRUCT tester; - }

          The following RESOURCE statement only generates -the two bytes 0xFF 0x00.

          RESOURCE TEST2 item - { - value=255; - }
        • -
        -
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0DB79535-E4E6-50BD-852D-B2F177202C9C_d0e375610_href.png Binary file Symbian3/PDK/Source/GUID-0DB79535-E4E6-50BD-852D-B2F177202C9C_d0e375610_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0DB79535-E4E6-50BD-852D-B2F177202C9C_d0e381454_href.png Binary file Symbian3/PDK/Source/GUID-0DB79535-E4E6-50BD-852D-B2F177202C9C_d0e381454_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0DC3E5AA-1706-5255-ACD6-E7AB732E1095.dita --- a/Symbian3/PDK/Source/GUID-0DC3E5AA-1706-5255-ACD6-E7AB732E1095.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0DC3E5AA-1706-5255-ACD6-E7AB732E1095.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,8 +11,8 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Graphics Composition Collection OverviewThis topic provides an introduction to the Graphics Composition collection.

        Variant: ScreenPlay. Target audience: Device creators.

        In the context of ScreenPlay, composition is the process of combining content, possibly from several different sources, before it is displayed. For example, the following figure represents a scenario where content from the camera viewfinder, video, and OpenVG 2D and OpenGL ES 3D games are brought together with the UI content and then displayed on the screen. This process of bringing the content together is called composition. Some of the incoming content may be produced by hardware renderers and the composition itself may be hardware accelerated.

        Composition of several different types of content -

        In ScreenPlay, sources that generate complex graphical output (such as the camera viewfinder, video, and OpenGLES and OpenVG games) can render directly to composition surfaces. These are essentially pixel buffers with associated metadata describing the width, height, stride and pixel format. In the Symbian implementation, surfaces are implemented using shared chunks, which are memory regions that can be safely shared between user-side and kernel-side processes.

        The Window Server's render stage plug-ins render all of the UI content onto a special surface that is known as the UI surface. This is semi-transparent—unlike the background surfaces, which are opaque. The following diagram shows the composition engine bringing together the UI surface and the background surfaces onto the frame buffer, which the Display Driver then displays on the screen.

        +

        In ScreenPlay, sources that generate complex graphical output (such as the camera viewfinder, video, and OpenGLES and OpenVG games) can render directly to composition surfaces. These are essentially pixel buffers with associated metadata describing the width, height, stride and pixel format. In the Symbian implementation, surfaces are implemented using shared chunks, which are memory regions that can be safely shared between user-side and kernel-side processes.

        The Window Server's render stage plug-ins render all of the UI content onto a special surface that is known as the UI surface. This is semi-transparent—unlike the background surfaces, which are opaque. The following diagram shows the composition engine bringing together the UI surface and the background surfaces onto the frame buffer, which the Display Driver then displays on the screen.

        The ScreenPlay rendering stack -

        The composition engine maintains a stack of scene elements or layers (which describe the geometric positions, size and orientation), computes what is visible and performs the actual composition work.

        For a general introduction to some of the key composition concepts, see Graphics Composition and Scene Elements.

        Components

        The following diagram shows the composition interface and engine and related components and indicates which are generic parts of the Symbian platform and which can be adapted by device and hardware manufacturers.

        +

        The composition engine maintains a stack of scene elements or layers (which describe the geometric positions, size and orientation), computes what is visible and performs the actual composition work.

        For a general introduction to some of the key composition concepts, see Graphics Composition and Scene Elements.

        Components

        The following diagram shows the composition interface and engine and related components and indicates which are generic parts of the Symbian platform and which can be adapted by device and hardware manufacturers.

        Key composition components -

        Here we will look briefly at the role of the key components.

        • The composition engine maintains the stack of elements and computes what is visible. For example, it culls invisible areas and maintains a list of dirty rectangles. The composition engine also performs the actual composition work, blending the pixels if necessary. It supports limited transformation, such as scaling and rotation (in 90° increments). It can utilize GPU hardware composition and LCD hardware rotation if they are available. The Symbian Foundation provides a reference implementation based on the OpenWF Composition (OpenWF-C) APIs defined by the Khronos Group.

        • The Surface Manager creates and manages surfaces. As mentioned above, in the Symbian implementation, surfaces are implemented as shared chunks because they must be accessible by user-side processes and the kernel and composition hardware. Because shared chunks can only be allocated on the kernel side, the Surface Manager is a logical device driver (LDD) and kernel extension. Surfaces can be multi-buffered and are identified by a 128 bit identifier (called the surface ID).

        • The Surface Update Server provides a communication mechanism between the composition engine and its clients. This is particularly useful for clients (such as video) that produce fast updates and use multi-buffered surfaces. The Surface Update Server sends back to the client notification of which surface and which buffer within a multi-buffered surface was used for the last composition operation. The client can then start updating the buffer without risk of tearing or artefacts.

        Graphics Composition Collection Graphics Composition Scene Elements Surfaces \ No newline at end of file +

        Here we will look briefly at the role of the key components.

        • The composition engine maintains the stack of elements and computes what is visible. For example, it culls invisible areas and maintains a list of dirty rectangles. The composition engine also performs the actual composition work, blending the pixels if necessary. It supports limited transformation, such as scaling and rotation (in 90° increments). It can utilize GPU hardware composition and LCD hardware rotation if they are available. The Symbian Foundation provides a reference implementation based on the OpenWF Composition (OpenWF-C) APIs defined by the Khronos Group.

        • The Surface Manager creates and manages surfaces. As mentioned above, in the Symbian implementation, surfaces are implemented as shared chunks because they must be accessible by user-side processes and the kernel and composition hardware. Because shared chunks can only be allocated on the kernel side, the Surface Manager is a logical device driver (LDD) and kernel extension. Surfaces can be multi-buffered and are identified by a 128 bit identifier (called the surface ID).

        • The Surface Update Server provides a communication mechanism between the composition engine and its clients. This is particularly useful for clients (such as video) that produce fast updates and use multi-buffered surfaces. The Surface Update Server sends back to the client notification of which surface and which buffer within a multi-buffered surface was used for the last composition operation. The client can then start updating the buffer without risk of tearing or artefacts.

        Graphics Composition Collection Graphics Composition Scene Elements Surfaces
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0DD1EBC4-6068-5FE7-B649-CABA57E86195.dita --- a/Symbian3/PDK/Source/GUID-0DD1EBC4-6068-5FE7-B649-CABA57E86195.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0DD1EBC4-6068-5FE7-B649-CABA57E86195.dita Fri Jul 16 17:23:46 2010 +0100 @@ -33,7 +33,7 @@ gc.DrawPolyLine(mypoints); ...
      Drawing a polygon

      The following example code illustrates how to draw a filled polygon from an array of points. The polygon is self-crossing. Self-crossing polygons can be filled according to one of two rules, TFillRule::EAlternate (the default), or TFillRule::EWinding. These rules work with the concept of a winding number, as shown in the following figure:

      Winding numbers -

      EWinding fills all areas, while EAlternate only fills areas with odd winding numbers.

      Drawing a polygon using the EWinding fill rule

      1. Use SetBrushStyle() to set a cross-hatched brush style.

      2. Use DrawPolygon() to draw the polygon with the EWinding fill rule.

      ... +

      EWinding fills all areas, while EAlternate only fills areas with odd winding numbers.

      Drawing a polygon using the EWinding fill rule

      1. Use SetBrushStyle() to set a cross-hatched brush style.

      2. Use DrawPolygon() to draw the polygon with the EWinding fill rule.

      ... // draw self-crossing polygon using the winding fill rule gc.SetBrushStyle(CGraphicsContext::ESquareCrossHatchBrush); gc.SetBrushColor(black); diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0DE924C3-B740-515E-8B29-4BDEFDA2960B_d0e231757_href.png Binary file Symbian3/PDK/Source/GUID-0DE924C3-B740-515E-8B29-4BDEFDA2960B_d0e231757_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0DE924C3-B740-515E-8B29-4BDEFDA2960B_d0e237752_href.png Binary file Symbian3/PDK/Source/GUID-0DE924C3-B740-515E-8B29-4BDEFDA2960B_d0e237752_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0DEDC917-05C9-5D43-B839-73C043624BE9.dita --- a/Symbian3/PDK/Source/GUID-0DEDC917-05C9-5D43-B839-73C043624BE9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0DEDC917-05C9-5D43-B839-73C043624BE9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,51 +9,51 @@ --> - circularbuffer: -Circular Buffer ExampleThis example demonstrates the how to use the circular buffer classes CCirBuf and CCirBuffer. -
      Purpose

      This -example application shows how to construct and make use of circular buffers -containing integers, objects of user defined classes and objects of an R class.

      -
      Download

      Click on the following link to download -the example: circularbuffer .zip

      Click browse to view the example code.

      -
      class summary

      CCirBuffer CCirBuf

      -
      Design and -implementation

      Class diagram:

      - Circular buffers example class diagram - -

      The example creates a circular buffer of integers using CCirBuffer::Put() to -add elements and CCirBuffer::Get() to remove an element. -To demonstrate the circular nature of the buffer, the example:

        -
      • adds four elements until -the buffer is full,

      • -
      • tries to adds another -element to the buffer, which fails with a buffer full error message,

      • -
      • removes elements 1 and -2 from the buffer, leaving elements 3 and 4,

      • -
      • adds two new elements -(5 and 6) to the buffer,

      • -
      • removes all elements -(3, 4, 5 and 6) from the buffer.

      • -

      Similar steps are performed using CCirBuf to add -(CCirBuf::Add()) and remove (CCirBuf::Remove()) -user-defined objects, and objects of an R class to and from -the buffer.

      After removing R class objects from the circular buffer, -they must be closed in order to release the resource held by the R Class objects.

      -
      Building and -configuring

      To build the example:

        -
      • You can build the example -from your IDE or the command line.

        If you use an IDE, import the bld.inf file -of the example into your IDE, and use the build command of the IDE.

        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:

        bldmake -bldfiles

        abld build

        How to use bldmake and How to use abld describe -how to use the SBSv1 build tools.

      • -
      • For the emulator, the -example builds an executable called circularbuffer.exe in -the epoc32\release\winscw\<udeb or urel>\ folder.

      • + circularbuffer: Circular Buffer ExampleThis example demonstrates the how to use the circular buffer +classes CCirBuf and CCirBuffer. +
        Purpose

        This example application shows how to construct and make use +of circular buffers containing integers, objects of user defined classes +and objects of an R class.

        +
        Download

        Click on the following link to download the example: circularbuffer .zip

        Click browse to view the example code.

        +
        class +summary

        CCirBuffer CCirBuf

        +
        Design +and implementation

        Class diagram:

        + Circular buffers example class diagram + + +

        The example creates a circular buffer of integers using CCirBuffer::Put() to add elements and CCirBuffer::Get() to remove an element. To demonstrate the circular nature of the +buffer, the example:

          +
        • adds four elements +until the buffer is full,

        • +
        • tries to adds +another element to the buffer, which fails with a buffer full error +message,

        • +
        • removes elements +1 and 2 from the buffer, leaving elements 3 and 4,

        • +
        • adds two new +elements (5 and 6) to the buffer,

        • +
        • removes all +elements (3, 4, 5 and 6) from the buffer.

        • +

        Similar steps are performed using CCirBuf to add (CCirBuf::Add()) and remove (CCirBuf::Remove()) user-defined objects, and objects of +an R class to and from the buffer.

        After +removing R class objects from the circular buffer, they must be closed +in order to release the resource held by the R Class objects.

        +
        Building +and configuring

        To build the example:

          +
        • You can build +the example from your IDE or the command line.

          If you use +an IDE, import the bld.inf file of the example +into your IDE, and use the build command of the IDE.

          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:

          bldmake bldfiles

          abld +build .

        • +
        • For the emulator, +the example builds an executable called circularbuffer.exe in the epoc32\release\winscw\<udeb or + urel>\ folder.

        -
        Running the -example

        The user is prompted to press a key in order to progress -from one function to the next.

        +
        Running +the example

        The user is prompted to press a key in order +to progress from one function to the next.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0E21EAE4-BF71-55FD-9561-EA5530696627_d0e554061_href.png Binary file Symbian3/PDK/Source/GUID-0E21EAE4-BF71-55FD-9561-EA5530696627_d0e554061_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0E21EAE4-BF71-55FD-9561-EA5530696627_d0e561517_href.png Binary file Symbian3/PDK/Source/GUID-0E21EAE4-BF71-55FD-9561-EA5530696627_d0e561517_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0E3E2FAD-FC85-5995-8B5C-8F1C1A4186D0.dita --- a/Symbian3/PDK/Source/GUID-0E3E2FAD-FC85-5995-8B5C-8F1C1A4186D0.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ - - - - - -Troubleshooting Tips for RVCT v3.1

        This section is intended to help you troubleshoot the errors that may occur after migrating to RealView Compilation Tools (RVCT) v3.1. It provides a list of common problems that you may face while building your component using RVCT v3.1, with possible causes and ways to troubleshoot the problems.

        Problem Possible cause Possible solution

        Error: L6410W: Symbol <symbol_name > with non STV_DEFAULT visibility STV_HIDDEN should be resolved statically, cannot use definition in <dso_file_name >

        The linker is aware that the symbol (function) is present in another DLL, but in at least one of the source files of your component the symbol (function) has been declared without the IMPORT_C modifier.

        Identify such source files and prefix the symbol declaration with the IMPORT_C modifier.

        elf2e32 : Error: E1036: Symbol <symbol_name > Missing from ELF file: <file_name >

        The symbol (function) is present in the generated ELF DLL, but it is not visible externally. This is because the symbol (function) definition is not annotated with EXPORT_C, or when callers within the DLL does not prefix the function declaration with the IMPORT_C modifier.

        Identify such symbol definitions and annotate them with the EXPORT_C modifier. Prefix the function declaration with the IMPORT_C modifier if you are trying to call a function in another DLL.

        If you are unable to troubleshoot the problems listed in this table, perform the following steps:

        1. Browse to the directory where the object files of your component are stored.

        2. Create a dump of the symbol table for each object file using the command, fromelf -s <object_filename> and locate the problematic function. If the function does not have the STV_DEFAULT visibility, then you have found the cause, or at least have identified the source file that is causing the problem.

        3. If you are still unable to identify the cause of the problem, check the pre-processed source file to find out the cause. Perform the following steps to pre-process the source file:

          1. Identify the armcc command (copy from the log file) that compiled the object.

          2. Run the command after replacing -c with -E and specifying the output file as an argument to the -o option.

          3. Check whether the function has been annotated with __declspec(dllimport), which is the expansion of IMPORT_C.

            Note: If the function declaration is incorrect in more than one place, then repeat this whole procedure until all instances are identified.

        Overview of the - native build targets
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0E55E007-913C-56DA-8BEF-7EC00FFCCE51_d0e512182_href.jpg Binary file Symbian3/PDK/Source/GUID-0E55E007-913C-56DA-8BEF-7EC00FFCCE51_d0e512182_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0E55E007-913C-56DA-8BEF-7EC00FFCCE51_d0e519644_href.jpg Binary file Symbian3/PDK/Source/GUID-0E55E007-913C-56DA-8BEF-7EC00FFCCE51_d0e519644_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0E695106-4139-4335-A11F-BD04418DD583.dita --- a/Symbian3/PDK/Source/GUID-0E695106-4139-4335-A11F-BD04418DD583.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0E695106-4139-4335-A11F-BD04418DD583.dita Fri Jul 16 17:23:46 2010 +0100 @@ -27,7 +27,7 @@ Multi-selection lists: in the main pane (left) and in a setting editor (right) - +

        The keypad functions for multi-selection lists are as follows:

        Default key event diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0E91173A-BA80-5817-866A-7A284573EBCE_d0e483000_href.png Binary file Symbian3/PDK/Source/GUID-0E91173A-BA80-5817-866A-7A284573EBCE_d0e483000_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0E91173A-BA80-5817-866A-7A284573EBCE_d0e488829_href.png Binary file Symbian3/PDK/Source/GUID-0E91173A-BA80-5817-866A-7A284573EBCE_d0e488829_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0EBE5733-A267-5F4A-85AD-87C3ECF80731.dita --- a/Symbian3/PDK/Source/GUID-0EBE5733-A267-5F4A-85AD-87C3ECF80731.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0EBE5733-A267-5F4A-85AD-87C3ECF80731.dita Fri Jul 16 17:23:46 2010 +0100 @@ -38,7 +38,7 @@ variant</xref>. </p> <fig id="GUID-FF86B974-1B1E-5EE1-A88A-9CD11B213A9B"> <title>The screen mode enables old applications to run on new phones with higher resolutions - +

        There are several similar use cases, such as swapping between portrait and landscape orientations and flip phones that have a flap that, when closed, partially obscures the main screen. The Window Server uses the screen mode @@ -70,7 +70,7 @@ area. The application's area (which corresponds to the screen mode) is referred to as the application extent in ScreenPlay.

        Coordinate spaces in ScreenPlay - +

        ScreenPlay handles application sizing and positioning in a fundamentally different way from the non-ScreenPlay variant. Using a fixed offset to position the application within the screen is inadequate when connecting to an external @@ -80,7 +80,7 @@ diagram, where the red cross indicates the offset for a QVGA display.

        A fixed offset and several display resolutions (not drawn to scale) - +

        In ScreenPlay there is no scaling of the application extent relative to the full UI area—there is always a 1:1 pixel correspondence between them. In addition, although supported, the screen mode offset is not necessarily diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0EBE8B44-1F42-4654-AC4D-A5F242FA49EB_d0e100989_href.png Binary file Symbian3/PDK/Source/GUID-0EBE8B44-1F42-4654-AC4D-A5F242FA49EB_d0e100989_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0EBE8B44-1F42-4654-AC4D-A5F242FA49EB_d0e79103_href.png Binary file Symbian3/PDK/Source/GUID-0EBE8B44-1F42-4654-AC4D-A5F242FA49EB_d0e79103_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0EBE8B44-1F42-4654-AC4D-A5F242FA49EB_d0e80014_href.png Binary file Symbian3/PDK/Source/GUID-0EBE8B44-1F42-4654-AC4D-A5F242FA49EB_d0e80014_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0EBE8B44-1F42-4654-AC4D-A5F242FA49EB_d0e83301_href.png Binary file Symbian3/PDK/Source/GUID-0EBE8B44-1F42-4654-AC4D-A5F242FA49EB_d0e83301_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0EBE8B44-1F42-4654-AC4D-A5F242FA49EB_d0e84212_href.png Binary file Symbian3/PDK/Source/GUID-0EBE8B44-1F42-4654-AC4D-A5F242FA49EB_d0e84212_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0EBE8B44-1F42-4654-AC4D-A5F242FA49EB_d0e96910_href.png Binary file Symbian3/PDK/Source/GUID-0EBE8B44-1F42-4654-AC4D-A5F242FA49EB_d0e96910_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0EF25CCA-1E6B-5B62-8E77-9A670986C5EF.dita --- a/Symbian3/PDK/Source/GUID-0EF25CCA-1E6B-5B62-8E77-9A670986C5EF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0EF25CCA-1E6B-5B62-8E77-9A670986C5EF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,9 +12,9 @@ Textual LoggingThis topic describes the textual logging mechanisms available to help debugging the Communication-related components.

        Most Comms components can output debugging information. These components must be configured to output information, with the configuration procedure dependent on the logging mechanism used by the component. The following mechanisms are used to log the information:

        • Flogger - This logging mechanism is a file logger. It used to be the standard mechanism for Comms logging, but it is being replaced by CDU (below).

        • Comms Debug Utility (CDU) - This logging mechanism is currently used for the majority of Comms logging. It is the successor to Flogger and adds a two-phase logging system to give flexibility in debugging problems which are difficult to reproduce in debug binary files. It unifies Comms logging into one text file and allows the output to be redirected to RDebug for easier on-target debugging, or on emulator to the fast Windows Debug port. For more information see Post-processing CDU log files, Default CDU and Interpreting the log files.

          Note: The CDU API is not published and so its APIs cannot be used for adding new logging.

        • Unified Trace/UTrace/ULogger - This logging mechanism is currently used for a small amount of Comms logging. For more information see How to Use ULogger with Comms

        • Proprietary - This logging mechanism belongs to the component itself. A few components still use their own logging mechanisms, but these usually behave similarly to Flogger in that to obtain the logs the appropriate folder needs to exist while the component is running.

        Note: When you enable logging for a component, the component may run significantly slower as it performs the logging. This could make reproducing a problem more difficult if the reduced component execution performance changes the sequence of events leading to the problem.

        Post-processing CDU log files

        The CDU log file format is designed to be viewed unprocessed. However, in some cases post-processing is required. Two post-processing tools are available:

        • Splitlog - is supplied in epoc32\tools and splits the single log.txt file into multiple files by each unique tag combination. This tool is used to extract embedded binary logging such as that for PPP described below in Component-Specific Debugging Help.

        • Networking Message Sequence Display Tool - processes a standard log.txt file to extract the Comms Framework messages and generates HTML/SVG output files for display on a suitable SVG-enabled browser.

          Figure 1 - Example SVG output from the Message Sequence Display Tool -
        Default CDU

        CDU provides a default configuration file which lists all the known components which use it, and also provides a reference listing of iby files and their respective component source code and log tags. Figure 2 provides a snapshot of the configuration file:

        +
        Default CDU

        CDU provides a default configuration file which lists all the known components which use it, and also provides a reference listing of iby files and their respective component source code and log tags. Figure 2 provides a snapshot of the configuration file:

        Figure 2 - The default commsdbg.ini file -

        The default CDU file is located at ..\comms-infras\commsdebugutility\group\commsdbgdefault.ini and is available for the emulator in epoc32\<data|release\winscw\<udeb|urel>>\z\resource\commsdbg.ini.

        Interpreting the log files

        Comms components have specific log file schemes with some similarities. The following are guidelines for interpreting the files:

        • Errors are logged - when a panic or other serious error condition is encountered. Often the last few log lines includes where the critical condition was reached, since usually the panic code or error code alone is not enough. If not, then often searching for "warning" or "error" in the earlier logging will identify where the problem began.

        • Multi-threaded module output prefixes thread number - ESock and the C32 Serial Server prefix the log lines with the thread number within the specific thread numbering scheme. For example:

          esock esock a 2e W0: CWorkerThread::ConstructL Init RS ChannelHandler +

          The default CDU file is located at ..\comms-infras\commsdebugutility\group\commsdbgdefault.ini and is available for the emulator in epoc32\<data|release\winscw\<udeb|urel>>\z\resource\commsdbg.ini.

        Interpreting the log files

        Comms components have specific log file schemes with some similarities. The following are guidelines for interpreting the files:

        • Errors are logged - when a panic or other serious error condition is encountered. Often the last few log lines includes where the critical condition was reached, since usually the panic code or error code alone is not enough. If not, then often searching for "warning" or "error" in the earlier logging will identify where the problem began.

        • Multi-threaded module output prefixes thread number - ESock and the C32 Serial Server prefix the log lines with the thread number within the specific thread numbering scheme. For example:

          esock esock a 2e W0: CWorkerThread::ConstructL Init RS ChannelHandler esock esock a 32 W4: SocketServer::InitL() Done! esock Booting a 32 W4: CWorkerThread::ConstructL Init ProtocolManager

          The log lines indicate that ESock's Worker zero - the main thread - has initiated construction of its Rootserver (RS) communications channel, while Worker four has started constructing the Protocol Manager.

          Note: The "2e" and "32" numbers are the kernel's own numbers for these threads.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0F09110F-3C4C-57D9-BA7D-19DD9A06B33B.dita --- a/Symbian3/PDK/Source/GUID-0F09110F-3C4C-57D9-BA7D-19DD9A06B33B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0F09110F-3C4C-57D9-BA7D-19DD9A06B33B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -Editing media files

        You can use the MVS to edit media files (or "clips"). You can either crop a newly recorded file before saving it, or specify that only a portion of a saved file should play.

        Cropping a file

        You can crop a file - remove a specified number of seconds from the beginning or end of a file open for record - before saving it.

        Note: The audio or video cropped is deleted from the file and cannot be retrieved.

        To crop a file:

        1. In the Edit menu, click SetCropWindow. The Crop This Clip dialog box is displayed.

        2. Select the position of the Crop: offset from either the beginning or the end of the clip.

        3. Enter the Cropping Point: the offset in seconds.

        4. Click Crop! to crop the clip.

        Selecting a portion of a file to play

        Before you play a media file you can specify that you want to play only a portion of it.

        To select a portion of clip for playing:

        1. In the Edit menu, click Set PlayWindow. This displays the Set PlayWindow dialog box.

        2. Enter the Start and End times of the portion in milliseconds.

        3. Click OK to confirm the clip length.

          When you play the clip, only the selected portion is played.

        Clearing a selected portion

        To set the portion to play back to its original value (entire clip): from the Edit menu, click ClearPlayWindow.

        See Also

        Introduction to the MVS

        MVS GUI layout

        Recording media files

        Playing media files

        Configuring and clearing files

        \ No newline at end of file +Editing media files

        You can use the MVS to edit media files (or "clips"). You can either crop a newly recorded file before saving it, or specify that only a portion of a saved file should play.

        Cropping a file

        You can crop a file - remove a specified number of seconds from the beginning or end of a file open for record - before saving it.

        Note: The audio or video cropped is deleted from the file and cannot be retrieved.

        To crop a file:

        1. In the Edit menu, click SetCropWindow. The Crop This Clip dialog box is displayed.

        2. Select the position of the Crop: offset from either the beginning or the end of the clip.

        3. Enter the Cropping Point: the offset in seconds.

        4. Click Crop! to crop the clip.

        Selecting a portion of a file to play

        Before you play a media file you can specify that you want to play only a portion of it.

        To select a portion of clip for playing:

        1. In the Edit menu, click Set PlayWindow. This displays the Set PlayWindow dialog box.

        2. Enter the Start and End times of the portion in milliseconds.

        3. Click OK to confirm the clip length.

          When you play the clip, only the selected portion is played.

        Clearing a selected portion

        To set the portion to play back to its original value (entire clip): from the Edit menu, click ClearPlayWindow.

        See Also

        Introduction to the MVS

        MVS GUI layout

        Recording media files

        Playing media files

        Configuring and clearing files

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0F2AE495-F6D8-5351-BD83-76D579564C2E_d0e243480_href.png Binary file Symbian3/PDK/Source/GUID-0F2AE495-F6D8-5351-BD83-76D579564C2E_d0e243480_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0F2AE495-F6D8-5351-BD83-76D579564C2E_d0e249491_href.png Binary file Symbian3/PDK/Source/GUID-0F2AE495-F6D8-5351-BD83-76D579564C2E_d0e249491_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0F593BE1-1220-4403-B04E-B8E8A9A49701.dita --- a/Symbian3/PDK/Source/GUID-0F593BE1-1220-4403-B04E-B8E8A9A49701.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0F593BE1-1220-4403-B04E-B8E8A9A49701.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ of displays varies among legacy S60 devices and devices based on the Symbian platform, as do the keys available for input.

        -Device display and keypad controls +Device display and keypad controls

        The display consists of the following elements:

        • Window - An area on the display. There are windows @@ -31,7 +31,7 @@

        Windows

        The following figure illustrates a typical window for an application:

        -Symbian UI window +Symbian UI window

        Typically, a window contains a status pane, a main pane, and a control pane.

        @@ -62,17 +62,17 @@ tree structure forms the basis for navigation, with mobile device users moving from one node, which represents a state, to another.

        The figure below illustrates an example of a basic state hierarchy.

        -Example of a basic state hierarchy in an application +Example of a basic state hierarchy in an application
        Tabs

        The Symbian UI supports tabs, which allow you to collect information for a state onto different pages. These tabs exist in the same node of the navigation hierarchy. The concept of tabs is related to the term view.

        The following figure illustrates the use of tabs in an application.

        -Windows with tabs +Windows with tabs

        The following figures illustrates how tabs appear in the navigation hierarchy.

        -Example of a hierarchy with tabs +Example of a hierarchy with tabs

        See also:

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0F5C8DA1-EF91-588B-A917-350793DA03A5_d0e63448_href.png Binary file Symbian3/PDK/Source/GUID-0F5C8DA1-EF91-588B-A917-350793DA03A5_d0e63448_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0F5C8DA1-EF91-588B-A917-350793DA03A5_d0e67679_href.png Binary file Symbian3/PDK/Source/GUID-0F5C8DA1-EF91-588B-A917-350793DA03A5_d0e67679_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0F784804-8452-4C92-ABB3-56B81BAED744.dita --- a/Symbian3/PDK/Source/GUID-0F784804-8452-4C92-ABB3-56B81BAED744.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0F784804-8452-4C92-ABB3-56B81BAED744.dita Fri Jul 16 17:23:46 2010 +0100 @@ -30,7 +30,7 @@
        Architecture Sensor Services Architecture - +

        The Sensor Services collection consists of the following components:

        • Sensor Framework, which provides sensor server and plug-in interfaces for adding any new sensor plug-in as required. The framework also provides diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0F8D0399-58CD-4EB6-82DF-75D6BE5B0A84.dita --- a/Symbian3/PDK/Source/GUID-0F8D0399-58CD-4EB6-82DF-75D6BE5B0A84.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0F8D0399-58CD-4EB6-82DF-75D6BE5B0A84.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,35 +1,30 @@ - - - - - -Application -framework concepts -

          The application framework contains a set of libraries and components -provided by the Symbian platform to make common functions available to applications. -Examples of the available functions include:

          -
            -
          • application -launching

          • -
          • event -handling

          • -
          • internationalization -and localization

          • -
          • keyboard and pointer support

            -
          • -
          -

          All GUI-based applications use the application framework architecture. -You must derive the application classes from base classes provided by AVKON. -For more information on the classes involved in the application framework, -see Framework -requirements for GUI applications. For more -information on the UI, see UI concepts.

          -

          In addition, the following concepts are relevant in the context of the -application framework:

          + + + + + +Application framework concepts +

          The application framework contains a set of libraries and components +provided by the Symbian platform to make common functions available +to applications. Examples of the available functions include:

          +
            +
          • application launching

          • +
          • event handling

          • +
          • internationalization and localization

          • +
          • keyboard and pointer support

            +
          • +
          +

          All GUI-based applications use the application framework architecture. +You must derive the application classes from base classes provided +by AVKON. For more information on the classes involved in the application +framework, see Framework +requirements for GUI applications. For more information on the UI, see UI concepts.

          +

          In addition, the following concepts are relevant in the context +of the application framework:

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0FB60233-993A-4BF2-9E8C-E03AD092359B.dita --- a/Symbian3/PDK/Source/GUID-0FB60233-993A-4BF2-9E8C-E03AD092359B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-0FB60233-993A-4BF2-9E8C-E03AD092359B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,35 +1,33 @@ - - - - - -Managing -resource files -

          In the Symbian platform, resource files -are used to define UI components such as status panes, CBA -(Control Button Area) buttons, menu -bars, views, -dialogs, strings, and constants used in applications. The UI components consist -of data structures that are defined in resource files. These data structures -are then invoked from the classes controlling the UI implementation. When -UI component implementation is split into these two approaches, it means that -resources can be recompiled, for example for new languages, without having -to recompile the application code (unless you change the resource identifiers).

          -

          This section includes the following:

          - -

          For demonstration purposes, the sections on resources contain examples -with arbitrary values. In your own code, it is recommend that you use a system -of easy to remember value names.

          -
          -

          For an introduction to the UI, see UI concepts.

          -

          For more information on resources, resource files, and their use in -the Symbian platform, see Resource -Files.

          -

          This section explains the following:

          + + + + + +Managing resource files +

          In the Symbian platform, resource files +are used to define UI components such as status panes, CBA (Control Button +Area) buttons, menu bars, views, dialogs, +strings, and constants used in applications. The UI components consist +of data structures that are defined in resource files. These data +structures are then invoked from the classes controlling the UI implementation. +When UI component implementation is split into these two approaches, +it means that resources can be recompiled, for example for new languages, +without having to recompile the application code (unless you change +the resource identifiers).

          +

          This section includes the following:

          + +

          For demonstration purposes, the sections on resources contain +examples with arbitrary values. In your own code, it is recommend +that you use a system of easy to remember value names.

          +
          +

          For an introduction to the UI, see UI concepts.

          +

          For more information on resources, resource files, and their +use in the Symbian platform, see Resource Files.

          +

          This section explains the following:

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0FD02CAD-B687-50C0-8E44-74ED9B4A936E_d0e596593_href.png Binary file Symbian3/PDK/Source/GUID-0FD02CAD-B687-50C0-8E44-74ED9B4A936E_d0e596593_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0FD02CAD-B687-50C0-8E44-74ED9B4A936E_d0e614538_href.png Binary file Symbian3/PDK/Source/GUID-0FD02CAD-B687-50C0-8E44-74ED9B4A936E_d0e614538_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0FD02CAD-B687-50C0-8E44-74ED9B4A936E_d0e624487_href.png Binary file Symbian3/PDK/Source/GUID-0FD02CAD-B687-50C0-8E44-74ED9B4A936E_d0e624487_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0FE0B646-A62F-55A8-A6E6-587D0909CE19_d0e301860_href.png Binary file Symbian3/PDK/Source/GUID-0FE0B646-A62F-55A8-A6E6-587D0909CE19_d0e301860_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0FE0B646-A62F-55A8-A6E6-587D0909CE19_d0e307852_href.png Binary file Symbian3/PDK/Source/GUID-0FE0B646-A62F-55A8-A6E6-587D0909CE19_d0e307852_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0FF61B9C-8B0D-5369-B0DA-29AA169B4308_d0e110036_href.png Binary file Symbian3/PDK/Source/GUID-0FF61B9C-8B0D-5369-B0DA-29AA169B4308_d0e110036_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-0FF61B9C-8B0D-5369-B0DA-29AA169B4308_d0e112459_href.png Binary file Symbian3/PDK/Source/GUID-0FF61B9C-8B0D-5369-B0DA-29AA169B4308_d0e112459_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-10540A35-7E8E-40F0-BF93-CBC01884550C_d0e2555_href.png Binary file Symbian3/PDK/Source/GUID-10540A35-7E8E-40F0-BF93-CBC01884550C_d0e2555_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-10540A35-7E8E-40F0-BF93-CBC01884550C_d0e2565_href.png Binary file Symbian3/PDK/Source/GUID-10540A35-7E8E-40F0-BF93-CBC01884550C_d0e2565_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-107AE89E-901E-535F-8D1A-EE347D7822B1.dita --- a/Symbian3/PDK/Source/GUID-107AE89E-901E-535F-8D1A-EE347D7822B1.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-107AE89E-901E-535F-8D1A-EE347D7822B1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -40,12 +40,12 @@ Figure 1 - The architecture and the appropriate APIs at each level - + Figure 2 - The architecture with three CSYs loaded - +

          Each serial port has a limited availability when multiple clients attempt to use the port. The Serial Communications Server provides some functionality diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-107F7BC4-F776-512D-AD6F-1674B7ED19B5_d0e482716_href.png Binary file Symbian3/PDK/Source/GUID-107F7BC4-F776-512D-AD6F-1674B7ED19B5_d0e482716_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-107F7BC4-F776-512D-AD6F-1674B7ED19B5_d0e488545_href.png Binary file Symbian3/PDK/Source/GUID-107F7BC4-F776-512D-AD6F-1674B7ED19B5_d0e488545_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-10936B26-D4F3-5EC6-BBBA-009AA27045F7_d0e608580_href.jpg Binary file Symbian3/PDK/Source/GUID-10936B26-D4F3-5EC6-BBBA-009AA27045F7_d0e608580_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-10936B26-D4F3-5EC6-BBBA-009AA27045F7_d0e647742_href.jpg Binary file Symbian3/PDK/Source/GUID-10936B26-D4F3-5EC6-BBBA-009AA27045F7_d0e647742_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-10C32642-CF1C-5C60-A81B-9D65F03A45C4_d0e322506_href.png Binary file Symbian3/PDK/Source/GUID-10C32642-CF1C-5C60-A81B-9D65F03A45C4_d0e322506_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-10C32642-CF1C-5C60-A81B-9D65F03A45C4_d0e328492_href.png Binary file Symbian3/PDK/Source/GUID-10C32642-CF1C-5C60-A81B-9D65F03A45C4_d0e328492_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-10CF321F-3298-4527-BFF5-0351085C7C8C.dita --- a/Symbian3/PDK/Source/GUID-10CF321F-3298-4527-BFF5-0351085C7C8C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-10CF321F-3298-4527-BFF5-0351085C7C8C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -19,6 +19,6 @@ other double item types, too.

          Setting list containing a non-setting item to access another view - +
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-10F1D390-2CB6-584B-B760-E6A6E1D8FDDA.dita --- a/Symbian3/PDK/Source/GUID-10F1D390-2CB6-584B-B760-E6A6E1D8FDDA.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ - - - - - -C++ pre-processor statements

          The following pre-processor statements are supported by the resource compiler:

          • #define

          • #undef

          • #line

          • #include

          • #ifdef

          • #ifndef

          • #if

          • #else

          • #endif

          The following sections give more detail on the use of the #ifdef and #include statements.

          Conditional compilation in resource files

          The resource compiler supports conditional compilation such as

          #ifdef SOMETHING -// do something -#else -// do something else -#endif

          or

          #ifndef WHATEVER -// do something -#endif
          Include files within a source file

          You can include files within the source file by using a #include directive, for example:

          #include <eikdef.rh>

          or

          #include "eikdef.hrh"

          The searching algorithm used by the resource compiler depends on whether the item to be included is enclosed in double-quotes or angled brackets.

          If the filename is enclosed in double-quotes, the resource compiler searches for that file through the following directories in the following order:

          • the current directory

          • the relative directory ..\inc

          • the absolute directory epocroot \epoc32\include

          If the filename is enclosed in angled brackets, the resource compiler searches for that file through the following directories in the following order:

          • the relative directory ..\inc

          • the absolute directory epocroot \epoc32\include

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-110DB7EF-5E85-5BC4-9BBB-9A37B2D0C3A6.dita --- a/Symbian3/PDK/Source/GUID-110DB7EF-5E85-5BC4-9BBB-9A37B2D0C3A6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-110DB7EF-5E85-5BC4-9BBB-9A37B2D0C3A6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -61,7 +61,7 @@ (and most importantly, key press events). It makes a request for further events by a call to the internal function UserSvr::RequestEvent().

        - +
        What the Window Server does

        There are two services that the Window Server needs diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-114A23CF-BF8B-54F5-8AF6-FEF007891884.dita --- a/Symbian3/PDK/Source/GUID-114A23CF-BF8B-54F5-8AF6-FEF007891884.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-114A23CF-BF8B-54F5-8AF6-FEF007891884.dita Fri Jul 16 17:23:46 2010 +0100 @@ -64,7 +64,7 @@

        SD controller classes SD controller classes - +
        SD Stack

        The SD controller is implemented through a set of classes derived from the MMC controller. The DMMCStack maintains diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-114D4F3F-9358-5B50-94DC-45CCBA783DF4.dita --- a/Symbian3/PDK/Source/GUID-114D4F3F-9358-5B50-94DC-45CCBA783DF4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-114D4F3F-9358-5B50-94DC-45CCBA783DF4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -96,7 +96,7 @@ client for the Alarm Alert server. The following diagram illustrates the Alarm Server architecture:

        Alarm Server Architecture - +

        Alarm Client and Alarm Shared

        They are the static interface DLLs. Alarm client is the client side of the Alarm Server, which allows other components to interact with the Alarm Server.

        The Alarm diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1158BDD3-69F7-5892-9887-FAE30110E33C_d0e547793_href.png Binary file Symbian3/PDK/Source/GUID-1158BDD3-69F7-5892-9887-FAE30110E33C_d0e547793_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1158BDD3-69F7-5892-9887-FAE30110E33C_d0e555249_href.png Binary file Symbian3/PDK/Source/GUID-1158BDD3-69F7-5892-9887-FAE30110E33C_d0e555249_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-11678281-9A86-5D8A-B907-D7940B3A07D4_d0e450474_href.png Binary file Symbian3/PDK/Source/GUID-11678281-9A86-5D8A-B907-D7940B3A07D4_d0e450474_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-11678281-9A86-5D8A-B907-D7940B3A07D4_d0e456319_href.png Binary file Symbian3/PDK/Source/GUID-11678281-9A86-5D8A-B907-D7940B3A07D4_d0e456319_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-11761887-0C37-46E6-A7F6-E6F7FDE7C5A1.dita --- a/Symbian3/PDK/Source/GUID-11761887-0C37-46E6-A7F6-E6F7FDE7C5A1.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-11761887-0C37-46E6-A7F6-E6F7FDE7C5A1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -28,8 +28,8 @@

        Purpose of the task and when it should be carried out

        - -List the CAF agents. + +List the CAF agents.

        Before working with one particular agent, the client needs to find out which agents are installed on the device. The CManager::ListAgentsL() function provides this list of agents. The F32Agent is not included in the list, as diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1197F032-1B73-58E1-8B45-E5D58B9DF788.dita --- a/Symbian3/PDK/Source/GUID-1197F032-1B73-58E1-8B45-E5D58B9DF788.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1197F032-1B73-58E1-8B45-E5D58B9DF788.dita Fri Jul 16 17:23:46 2010 +0100 @@ -24,7 +24,7 @@ that the domain manager uses to access that tree. A default implementation is provided by Symbian platform.

        - +

        The domain hierarchy itself is defined in terms of a simple array of TDmDomainSpec objects. Each TDmDomainSpec item defines a domain, its characteristics, @@ -35,7 +35,7 @@ domain tree must have domain Id KDmIdRoot.

        Default domain tree - +

        The default domain hierarchy supplied by Symbian platform in domainpolicy.cpp is simply:

        diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-11A79174-485E-425C-9653-193B670A3F03_d0e101097_href.png Binary file Symbian3/PDK/Source/GUID-11A79174-485E-425C-9653-193B670A3F03_d0e101097_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-11A79174-485E-425C-9653-193B670A3F03_d0e79481_href.png Binary file Symbian3/PDK/Source/GUID-11A79174-485E-425C-9653-193B670A3F03_d0e79481_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-11A79174-485E-425C-9653-193B670A3F03_d0e83679_href.png Binary file Symbian3/PDK/Source/GUID-11A79174-485E-425C-9653-193B670A3F03_d0e83679_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-11A79174-485E-425C-9653-193B670A3F03_d0e84215_href.png Binary file Symbian3/PDK/Source/GUID-11A79174-485E-425C-9653-193B670A3F03_d0e84215_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-11A79174-485E-425C-9653-193B670A3F03_d0e88413_href.png Binary file Symbian3/PDK/Source/GUID-11A79174-485E-425C-9653-193B670A3F03_d0e88413_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-11A79174-485E-425C-9653-193B670A3F03_d0e97018_href.png Binary file Symbian3/PDK/Source/GUID-11A79174-485E-425C-9653-193B670A3F03_d0e97018_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-11BF98BD-814A-5CB8-B83E-6D14F38F1783.dita --- a/Symbian3/PDK/Source/GUID-11BF98BD-814A-5CB8-B83E-6D14F38F1783.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ - - - - - -ENUM -statement -<enum-statement> -enum-statement ::= -enum [<enum-label> ] { <enum-list> }; -

        Use an enum (or an ENUM) statement to -define a set of integer values. The values are associated with symbols defined -in the enum-list; the syntax and the semantics are compatible -with those of C++ enumerations. Note that the final semi-colon in an enum may -be omitted; however, to retain compatibility with the C++ compiler, it is -advisable to retain it.

        -

        Each member of the enum-list is followed by a comma except -for the last one. The syntax of a member is defined as:

        -<enum-member> -enum-member ::= -<member-name> [ = <initialiser> ] -

        The defined enumerator symbols can be used in both C++ code and resource -scripts and are commonly defined in files which have the conventional file -extension hrh. The .hrh files are -included in both C++ files and resource source files.

        -

        In general, each enumerator can be assigned a specific value. If no value -is explicitly assigned, the value generated by the resource compiler is the -value of the previous enumerator plus one. If the first enumerator is not -assigned an explicit value, it defaults to 0.

        -

        The assigned value can be coded in either hexadecimal or plain decimal -notation.

        -

        The enum definition:

        enum - { - EExampleCmdIdFirst=0x100, - EExampleCmdIdSecond, - EExampleCmdIdThird, - EExampleCmdIdFourth - };

        defines the enumerators EExampleCmdIdFirst, EExampleCmdIdSecond etc. -and assigns values to them. EExampleCmdIdFirst is assigned -the value 0x100 (decimal 256), EExampleCmdIdSecond is -assigned the value 0x101 (decimal 257) etc.

        enum { - testvalue1=10, - testvalue2, - testvalue3=20, - testvalue4 - }; - -STRUCT TEST1 - { - BYTE b1; - BYTE b2; - BYTE b3; - BYTE b4; - } - -RESOURCE TEST1 test - { - b1=testvalue1; - b2=testvalue2; - b3=testvalue3; - b4=testvalue4; - }

        In this example the resource generated is: 0x0A 0x0B -0x14 0x15

        -
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-11C24609-3B6D-4B44-B003-FB0C07444A9E.dita --- a/Symbian3/PDK/Source/GUID-11C24609-3B6D-4B44-B003-FB0C07444A9E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-11C24609-3B6D-4B44-B003-FB0C07444A9E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ is displayed also on pop-up components.

        Scroll pane with scrollbar - +
        • The placement of the scroll handle on the scrollbar reflects the position diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-11CBC0BA-3683-584A-9DC9-8BD3C9573F01_d0e137791_href.png Binary file Symbian3/PDK/Source/GUID-11CBC0BA-3683-584A-9DC9-8BD3C9573F01_d0e137791_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-11CBC0BA-3683-584A-9DC9-8BD3C9573F01_d0e140040_href.png Binary file Symbian3/PDK/Source/GUID-11CBC0BA-3683-584A-9DC9-8BD3C9573F01_d0e140040_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-11E35C60-12DF-4014-AB3F-0314D8536AC0_d0e16457_href.png Binary file Symbian3/PDK/Source/GUID-11E35C60-12DF-4014-AB3F-0314D8536AC0_d0e16457_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-11E35C60-12DF-4014-AB3F-0314D8536AC0_d0e16547_href.png Binary file Symbian3/PDK/Source/GUID-11E35C60-12DF-4014-AB3F-0314D8536AC0_d0e16547_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-11F00FB3-7353-5545-9A39-BEB3B489A15C.dita --- a/Symbian3/PDK/Source/GUID-11F00FB3-7353-5545-9A39-BEB3B489A15C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-11F00FB3-7353-5545-9A39-BEB3B489A15C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -82,7 +82,7 @@ the interfaces.

          Figure 1: The graphics resource adapter interfaces - +

          Driver adapter. You must provide a concrete driver adapter class that implements the MSgDriverAdapter interface. This is a singleton class. A single instance of it is created for each process @@ -182,7 +182,7 @@ all of the handles to the image are closed, the image itself is destroyed.

          Figure 2: Reference counting resources and adapter objects - +
        Thread safety

        All of the adapter objects can potentially be shared between all of the threads diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-11F63309-1C6B-52D4-A1A0-D7F3C64DE4F5.dita --- a/Symbian3/PDK/Source/GUID-11F63309-1C6B-52D4-A1A0-D7F3C64DE4F5.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Unified Trace Framework 2.0 Vs Unified Trace Framework 1.0

        This section explains the various differences between Unified Trace Framework (UTF) 2.0 and Unified Trace Framework 1.0. It explains the changes in the following:

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-120CA508-9984-54D0-B366-6D10D646FD49_d0e454529_href.png Binary file Symbian3/PDK/Source/GUID-120CA508-9984-54D0-B366-6D10D646FD49_d0e454529_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-120CA508-9984-54D0-B366-6D10D646FD49_d0e460374_href.png Binary file Symbian3/PDK/Source/GUID-120CA508-9984-54D0-B366-6D10D646FD49_d0e460374_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1248ED3E-438C-41E5-81D4-19FC721408BA_d0e105014_href.png Binary file Symbian3/PDK/Source/GUID-1248ED3E-438C-41E5-81D4-19FC721408BA_d0e105014_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1277D793-4A0A-50A7-9414-AEE93E906E80.dita --- a/Symbian3/PDK/Source/GUID-1277D793-4A0A-50A7-9414-AEE93E906E80.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1277D793-4A0A-50A7-9414-AEE93E906E80.dita Fri Jul 16 17:23:46 2010 +0100 @@ -51,7 +51,7 @@ API functions.

        Figure 1 - The Socket Server's position in the Communications Framework Architecture. - +

        The TCP/IP API enables clients to use sockets for TCP/IP, including UDP, TCP, ICMP, IPv4, IPv6, ARP, and DNS.

        The IrDA Sockets API enables clients to use sockets for IrDA infra-red.

        The Bluetooth Sockets API diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1293DE8C-E803-4ADF-9FA8-862519337331.dita --- a/Symbian3/PDK/Source/GUID-1293DE8C-E803-4ADF-9FA8-862519337331.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1293DE8C-E803-4ADF-9FA8-862519337331.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,40 +9,38 @@ --> -Software -installer -

        End users can install new software from a variety of sources: through -e-mail, Internet downloads, multimedia messaging service (MMS) and WAP push -messages, infrared and Bluetooth connections, PC Suite, and removable memory -cards. The diversity of software vendors and delivery channels requires a -sophisticated system for managing installed software.

        -

        The Symbian Software Installer uses digital signatures and certificates to -authenticate that the application being installed on a mobile device is from -a known vendor. The signature can be obtained through the Symbian -Signed process, and the default certificates installed in the mobile -device act as root certificates. During installation the signature is validated -against the certificates. If they match, the application is installed and -the requested capabilities are -stored in the executable, assuming that the root certificate can grant the -capabilities. Only user capabilities can be granted to unsigned or -self-signed applications, and these are always confirmed by the user.

        +Software installer +

        End users can install new software from a variety of sources: +through e-mail, Internet downloads, multimedia messaging service (MMS) +and WAP push messages, infrared and Bluetooth connections, PC Suite, +and removable memory cards. The diversity of software vendors and +delivery channels requires a sophisticated system for managing installed +software.

        +

        The Symbian Software Installer uses digital signatures and certificates to authenticate that the application being +installed on a mobile device is from a known vendor. The signature +can be obtained through the Symbian Signed process, and the default certificates installed in the mobile device +act as root certificates. During installation the signature is validated +against the certificates. If they match, the application is installed +and the requested capabilities are stored in the executable, assuming that the +root certificate can grant the capabilities. Only user capabilities can be granted to unsigned or self-signed applications, and these +are always confirmed by the user.

        -

        The end users have an option to cancel the installation if they detect -that the vendor of the software package and certificate authority are not -trustworthy. This is especially important when installing security-related -components (for example, VPN clients, firewalls and virus scanners) or other -business-related software.

        +

        The end users have an option to cancel the installation if they +detect that the vendor of the software package and certificate authority +are not trustworthy. This is especially important when installing +security-related components (for example, VPN clients, firewalls and +virus scanners) or other business-related software.

        -

        The Software Installer ensures that no two applications have the same SID value -on a particular target device. The Software Installer has the TCB capability -to read and modify content in the \sys folder -and all its subfolders, which means that you can write to third-party application -executables in the \sys\bin folder when they are installed -through the Software Installer.

        -

        For more information on the Software Installer, see Secure -Software Install Tools.

        +

        The Software Installer ensures that no two applications have +the same SID value on a particular target device. The Software Installer +has the TCB capability to read and modify content +in the \sys folder and all its subfolders, which means +that you can write to third-party application executables in the \sys\bin folder when they are installed through the Software +Installer.

        +

        For more information on the Software Installer, see Secure Software Install +Tools.

        The following figure illustrates the steps of software installation:

        -Installation process for signed packages +Installation process for signed packages

        The Software Installer can install the following types of packages:

        • signed sis packages

        • @@ -50,9 +48,10 @@
        • Web Runtime widgets

        -

        The Software Installer recognizes different devices, which allows you -to define the platforms and devices to which the software can be installed.

        +

        The Software Installer recognizes different devices, which allows +you to define the platforms and devices to which the software can +be installed.

        -

        If you receive an error message when using the Software Installer, see Troubleshooting -Installation Errors at the Symbian Foundation.

        +

        If you receive an error message when using the Software Installer, +see Troubleshooting Installation Errors at the Symbian Foundation.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-12C9C36B-8AD4-544E-A6A3-54A799EF0280.dita --- a/Symbian3/PDK/Source/GUID-12C9C36B-8AD4-544E-A6A3-54A799EF0280.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-12C9C36B-8AD4-544E-A6A3-54A799EF0280.dita Fri Jul 16 17:23:46 2010 +0100 @@ -120,7 +120,7 @@

        How APIs related to the 3-Plane Comms Architecture.

        Figure 1 - How ESock APIs related to the 3-Plane Comms Architecture - +

        The Sockets Client API also defines a number of support classes used in conjunction with the above interfaces. These encapsulate:

        • Addresses: a diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-12CD8E91-4102-5253-A7DE-E5436028764F_d0e406936_href.png Binary file Symbian3/PDK/Source/GUID-12CD8E91-4102-5253-A7DE-E5436028764F_d0e406936_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-12CD8E91-4102-5253-A7DE-E5436028764F_d0e412789_href.png Binary file Symbian3/PDK/Source/GUID-12CD8E91-4102-5253-A7DE-E5436028764F_d0e412789_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-12D8C373-5199-5B89-9910-00F769AC164A.dita --- a/Symbian3/PDK/Source/GUID-12D8C373-5199-5B89-9910-00F769AC164A.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ - - - - - -How -to build EXEs -

          An .EXE program typically has a single executable component. Unlike GUI -application targets there is no application information file, and in most -cases a resource file will not be needed.

          -

          Under WINS/WINSCW, the C++ source is compiled to object files in the build -directory; these are then linked, together with standard libraries, into the -release directory. You may run the program directly from the release directory.

          -

          Under ARM targets, the C++ source is compiled using a native compiler, -and then linked into a .exe in the release directory. -You may then transfer the program to the target machine and execute it.

          -
          mmp project specification

          For an EXE -target, only a minimum of essential information need be specified:

            -
          • Specify the TARGETTYPE line -as:

            TARGETTYPE exe
          • -
          • Specify the UID as -zero in a UID line:

            UID 0

            EXEs -do not strictly speaking need a UID value. However specifying zero suppresses -a build tools warning.

          • -
          -

          An example of the project file for a console program is given -below

          TARGET HelloWorld.exe -TARGETTYPE exe -UID 0 -SOURCEPATH . -SOURCE HelloWorld.cpp -USERINCLUDE . -USERINCLUDE ..\CommonFramework -SYSTEMINCLUDE \Epoc32\include -LIBRARY euser.lib
          - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-130C21D7-0A39-5A54-8545-C82B2ED4398C.dita --- a/Symbian3/PDK/Source/GUID-130C21D7-0A39-5A54-8545-C82B2ED4398C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-130C21D7-0A39-5A54-8545-C82B2ED4398C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@

          This state diagram shows how to dial or answer one or two calls at a time.

          Simultaneous Call State Diagram - +

          The boxes are states. The enumeration value in each box is the status of the voice line. Voice line status describes these states and their meaning. The arrows show diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1319CEA4-56D7-45DF-9C22-45291017992E_d0e1746_href.png Binary file Symbian3/PDK/Source/GUID-1319CEA4-56D7-45DF-9C22-45291017992E_d0e1746_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1319CEA4-56D7-45DF-9C22-45291017992E_d0e1751_href.png Binary file Symbian3/PDK/Source/GUID-1319CEA4-56D7-45DF-9C22-45291017992E_d0e1751_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-135681B6-3131-57C6-AFED-CCE35431AF9E_d0e159999_href.png Binary file Symbian3/PDK/Source/GUID-135681B6-3131-57C6-AFED-CCE35431AF9E_d0e159999_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-135681B6-3131-57C6-AFED-CCE35431AF9E_d0e166100_href.png Binary file Symbian3/PDK/Source/GUID-135681B6-3131-57C6-AFED-CCE35431AF9E_d0e166100_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-13664BB9-7D05-594E-95D4-49C0D31D3734_d0e393700_href.png Binary file Symbian3/PDK/Source/GUID-13664BB9-7D05-594E-95D4-49C0D31D3734_d0e393700_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-13664BB9-7D05-594E-95D4-49C0D31D3734_d0e399553_href.png Binary file Symbian3/PDK/Source/GUID-13664BB9-7D05-594E-95D4-49C0D31D3734_d0e399553_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1391CDCC-9A09-54FB-BA7D-BC7A91DB2351.dita --- a/Symbian3/PDK/Source/GUID-1391CDCC-9A09-54FB-BA7D-BC7A91DB2351.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1391CDCC-9A09-54FB-BA7D-BC7A91DB2351.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,7 +20,7 @@ Tutorial OBY Tutorial -Building +Building ROM Tutorial diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-13987218-9427-455E-AC77-ADE6B0E9CD7E.dita --- a/Symbian3/PDK/Source/GUID-13987218-9427-455E-AC77-ADE6B0E9CD7E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-13987218-9427-455E-AC77-ADE6B0E9CD7E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -40,7 +40,7 @@

        For more information about layers of the Symbian platform and the packages contained within it, see the Package view of the current Symbian Foundation platform.

        Architecture of the Symbian platform - +

        A layer can have packages from any technology domain. Technology domains are a group of packages, each of which is a collection of components. To understand more about the architecture, what the platform offers, diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-139E7235-4F23-5F0E-A969-6D7165AE5298.dita --- a/Symbian3/PDK/Source/GUID-139E7235-4F23-5F0E-A969-6D7165AE5298.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - --inv or -invariant

        By default all DLLs are considered to be variant across all feature variant builds.

        To disable considering all DLLs as variants, use -inv or -invariant option.

        abld -inv build armv5.myvar

        A DLL marked as FEATUREVARIANT in its .mmp file remains variant, even if -invariant or -inv option is specified in the abld command.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-13AA46F9-7D5E-5BBE-8021-C9326121E605.dita --- a/Symbian3/PDK/Source/GUID-13AA46F9-7D5E-5BBE-8021-C9326121E605.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -srcdbg

        srcdbg

        Use the srcdbg statement to disable the use of optimisation in debug builds. This makes it significantly easier to step through the execution of code with a source-level debugger.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-13C95985-D16F-5A9E-A7F8-CAB637C4C6ED.dita --- a/Symbian3/PDK/Source/GUID-13C95985-D16F-5A9E-A7F8-CAB637C4C6ED.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-13C95985-D16F-5A9E-A7F8-CAB637C4C6ED.dita Fri Jul 16 17:23:46 2010 +0100 @@ -39,7 +39,7 @@ entries in a file to be modified. The database implementations use these stores for the underlying data storage.

        DBMS Class Diagrams - +
        DBMS Summary

        DBMS provides the following:

        • Database Management diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-13D48922-4DEF-56A6-8ADE-DD1DB280627B_d0e640624_href.png Binary file Symbian3/PDK/Source/GUID-13D48922-4DEF-56A6-8ADE-DD1DB280627B_d0e640624_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-13D48922-4DEF-56A6-8ADE-DD1DB280627B_d0e653446_href.png Binary file Symbian3/PDK/Source/GUID-13D48922-4DEF-56A6-8ADE-DD1DB280627B_d0e653446_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-13DEE42F-3EAB-4EB7-9CE1-C4930BCACE01.dita --- a/Symbian3/PDK/Source/GUID-13DEE42F-3EAB-4EB7-9CE1-C4930BCACE01.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-13DEE42F-3EAB-4EB7-9CE1-C4930BCACE01.dita Fri Jul 16 17:23:46 2010 +0100 @@ -23,7 +23,7 @@ layouts.

          List query - +

          The number of items in the list should be kept low, so that all items can be seen without scrolling.

          diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-13F10D4C-BA0C-5B46-804D-191A70C36324_d0e489576_href.png Binary file Symbian3/PDK/Source/GUID-13F10D4C-BA0C-5B46-804D-191A70C36324_d0e489576_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-13F10D4C-BA0C-5B46-804D-191A70C36324_d0e495397_href.png Binary file Symbian3/PDK/Source/GUID-13F10D4C-BA0C-5B46-804D-191A70C36324_d0e495397_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-141633B8-A3D4-5BBB-97C5-3D928746ECE7.dita --- a/Symbian3/PDK/Source/GUID-141633B8-A3D4-5BBB-97C5-3D928746ECE7.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,303 +0,0 @@ - - - - - -Resource -localisable strings -

          Resource localisable strings (RLS) are defined in the resource files. Each -RLS item definition is a new-line separated entry in the resource file, using -literals to define a localisable string, number or character.

          -

          Defining RLS items

          -

          The following literals can be used to define an RLS item:

          -
        - - - -Name -Description - - - - -

        rls_string

        -

        Use this literal to define a 16-bit Unicode string

        -
        - -

        rls_string8

        -

        Use this literal to define an 8-bit Unicode string

        -
        - -

        rls_byte

        -

        Use this literal to define an 8-bit number

        -
        - -

        rls_word

        -

        Use this literal to define a 16-bit number

        -
        - -

        rls_long

        -

        Use this literal to define a long number

        -
        - -

        rls_double

        -

        Use this literal to define a decimal number

        -
        -
        - -
        -

        BNF description

        -

        <rls-file> -

        -

        rls-file ::= -

        -

        <rls-entry>* <rls-entry> -

        -

        rls-entry ::= -

        -

        <rls-item> <rls-item> -

        -

        rls-item ::= -

        -

        <type>[<length> <cardinality>] <symbolic-identifier> -<value> <type> -

        -

        type ::= -

        -

        rls_string | rls_string8 | rls_byte | rls_word | rls_long | -rls_double <value> -

        -

        value ::= -

        -

        <text> | <number>

        -

        where,

        - - - - -

        length

        -

        The optional maximum length of the text applicable -to rls_string or rls_string8 types only

        -
        - -

        cardinality

        -

        You can use the optional keyword qualifier "multi", which indicates -that the localisable item may be used by more than one resource

        -
        - -

        symbolic-identifier

        -

        A unique ID for the localisable string or number

        -
        - -

        text

        -

        This is a string expression, which may include a string enclosed -in double quotes (") and a character code enclosed in angle brackets (<>)

        -
        - -

        number

        -

        A numeric value for the literals rls_byte, rls_word, rls_long and rls_double

        -
        - - -
        -

        The following example shows how to define an RLS string and number:

        -rls_string<32> STRING_1 "Example menu item"<0x2026> -rls_byte multi NUMBER_1 17 - -

        Characters are declared using the RLS type identifiers rls_byte, rls_word or rls_long. -The type identifier to be used depends on the type of the structure member -they will be included into. However, the value can be declared within single -quotes. For example:

        - - rls_long hotkey_zoomin 'M' -

        Commenting RLS items

        -

        RLS items can be tagged with appropriate comments, which are placed just -before each RLS item declaration. Optionally, if a RESOURCE declaration -contains localisable data, a comment can precede the RESOURCE declaration.

        -

        These comments save time and cost in localisation, and improve quality -of localised text. If you supply more context information to the translators -(maximum string length allowed, the details of the GUI in which their text -will be displayed), the quality of the localised text is better. This will -also reduce the need for re-translating the text.

        -

        The localisation comments must be enclosed within the comment brackets -/*&...*/. These comment brackets include a set of tags to provide more -details about the RLS item.

        -

        The resource compiler (epocrc) can warn if comments are -missing. A Symbian platform licensee can configure the epocrc tool -to emit warnings for missing comments through the epocrc configuration file.

        -

        The following is a list of tags used within the comment brackets:

        -
          -
        • @localize: -This is an optional tag used to specify whether to allow the translator to -change the string or not. The translator is allowed to change the RLS item, -only if the tag is set to 'yes'. To disallow any change to -the RLS item, set it to 'no'. By default, the translator -is allowed to change an RLS item, if the corresponding localisation comment -does not include this tag.

          For example:

          /*& -@localize yes -*/ -rls_string STRING_1 "Device locked" -
        • -
        • @description: -This is mandatory tag used to provide a description about the RLS item. This -tag is used to provide the following information to the translator:

            -
          • The context in which -the string is used and the purpose of the dialog or views using the string.

          • -
          • Its relationships with -other strings.

          • -
          • If the localisable strings -represent file names or URIs that must point to existing objects, describe -those objects briefly.

          • -
          • If the RLS items are -tagged with @restriction other, describe the restriction.

          • -
        • -
        • @restriction: -This is an optional tag used to specify the scope of the RLS item. The possible -values for this tag are:

            -
          • uri to -specify that the localisable item is an URI. If the URI changes, the resulting -URI should be a valid URI pointing to the correct object. The description -in the comment bracket can be used to give more details about the URI.

          • -
          • file to -specify that the localisable item is a file name. If the file changes, the -ROM must be rebuilt to accommodate the change. If the full path of the file -is not given, the description for the localisable item can be used to provide -more details.

          • -
          • trademark to -specify that the localisable item is a trademark. The trademark differs from -country to country, but any change to it must be subject to trademark owner's -rules. The description for the localisable item can be used to provide more -details.

          • -
          • other to -specify that the localisable item is none of the above. In such a case, the -description should include the effects of changing the localisable item and -the constraints.

          • -

          For example:

          /*& @description Must point to the happy bugle wave file, used as a ring tone and displayed to the user in the ring-tone selection dialog. -@localize yes -@restriction file -*/ -rls_string STRING_2 "happy bugle.wav" -
        • -
        • @uicontext: -This is a mandatory tag for RLS items defined using rls_string and rls_string8. -It is used to specify the type of widget in which the localisable item is -used. There is a list of UI contexts for Symbian developers, which are extended -by the platform suppliers. The Symbian developers must use the values defined -for the platforms on which they are developing.

          The possible values -for this tag are:

            -
          • notvisible to -specify that the item does not appear in the UI.

          • -
          • pluginname to -specify that the string is the name of an ECOM (or other) plug-in.

          • -
          • system to -specify that the item may appear in the UI, but the component that supplies -the UI does not mandate where.

          • -
          • errortext to -specify that the string is used by the error resolver.

          • -
          • fragment to -specify that the item is part of a string that appears in the UI. For example, -a list separator.

          • -
          • appname to -specify the application name in the APP_REGISTRATION_INFO structure.

          • -
          • appgroup to -specify the application group in the APP_REGISTRATION_INFO structure.

          • -

          For example:

          /*& -@uicontext pluginname -*/ -rls_string STRING_1 "Device locked" -
        • -
        • @group: -This is an optional tag used to group strings together. For example, you can -group all strings that appear in the same view together. To group strings -under a group, you have to define a group using the following syntax:

          @tagvalue group <your-group-name> [group-description]

          Where, your-group-name is a name for the group, and group-description is an -optional description about the group.

          For example,

          /*& -@tagvalue group lock_dialog -*/ -

          You can use the group defined above as follows:

          /*& -@localize yes -@group lock_dialog -*/ -rls_string STRING_1 "Device locked" -
        • -
        • @uispec: -This is an optional tag used to specify where in the specifications document -the RLS item appears.

          For example:

          /*& -@uispec UIQ/ringtones-specification.doc/4.31 -*/ -rls_string STRING_2 "happy bugle.wav" -
        • -
        -

        Creating new RLS comment tags

        -

        Apart from the pre-defined set of tags listed above, you can also declare -a new tag and use it in the localisation comments. Tags are declared in resource -header files (.rh). You can configure the epocrc tool -to recognise the comment definitions from such files through the epocrc.config configuration -file. For more information, refer to epocrc -configuration file format.

        -

        The following is the BNF description for declaring a new tag:

        -

        <tag-declaration> -

        -

        tag-declaration ::= -

        -

        @declaretag <tag-type> <new-tag-name> -[<description>] <tag-type> -

        -

        tag-type ::= -

        -

        single | multiple | text | void

        -

        Where, tag-type is used to specify the type value the -tag can take. If you want the tag to take a single value, use "single " -as the tag type. If you want the tag to take a single value from a set of -values, use "multiple " as the tag type. For example, the @uicontext tag -is of multiple type. If you want the tag not to take any -value, use "void " as the tag type. If you want the tag to -take free text, use "text " as the tag type. For example, -the @description tag is of text type.

        -

        For example, the following declares a tag called “visible” of type single:

        -@declaretag single visible -

        If you had declared the tag as single or multiple, -you must declare its values. Value declaration is not required for other tag -types.

        -

        The following is the BNF description for declaring values for a tag:

        -

        <tag-value-declaration>

        -

        -tag-value-declaration ::=

        -

        - @tagvalue <tag-name> <list-of-values>

        -

        Where, tag-name is the name of the tag declared earlier. -If the tag is of multiple type, the list-of-values lists -a set of values for the tag, otherwise a single value must be specified.

        -

        For example, the following declares that the permitted value for the visible -tag is "yes":

        -@tagvalue visible yes -

        After declaring the values for the tag, you must specify whether the tag -is required or optional for an RLS item. The BNF description for this is as -follows:

        -

        <tag-required-statement>

        -

        -tag-required-statement ::=

        -

        - @tagrequired <tag-name> <rls-type-identifier> -<tag-optional-statement> -

        -

        tag-optional-statement ::=

        -

        - @tagoptional <tag-name>=[<default-value>] <rls-type-identifier> -<rls-type-identifier> -

        -

        rls-type-identifier ::=

        -

        - rls_string | rls_string8 | rls_byte | rls_word | rls_long | -rls_double

        -

        Where, tag-name is the name of the declared tag, default-value is -the default value used for optional tags.

        -

        For example, the following declares that the visible tag is optional, and -has a default value of “yes” for rls_string items:

        -@tagoptional visible=yes rls_string - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-141D8786-9987-4E5E-9395-484C87B323FB_d0e498445_href.png Binary file Symbian3/PDK/Source/GUID-141D8786-9987-4E5E-9395-484C87B323FB_d0e498445_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-141D8786-9987-4E5E-9395-484C87B323FB_d0e505907_href.png Binary file Symbian3/PDK/Source/GUID-141D8786-9987-4E5E-9395-484C87B323FB_d0e505907_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1467745D-7C3F-52EC-8C1E-7E2F505B7313_d0e588963_href.png Binary file Symbian3/PDK/Source/GUID-1467745D-7C3F-52EC-8C1E-7E2F505B7313_d0e588963_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1467745D-7C3F-52EC-8C1E-7E2F505B7313_d0e616857_href.png Binary file Symbian3/PDK/Source/GUID-1467745D-7C3F-52EC-8C1E-7E2F505B7313_d0e616857_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-147C77CB-16A1-548B-A1C7-05F2C5FF9E27_d0e462630_href.png Binary file Symbian3/PDK/Source/GUID-147C77CB-16A1-548B-A1C7-05F2C5FF9E27_d0e462630_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-147C77CB-16A1-548B-A1C7-05F2C5FF9E27_d0e468475_href.png Binary file Symbian3/PDK/Source/GUID-147C77CB-16A1-548B-A1C7-05F2C5FF9E27_d0e468475_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-14A0FC93-2AD9-5B33-B423-2CCAD3C96B5F.dita --- a/Symbian3/PDK/Source/GUID-14A0FC93-2AD9-5B33-B423-2CCAD3C96B5F.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ - - - - - -clean

        abld [ test ] clean ( ( [-c] | [-w] ) | ( [-k] [-v] ) ) [ platform ] [ build [ program ] ]

        This command will erase all the files created by the corresponding abld - target command.

        abld clean makes use of the clean targets provided in makefiles generated by makmake.

        The files that are removed by this command include all the intermediate files created during compilation and all the executables and import libraries created by the linker.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-14B2BA6D-EB1D-527C-BBA5-27097D47F5E1_d0e231842_href.png Binary file Symbian3/PDK/Source/GUID-14B2BA6D-EB1D-527C-BBA5-27097D47F5E1_d0e231842_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-14B2BA6D-EB1D-527C-BBA5-27097D47F5E1_d0e237837_href.png Binary file Symbian3/PDK/Source/GUID-14B2BA6D-EB1D-527C-BBA5-27097D47F5E1_d0e237837_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-14B9B9FB-E7E4-5C28-9821-52EE40B2658B_d0e231164_href.png Binary file Symbian3/PDK/Source/GUID-14B9B9FB-E7E4-5C28-9821-52EE40B2658B_d0e231164_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-14B9B9FB-E7E4-5C28-9821-52EE40B2658B_d0e237159_href.png Binary file Symbian3/PDK/Source/GUID-14B9B9FB-E7E4-5C28-9821-52EE40B2658B_d0e237159_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-15591211-58D3-56B6-868F-D34C30ED7A7A_d0e218436_href.png Binary file Symbian3/PDK/Source/GUID-15591211-58D3-56B6-868F-D34C30ED7A7A_d0e218436_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-15591211-58D3-56B6-868F-D34C30ED7A7A_d0e224456_href.png Binary file Symbian3/PDK/Source/GUID-15591211-58D3-56B6-868F-D34C30ED7A7A_d0e224456_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-155C5B39-CB9B-5405-B9BB-EB34CA7C43BC_d0e553988_href.png Binary file Symbian3/PDK/Source/GUID-155C5B39-CB9B-5405-B9BB-EB34CA7C43BC_d0e553988_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-155C5B39-CB9B-5405-B9BB-EB34CA7C43BC_d0e561444_href.png Binary file Symbian3/PDK/Source/GUID-155C5B39-CB9B-5405-B9BB-EB34CA7C43BC_d0e561444_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-15CAB5AF-CAA5-5D1B-9236-7874BF944484_d0e547506_href.png Binary file Symbian3/PDK/Source/GUID-15CAB5AF-CAA5-5D1B-9236-7874BF944484_d0e547506_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-15CAB5AF-CAA5-5D1B-9236-7874BF944484_d0e554962_href.png Binary file Symbian3/PDK/Source/GUID-15CAB5AF-CAA5-5D1B-9236-7874BF944484_d0e554962_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-15D5E0D3-B643-5C72-A3D4-03E2480890EF_d0e19121_href.png Binary file Symbian3/PDK/Source/GUID-15D5E0D3-B643-5C72-A3D4-03E2480890EF_d0e19121_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-15D5E0D3-B643-5C72-A3D4-03E2480890EF_d0e21088_href.png Binary file Symbian3/PDK/Source/GUID-15D5E0D3-B643-5C72-A3D4-03E2480890EF_d0e21088_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-15F209D1-6BC6-5207-B443-25306C232CFC_d0e140088_href.png Binary file Symbian3/PDK/Source/GUID-15F209D1-6BC6-5207-B443-25306C232CFC_d0e140088_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-15F209D1-6BC6-5207-B443-25306C232CFC_d0e142337_href.png Binary file Symbian3/PDK/Source/GUID-15F209D1-6BC6-5207-B443-25306C232CFC_d0e142337_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1635E243-BDC9-55D8-8913-0D2DB622B22C_d0e233865_href.png Binary file Symbian3/PDK/Source/GUID-1635E243-BDC9-55D8-8913-0D2DB622B22C_d0e233865_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1635E243-BDC9-55D8-8913-0D2DB622B22C_d0e239855_href.png Binary file Symbian3/PDK/Source/GUID-1635E243-BDC9-55D8-8913-0D2DB622B22C_d0e239855_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-16406797-20EA-5469-B036-0B46B6162385.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-16406797-20EA-5469-B036-0B46B6162385.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,15 @@ + + + + + +Software Transaction +SupportSoftware Transaction Support (STS) provides transaction support +to ensure that the file system remains secure in the event of a software installation +failure. \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-16423056-C435-5C4D-BE3D-4A15F95F7F68.dita --- a/Symbian3/PDK/Source/GUID-16423056-C435-5C4D-BE3D-4A15F95F7F68.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-16423056-C435-5C4D-BE3D-4A15F95F7F68.dita Fri Jul 16 17:23:46 2010 +0100 @@ -105,9 +105,9 @@

        This tutorial only covers the configuration of the general demand paging parameters. To see how to make individual executables pageable see (the -mmp configuration tutorial).

        The next step is to build +mmp configuration tutorial).

        The next step is to build the writable data paging ROM

        -Building +Building ROM tutorial \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-165EE4DD-C9CA-430B-8377-068A4194716E.dita --- a/Symbian3/PDK/Source/GUID-165EE4DD-C9CA-430B-8377-068A4194716E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-165EE4DD-C9CA-430B-8377-068A4194716E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -46,10 +46,10 @@

        The following illustrations show how applications behave before and after the single-tap changes are made:

        Double-tap enabled: By default, UI component is highlighted. - + Single-tap enabled: By default, no UI component is highlighted. - +
        Hide item-specific diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-166BB47B-3E5A-56C6-8FBE-0D71924C11DF_d0e449994_href.png Binary file Symbian3/PDK/Source/GUID-166BB47B-3E5A-56C6-8FBE-0D71924C11DF_d0e449994_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-166BB47B-3E5A-56C6-8FBE-0D71924C11DF_d0e455839_href.png Binary file Symbian3/PDK/Source/GUID-166BB47B-3E5A-56C6-8FBE-0D71924C11DF_d0e455839_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-16781448-75CB-5C11-B9E6-288BA3C0B43E.dita --- a/Symbian3/PDK/Source/GUID-16781448-75CB-5C11-B9E6-288BA3C0B43E.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -staticlibrary

        staticibrary filename-list

        Use the staticlibrary statement to specify static libraries.

        The staticibrary statement may specify any number of files, and there may be many library statements. Specify the entire filename, e.g. euser.lib.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-16794D4F-23D7-5A96-B363-E25A3DD75C45.dita --- a/Symbian3/PDK/Source/GUID-16794D4F-23D7-5A96-B363-E25A3DD75C45.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-16794D4F-23D7-5A96-B363-E25A3DD75C45.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Location Monitor OverviewThe Location Monitor is responsible for storing position fixes calculated by the LBS subsystem. It provides the stored fixes to LBS components that request them.
        Purpose

        The Location Monitor monitors internal communications between LBS components and with the network in order to maintain its database of stored position fixes. Whenever the Location Monitor obtains a position fix it adds it to the database, together with the Global Cell ID received from the network.

        When the Location Monitor receives a request for location information, it uses the current network Global Cell ID to search the database for the closest stored position.

        If the database search is successful the Location Monitor returns the stored position with an indication of its accuracy, based on the current information received from the network. A stored position's accuracy can be estimated to be at the country level (least accurate), down to street level in urban areas (most accurate).

        If the database search is unsuccessful the Location Monitor simply returns the most recently stored position.

        Required background

        A knowledge of the material covered in the following is useful to understanding how this component fits into the LBS architecture:

        • LBS Architecture Overview

        Key concepts and terms

        The Location Monitor uses the Global Cell ID broadcast by the network.

        The Global Cell ID is made up of four values:

        MCC

        Mobile Country Code. A unique three digit number used to identify a country.

        MNC

        Mobile Network Code. A unique three digit number used to identify a mobile phone operator.

        LAC

        Location Area Code. A unique number used to identify a group of cells within a cellular network.

        CID

        Cell ID. The unique number used to identify an individual cell within a cellular network.

        A Location Monitor client can get these values from the Location Monitor, or a simple single value that is an estimate of the stored position accuracy.

        Architecture

        The Location Monitor is a server with a client interface. Currently the Location Monitior does not have a published API.

        Client applications use the Location Monitor indirectly via the Location Server (eposserver.exe). Figure 1 shows the Location Monitor architecture.

        Figure 1. Location Monitor architecture -
        APIs

        The Location Monitor does not have a published API at this time. It has an internal API which is used by other LBS components.

        Typical uses

        Client applications use the Location Monitor indirectly through the Location Acquisition API.

        An Location Acquisition API client calls RPositioner::GetLastKnownPositionArea() to get a stored position with an accuracy estimate. The Location Server delegates this function call to the Location Monitor.

        How to Get Location +
      APIs

      The Location Monitor does not have a published API at this time. It has an internal API which is used by other LBS components.

      Typical uses

      Client applications use the Location Monitor indirectly through the Location Acquisition API.

      An Location Acquisition API client calls RPositioner::GetLastKnownPositionArea() to get a stored position with an accuracy estimate. The Location Server delegates this function call to the Location Monitor.

      How to Get Location Information Position Area Data Classes \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1686AFA7-F0FA-5B3D-9E2F-EE2D7CDC338B_d0e161014_href.png Binary file Symbian3/PDK/Source/GUID-1686AFA7-F0FA-5B3D-9E2F-EE2D7CDC338B_d0e161014_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1686AFA7-F0FA-5B3D-9E2F-EE2D7CDC338B_d0e167115_href.png Binary file Symbian3/PDK/Source/GUID-1686AFA7-F0FA-5B3D-9E2F-EE2D7CDC338B_d0e167115_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-16950F22-F5DE-4D52-8414-544105BA3200.dita --- a/Symbian3/PDK/Source/GUID-16950F22-F5DE-4D52-8414-544105BA3200.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-16950F22-F5DE-4D52-8414-544105BA3200.dita Fri Jul 16 17:23:46 2010 +0100 @@ -31,7 +31,7 @@ and as pop-ups.

      Hierarchical list component - +

      Owing to the need for horizontal scrolling, it is not possible to use tabs in the Navi pane. Typically the hierarchical list component is capable of diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-16A1C613-288D-471C-8551-51B61290E28F.dita --- a/Symbian3/PDK/Source/GUID-16A1C613-288D-471C-8551-51B61290E28F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-16A1C613-288D-471C-8551-51B61290E28F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,184 +1,188 @@ - - - - - -Application -Start-Up Time OptimizationIt is important that phone users do not have to wait long for applications -to start. This document summarizes the techniques for optimizing application -start-up time. -

      Introduction -

      The techniques discussed in this document are limited in scope to -application programming. In other words, they do not require modification -of any core OS components or servers. Some of the techniques are general good -practice and are useful to developers at all levels.

      The techniques -can be summarized as follows:

        -
      • Avoid causing unnecessary code to be executed as an effect of your -code.

      • -
      • Defer construction of objects, loading of dynamic libraries (for example, -the application model), and starting servers until you need to use them.

      • -
      • Write efficient code!

      • -
      There is an inevitable trade-off between shortening the start-up -time and introducing latency elsewhere in the application. For example, if -you don’t connect to a server at start-up, you will have to do it later on, -when the application needs to use the server. This may be overcome by a central -component that coordinates background connections, or construction, such as -the view server.
      -
      Measure start-up -time before you start optimizing

      Do not assume you know which methods -take the most time. Pay close attention to iterative and recursive operations. -Many useful tools and techniques are available to help identify poorly performing -code:

        -
      • Software analysis tools, for instance GlowCode and -MetroWerks CodeTEST

      • -
      • The Symbian profiling tool, profiler.exe, which is supplied on DevKits

      • -
      • The RDebug class provides some profiling functions

      • -
      • The TTime class can be used to time blocks of code, but beware of context -switches, otherwise you may end up timing other threads!

      • -
      • Deliberately slowing down suspect blocks of code can reveal whether -or not optimizing it would bring a significant performance improvement.

      • -
      -
      Defer construction -of the application model and other data members

      Many applications -instantiate their components, for instance error handlers, dialogs and menus, -during start-up. In turn, each of these components may instantiate other components, -for instance menu resources and icons. This can bring some benefits, for instance -reducing application complexity, revealing memory allocation problems at start-up -rather than after the application has been running for some time and improving -the runtime performance of the application. However, to minimize application -start-up time, it is recommended to avoid this behavior. Your goal should -be to only do what is immediately necessary during start-up.

      -
      Draw the application -as quickly as possible

      During application start-up, only construct -UI components that appear in the application’s initial view. This applies -especially to the application's implementations of CXxxApplication::CreateDocumentL(), CXxxDocument::ConstructL() and CXxxDocument::CreateAppUiL(), all of which are called -before CXxxAppUi::ConstructL(). Do not read bitmaps, resources, -or any other data associated with the UI from files unless it is necessary.

      In CXxxAppUi::ConstructL(), -make sure CCoeControl::ActivateL() and CCoeControl::DrawNow() are -called on all controls that must be drawn when the application is launched. -Also ensure that the client-side window server command buffer is flushed by -calling Flush() on the application's window server session. -This ensures that there aren't any drawing commands left in the client-side -buffer, after CCoeControl::DrawNow() has completed.

      -
      Minimize the -number of bitmaps used by GUI components

      Often, when a large number -of small images are required by an application, the overhead associated with -loading each bitmap outweighs any benefit associated with their size. Some -possible ways to avoid this are:

        -
      • use text instead,

      • -
      • for very simple graphics, draw directly using drawing primitives rather -than loading a bitmap,

      • -
      • concatenate many small bitmaps into one large bitmap file to reduce -the need to search for and load multiple files.

      • -
      -
      Reduce the -number of redraws

      Some GUI components redraw themselves every time -their data changes. This may not always be necessary. Complicated GUI components -should implement theirDraw() method to only update the area -of the screen that has changed. For example, there is no point in redrawing -a whole list box every time a new item is appended to it. In such cases, a -GUI API should allow you to switch off redrawing. Beware of GUI methods that -cause the object they are called upon to redraw itself.

      Use CCoeControl::DrawDeferred() in -preference to CCoeControl::DrawNow() if possible, because -excessive use of CCoeControl::DrawNow() can cause GUI flicker. -For an explanation, see the documentation for CCoeControl::DrawDeferred().

      -
      Use ROM-based -bitmaps rather than filestore bitmaps

      Uncompressed ROM-based bitmaps -that can be used in place from ROM are approximately three times faster to -use than filestore bitmaps. Using them can bring a significant reduction in -application start-up time.

      Specifying bitmap= instead of file= in the -.OBY and .IBY files when building the ROM causes bitmaps to be uncompressed -before inclusion in the ROM. Other bitmaps need to be uncompressed at runtime, -which impacts performance.

      The drawback of such bitmaps is that they -are large (up to 3 times larger than file based) and cannot be compressed, -although decompressing bitmaps should probably be avoided during start-up -anyway due to the extra processing required.

      If ROM space is limited, -consider using such ROM-based bitmaps only if they are displayed during application -start-up.

      -
      Color depth -matching

      When bitmaps are drawn to the screen, optimum performance -is achieved by ensuring that:

      Bitmap color depth = Window color -depth = Screen device color depth

      If this is the case, no palette -mapping between the different color depths is needed. On real hardware, this -optimization has been found to improve drawing speed by up to ten times. However, -in order to match the screen and window color depth, bitmaps may need to increase -in size and so this optimization is only possible if the increase in ROM or -RAM usage is acceptable.

      -
      Minimize access -to the file system

      The file server can be a major bottleneck during -start-up when virtually all threads are searching for and loading data, libraries -and plug-ins. Therefore reducing file access is one of the most effective -ways to improve performance.

      -
      Minimize the -use of resource files

      Resource files are used for localization and -allow modifications to be made to an application without the need to rebuild -it, but they are expensive to use because they require access to the file -system.

      -
      Do not specify -a default document filename for non document-based applications

      Many -applications on a smartphone do not need to use documents, for example Telephony, -Contacts (this uses the contacts database), Browser and Messaging.

      By -not specifying a default document filename, hundreds of milliseconds can potentially -be saved from such applications' start-up time.

      If an application -uses a document file, application start-up may involve the following steps:

        -
      • reading the name of the last used document file from the application’s -.ini file,

      • -
      • opening the document file, or if one doesn't exist, creating a default -document file, after reading its name from the application's resource file,

      • -
      • writing the name of the last used file to the application’s .ini file -(which is created if it doesn’t exist),

      • -
      • writing an entry to the most recently used file list (mru.dat),

      • -
      • additional document-related processing within CEikonEnv::ConstructAppFromCommandLineL().

      • -

      The default document's name is read from the application's resource -file by CEikAppUi::ProcessCommandParametersL(). There are -two ways of preventing the application from using a default document file:

        -
      • Give the default document a NULL name in the resource file:

        RESOURCE -TBUF { buf=""; }
      • -
      • Override CEikAppUi::ProcessCommandParametersL() to -zero the document name and return EFalse. This method is slightly more efficient -because it avoids reading the default document name from the resource file -altogether:

        TBool CMyAppUi::ProcessCommandParametersL(TApaCommand /*aCommand*/, TFileName& aDocumentName, const TDesC8& /*aTail*/){aDocumentName.Zero();return EFalse;}
      • -
      -
      Drive scanning

      This -can be a cause of unnecessary file server use.

      To prevent excessive -drive access and scanning, always specify a drive letter in file paths, if -known. The omission of a drive letter will cause all available drives to be -searched in the standard Symbian platform order, in which Z: is always searched -last.

      -
      Only make server -requests if you need to

      Server requests involve context switching -and may cause the server to run instead of the application. In the worse case -if you make a request to a server that has not yet been started you may cause -the server to start. This will involve creating a new thread -(and possibly process) and running any server initialization code.

      -
      Use asynchronous -server requests instead of synchronous server requests

      Synchronous -operations or methods (particularly for server requests) can cause general -application slowness, and in particular, a significant reduction in responsiveness. -Synchronous requests to servers mean your thread is waiting, so that no start-up -progress is being made.

      No 'Golden Rule' exists about when to avoid -synchronous requests. However, if an asynchronous version of a method exists, -it is a good indication that the synchronous method could potentially take -some time. Whilst it may take a little extra effort to handle asynchronous -versions of method calls, you should consider very carefully any decision -to use the synchronous version. It’s often easier to change from using an -asynchronous version to synchronous than vice versa.

      Note that in -some situations, you might know that the server is implementing your asynchronous -request synchronously. If this is the case, and the server runs with a higher -priority than your application, then both versions of the API may have the -same performance. However, using the synchronous version in this case has -the drawback that it relies upon knowledge of the server's implementation, -which could potentially change.

      -
      Do not repeatedly -open and close connections to the same server

      Opening a connection -to a server is an expensive operation. If an application uses a server frequently -then it should create one connection and leave it open until the application -is destroyed. R classes declared as temporaries (on the stack, in other words) -within a method may be a sign of this behavior.

      + + + + + +Application Start-Up Time OptimizationIt is important that phone users do not have to wait long +for applications to start. This document summarizes the techniques +for optimizing application start-up time. +
      Introduction

      The techniques discussed in this document +are limited in scope to application programming. In other words, they +do not require modification of any core OS components or servers. +Some of the techniques are general good practice and are useful to +developers at all levels.

      The techniques can be summarized +as follows:

        +
      • Avoid causing unnecessary code to be executed as an effect +of your code.

      • +
      • Defer construction of objects, loading of dynamic libraries +(for example, the application model), and starting servers until you +need to use them.

      • +
      • Write efficient code!

      • +
      There is an inevitable trade-off between shortening the +start-up time and introducing latency elsewhere in the application. +For example, if you don’t connect to a server at start-up, you will +have to do it later on, when the application needs to use the server. +This may be overcome by a central component that coordinates background +connections, or construction, such as the view server.
      +
      Measure +start-up time before you start optimizing

      Do not assume +you know which methods take the most time. Pay close attention to +iterative and recursive operations. Many useful tools and techniques +are available to help identify poorly performing code:

        +
      • Software analysis tools, for instance GlowCode and +MetroWerks CodeTEST

      • +
      • The Symbian profiling tool, profiler.exe, which is supplied +on DevKits

      • +
      • The RDebug class provides some profiling functions

      • +
      • The TTime class can be used to time blocks of code, but beware +of context switches, otherwise you may end up timing other threads!

      • +
      • Deliberately slowing down suspect blocks of code can reveal +whether or not optimizing it would bring a significant performance +improvement.

      • +
      +
      Defer +construction of the application model and other data members

      Many applications instantiate their components, for instance error +handlers, dialogs and menus, during start-up. In turn, each of these +components may instantiate other components, for instance menu resources +and icons. This can bring some benefits, for instance reducing application +complexity, revealing memory allocation problems at start-up rather +than after the application has been running for some time and improving +the runtime performance of the application. However, to minimize application +start-up time, it is recommended to avoid this behavior. Your goal +should be to only do what is immediately necessary during start-up.

      +
      Draw +the application as quickly as possible

      During application +start-up, only construct UI components that appear in the application’s +initial view. This applies especially to the application's implementations +of CXxxApplication::CreateDocumentL(), CXxxDocument::ConstructL() and CXxxDocument::CreateAppUiL(), all of which +are called before CXxxAppUi::ConstructL(). Do not +read bitmaps, resources, or any other data associated with the UI +from files unless it is necessary.

      In CXxxAppUi::ConstructL(), make sure CCoeControl::ActivateL() and CCoeControl::DrawNow() are called on all controls that +must be drawn when the application is launched. Also ensure that the +client-side window server command buffer is flushed by calling Flush() on the application's window server session. This +ensures that there aren't any drawing commands left in the client-side +buffer, after CCoeControl::DrawNow() has completed.

      +
      Minimize +the number of bitmaps used by GUI components

      Often, when +a large number of small images are required by an application, the +overhead associated with loading each bitmap outweighs any benefit +associated with their size. Some possible ways to avoid this are:

        +
      • use text instead,

      • +
      • for very simple graphics, draw directly using drawing primitives +rather than loading a bitmap,

      • +
      • concatenate many small bitmaps into one large bitmap file to +reduce the need to search for and load multiple files.

      • +
      +
      Reduce +the number of redraws

      Some GUI components redraw themselves +every time their data changes. This may not always be necessary. Complicated +GUI components should implement theirDraw() method +to only update the area of the screen that has changed. For example, +there is no point in redrawing a whole list box every time a new item +is appended to it. In such cases, a GUI API should allow you to switch +off redrawing. Beware of GUI methods that cause the object they are +called upon to redraw itself.

      Use CCoeControl::DrawDeferred() in preference to CCoeControl::DrawNow() if possible, +because excessive use of CCoeControl::DrawNow() can cause GUI flicker. For an explanation, see the documentation +for CCoeControl::DrawDeferred().

      +
      Use +ROM-based bitmaps rather than filestore bitmaps

      Uncompressed +ROM-based bitmaps that can be used in place from ROM are approximately +three times faster to use than filestore bitmaps. Using them can bring +a significant reduction in application start-up time.

      Specifying +bitmap= instead of file= in the .OBY and .IBY files when building +the ROM causes bitmaps to be uncompressed before inclusion in the +ROM. Other bitmaps need to be uncompressed at runtime, which impacts +performance.

      The drawback of such bitmaps is that they are +large (up to 3 times larger than file based) and cannot be compressed, +although decompressing bitmaps should probably be avoided during start-up +anyway due to the extra processing required.

      If ROM space +is limited, consider using such ROM-based bitmaps only if they are +displayed during application start-up.

      +
      Color +depth matching

      When bitmaps are drawn to the screen, optimum +performance is achieved by ensuring that:

      Bitmap color +depth = Window color depth = Screen device color depth

      If this is the case, no palette mapping between the different color +depths is needed. On real hardware, this optimization has been found +to improve drawing speed by up to ten times. However, in order to +match the screen and window color depth, bitmaps may need to increase +in size and so this optimization is only possible if the increase +in ROM or RAM usage is acceptable.

      +
      Minimize +access to the file system

      The file server can be a major +bottleneck during start-up when virtually all threads are searching +for and loading data, libraries and plug-ins. Therefore reducing file +access is one of the most effective ways to improve performance.

      +
      Minimize +the use of resource files

      Resource files are used for localization +and allow modifications to be made to an application without the need +to rebuild it, but they are expensive to use because they require +access to the file system.

      +
      Do +not specify a default document filename for non document-based applications

      Many applications on a smartphone do not need to use documents, +for example Telephony, Contacts (this uses the contacts database), +Browser and Messaging.

      By not specifying a default document +filename, hundreds of milliseconds can potentially be saved from such +applications' start-up time.

      If an application uses a document +file, application start-up may involve the following steps:

        +
      • reading the name of the last used document file from the application’s +.ini file,

      • +
      • opening the document file, or if one doesn't exist, creating +a default document file, after reading its name from the application's +resource file,

      • +
      • writing the name of the last used file to the application’s +.ini file (which is created if it doesn’t exist),

      • +
      • writing an entry to the most recently used file list (mru.dat),

      • +
      • additional document-related processing within CEikonEnv::ConstructAppFromCommandLineL().

      • +

      The default document's name is read from the application's +resource file by CEikAppUi::ProcessCommandParametersL(). There are two ways of preventing the application from using a default +document file:

        +
      • Give the default document a NULL name in the resource file:

        RESOURCE TBUF { buf=""; }
      • +
      • Override CEikAppUi::ProcessCommandParametersL() to zero the document name and return EFalse. This method is slightly +more efficient because it avoids reading the default document name +from the resource file altogether:

        TBool CMyAppUi::ProcessCommandParametersL(TApaCommand /*aCommand*/, TFileName& aDocumentName, const TDesC8& /*aTail*/){aDocumentName.Zero();return EFalse;}
      • +
      +
      Drive +scanning

      This can be a cause of unnecessary file server +use.

      To prevent excessive drive access and scanning, always +specify a drive letter in file paths, if known. The omission of a +drive letter will cause all available drives to be searched in the +standard Symbian platform order, in which Z: is always searched last.

      +
      Only +make server requests if you need to

      Server requests involve +context switching and may cause the server to run instead of the application. +In the worse case if you make a request to a server that has not yet +been started you may cause the server to start. This will involve +creating a new thread (and possibly process) and running any server +initialization code.

      +
      Use +asynchronous server requests instead of synchronous server requests

      Synchronous operations or methods (particularly for server requests) +can cause general application slowness, and in particular, a significant +reduction in responsiveness. Synchronous requests to servers mean +your thread is waiting, so that no start-up progress is being made. +

      No 'Golden Rule' exists about when to avoid synchronous requests. +However, if an asynchronous version of a method exists, it is a good +indication that the synchronous method could potentially take some +time. Whilst it may take a little extra effort to handle asynchronous +versions of method calls, you should consider very carefully any decision +to use the synchronous version. It’s often easier to change from using +an asynchronous version to synchronous than vice versa.

      Note +that in some situations, you might know that the server is implementing +your asynchronous request synchronously. If this is the case, and +the server runs with a higher priority than your application, then +both versions of the API may have the same performance. However, using +the synchronous version in this case has the drawback that it relies +upon knowledge of the server's implementation, which could potentially +change.

      +
      Do +not repeatedly open and close connections to the same server

      Opening a connection to a server is an expensive operation. If +an application uses a server frequently then it should create one +connection and leave it open until the application is destroyed. R +classes declared as temporaries (on the stack, in other words) within +a method may be a sign of this behavior.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-16AB388A-ED3E-4901-857D-834072437D25.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-16AB388A-ED3E-4901-857D-834072437D25.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,301 @@ + + + + + +Spin +LocksSpin locks allow resource execution control through fast lock context +switching. +
      Introduction

      Spin +locks are a type of lock mechanism. In a spin lock, the thread will simply +wait in a loop checking for the resource to become available. It is the execution +of the thread waiting in a loop ("spins"), that gives this lock mechanism +its name. The thread will only come out of the loop once the resource is available.

      When +using a spin lock, the following should be noted :

        +
      • Spin locks should only be used in environments where the waiting period +will be short

      • +
      • Spin locks are very wasteful, since the thread in question is always +in the active state

      • +
      • Spin locks can lock/unlock very quickly, since the thread never changes +state

      • +
      • For spin locks to work on the Symbian platform, the interrupts have +to be disabled before use. This is due to the fact that spin locks do not +protect against interrupts from occurring on the same CPU.

      • +

      Because of these properties, spin locks are used in environments where +the operation has to be fast and where the waiting times have to be short. +For this reason, on the Symbian platform they are only used in kernel code. +If a more efficient use of thread processing time is required, then a mutex +should be used.

      There are two types of spin lock:

        +
      • spin locks and

      • +
      • read write spin locks.

      • +

      The difference between the two types of spin locks is that the read +write spin locks have been optimised to allow multiple reading threads to +acquire the lock simultaneously.

      +
      Required interrupt +behaviour

      When using spin locks, the following steps have to be +carried out:

        +
      1. disable the interrupts

      2. +
      3. acquire the lock

      4. +
      5. enable the interrupts +after the lock is released.

      6. +

      If the above steps have not been carried out, then a dead lock condition +could occur.

      +
      The types of +spin locks available

      There are two types of spin locks on the Symbian +platform. These are spin locks and read write spin locks. Read write spin +locks are described in the next section.

      There are two ways of implementing +spin locks on the Symbian platform:

        +
      • A Spin lock API and

      • +
      • the use of spin lock macros.

      • +

      The spin lock API should never be used directly, instead the macros +should be used. This is due to:

        +
      • The spin lock macros carry out the required interrupt enable/disable +operations

      • +
      • The spin lock macros provide compatibility between SMP and non-SMP +builds.

      • +

      The spin lock API is only for internal use and should never be used. +For spin locks it is provided by the TSpinLock class and +is defined in nkern.h. It will not be discussed any further.

      The +spin lock macros available are :

      + + + +

      Macro

      +

      Parameter 1

      Purpose and Data Type

      +

      Parameter 2

      Purpose and Data Type

      +

      Return Value

      Purpose and Data Type

      +

      Operation

      +
      + +

      __SPIN_LOCK_IRQSAVE(lock)

      +

      The spin lock order.

      TSpinLock
      +

      N/A

      +

      The original interrupt state.

      TInt
      +

      Disable interrupts and acquire the lock.

      +
      + +

      __SPIN_UNLOCK_IRQRESTORE(lock,irq)

      +

      The spin lock order.

      TSpinLock
      +

      The interrupt state

      TInt
      +

      N/A

      +

      Release the lock, then restore the interrupt state.

      +
      + +

      __SPIN_FLASH_IRQRESTORE(lock,irq)

      +

      The spin lock order.

      TSpinLock
      +

      The interrupt state.

      TInt
      +

      ETrue if the lock/unlock operation has occurred, otherwise EFalse.

      TBool
      +

      If another thread is waiting for the spin lock or there is an interrupt +pending, then execute the __SPIN_UNLOCK_IRQRESTORE macro and then execute +the __SPIN_LOCK_IRQ macro.

      +
      + +

      __SPIN_LOCK(lock)

      +

      The spin lock order.

      TSpinLock
      +

      N/A

      +

      N/A

      +

      Acquire the lock, assuming the interrupts and preemption have been +disabled.

      +
      + +

      __SPIN_UNLOCK(lock)

      +

      The spin lock order.

      TSpinLock
      +

      N/A

      +

      N/A

      +

      Release the lock without changing the interrupt and preemption states.

      +
      + +

      __SPIN_FLASH_PREEMPT(lock)

      +

      The spin lock order.

      TSpinLock
      +

      N/A

      +

      ETrue if the lock/unlock operation has occurred, otherwise EFalse.

      TBool
      +

      If another thread is waiting for the lock, then execute (after the +unlock NKern::PreemptionPoint has been called) the __SPIN_UNLOCK +macro and then the __SPIN_LOCK macro.

      +
      + +

      __SPIN_LOCK_IRQ(lock)

      +

      The spin lock order.

      TSpinLock
      +

      N/A

      +

      N/A

      +

      Disable interrupts and acquire the lock.

      +
      + +

      __SPIN_UNLOCK_IRQ(lock)

      +

      The spin lock order.

      TSpinLock
      +

      N/A

      +

      N/A

      +

      Release the lock, then enable the interrupts.

      +
      + +

      __SPIN_FLASH_IRQ(lock)

      +

      The spin lock order.

      TSpinLock
      +

      N/A

      +

      ETrue if the lock/unlock operation has occurred, otherwise EFalse.

      TBool
      +

      If another thread is waiting for the spin lock or if there is an +interrupt pending, then execute the __SPIN_UNLOCK_IRQ macro and then execute +the __SPIN_LOCK_IRQ macro.

      +
      + + +

      The spin lock order parameter is used to provide a priority of +the spin lock. The spin lock order parameter allows spin locks to be nested +and to guard against deadlocks.

      The list of acceptable spin lock order +values are defined in nkern.h.

      Which spin lock +macro should be used is shown in the following table :

      + + + +

      Is the spin lock to be used within an ISR ?

      +

      The ISR State

      +

      Other Circumstances to Consider

      +

      The Spin Lock Macros to Use

      +
      + +

      Yes

      +

      Unknown

      +

      None

      +

      __SPIN_LOCK_IRQSAVE(lock)

      +
      + + + + +

      __SPIN_UNLOCK_IRQRESTORE(lock,irq)

      +
      + + + + +

      __SPIN_FLASH_IRQRESTORE(lock,irq)

      +
      + +

      N/A

      +

      The interrupts have already been disabled.

      +

      None

      +

      __SPIN_LOCK(lock)

      +
      + + + + +

      __SPIN_UNLOCK(lock)

      +
      + + + + +

      __SPIN_FLASH_IRQRESTORE(lock,irq)

      +
      + +

      No

      +

      N/A

      +

      Code is within a pair of NKern::Lock/NKern::Unlock statements.

      +

      __SPIN_LOCK(lock)

      +
      + + + + +

      __SPIN_UNLOCK(lock)

      +
      + + + + +

      __SPIN_FLASH_PREEMPT(lock)

      +
      + +

      Yes

      +

      Known

      +

      The interrupts must already be disabled.

      +

      __SPIN_LOCK_IRQ(lock)

      +
      + + + + +

      __SPIN_UNLOCK_IRQ(lock)

      +
      + + + + +

      __SPIN_FLASH_IRQ(lock)

      +
      + + +

      Only the above combinations of interrupt states and +spin lock macros are allowed.

      The spin lock macros __SPIN_LOCK_IRQSAVE +and __SPIN_UNLOCK_IRQRESTORE would be used in almost all cases.

      +
      How to Use +Spin Locks

      An example of how to use the spin lock macros is :

      TInt irq = __SPIN_LOCK_IRQSAVE(EOrderThread); +// some code... +__SPIN_UNLOCK_IRQSTORE(EOrderThread,irq);

      The first line calls +the macro to disable the interrupts and acquire the spin lock. This line returns +the original interrupt state (stored in the variable irq).

      The last +line calls the macro to release the spin lock and then restore the IRQ to +its original state.

      +
      Read Write +Spin Locks

      This sub set of spin locks allows for the multiple reading +threads to acquire the lock simultaneously. The operation of read write spin +locks is :

      + + + +

      Behaviour

      +

      Required Conditions

      +
      + +

      Acquire the lock for a read operation

      +

      The lock is either free or is being held for reading

      +
      + +

      Blocked for a read operation

      +

      The lock is held for a write operation

      +
      + +

      Acquire the lock for a write operation

      +

      The lock is free

      +
      + +

      Blocked for a write operation

      +

      The lock is held for a read or a write operation

      +
      + + +

      The macros are the same name as for the spin locks, except :

      + + + +

      Operation

      +

      Postfix

      +
      + +

      read access

      +

      _R

      +
      + +

      write access

      +

      _W

      +
      + + +

      An example of the use of read write spin lock macros are __SPIN_LOCK_IRQ_R(lock) +and __SPIN_UNLOCK_IRQ_W(lock).

      Read write spin locks are implemented +by the TRWSpinLock class. As with the TSpinLock class, +this class is for internal use only and will not be discussed any further.

      An +example of the use of read write spin locks is :

      +__SPIN_LOCK_IRQ_R(EOrderThread); +// some code... +__SPIN_UNLOCK_IRQ_R(EOrderThread);
      +
      +SMP Overview + +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-16AED228-539F-4BF7-A7FD-9A01FF1A9A84.dita --- a/Symbian3/PDK/Source/GUID-16AED228-539F-4BF7-A7FD-9A01FF1A9A84.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-16AED228-539F-4BF7-A7FD-9A01FF1A9A84.dita Fri Jul 16 17:23:46 2010 +0100 @@ -36,7 +36,7 @@ good scaling on small numbers of processors.

      Coarse-Grained Lock - +
      • Fine-Grained Locks enclose a small area of code for example a data structure. These locks are added to the code and the user must remember @@ -49,7 +49,7 @@ apply lock for each piece of code. Fine-grained locking can result in near perfect scaling.

        Fine-Grained Lock - +
      Type of Locks
      • TSpinLock is the lightest weight lock available diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-16B42854-F27D-5CB3-BCFE-8F711793EE60_d0e582704_href.png Binary file Symbian3/PDK/Source/GUID-16B42854-F27D-5CB3-BCFE-8F711793EE60_d0e582704_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-16B42854-F27D-5CB3-BCFE-8F711793EE60_d0e603974_href.png Binary file Symbian3/PDK/Source/GUID-16B42854-F27D-5CB3-BCFE-8F711793EE60_d0e603974_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-16C323DC-B43F-5621-B617-C31FBB25379B_d0e156178_href.png Binary file Symbian3/PDK/Source/GUID-16C323DC-B43F-5621-B617-C31FBB25379B_d0e156178_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-16C323DC-B43F-5621-B617-C31FBB25379B_d0e600212_href.png Binary file Symbian3/PDK/Source/GUID-16C323DC-B43F-5621-B617-C31FBB25379B_d0e600212_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-16D0854D-55EF-4E22-B7D2-72603699BC59.dita --- a/Symbian3/PDK/Source/GUID-16D0854D-55EF-4E22-B7D2-72603699BC59.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-16D0854D-55EF-4E22-B7D2-72603699BC59.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,7 +21,7 @@ Empty list: the primary font is used to inform about an empty list and provide the user with further information (used only in cases when genuinely useful additional information is available). - +

        Depending on the case, the text may be aligned to prompt the user to create the first item for an empty list.

        diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-16D6C3BB-45C0-5669-93FB-846386F586B4_d0e229998_href.png Binary file Symbian3/PDK/Source/GUID-16D6C3BB-45C0-5669-93FB-846386F586B4_d0e229998_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-16D6C3BB-45C0-5669-93FB-846386F586B4_d0e235993_href.png Binary file Symbian3/PDK/Source/GUID-16D6C3BB-45C0-5669-93FB-846386F586B4_d0e235993_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1704898B-7836-53C2-8743-F733836EDE7B_d0e547128_href.png Binary file Symbian3/PDK/Source/GUID-1704898B-7836-53C2-8743-F733836EDE7B_d0e547128_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1704898B-7836-53C2-8743-F733836EDE7B_d0e554584_href.png Binary file Symbian3/PDK/Source/GUID-1704898B-7836-53C2-8743-F733836EDE7B_d0e554584_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-170EDC68-77C7-4FD9-A81E-C9F75698F7A3.dita --- a/Symbian3/PDK/Source/GUID-170EDC68-77C7-4FD9-A81E-C9F75698F7A3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-170EDC68-77C7-4FD9-A81E-C9F75698F7A3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -24,11 +24,11 @@ events.

        Scalable UI implementation in control - + Scalable UI implementation in UI controller - +

        For further implementation information, see Handling layout change events.

        diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-173D7E50-92FA-42D7-A01B-47A39216E98D_d0e90521_href.png Binary file Symbian3/PDK/Source/GUID-173D7E50-92FA-42D7-A01B-47A39216E98D_d0e90521_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-173D7E50-92FA-42D7-A01B-47A39216E98D_d0e91991_href.png Binary file Symbian3/PDK/Source/GUID-173D7E50-92FA-42D7-A01B-47A39216E98D_d0e91991_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-173D7E50-92FA-42D7-A01B-47A39216E98D_d0e94719_href.png Binary file Symbian3/PDK/Source/GUID-173D7E50-92FA-42D7-A01B-47A39216E98D_d0e94719_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-173D7E50-92FA-42D7-A01B-47A39216E98D_d0e96189_href.png Binary file Symbian3/PDK/Source/GUID-173D7E50-92FA-42D7-A01B-47A39216E98D_d0e96189_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1742B2A1-6EC1-5368-919B-362516A5D452_d0e577370_href.png Binary file Symbian3/PDK/Source/GUID-1742B2A1-6EC1-5368-919B-362516A5D452_d0e577370_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1742B2A1-6EC1-5368-919B-362516A5D452_d0e594815_href.png Binary file Symbian3/PDK/Source/GUID-1742B2A1-6EC1-5368-919B-362516A5D452_d0e594815_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-176FD8C9-B4A9-5B50-B683-AB5DA7D5D6F4.dita --- a/Symbian3/PDK/Source/GUID-176FD8C9-B4A9-5B50-B683-AB5DA7D5D6F4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-176FD8C9-B4A9-5B50-B683-AB5DA7D5D6F4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,39 +1,32 @@ - - - - - -CreateStaticDLL -and UseStaticDLL: using a statically linked DLL -
        Description

        The example shows how a class implemented -in a statically linked DLL is used. The DLL is built by CreateStaticDLL and -is used by UseStaticDLL.

        -
        Download

        Click on the following link -to download the example: StaticDLL.zip

        Click on the following link to -download additional files: CommonFramework.zip.

        Click browse StaticDLL to view the example code.

        Click browse CommonFramework to view additional files.

        -
        Build and Usage

        The example may be in the directory -in which you installed the Symbian platform, or it may be in src\common\developerlibrary\. -The example includes the project files needed for building: bld.inf and -two .mmp files.

        The -Symbian platform build process describes how to build Symbian programs. -To run this example:

          -
        1. Build CreateStaticDLL project, -which results in the following:

          \epoc32\release\<target>\<urel -or udeb>\CREATESTATICDLL.DLL.

          \epoc32\release\<target>\<urel -or udeb>\CREATESTATICDLL.lib.

          They are -needed by the UseStaticDLL project.

        2. -
        3. Build UseStaticDLL, -which results in:

          \epoc32\release\<target>\<urel -or udeb>\USESTATICDLL.EXE.

          This project -use the DLL created in the previous steps.

        4. -
        5. Run the executable USESTATICDLL.EXE.

          Executables -for the winscw target can be run on your PC. Executables -for ARM targets must be copied to a phone before being run.

        6. -
        + + + + + +CreateStaticDLL and UseStaticDLL: using a statically linked +DLL +
        Description

        The example shows how a class implemented in a statically linked +DLL is used. The DLL is built by CreateStaticDLL and is used by UseStaticDLL.

        +
        Download

        Click on the following link to download the example: StaticDLL.zip

        Click on the following +link to download additional files: CommonFramework.zip.

        Click browse StaticDLL to view the example code.

        Click browse CommonFramework to view additional files.

        +
        Build +and Usage

        The example may be in the directory in which +you installed the Symbian platform, or it may be in src\common\developerlibrary\. The example includes the project files needed for building: bld.inf and two .mmp files.

        The Symbian platform build process describes how to build Symbian +programs. To run this example:

          +
        1. Build CreateStaticDLL project, which results in the following:

          \epoc32\release\<target>\<urel or + udeb>\CREATESTATICDLL.DLL.

          \epoc32\release\<target>\<urel +or udeb>\CREATESTATICDLL.lib.

          They +are needed by the UseStaticDLL project.

        2. +
        3. Build UseStaticDLL, which results in:

          \epoc32\release\<target>\<urel +or udeb>\USESTATICDLL.EXE.

          This +project use the DLL created in the previous steps.

        4. +
        5. Run the executable USESTATICDLL.EXE.

          Executables for the winscw target can be run on your PC. Executables for ARM +targets must be copied to a phone before being run.

        6. +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-17798BAC-F887-515F-B90E-CAAE81D8530F.dita --- a/Symbian3/PDK/Source/GUID-17798BAC-F887-515F-B90E-CAAE81D8530F.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ - - - - - -Trace Terminologies

        This topic lists the various trace terminologies that are changed or added in UTF 2.0.

        ModuleUid

        The secondary filter in UTF 1.0 is replaced with ModuleUid in UTF 2.0.

        Every trace packet is assigned a default value 0 to ModuleUid by its originating trace point to indicate the code module in which the trace point is defined. You are recommended to override the default value ModuleUid by adding the macro MACRO - EXECUTABLE_DEFAULT_MODULEUID=0xuid3 to your MMP file.

        A common value for the ModuleUid is the UID3 of the associated binary file. In some cases, it is not suitable to use the UID3 as a ModuleUid. For example, you may not need to trace across the entire component, if it is very big. In such cases, you can obtain a unique ModuleUid from SymbianSigned and assign to a particular use case or set a ModuleUid for each instance of TTraceContext without setting a default value for the component.

        For details about SymbianSigned, see https://www.symbiansigned.com.

        Note: A ModuleUid must not be used for trace points in more than one compiled binary file.

        Classification

        The primary filter in UTF 1.0 is replaced with Classification in UTF 2.0.

        Every trace packet is assigned a classification by its originating trace point. This is a label that indicates the intended use of the trace points or trace packets.

        The classification can reflect a system-wide tracing use-case, such as indicating why a Panic occurred. It can also be assigned to trace packets from performance critical software, such as the kernel or other key services.

        Note: The ModuleUid and Classification attributes of a trace point are independent.

        FormatId

        The 1-byte schema in UTF 1.0 is replaced with 2-byte FormatId.

        FormatId is a numerical value assigned to a trace point which is used on the host PC to look up the format of the associated trace packets.

        The meaning of a FormatId is specific to the ModuleUid of the associated trace packet. For example, the FormatId 1 can be interpreted on the host PC as “RProcess::Create returned %d ” for the ModuleUid 130e0751 but can be interpreted as “Something - odd happened: %s ” for the ModuleUid 1000015c.

        Note: A trace point with no FormatId (using a Printf call instead of a Trace call) indicates that the trace packet contains text and needs no further formatting.

        Trace Point Context

        The trace point context is newly added in UTF 2.0. It includes information describing the circumstances of a trace point. The trace point context data is used to include certain data in the trace packet generated at run-time.

        The context of a trace point can include information such as source code line, source file and binary file. It can be used to map trace information to the source.

        Note: A trace point context can be re-used by several trace points.

        UTF Namespace

        The UTF namespace is newly added in UTF 2.0. It contains a set of libraries providing the trace point, trace filter, storage, buffer management and transport APIs required on the device for tracing to be performed.

        Trace Record Frame Format
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-178E140F-BB15-5A82-99A6-D1BC0E11E018.dita --- a/Symbian3/PDK/Source/GUID-178E140F-BB15-5A82-99A6-D1BC0E11E018.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-178E140F-BB15-5A82-99A6-D1BC0E11E018.dita Fri Jul 16 17:23:46 2010 +0100 @@ -28,7 +28,7 @@ defined in ...\kernel\kernel.h, which is exported to epoc32\include\kernel.

        Message threads and queues - +

        SDblQueLink is simply an object that allows a message to be linked to another in the form of a doubly-linked list.

        @@ -43,7 +43,7 @@ and the message queues:

        Relationship between messages and message queues - +

        When a message is sent to the queue, either:

          diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-178F91C8-32F4-5CD3-B81D-F0A6C45097E5.dita --- a/Symbian3/PDK/Source/GUID-178F91C8-32F4-5CD3-B81D-F0A6C45097E5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-178F91C8-32F4-5CD3-B81D-F0A6C45097E5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Network PSY OverviewThis document describes the Network PSY, which connects the Location Server (eposserver.exe) to the Network Location Manager.
          Purpose

          The Network PSY connects the Location Server (eposserver.exe) to the Network Location Manager. It allows the Location Server to use the network to obtain cell-based position fixes. The PSY does not interface directly with the network. You must install a Network Protocol Module to use the Network PSY.

          This document is for device creators.

          Required background

          This document assumes a knowledge of the material covered in the following:

          • LBS Architecture Overview

          • LBS Integration and Configuration Guide

          Key concepts and terms
          PSY

          A Positioning Plug-in. The Network PSY implements the Positioning Plug-in API to interface with the Location Server. It uses the Positioning Plug-in Information API (central repository key/value pairs) to register itself with the LBS subsystem.

          Network Protocol Module

          An ECom plug-in loaded by the Network Gateway. A Network Protocol Module connects the LBS subsystem to a network via the ETel or ESock communication stacks.

          Architecture

          Figure 1 shows the Network PSY with associated LBS components.

          Figure 1. Network PSY with components on which it depends. -

          The Network PSY implements the Positioning Plug-in API. The PSY does not interface directly with the network. It connects with the network via the Network Location Manager and a Network Protocol Module. To use the Network PSY, you must install a Network Protocol Module.

          The Network PSY is packaged in the library lbsnetpsy.dll. This DLL contains one ECom plug-in implementation of the PSY interface.

          If you include the Network PSY in your LBS ROM using the LBS buildrom macros, a file containing the central repository keys and values for the PSY is also included. The keys and values in the file register the PSY with the Location Server. The keys in the file are defined by the Positioning Plug-in Information API.

          The Network PSY appears as a normal PSY to the Location Server and is selected by Location Acquisition API client applications by UID, or by the Default PSY.

          See Network PSY Tutorial for an explanation of how to configure the PSY.

          APIs

          The Network PSY implements the Positioning Plug-in API to integrate with the LBS subsystem. The code distribution for this PSY includes a central repository initialisation file that contains key/value pairs specified by the Positioning Plug-in Information API.

          The Network PSY does not provide any APIs.

          Typical uses

          The Network PSY is used by the LBS Location Server eposserver.exe to obtain position fixes using cell-based positioning. The Network Gateway and Network Protocol Module are responsible for interfacing with a communication stack to obtain the position.

          Network PSY +

          The Network PSY implements the Positioning Plug-in API. The PSY does not interface directly with the network. It connects with the network via the Network Location Manager and a Network Protocol Module. To use the Network PSY, you must install a Network Protocol Module.

          The Network PSY is packaged in the library lbsnetpsy.dll. This DLL contains one ECom plug-in implementation of the PSY interface.

          If you include the Network PSY in your LBS ROM using the LBS buildrom macros, a file containing the central repository keys and values for the PSY is also included. The keys and values in the file register the PSY with the Location Server. The keys in the file are defined by the Positioning Plug-in Information API.

          The Network PSY appears as a normal PSY to the Location Server and is selected by Location Acquisition API client applications by UID, or by the Default PSY.

          See Network PSY Tutorial for an explanation of how to configure the PSY.

      APIs

      The Network PSY implements the Positioning Plug-in API to integrate with the LBS subsystem. The code distribution for this PSY includes a central repository initialisation file that contains key/value pairs specified by the Positioning Plug-in Information API.

      The Network PSY does not provide any APIs.

      Typical uses

      The Network PSY is used by the LBS Location Server eposserver.exe to obtain position fixes using cell-based positioning. The Network Gateway and Network Protocol Module are responsible for interfacing with a communication stack to obtain the position.

      Network PSY Tutorial LBS Architecture Overview LBS Integration and Configuration Guide Positioning Plug-in API (PSY API) Default diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-17C64C2F-9426-4B41-9F0A-23060289D644.dita --- a/Symbian3/PDK/Source/GUID-17C64C2F-9426-4B41-9F0A-23060289D644.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-17C64C2F-9426-4B41-9F0A-23060289D644.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,98 +1,88 @@ - - - - -Mu<?Pub Caret?>ltiple touch - - - - -

      Multiple touch is an enhancement to the touch screen, which provides -the user with the ability to apply elaborate finger gestures onto -the display as commands to the device.

      -

      Multiple touch is implemented based on the size and type of interfaces. -When a finger or an object touches the display causing the light to -scatter, the reflection is caught by the sensors. The response for -the touch is sent back based on the type of reflection measured.

      -

      Only the devices with multiple touch support have 'Pinch Stroke' -as a touch stroke.

      -
      Pinch -StrokePinch stroke is invoked by two separate but simultaneously -active touch down events and dragging movements along the line that -goes through both touch down points. On release, the pinch in or pinch -out state is maintained. Pinch stroke can be utilized, for example, -in Photo viewer to zoom in and zoom out.

      The following table lists the -default touch-events for pinch-stroke:

      -Default touch events for pinch-stroke - - - -

      User action

      -

      State change

      -

      Feedback

      -
      - - - -

      First touch down

      -

      No action.

      -

      Tactile:

        -
      • First touch down tactile feedback follows the context-based -feedback.

      • -
      • Audio feedback is provided with touch down.

      • -

      -
      - -

      Second simultaneous touch down

      -

      Activates multiple touch mode for the content defined.

      -

      Tactile:

        -
      • When second finger is touched down, two sensitive pulses effect -is provided.

      • -
      • Audio feedback is provided with touch down.

      • -

      -
      - -

      Pinch in

      -

      Moving the touch points (directly) closer to each other -is recognized as pinch in. Application can use it, for example, for -zooming out a picture. The behavior should be in relation to the speed -and size of the stroke.

      -

      Tactile: Smooth pinch effect is provided while moving the -fingers.

      No audio feedback is provided.

      -
      - -

      Pinch out

      -

      Moving the touch points (directly) away from each other -is recognized as pinch out. Application can use it, for example, for -zooming in a picture. The behavior should be in relation to the speed -and size of the stroke.

      -

      Tactile: Smooth pinch effect is provided while moving the -fingers.

      No audio feedback is provided.

      -
      - -

      Touch release

      -

      Releasing one or both fingers stops the pinch.

      -

      No tactile or audio feedback given.

      -
      - - -
      -
      Using -multiple touch in applicationsFor multiple touch, use classes TRawEvent and TAdvancedPointerEvent (which extends TPointerEvent). For more information, see Advanced pointers section.
      -
      -
      - + + + + + +Multiple touch +

      Multiple touch is an enhancement to the touch screen, which provides +the user with the ability to apply elaborate finger gestures onto +the display as commands to the device.

      +

      Multiple touch is implemented based on the size and type of interfaces. +When a finger or an object touches the display causing the light to +scatter, the reflection is caught by the sensors. The response for +the touch is sent back based on the type of reflection measured.

      +

      Only the devices with multiple touch support have 'Pinch Stroke' +as a touch stroke.

      +
      Pinch +StrokePinch stroke is invoked by two separate but simultaneously +active touch down events and dragging movements along the line that +goes through both touch down points. On release, the pinch in or pinch +out state is maintained. Pinch stroke can be utilized, for example, +in Photo viewer to zoom in and zoom out. + +

      The following table lists the default touch-events for pinch-stroke:

      Default +touch events for pinch-stroke + + + +

      User action

      +

      State change

      +

      Feedback

      +
      + + + +

      First touch down

      +

      No action.

      +

      Tactile:

        +
      • First touch down tactile feedback follows the context-based +feedback.

      • +
      • Audio feedback is provided with touch down.

      • +

      +
      + +

      Second simultaneous touch down

      +

      Activates multiple touch mode for the content +defined.

      +

      Tactile:

        +
      • When second finger is touched down multiple touch recognition, +two sensitive pulses effect is provided.

      • +
      • Audio feedback is provided with touch down.

      • +

      +
      + +

      Pinch in

      +

      Moving the touch points (directly) closer to each other +is recognized as pinch in. Application can use it, for example, for +zooming out a picture. The behavior should be in relation to the speed +and size of the stroke.

      +

      Tactile: Smooth pinch effect is provided while moving the +fingers.

      No audio feedback is provided.

      +
      + +

      Pinch out

      +

      Moving the touch points (directly) away from each other +is recognized as pinch out. Application can use it, for example, for +zooming in a picture. The behavior should be in relation to the speed +and size of the stroke.

      +

      Tactile: Smooth pinch effect is provided while moving the +fingers.

      No audio feedback is provided.

      +
      + +

      Touch release

      +

      Releasing one or both fingers stops the pinch.

      +

      No tactile or audio feedback given.

      +
      + + +
      +
      Using +multiple touch in applicationsFor multiple touch, use classes TRawEvent and TAdvancedPointerEvent (which +extends TPointerEvent). For more information, see Advanced pointers section.
      +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-17D1489B-F7F7-5CA7-9F81-850AA9ACEFEB_d0e546792_href.png Binary file Symbian3/PDK/Source/GUID-17D1489B-F7F7-5CA7-9F81-850AA9ACEFEB_d0e546792_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-17D1489B-F7F7-5CA7-9F81-850AA9ACEFEB_d0e554248_href.png Binary file Symbian3/PDK/Source/GUID-17D1489B-F7F7-5CA7-9F81-850AA9ACEFEB_d0e554248_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-17DE7D55-00C9-5D40-8AE4-39BDB20FCC5B.dita --- a/Symbian3/PDK/Source/GUID-17DE7D55-00C9-5D40-8AE4-39BDB20FCC5B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-17DE7D55-00C9-5D40-8AE4-39BDB20FCC5B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -48,7 +48,7 @@ Framework to tag the messages with the correct BIO ID.

      The following figure illustrates the BIO Messaging Framework architecture:

      BIO Messaging Framework architecture - +

      BIO database

      The BIO database is used to identify the type of BIO messages. It maps message attributes, such as port number, MIME type, or leading string to a BIO type. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-182326EB-E818-4146-82D9-494D59E430B8-master.png Binary file Symbian3/PDK/Source/GUID-182326EB-E818-4146-82D9-494D59E430B8-master.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-182326EB-E818-4146-82D9-494D59E430B8_d0e105087_href.png Binary file Symbian3/PDK/Source/GUID-182326EB-E818-4146-82D9-494D59E430B8_d0e105087_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-18358882-A4DD-5010-BED7-4ACAE021495D-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-18358882-A4DD-5010-BED7-4ACAE021495D-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Example code \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-18358882-A4DD-5010-BED7-4ACAE021495D-GENID-1-12-1-26-1-1-9-1-12-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-18358882-A4DD-5010-BED7-4ACAE021495D-GENID-1-12-1-26-1-1-9-1-12-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Example code \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-18358882-A4DD-5010-BED7-4ACAE021495D.dita --- a/Symbian3/PDK/Source/GUID-18358882-A4DD-5010-BED7-4ACAE021495D.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Example code \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-184E301D-78BF-5324-98F6-AD583A875D6E_d0e653899_href.png Binary file Symbian3/PDK/Source/GUID-184E301D-78BF-5324-98F6-AD583A875D6E_d0e653899_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-184E301D-78BF-5324-98F6-AD583A875D6E_d0e666726_href.png Binary file Symbian3/PDK/Source/GUID-184E301D-78BF-5324-98F6-AD583A875D6E_d0e666726_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-18547A2C-7425-5478-8235-EC6D3848B404_d0e278520_href.png Binary file Symbian3/PDK/Source/GUID-18547A2C-7425-5478-8235-EC6D3848B404_d0e278520_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-18547A2C-7425-5478-8235-EC6D3848B404_d0e284520_href.png Binary file Symbian3/PDK/Source/GUID-18547A2C-7425-5478-8235-EC6D3848B404_d0e284520_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1879BEEB-9945-55F4-817E-8D6117055B1D.dita --- a/Symbian3/PDK/Source/GUID-1879BEEB-9945-55F4-817E-8D6117055B1D.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -nocompresstarget

      nocompresstarget

      Use the nocompresstarget statement to specify that the target executable should not be compressed (see compresstarget for details of the compression option).

      If neither nocompresstarget nor compresstarget is specified, then the default for the platform is selected.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-188F9462-F805-522A-84FF-770EAB045504.dita --- a/Symbian3/PDK/Source/GUID-188F9462-F805-522A-84FF-770EAB045504.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ - - - - - -An -example registration file and icon/caption file -
      Introduction

      This document describes two methods -of defining application registration information. In both cases, a minimal -example registration file called HelloWorld_reg.rss is -used. In the first method, the icon/caption information is defined in its -own file. In the second, it is defined in the application's UI resource file. -The registration file is largely the same in both cases.

      -
      Registration file with an icon/caption definition file

      The -registration file

      A registration file is a resource file that -is compiled by the resource compiler in the standard way, by including lines -like the following in the application's mmp file:

      START RESOURCE HelloWorld_reg.rss -TARGETPATH \private\10003a3f\apps -END

      This will cause HelloWorld_reg.rss to -be compiled, creating HelloWorld_reg.rsc. On the Symbian -emulator, all registration files should be located in \private\10003a3f\apps. -This is also true on real hardware for registration files built into the ROM. -For applications installed onto a phone using the standard software installation -method, their registration files should be installed into \private\10003a3f\import\apps. -In all cases, the registration file must be located on the same drive as the -application.

      A minimal registration file looks like this:

      #include <appinfo.rh> - -UID2 KUidAppRegistrationResourceFile -UID3 0x10004299 // application UID -RESOURCE APP_REGISTRATION_INFO - { - app_file = "HelloWorld"; - localisable_resource_file = "\\resource\\apps\\HelloWorld_loc"; - }

      All registration files must define UID2, -which is always KUidAppRegistrationResourceFile, and UID3, -which is the application's UID, and an APP_REGISTRATION_INFO resource -that minimally needs to provide the name of the application binary (using -the app_file statement). All registration files need to #include appinfo.rh.

      If -a localisable icon/caption definition file is provided, as in this example, -its full path and filename must be specified, excluding the drive letter and -file extension.

      The localisable icon/caption definition -file

      This file defines the application's captions and the name -of the icon file. It is built to the \resource\apps\ directory -on the same drive as the registration file; this applies both on the Symbian -emulator and target phone. By convention it has the same filename as the application, -but with a _loc suffix.

      It is a standard localisable -Symbian resource file, so it is compiled by the resource compiler by including -lines like the following in the application's mmp file:

      start resource HelloWorld_loc.rss -targetpath \resource\apps -lang 01 02 -end

      These lines cause two versions of the file to be compiled, -called HelloWorld_loc.r01 and HelloWorld_loc.r02. HelloWorld_loc.rss looks -like this:

      #include <appinfo.rh> -#ifdef LANGUAGE_01 -#include "HelloWorld01.rls" -#elif defined LANGUAGE_02 -#include "HelloWorld02.rls" -#endif -RESOURCE LOCALISABLE_APP_INFO - { - short_caption = STRING_r_short_caption; - caption_and_icon = - { - CAPTION_AND_ICON_INFO - { - caption = STRING_r_caption; - number_of_icons = 3; // each icon must be a bitmap/mask pair - icon_file = STRING_r_icon_file; - } - }; - }

      Unlike most resource files, because there is only one -resource defined in the file, it does not need to include a four character NAME or -an RSS_SIGNATURE resource, and the LOCALISABLE_APP_INFO resource -does not need an ID.

      The captions and the icon filename are referred -to by symbolic identifiers rather than by the strings themselves. The strings -are defined in .rls files (resource localisable string -files), as shown below and conditional compilation statements are used to -include the appropriate .rls file. For more information, -on localising strings in resource files, see How -to localise resources.

      HelloWorld01.rls contains:

      rls_string STRING_r_short_caption "Hello" -rls_string STRING_r_caption "Hello World" -rls_string STRING_r_icon_file "z:\\resource\\apps\\Hello.mbm"

      HelloWorld02.rls contains:

      rls_string STRING_r_short_caption "Bonjour" -rls_string STRING_r_caption "Bonjour tout le monde" -rls_string STRING_r_icon_file "z:\\resource\\apps\\Bonjour.mbm"

      The -mbm icon files are built by adding start -bitmap statements to the mmp file, for instance:

      START BITMAP Hello.mbm -TARGETPATH \Resource\Apps -SOURCE c8,1 icon24.bmp icon24m.bmp icon32.bmp icon32m.bmp icon48.bmp icon48m.bmp -END
      -
      Registration file without an icon/caption definition file

      As -an alternative to defining the icon/caption information in an icon/caption -definition file, it can be defined in the application's existing UI resource -definition file. In this case, the LOCALISABLE_APP_INFO resource -must be given an ID, because it is no longer the only resource defined in -the file. The registration file is as before, except that it must now specify -the ID of the LOCALISABLE_APP_INFO resource as well as the -name and location of the UI resource file. In other words, the line:

      localisable_resource_file = "\\resource\\apps\\HelloWorld_loc";

      needs -to be changed to:

      localisable_resource_file = "\\resource\\apps\\HelloWorld"; -localisable_resource_id = R_LAI;

      where R_LAI is -the ID of the LOCALISABLE_APP_INFO resource. Because the -registration file needs to give the resource ID, it must #include the -application's generated resource header file, HelloWorld.rsg. -Also, the UI resource file needs to #include AppInfo.rh for -the LOCALISABLE_APP_INFO definition.

      -
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-18C39927-625C-5B24-919F-469FCBCD501D.dita --- a/Symbian3/PDK/Source/GUID-18C39927-625C-5B24-919F-469FCBCD501D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-18C39927-625C-5B24-919F-469FCBCD501D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -76,7 +76,7 @@ registered clients as soon as the data becomes available.

      The API is split into five classes to separate control flow and data flow methods.

      MBca2 design - +

      Moreover, the MBca2 interface relies on shared buffers instead of regular buffers. Using shared buffers avoids data copies between different layers of the stack. For more information, @@ -142,15 +142,15 @@ concepts and terms section.

      Use case for BCA: IP communication through the serial port - + Use case for BCA: PPP communication through the serial port - + Use case for BCA: PPP communication over Ethernet - +
      BCA2 Control diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-18D2E6CC-ED84-5A6F-B25D-7693432A2E58_d0e230532_href.png Binary file Symbian3/PDK/Source/GUID-18D2E6CC-ED84-5A6F-B25D-7693432A2E58_d0e230532_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-18D2E6CC-ED84-5A6F-B25D-7693432A2E58_d0e236527_href.png Binary file Symbian3/PDK/Source/GUID-18D2E6CC-ED84-5A6F-B25D-7693432A2E58_d0e236527_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-18D7228F-A1E5-594A-B654-EF5D74CE17D2.dita --- a/Symbian3/PDK/Source/GUID-18D7228F-A1E5-594A-B654-EF5D74CE17D2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-18D7228F-A1E5-594A-B654-EF5D74CE17D2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Recording Video Data

      This tutorial describes how to record video data.

      Purpose

      The purpose of this tutorial is to show you how to use the video recorder to control video recording.

      Required Background

      The Video Client Overview introduces the video client utilities.

      Introduction

      The video recorder utility is used to record video clips to files, descriptors or URLs and manipulate embedded meta data. This functionality is implemented by the CVideoRecorderUtility class.

      The sequence diagram below explains the different functionalities of the video recorder utility:

      Video recorder sequence diagram -
      Using Video Recording

      The following tasks will be covered in this tutorial:

      • Record Video Data

      Basic Procedure

      The high level steps to record video data are shown here:

      1. If you are using an audio clip, the recording gain must be set using the CVideoRecorderUtility::SetGainL() function before recording because the initial gain is undefined or may also have been modified by another client application.

      2. The specific functions to record and perform related tasks are as follows:

        • To start recording video data to the specified file, descriptor or URL, use the CVideoRecorderUtility::Record() function.

          void CRecordVideo::Record() +
      Using Video Recording

      The following tasks will be covered in this tutorial:

      • Record Video Data

      Basic Procedure

      The high level steps to record video data are shown here:

      1. If you are using an audio clip, the recording gain must be set using the CVideoRecorderUtility::SetGainL() function before recording because the initial gain is undefined or may also have been modified by another client application.

      2. The specific functions to record and perform related tasks are as follows:

        • To start recording video data to the specified file, descriptor or URL, use the CVideoRecorderUtility::Record() function.

          void CRecordVideo::Record() { iVideoRecordUtility->Record(); }
        • To pause recording, use the CVideoRecorderUtility::PauseL() function. The position within the video clip is maintained in case a subsequent CVideoRecorderUtility::Record() is called.

          void CRecordVideo::PauseL() diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-18D92465-3F62-55CF-8229-EE811FD5F568.dita --- a/Symbian3/PDK/Source/GUID-18D92465-3F62-55CF-8229-EE811FD5F568.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-18D92465-3F62-55CF-8229-EE811FD5F568.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -Stream networks

          When a store stream is created, a stream ID is generated. This ID can be used to open the stream later. Stream IDs can be externalised into another stream, and this allows streams in a store to be built into a network.

          An object that is saved to a store may use a network of streams, typically starting with a single head stream.

          An object stores itself using a function of the form:

          streamId=object.StoreL(store);

          Given the correct stream ID, the object may be restored using a function of the form:

          object.RestoreL(store,streamId)

          where store is a reference or pointer to a store.

          The function names StoreL() and RestoreL() are conventional for this purpose.

          The following diagram shows the idea of stream networks:

          \ No newline at end of file +Stream networks

          When a store stream is created, a stream ID is generated. This ID can be used to open the stream later. Stream IDs can be externalised into another stream, and this allows streams in a store to be built into a network.

          An object that is saved to a store may use a network of streams, typically starting with a single head stream.

          An object stores itself using a function of the form:

          streamId=object.StoreL(store);

          Given the correct stream ID, the object may be restored using a function of the form:

          object.RestoreL(store,streamId)

          where store is a reference or pointer to a store.

          The function names StoreL() and RestoreL() are conventional for this purpose.

          The following diagram shows the idea of stream networks:

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1910C54E-44E0-4D36-820A-BCD5FFCDA719.dita --- a/Symbian3/PDK/Source/GUID-1910C54E-44E0-4D36-820A-BCD5FFCDA719.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1910C54E-44E0-4D36-820A-BCD5FFCDA719.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,12 +21,12 @@

          To migrate from STLport v4 to v5, perform the following steps:

          - - + +

          Replace the LIBRARY entry in the .MMP file from libstdcpp.lib to libstdcppv5.lib.

          - +

          Replace the SYSTEMINCLUDE path in the .MMP file from \epoc32\include\stdapis\stlport to \epoc32\include\stdapis\stlportv5.

          diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-192003B7-631D-5AF6-9511-119EF5853054_d0e654514_href.png Binary file Symbian3/PDK/Source/GUID-192003B7-631D-5AF6-9511-119EF5853054_d0e654514_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-192003B7-631D-5AF6-9511-119EF5853054_d0e667341_href.png Binary file Symbian3/PDK/Source/GUID-192003B7-631D-5AF6-9511-119EF5853054_d0e667341_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-192C7AC8-DCBD-5AA8-984A-35D9602C0ADB_d0e471517_href.jpg Binary file Symbian3/PDK/Source/GUID-192C7AC8-DCBD-5AA8-984A-35D9602C0ADB_d0e471517_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-192C7AC8-DCBD-5AA8-984A-35D9602C0ADB_d0e477353_href.jpg Binary file Symbian3/PDK/Source/GUID-192C7AC8-DCBD-5AA8-984A-35D9602C0ADB_d0e477353_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1944C350-900E-5621-BF43-6A366844E9DD.dita --- a/Symbian3/PDK/Source/GUID-1944C350-900E-5621-BF43-6A366844E9DD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1944C350-900E-5621-BF43-6A366844E9DD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,40 +9,32 @@ --> -MenuApp: -An Application with a Menu -
          Download

          Click on the following link to download -the example: MenuApp.zip

          Click: browse to view the example code.

          -
          Description

          This example builds on the minimal UI -application by adding a menu bar and menu pane. The menu bar is defined in -a resource file, and the menu pane is populated dynamically in the app UI's DynInitMenuPaneL() function. -The menu pane contains a list of all applications present on the device. If -a menu item is selected by the user, the corresponding application is launched.

          The -menu application displays a list of applications on the menu pane:

          - +MenuApp: An Application with a Menu +
          Download

          Click on the following link to +download the example: MenuApp.zip

          Click: browse to view the example code.

          +
          Description

          This example builds on the minimal UI +application by adding a menu bar and menu pane. The menu bar is defined +in a resource file, and the menu pane is populated dynamically in +the app UI's DynInitMenuPaneL() function. The menu +pane contains a list of all applications present on the device. If +a menu item is selected by the user, the corresponding application +is launched.

          The menu application displays a list of applications +on the menu pane:

          +
          -
          Class Summary

          RApaLsSession

          CEikAppUi

          CEikMenuPane

          -
          Application list

          To create the application list, -the app UI first makes a connection to the application architecture server, -using RApaLsSession::Connect(). Then, it requests notification -from the server that the application list is fully populated, using RApaLsSession::RegisterListPopulationCompleteObserver(). -When the request completes, RApaLsSession::GetNextApp() is -called in a loop to get a list of application names and UIDs. This list is -used to populate the menu pane.

          -
          Launching an application

          CEikAppUi::HandleCommandL() handles -commands based on a command ID. The EEikCmdExit command ID -is generated by the Close menu option, and HandleCommandL() responds -to it by exiting the application. The other possible command IDs are the UIDs -of the applications in the list. This allows CEikAppUi::HandleCommandL() to -launch applications based on the command ID.

          An application is launched -by getting the executable name (using RApaLsSession::GetAppInfo()), -creating a command line (CApaCommandLine) containing the -executable name, and passing this to RApaLsSession::StartApp().

          -
          Build

          The Symbian -build process describes how to build an application.

          The MenuApp example -builds an executable called MenuApp.exe in the standard -location (\epoc32\release\winscw\ <build_variant> for -CodeWarrior). Either launch the executable itself, or launch the emulator -and then select the MenuApp application from the Emulator's -extras bar.

          +
          Class Summary

          RApaLsSession

          CEikAppUi

          CEikMenuPane

          +
          Application list

          To create the application +list, the app UI first makes a connection to the application architecture +server, using RApaLsSession::Connect(). Then, it +requests notification from the server that the application list is +fully populated, using RApaLsSession::RegisterListPopulationCompleteObserver(). When the request completes, RApaLsSession::GetNextApp() is called in a loop to get a list of application names and UIDs. +This list is used to populate the menu pane.

          +
          Launching an application

          CEikAppUi::HandleCommandL() handles commands based on a command ID. The EEikCmdExit command ID is generated by the Close menu option, and HandleCommandL() responds to it +by exiting the application. The other possible command IDs are the +UIDs of the applications in the list. This allows CEikAppUi::HandleCommandL() to launch applications based on the command ID.

          An application +is launched by getting the executable name (using RApaLsSession::GetAppInfo()), creating a command line (CApaCommandLine) containing +the executable name, and passing this to RApaLsSession::StartApp().

          +
          Build

          The Symbian build process describes +how to build an application.

          The MenuApp example builds an executable called MenuApp.exe in the standard location (\epoc32\release\winscw\ <build_variant> for CodeWarrior). Either launch the executable +itself, or launch the emulator and then select the MenuApp application from the Emulator's extras bar.

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1969956D-CDA0-5DA0-ACF8-69AFBBEC1408.dita --- a/Symbian3/PDK/Source/GUID-1969956D-CDA0-5DA0-ACF8-69AFBBEC1408.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1969956D-CDA0-5DA0-ACF8-69AFBBEC1408.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Light APILight API is a library API that provides the ability to control various light targets of the device. It also provides methods to retrieve the current light status and the supported light targets of the device.

          It uses synchronous method calls which block the client application until a response is received from the plug-in. The API consists of CHWRMLight and MHWRMLightObserver classes.

          Light API Interfaces -

          The client creates an instance of CHWRMLight using NewL(). If the client requires status information, it must also provide a callback pointer of the MHWRMLightObserver implementing class for the NewL() method.

          Usually HWRM Light interface supports restoring the previous or default light state (ON/OFF/BLINK). The already supported (reservation controller) functionality in existing HWRM light APIs is extended to restore the previous or default color of the LED as well.

          HWRM also supports automatic reserve and release the targets depends on the client application foreground observer notification through an UI plugin. During these states the light state with color value would be stored and restored automatically. This means if the client application window comes on the foreground then the reserved target’s state will be restored.

          Definitions

          Term

          Description

          Light target

          A separate entity that can be lighted in the device. For example, the primary display of the device is a light target.

          Lights frozen state

          Whenever lights are released, their current state is stored as frozen state. On next reserve, the user can specify that frozen state be restored.

          Lights default state

          Lights default state is determined by device inactivity time and relevant general settings.

          Lights base state

          It is the state of the light target set for infinite duration (after all the time-based operation is completed).

          Light API Tutorial
          \ No newline at end of file +

          The client creates an instance of CHWRMLight using NewL(). If the client requires status information, it must also provide a callback pointer of the MHWRMLightObserver implementing class for the NewL() method.

          Usually HWRM Light interface supports restoring the previous or default light state (ON/OFF/BLINK). The already supported (reservation controller) functionality in existing HWRM light APIs is extended to restore the previous or default color of the LED as well.

          HWRM also supports automatic reserve and release the targets depends on the client application foreground observer notification through an UI plugin. During these states the light state with color value would be stored and restored automatically. This means if the client application window comes on the foreground then the reserved target’s state will be restored.

          Definitions

          Term

          Description

          Light target

          A separate entity that can be lighted in the device. For example, the primary display of the device is a light target.

          Lights frozen state

          Whenever lights are released, their current state is stored as frozen state. On next reserve, the user can specify that frozen state be restored.

          Lights default state

          Lights default state is determined by device inactivity time and relevant general settings.

          Lights base state

          It is the state of the light target set for infinite duration (after all the time-based operation is completed).

          Light API Tutorial \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-198A417F-EA4D-58A0-A928-A78FCE1BB772-GENID-1-12-1-24-1-1-8-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-198A417F-EA4D-58A0-A928-A78FCE1BB772-GENID-1-12-1-24-1-1-8-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,15 @@ + + + + + +Network SecurityNetwork Security is the set of components that provide security +protocols for an IP connection. +

          The set of components includes IPSec, SSL, and TLS.

          +
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-198A417F-EA4D-58A0-A928-A78FCE1BB772-GENID-1-12-1-24-1-1-8-1-5-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-198A417F-EA4D-58A0-A928-A78FCE1BB772-GENID-1-12-1-24-1-1-8-1-5-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,15 @@ + + + + + +Network SecurityNetwork Security is the set of components that provide security +protocols for an IP connection. +

          The set of components includes IPSec, SSL, and TLS.

          +
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-198A417F-EA4D-58A0-A928-A78FCE1BB772-GENID-1-12-1-24-1-1-9-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-198A417F-EA4D-58A0-A928-A78FCE1BB772-GENID-1-12-1-24-1-1-9-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,15 @@ + + + + + +Network SecurityNetwork Security is the set of components that provide security +protocols for an IP connection. +

          The set of components includes IPSec, SSL, and TLS.

          +
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-198DCEE2-5089-5D0C-83CE-E1CDC2AD3196_d0e230910_href.png Binary file Symbian3/PDK/Source/GUID-198DCEE2-5089-5D0C-83CE-E1CDC2AD3196_d0e230910_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-198DCEE2-5089-5D0C-83CE-E1CDC2AD3196_d0e236905_href.png Binary file Symbian3/PDK/Source/GUID-198DCEE2-5089-5D0C-83CE-E1CDC2AD3196_d0e236905_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-19B2E0BF-9766-55C6-A37F-188A9EDAFF39_d0e479166_href.png Binary file Symbian3/PDK/Source/GUID-19B2E0BF-9766-55C6-A37F-188A9EDAFF39_d0e479166_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-19B2E0BF-9766-55C6-A37F-188A9EDAFF39_d0e484995_href.png Binary file Symbian3/PDK/Source/GUID-19B2E0BF-9766-55C6-A37F-188A9EDAFF39_d0e484995_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-19C3DA8C-0128-5172-B859-4FD6F6197451.dita --- a/Symbian3/PDK/Source/GUID-19C3DA8C-0128-5172-B859-4FD6F6197451.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-19C3DA8C-0128-5172-B859-4FD6F6197451.dita Fri Jul 16 17:23:46 2010 +0100 @@ -73,7 +73,7 @@

          The following diagram provides an overview of the TDisplayConfiguration hierarchy.

          The display configuration hierarchy - +
          Dynamic Resolution diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-19E070EA-13C2-5A0C-9DF8-EC2E7BBC4F96.dita --- a/Symbian3/PDK/Source/GUID-19E070EA-13C2-5A0C-9DF8-EC2E7BBC4F96.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-19E070EA-13C2-5A0C-9DF8-EC2E7BBC4F96.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Network Adaptation OverviewThe Network Adaptation collection contains Protocol Module ECOM plug-ins that can be loaded by the Network Gateway to support location based services privacy requests and location requests.
          Purpose

          The LBS Network Gateway must load at least one Protocol Module plug-in. A plug-in may be developed by a device creator, or it may be one provided by Symbian as part of this collection.

          Architecture

          Figure 1 shows this collection within the context of the LBS system model.

          Figure 1. Network Adaptation collection in the LBS system model. -
          Description

          A Protocol Module is loaded by the Network Gateway to allow it to process location based services privacy requests and location requests using a specific protocol.

          A Protocol Module implements the Network Protocol Module API of the Network Gateway.

          Components

          The Network Adaptation collection contains the following components:

          • SUPL Protocol Module (SPM)

            The Symbian SUPL Protocol Module supports the OMA SUPL v1.0 architecture. The SPM can be used by device creators to configure a phone as a SUPL Enabled Terminal (SET). The SPM may be customised and extended by a device creator.

          • Privacy Protocol Module (PPM)

            The Privacy Protocol Module gives device creators the ability to send privacy requests to the LBS subsystem from a process running on the device in the domestic OS.

            The PPM is intended for use by device creators who want to receive both privacy and location requests in the domestic OS. The privacy requests are forwarded to the LBS subsystem via the PPM for processing. Location requests cannot be sent to LBS via the PPM.

          • Network Protocol Module

            This is a component used for internal testing of the Symbian platform LBS subsystem by Symbian.

          Symbian does not provide a Protocol Module to support a location based services control plane architecture. A device creator must develop their own Protocol Module to support a control plane architecture. The SUPL Protocol Module supports the SUPL v1.0 user plane architecture.

          Using the Network Adaptation collection

          The LBS subsystem must be configured to load Protocol Modules. The LBS Integration and Configuration Guide describes how a device creator configures LBS, including how to specify the UIDs of the Protocol Modules to load.

          For details of how to use the SPM and the PPM follow the links to the relevant documentation:

          • SUPL Protocol Module

          • Privacy Protocol Module

          Network +
      Description

      A Protocol Module is loaded by the Network Gateway to allow it to process location based services privacy requests and location requests using a specific protocol.

      A Protocol Module implements the Network Protocol Module API of the Network Gateway.

      Components

      The Network Adaptation collection contains the following components:

      • SUPL Protocol Module (SPM)

        The Symbian SUPL Protocol Module supports the OMA SUPL v1.0 architecture. The SPM can be used by device creators to configure a phone as a SUPL Enabled Terminal (SET). The SPM may be customised and extended by a device creator.

      • Privacy Protocol Module (PPM)

        The Privacy Protocol Module gives device creators the ability to send privacy requests to the LBS subsystem from a process running on the device in the domestic OS.

        The PPM is intended for use by device creators who want to receive both privacy and location requests in the domestic OS. The privacy requests are forwarded to the LBS subsystem via the PPM for processing. Location requests cannot be sent to LBS via the PPM.

      • Network Protocol Module

        This is a component used for internal testing of the Symbian platform LBS subsystem by Symbian.

      Symbian does not provide a Protocol Module to support a location based services control plane architecture. A device creator must develop their own Protocol Module to support a control plane architecture. The SUPL Protocol Module supports the SUPL v1.0 user plane architecture.

      Using the Network Adaptation collection

      The LBS subsystem must be configured to load Protocol Modules. The LBS Integration and Configuration Guide describes how a device creator configures LBS, including how to specify the UIDs of the Protocol Modules to load.

      For details of how to use the SPM and the PPM follow the links to the relevant documentation:

      • SUPL Protocol Module

      • Privacy Protocol Module

      Network Gateway SUPL Protocol Module Privacy Protocol Module
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-19E5720A-2B50-4515-AE90-A40C1BEDF4BA_d0e88498_href.png Binary file Symbian3/PDK/Source/GUID-19E5720A-2B50-4515-AE90-A40C1BEDF4BA_d0e88498_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-19E5720A-2B50-4515-AE90-A40C1BEDF4BA_d0e92696_href.png Binary file Symbian3/PDK/Source/GUID-19E5720A-2B50-4515-AE90-A40C1BEDF4BA_d0e92696_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1A02B1FB-FDE3-565B-8E52-0F7FD3AC5188_d0e263892_href.png Binary file Symbian3/PDK/Source/GUID-1A02B1FB-FDE3-565B-8E52-0F7FD3AC5188_d0e263892_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1A02B1FB-FDE3-565B-8E52-0F7FD3AC5188_d0e269892_href.png Binary file Symbian3/PDK/Source/GUID-1A02B1FB-FDE3-565B-8E52-0F7FD3AC5188_d0e269892_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1A0FB98B-8DB3-5067-9B71-FF838F6AE402_d0e239367_href.png Binary file Symbian3/PDK/Source/GUID-1A0FB98B-8DB3-5067-9B71-FF838F6AE402_d0e239367_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1A0FB98B-8DB3-5067-9B71-FF838F6AE402_d0e241047_href.png Binary file Symbian3/PDK/Source/GUID-1A0FB98B-8DB3-5067-9B71-FF838F6AE402_d0e241047_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1A0FB98B-8DB3-5067-9B71-FF838F6AE402_d0e245362_href.png Binary file Symbian3/PDK/Source/GUID-1A0FB98B-8DB3-5067-9B71-FF838F6AE402_d0e245362_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1A0FB98B-8DB3-5067-9B71-FF838F6AE402_d0e247058_href.png Binary file Symbian3/PDK/Source/GUID-1A0FB98B-8DB3-5067-9B71-FF838F6AE402_d0e247058_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1A3E282E-ACC0-5F88-A759-3ED6106B02B4.dita --- a/Symbian3/PDK/Source/GUID-1A3E282E-ACC0-5F88-A759-3ED6106B02B4.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -win32_library

      win32_library filename-list

      Use win32_library to specify Win32 libraries in the same way that other libraries are specified with the library statement.

      If any Win32 system libraries are specified, directories specified by the INCLUDE environmental variable will be searched for system-included header files that are not found in the system include paths specified for the project.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1A488C86-C0D7-49DE-A32B-6AFEDDC9E89F_d0e103032_href.png Binary file Symbian3/PDK/Source/GUID-1A488C86-C0D7-49DE-A32B-6AFEDDC9E89F_d0e103032_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1A488C86-C0D7-49DE-A32B-6AFEDDC9E89F_d0e98952_href.png Binary file Symbian3/PDK/Source/GUID-1A488C86-C0D7-49DE-A32B-6AFEDDC9E89F_d0e98952_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1A5C7320-B017-5CD9-B3EA-1301CC08A762.dita --- a/Symbian3/PDK/Source/GUID-1A5C7320-B017-5CD9-B3EA-1301CC08A762.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1A5C7320-B017-5CD9-B3EA-1301CC08A762.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,8 +11,8 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> User Prompt Service Overview

      User Prompt Service (UPS) allows device creators to specify whether requests made by applications to access services, such as a request to make a telephone call, are processed silently or whether they require the user to be prompted.

      Purpose

      An application requests a service. The service provider (a system server) requests a decision from the UPS. The UPS searches for a matching policy file and policy. Based on the policy for the service, the service request may be immediately accepted or denied or it may need to receive a decision from the user, in which case it is accepted or denied after several further steps are carried out.

      Device creators can customize the circumstances under which prompts are generated by configuring policies. Policies are made up of details about the service being requested as well as information about whether to accept or deny silently or to ask the user. They are defined in policy lists. Each service has one policy list defining any number of policies. In cases where the policy specifies that a user prompt is required, ECom plug-ins called Policy Evaluators and Dialog Creators, written by device creators.

      Key concepts

      The component has the following key concepts:

      Policy

      Policies specify whether application requests to access services should be processed silently or whether the user should be prompted for a decision. Policies may be general or specific – for example a policy may be specific to a single application, a group of applications or a class of applications (For example, those with unprotected secure ids). Policies are defined in policy lists. Device creators define policies.

      UPS policy file

      A UPS policy file is a compiled resource file containing all of the policies for a given service. The policies are ordered from most specific to least specific.

      Because policies are matched in order, each service may have only one policy file. To define a policy safely, you need to know which other policies have been defined. If you place a general policy near the beginning of the list of policies, you prevent other policies from being evaluated.

      Policy evaluator

      Policy evaluators are Ecom plug-ins, which are responsible for generating fingerprints (see below) used to locate previous decision records related to the request. Device creators define policy evaluators.

      Dialog creator

      Dialog creators are Ecom plug-ins, which display and generate dialog prompts. Device creators define dialog creators.

      Fingerprint

      A fingerprint is a collection of data to do with the service being requested. The fingerprint usually includes the destination string supplied by the service that is matched to the destination string of a policy in the policy file. It might be a phone number, domain name, access point etc. A fingerprint is used to search the decision database for a match and to add a record to the decision database if a match was not found in the initial search. Device creators define the GenerateFingerprints() function in the Policy Evaluator plug-in.

      A fingerprint serves two purposes:

      • The UPS uses it to search the decision database for a match.

      • If the UPS finds no record of a previous user decision and the user selects "always" or "never" in response to the UPS prompt, it uses the fingerprint to create a new record in the decision database.

      It is possible to specify one or many policy evaluators. It is also possible not to specify a policy evaluator and to depend on the default policy evaluator.

      Decision database

      A decision database stores the phone user's choice of whether a request is always granted or never granted. Decisions stored in the decision database persist across reboots of the device. The decision database is provided by Symbian.

      The decision database may not be accessed directly. However, records may be retrieved and deleted via the management APIs. This might be used by a control-panel application.

      Architectural relationships

      The UPS provides CDialogCreator and CPolicyEvaluator interfaces for device creators to implement.

      UPS components -
      API summary

      The following diagram shows the relationships between some of the key classes in the UPS.

      +
      API summary

      The following diagram shows the relationships between some of the key classes in the UPS.

      Class diagram of key classes in UPS - Class Name Description

      UserPromptService::CClientEntity

      Class representing an entity executing within a client process. For example, a script.

      UserPromptService::CDialogCreator

      Abstract base class for dialog creator Ecom plug-ins. Dialog creators are responsible for generating and displaying prompt dialogs.

      UserPromptService::CFingerprint

      Class that represents the fingerprint data for a stored decision.

      UserPromptService::CPolicy

      Class for a single policy record.

      UserPromptService::CPolicyEvaluator

      Abstract base class for a policy evaluator Ecom plug-in. Policy evaluators are primarily responsible for generating the fingerprints used to locate previous decision records related to the current request.

      Typical uses

      The following diagram shows the sequence of activities performed by the UPS after it receives a request from a server:

      + Class Name Description

      UserPromptService::CClientEntity

      Class representing an entity executing within a client process. For example, a script.

      UserPromptService::CDialogCreator

      Abstract base class for dialog creator Ecom plug-ins. Dialog creators are responsible for generating and displaying prompt dialogs.

      UserPromptService::CFingerprint

      Class that represents the fingerprint data for a stored decision.

      UserPromptService::CPolicy

      Class for a single policy record.

      UserPromptService::CPolicyEvaluator

      Abstract base class for a policy evaluator Ecom plug-in. Policy evaluators are primarily responsible for generating the fingerprints used to locate previous decision records related to the current request.

      Typical uses

      The following diagram shows the sequence of activities performed by the UPS after it receives a request from a server:

      Diagram showing activities for a single request -

      As is shown in the above diagram, the UPS returns a decision to the system server as in the following use cases:

      • processing silently

      • finding a stored decision in the decision database

      • prompting the user in a dialog and resulting in a "one-shot" or "session" (non-persistent) decision by the user

      • prompting the user in a dialog and resulting in an "always" or "never" (persistent) decision by the user

      The Policy Evaluator allows device creators to customize the behaviour of the UPS at run-time. Policy Evaluators may:

      • Allow security decisions to be specific to the data on which the service acts instead of simply granting full access to the service, for example "Allow application X to send SMS messages to 01234567". This is supported via the fingerprint functionality.

      • Allow a security decision to be specific to an individual script executing within a scripting host. This is supported via the client entity field.

      • Allow a prompt to be displayed even if the user selected "Always" or "Never". This could be based on a usage threshold or simply as additional confirmation if the user selected "Never". This is supported via the force prompt functionality.

      Typical uses

      The UPS component provides interfaces to perform the following tasks:

      • Integrating a System Server with UPS

      • Writing a UPS Policy File

      • Writing a UPS Policy Evaluator

      • Writing a UPS Dialog Creator

      • Using UPS management APIs

      • Example code at \sf\os\security\authorisation\userpromptservice\examples\ location.

      See also

      For related information, see UPS Configuration.

      \ No newline at end of file +

      As is shown in the above diagram, the UPS returns a decision to the system server as in the following use cases:

      • processing silently

      • finding a stored decision in the decision database

      • prompting the user in a dialog and resulting in a "one-shot" or "session" (non-persistent) decision by the user

      • prompting the user in a dialog and resulting in an "always" or "never" (persistent) decision by the user

      The Policy Evaluator allows device creators to customize the behaviour of the UPS at run-time. Policy Evaluators may:

      • Allow security decisions to be specific to the data on which the service acts instead of simply granting full access to the service, for example "Allow application X to send SMS messages to 01234567". This is supported via the fingerprint functionality.

      • Allow a security decision to be specific to an individual script executing within a scripting host. This is supported via the client entity field.

      • Allow a prompt to be displayed even if the user selected "Always" or "Never". This could be based on a usage threshold or simply as additional confirmation if the user selected "Never". This is supported via the force prompt functionality.

      Typical uses

      The UPS component provides interfaces to perform the following tasks:

      • Integrating a System Server with UPS

      • Writing a UPS Policy File

      • Writing a UPS Policy Evaluator

      • Writing a UPS Dialog Creator

      • Using UPS management APIs

      • Example code at \sf\os\security\authorisation\userpromptservice\examples\ location.

      See also

      For related information, see UPS Configuration.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1A7183EC-B55E-5B61-8965-89C939ECB395_d0e342102_href.png Binary file Symbian3/PDK/Source/GUID-1A7183EC-B55E-5B61-8965-89C939ECB395_d0e342102_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1A7183EC-B55E-5B61-8965-89C939ECB395_d0e348053_href.png Binary file Symbian3/PDK/Source/GUID-1A7183EC-B55E-5B61-8965-89C939ECB395_d0e348053_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1A8ED0EB-B3B7-553F-95E3-2120D877966B.dita --- a/Symbian3/PDK/Source/GUID-1A8ED0EB-B3B7-553F-95E3-2120D877966B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1A8ED0EB-B3B7-553F-95E3-2120D877966B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,5 +11,5 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> OpenVG Collection OverviewOpenVG is a royalty-free, cross-platform API that provides a low-level hardware acceleration interface for vector graphics libraries such as Flash and SVG. OpenVG is targeted primarily at handheld devices that require portable acceleration of high-quality vector graphics for user interfaces and text on small screen devices—while enabling hardware acceleration to provide fluidly interactive performance at very low power levels.

      Variant: ScreenPlay and non-ScreenPlay.

      OpenVG is an open standard developed by the Khronos Group (www.khronos.org). OpenVG features include:

      • Coordinate systems and transformations (image drawing uses a 3x3 perspective transformation matrix)

      • Viewport clipping, scissoring and alpha masking

      • Paths

      • Images and image filters

      • Paint (gradient and pattern)

      • Blending.

      In addition, the associated VGU utility library provides features such as higher-level geometric primitives and image warping.

      Architecture

      OpenVG only defines rendering functionality and therefore cannot be used in isolation. It requires EGL to establish an environment in which OpenVG can be used. For example, EGL tells OpenVG where its rendered output should go. OpenVG depends on a standalone implementation of EGL.

      The following diagram shows the direct use of OpenVG by an application through the public OpenVG interface together with EGL. On the Symbian platform, both OpenVG and EGL have a component (shown in blue) that declares the interface, and both require an implementation that implements that interface (shown in green).

      OpenVG external relationships -

      It is possible for the OpenVG and EGL implementations to communicate through a private interface that is not standardized by Symbian.

      The OpenVG Interface provides a consistent interface to OpenVG on the Symbian platform, enabling cross-device compatibility. The component includes the Khronos-released header files (which incorporate some minor changes, such as to the comments). It also provides some Symbian-specific header files and some other files (such as LIB, DEF and MMP files) and UIDs. It does not provide any implementations of the APIs.

      Description

      OpenVG is designed to be the primary 2D and vector graphics API for use by mobile devices. By providing a consistent interface to OpenVG, the Symbian platform allows OpenVG applications and middleware (such as an SVG engine) to automatically benefit from hardware acceleration when it is present without losing compatibility when it is not available. In addition device and hardware manufacturers benefit from a standard Hardware Adaptation Interface (HAI) to plug into. This means that OpenVG has the potential to provide end users with improved quality and responsiveness of graphics features.

      OpenVG Collection EGL +

      It is possible for the OpenVG and EGL implementations to communicate through a private interface that is not standardized by Symbian.

      The OpenVG Interface provides a consistent interface to OpenVG on the Symbian platform, enabling cross-device compatibility. The component includes the Khronos-released header files (which incorporate some minor changes, such as to the comments). It also provides some Symbian-specific header files and some other files (such as LIB, DEF and MMP files) and UIDs. It does not provide any implementations of the APIs.

      Description

      OpenVG is designed to be the primary 2D and vector graphics API for use by mobile devices. By providing a consistent interface to OpenVG, the Symbian platform allows OpenVG applications and middleware (such as an SVG engine) to automatically benefit from hardware acceleration when it is present without losing compatibility when it is not available. In addition device and hardware manufacturers benefit from a standard Hardware Adaptation Interface (HAI) to plug into. This means that OpenVG has the potential to provide end users with improved quality and responsiveness of graphics features.

      OpenVG Collection EGL Collection
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1A905563-EF60-4A01-BC55-5B35904F96AB_d0e91585_href.png Binary file Symbian3/PDK/Source/GUID-1A905563-EF60-4A01-BC55-5B35904F96AB_d0e91585_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1A905563-EF60-4A01-BC55-5B35904F96AB_d0e95783_href.png Binary file Symbian3/PDK/Source/GUID-1A905563-EF60-4A01-BC55-5B35904F96AB_d0e95783_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1A92047A-3C1D-5B4C-949B-98D770F5F530_d0e409012_href.png Binary file Symbian3/PDK/Source/GUID-1A92047A-3C1D-5B4C-949B-98D770F5F530_d0e409012_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1A92047A-3C1D-5B4C-949B-98D770F5F530_d0e414865_href.png Binary file Symbian3/PDK/Source/GUID-1A92047A-3C1D-5B4C-949B-98D770F5F530_d0e414865_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1A9BA6A1-C6BB-5196-B2D8-355A78B79AE3.dita --- a/Symbian3/PDK/Source/GUID-1A9BA6A1-C6BB-5196-B2D8-355A78B79AE3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1A9BA6A1-C6BB-5196-B2D8-355A78B79AE3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Simulation PSY OverviewThe Simulation Positioning PSY enables application developers and device creators to test Location Based Services enabled applications by providing simulated position updates without the need for a real GPS module or network connection.

      This document is for application developers and device creators.

      Purpose

      When creating an application or developing a mobile device it is useful to have a test PSY that delivers repeatable, defined position data.

      It is also useful to be able to test an application when there is no real GPS data information available because either the application is being tested on a development board, in a Windows emulator environment or inside a building where no GPS signal is available.

      Simulation PSY provides a means to test Location Based Services in any of these situations.

      Required background

      A basic understanding of GPS concepts and the NMEA data standards are useful.

      Key concepts and terms
      GPS

      Global Positioning System

      NMEA

      National Marine Electronics Association.

      In particular NMEA 0183 version 2.1 which defines the electrical signal requirements, data transmission protocol and time, and specific sentence formats for a 4800-baud serial data bus used for interconnecting marine instrumentation including GPS receivers.

      NMEA 0138 defines an ASCII data format that includes geographical position.

      PSY

      Positioning Plug-in

      WGS-84

      World Geodetic System 1984

      Architecture

      Figure 1 shows the Simulation PSY component with associated LBS components.

      Figure 1. Simulation PSY and related components. -
      APIs

      The PSY provides a single API of Central Repository type. See Simulation PSY Settings API for more information.

      Typical uses

      Simulation PSY is used by application developers to test applications. See Simulation PSY User Guide for more information about how to use the PSY.

      Simulation PSY User +
      APIs

      The PSY provides a single API of Central Repository type. See Simulation PSY Settings API for more information.

      Typical uses

      Simulation PSY is used by application developers to test applications. See Simulation PSY User Guide for more information about how to use the PSY.

      Simulation PSY User Guide Simulation PSY Settings API \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1AA32C40-CDE0-4627-A634-7C07BB1ED67B.dita --- a/Symbian3/PDK/Source/GUID-1AA32C40-CDE0-4627-A634-7C07BB1ED67B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1AA32C40-CDE0-4627-A634-7C07BB1ED67B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -34,7 +34,7 @@ The form then returns to the View state.

      An example form - +

      The following table lists the default touch events for forms:

      Default diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1AA392CB-F638-5D35-993E-4A26D67A7C98-GENID-1-12-1-26-1-1-11-1-1-3-1-4-1-5-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-1AA392CB-F638-5D35-993E-4A26D67A7C98-GENID-1-12-1-26-1-1-11-1-1-3-1-4-1-5-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,147 @@ +<?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-1AA392CB-F638-5D35-993E-4A26D67A7C98-GENID-1-12-1-26-1-1-11-1-1-3-1-4-1-5-1" xml:lang="en"><title>How +to retrieve characteristics +

      The following example demonstrates the use of the legacy selector to retrieve +the characteristics of an asymmetric cipher object. In the example, an implementation +object is constructed (making use of an RSA Key Pair also generated by the +framework) and returned. The plug-in characteristics and extended characteristics +associated with the object are then accessed.

      +#include <cryptoasymmetriccipherapi.h> +#include <cryptokeypairgeneratorapi.h> +#include <cryptospidef.h> +#include <plugincharacteristics.h> +#include <extendedcharacteristics.h> +#include <keypair.h> + +// Constant definition for the RSA key pair generator exponent value +const TInt KKeyExponent = 65537; + +using namespace CryptoSpi; + +// Create a new CCryptoParams instance to contain the RSA Key Pair initialization data +CCryptoParams* keyParams = CCryptoParams::NewLC(); + +// Create an RSA Key Pair and Key Pair Generator object pointers +CKeyPair* keyPair = NULL; +CKeyPairGenerator * keypairImpl = NULL; + +// Set the RSA Key Pair Generator initialization parameters reate an RSA key pair +keyParams->AddL(KKeyExponent, KRsaKeyParameterEUid); +keyParams->AddL(KRsaPrivateKeyStandard, KRsaKeyTypeUid); + +// Retrieve an instance of an RSA Key Pair Generator implementation from the framework +CKeyPairGeneratorFactory::CreateKeyPairGeneratorL( keypairImpl, + KRSAKeyPairGeneratorUid, + keyParams); + +CleanupStack::PushL(keypairImpl); + +// Create an RSA Key Pair +keypairImpl->GenerateKeyPairL(1024, *keyParams, keyPair); + +CleanupStack::PushL(keyPair); + +// Create and initialize a pointer for the asymmetric cipher implementation object +CAsymmetricCipher* asymmetricCipherImpl = NULL; + +// If successful, the 'CreateAsymmetricCipherL' method returns KErrNone and sets the +// asymmetricCipherImpl pointer to point to the constructed implementation +TRAPD(err, CAsymmetricCipherFactory::CreateAsymmetricCipherL(asymmetricCipherImpl, + KRsaCipherUid, + keyPair->PrivateKey(), + KCryptoModeEncryptUid, + KPaddingModeNoneUid, + NULL)); + +// Having successfully constructed the asymmetric cipher implementation object, +// it is possible to retrieve the plug-in characteristics associated with it +if (asymmetricCipherImpl && (err == KErrNone)) + { + CleanupStack::PushL(asymmetricCipherImpl); + + // Retrieving common and algorithm-specific characteristics + // Create a constant pointer of type TCharacteristics used to access the + // asymmetric cipher plug-in's common and algorithm-specific characteristics + const TCharacteristics* chars(NULL); + + // Retrieve the common and algorithm-specific characteristics by calling the + // 'GetCharacteristicsL' method passing in TCharacteristics pointer + asymmetricCipherImpl->GetCharacteristicsL(chars); + + // Static cast the characteristics to type TAsymmetricCipherCharacteristics + const TAsymmetricCipherCharacteristics* asymmetricChars = + static_cast<const TAsymmetricCipherCharacteristics*>(chars); + + // Retrieve the common characteristics from the TASymmetricCipherCharacteristics + // object + const TCommonCharacteristics* asymmetricCommonChars = &asymmetricChars->cmn; + + TUid implementationId; + TBool hardwareSupported; + TRomLitC16 creatorName; + TInt maximumKeyLength; + TInt32 supportedPaddingModes; + + // Example of extracting asymmetric common characteristics + implementationId.iUid = asymmetricCommonChars->iImplementationUID; + hardwareSupported = asymmetricCommonChars->iIsHardwareSupported; + creatorName = *(asymmetricCommonChars->iCreatorName); + + // Example of extracting asymmetric algorithm specific characteristics + maximumKeyLength = asymmetricChars->iMaximumKeyLength; + supportedPaddingModes = *(asymmetricChars->iSupportedPaddingModes); + + //Retrieving extended characteristics + + // Create a constant pointer of type CExtendedCharacteristics used to store and + // access the asymmetric cipher plug-in extended characteristics. Retrieve + // the data by calling the 'GetExtendedCharacteristicsL' method and store the + // returned pointer + const CExtendedCharacteristics* extendedChars = + asymmetricCipherImpl->GetExtendedCharacteristicsL(); + + // Const casting the pointer to the CExtendedCharacteristics object allows it to + // be pushed onto the cleanup stack + CExtendedCharacteristics* ncExtendedChars = + const_cast<CExtendedCharacteristics*>(extendedChars); + CleanupStack::PushL(ncExtendedChars); + + TInt concurrency; + + // Each of the extended characteristics for the particular cryptographic + // implementation can then be accessed by passing the UID value into the + // appropriate 'Get' method + concurrency = extendedChars->GetTIntCharacteristicL(KConcurrencyTypeUid); + // Alternatively, extended characteristic retrieval can be achieved via the + // ListExtendedCharacteristics() method of the CExtendedCharacteristics Object. + // Using the 'ListExtendedCharacteristics' function returns a pointer to a + // CCryptoParams object, that contains a list of all associated extended + // characteristics + const CCryptoParams* extendedCryptoParams = + extendedChars->ListExtendedCharacteristics(); + + TBool exclusiveUse; + + // The extended characteristics can then be accessed in much the same way as + // before, making a call to the appropriate 'Get' method with the UID value of the + // required type + exclusiveUse = extendedCryptoParams->GetTIntL(KExclusiveUseTypeUid); + + CleanupStack::PopAndDestroy(2, asymmetricCipherImpl); + } + +// Pop and destroy the remaining items on the cleanup stack +CleanupStack::PopAndDestroy(3,keyParams); + + +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1AA392CB-F638-5D35-993E-4A26D67A7C98-GENID-1-12-1-26-1-1-9-1-5-1-8-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-1AA392CB-F638-5D35-993E-4A26D67A7C98-GENID-1-12-1-26-1-1-9-1-5-1-8-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,147 @@ + + + + + +How +to retrieve characteristics +

      The following example demonstrates the use of the legacy selector to retrieve +the characteristics of an asymmetric cipher object. In the example, an implementation +object is constructed (making use of an RSA Key Pair also generated by the +framework) and returned. The plug-in characteristics and extended characteristics +associated with the object are then accessed.

      +#include <cryptoasymmetriccipherapi.h> +#include <cryptokeypairgeneratorapi.h> +#include <cryptospidef.h> +#include <plugincharacteristics.h> +#include <extendedcharacteristics.h> +#include <keypair.h> + +// Constant definition for the RSA key pair generator exponent value +const TInt KKeyExponent = 65537; + +using namespace CryptoSpi; + +// Create a new CCryptoParams instance to contain the RSA Key Pair initialization data +CCryptoParams* keyParams = CCryptoParams::NewLC(); + +// Create an RSA Key Pair and Key Pair Generator object pointers +CKeyPair* keyPair = NULL; +CKeyPairGenerator * keypairImpl = NULL; + +// Set the RSA Key Pair Generator initialization parameters reate an RSA key pair +keyParams->AddL(KKeyExponent, KRsaKeyParameterEUid); +keyParams->AddL(KRsaPrivateKeyStandard, KRsaKeyTypeUid); + +// Retrieve an instance of an RSA Key Pair Generator implementation from the framework +CKeyPairGeneratorFactory::CreateKeyPairGeneratorL( keypairImpl, + KRSAKeyPairGeneratorUid, + keyParams); + +CleanupStack::PushL(keypairImpl); + +// Create an RSA Key Pair +keypairImpl->GenerateKeyPairL(1024, *keyParams, keyPair); + +CleanupStack::PushL(keyPair); + +// Create and initialize a pointer for the asymmetric cipher implementation object +CAsymmetricCipher* asymmetricCipherImpl = NULL; + +// If successful, the 'CreateAsymmetricCipherL' method returns KErrNone and sets the +// asymmetricCipherImpl pointer to point to the constructed implementation +TRAPD(err, CAsymmetricCipherFactory::CreateAsymmetricCipherL(asymmetricCipherImpl, + KRsaCipherUid, + keyPair->PrivateKey(), + KCryptoModeEncryptUid, + KPaddingModeNoneUid, + NULL)); + +// Having successfully constructed the asymmetric cipher implementation object, +// it is possible to retrieve the plug-in characteristics associated with it +if (asymmetricCipherImpl && (err == KErrNone)) + { + CleanupStack::PushL(asymmetricCipherImpl); + + // Retrieving common and algorithm-specific characteristics + // Create a constant pointer of type TCharacteristics used to access the + // asymmetric cipher plug-in's common and algorithm-specific characteristics + const TCharacteristics* chars(NULL); + + // Retrieve the common and algorithm-specific characteristics by calling the + // 'GetCharacteristicsL' method passing in TCharacteristics pointer + asymmetricCipherImpl->GetCharacteristicsL(chars); + + // Static cast the characteristics to type TAsymmetricCipherCharacteristics + const TAsymmetricCipherCharacteristics* asymmetricChars = + static_cast<const TAsymmetricCipherCharacteristics*>(chars); + + // Retrieve the common characteristics from the TASymmetricCipherCharacteristics + // object + const TCommonCharacteristics* asymmetricCommonChars = &asymmetricChars->cmn; + + TUid implementationId; + TBool hardwareSupported; + TRomLitC16 creatorName; + TInt maximumKeyLength; + TInt32 supportedPaddingModes; + + // Example of extracting asymmetric common characteristics + implementationId.iUid = asymmetricCommonChars->iImplementationUID; + hardwareSupported = asymmetricCommonChars->iIsHardwareSupported; + creatorName = *(asymmetricCommonChars->iCreatorName); + + // Example of extracting asymmetric algorithm specific characteristics + maximumKeyLength = asymmetricChars->iMaximumKeyLength; + supportedPaddingModes = *(asymmetricChars->iSupportedPaddingModes); + + //Retrieving extended characteristics + + // Create a constant pointer of type CExtendedCharacteristics used to store and + // access the asymmetric cipher plug-in extended characteristics. Retrieve + // the data by calling the 'GetExtendedCharacteristicsL' method and store the + // returned pointer + const CExtendedCharacteristics* extendedChars = + asymmetricCipherImpl->GetExtendedCharacteristicsL(); + + // Const casting the pointer to the CExtendedCharacteristics object allows it to + // be pushed onto the cleanup stack + CExtendedCharacteristics* ncExtendedChars = + const_cast<CExtendedCharacteristics*>(extendedChars); + CleanupStack::PushL(ncExtendedChars); + + TInt concurrency; + + // Each of the extended characteristics for the particular cryptographic + // implementation can then be accessed by passing the UID value into the + // appropriate 'Get' method + concurrency = extendedChars->GetTIntCharacteristicL(KConcurrencyTypeUid); + // Alternatively, extended characteristic retrieval can be achieved via the + // ListExtendedCharacteristics() method of the CExtendedCharacteristics Object. + // Using the 'ListExtendedCharacteristics' function returns a pointer to a + // CCryptoParams object, that contains a list of all associated extended + // characteristics + const CCryptoParams* extendedCryptoParams = + extendedChars->ListExtendedCharacteristics(); + + TBool exclusiveUse; + + // The extended characteristics can then be accessed in much the same way as + // before, making a call to the appropriate 'Get' method with the UID value of the + // required type + exclusiveUse = extendedCryptoParams->GetTIntL(KExclusiveUseTypeUid); + + CleanupStack::PopAndDestroy(2, asymmetricCipherImpl); + } + +// Pop and destroy the remaining items on the cleanup stack +CleanupStack::PopAndDestroy(3,keyParams); + + +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1AA392CB-F638-5D35-993E-4A26D67A7C98.dita --- a/Symbian3/PDK/Source/GUID-1AA392CB-F638-5D35-993E-4A26D67A7C98.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,147 +0,0 @@ - - - - - -How -to retrieve characteristics -

      The following example demonstrates the use of the legacy selector to retrieve -the characteristics of an asymmetric cipher object. In the example, an implementation -object is constructed (making use of an RSA Key Pair also generated by the -framework) and returned. The plug-in characteristics and extended characteristics -associated with the object are then accessed.

      -#include <cryptoasymmetriccipherapi.h> -#include <cryptokeypairgeneratorapi.h> -#include <cryptospidef.h> -#include <plugincharacteristics.h> -#include <extendedcharacteristics.h> -#include <keypair.h> - -// Constant definition for the RSA key pair generator exponent value -const TInt KKeyExponent = 65537; - -using namespace CryptoSpi; - -// Create a new CCryptoParams instance to contain the RSA Key Pair initialization data -CCryptoParams* keyParams = CCryptoParams::NewLC(); - -// Create an RSA Key Pair and Key Pair Generator object pointers -CKeyPair* keyPair = NULL; -CKeyPairGenerator * keypairImpl = NULL; - -// Set the RSA Key Pair Generator initialization parameters reate an RSA key pair -keyParams->AddL(KKeyExponent, KRsaKeyParameterEUid); -keyParams->AddL(KRsaPrivateKeyStandard, KRsaKeyTypeUid); - -// Retrieve an instance of an RSA Key Pair Generator implementation from the framework -CKeyPairGeneratorFactory::CreateKeyPairGeneratorL( keypairImpl, - KRSAKeyPairGeneratorUid, - keyParams); - -CleanupStack::PushL(keypairImpl); - -// Create an RSA Key Pair -keypairImpl->GenerateKeyPairL(1024, *keyParams, keyPair); - -CleanupStack::PushL(keyPair); - -// Create and initialize a pointer for the asymmetric cipher implementation object -CAsymmetricCipher* asymmetricCipherImpl = NULL; - -// If successful, the 'CreateAsymmetricCipherL' method returns KErrNone and sets the -// asymmetricCipherImpl pointer to point to the constructed implementation -TRAPD(err, CAsymmetricCipherFactory::CreateAsymmetricCipherL(asymmetricCipherImpl, - KRsaCipherUid, - keyPair->PrivateKey(), - KCryptoModeEncryptUid, - KPaddingModeNoneUid, - NULL)); - -// Having successfully constructed the asymmetric cipher implementation object, -// it is possible to retrieve the plug-in characteristics associated with it -if (asymmetricCipherImpl && (err == KErrNone)) - { - CleanupStack::PushL(asymmetricCipherImpl); - - // Retrieving common and algorithm-specific characteristics - // Create a constant pointer of type TCharacteristics used to access the - // asymmetric cipher plug-in's common and algorithm-specific characteristics - const TCharacteristics* chars(NULL); - - // Retrieve the common and algorithm-specific characteristics by calling the - // 'GetCharacteristicsL' method passing in TCharacteristics pointer - asymmetricCipherImpl->GetCharacteristicsL(chars); - - // Static cast the characteristics to type TAsymmetricCipherCharacteristics - const TAsymmetricCipherCharacteristics* asymmetricChars = - static_cast<const TAsymmetricCipherCharacteristics*>(chars); - - // Retrieve the common characteristics from the TASymmetricCipherCharacteristics - // object - const TCommonCharacteristics* asymmetricCommonChars = &asymmetricChars->cmn; - - TUid implementationId; - TBool hardwareSupported; - TRomLitC16 creatorName; - TInt maximumKeyLength; - TInt32 supportedPaddingModes; - - // Example of extracting asymmetric common characteristics - implementationId.iUid = asymmetricCommonChars->iImplementationUID; - hardwareSupported = asymmetricCommonChars->iIsHardwareSupported; - creatorName = *(asymmetricCommonChars->iCreatorName); - - // Example of extracting asymmetric algorithm specific characteristics - maximumKeyLength = asymmetricChars->iMaximumKeyLength; - supportedPaddingModes = *(asymmetricChars->iSupportedPaddingModes); - - //Retrieving extended characteristics - - // Create a constant pointer of type CExtendedCharacteristics used to store and - // access the asymmetric cipher plug-in extended characteristics. Retrieve - // the data by calling the 'GetExtendedCharacteristicsL' method and store the - // returned pointer - const CExtendedCharacteristics* extendedChars = - asymmetricCipherImpl->GetExtendedCharacteristicsL(); - - // Const casting the pointer to the CExtendedCharacteristics object allows it to - // be pushed onto the cleanup stack - CExtendedCharacteristics* ncExtendedChars = - const_cast<CExtendedCharacteristics*>(extendedChars); - CleanupStack::PushL(ncExtendedChars); - - TInt concurrency; - - // Each of the extended characteristics for the particular cryptographic - // implementation can then be accessed by passing the UID value into the - // appropriate 'Get' method - concurrency = extendedChars->GetTIntCharacteristicL(KConcurrencyTypeUid); - // Alternatively, extended characteristic retrieval can be achieved via the - // ListExtendedCharacteristics() method of the CExtendedCharacteristics Object. - // Using the 'ListExtendedCharacteristics' function returns a pointer to a - // CCryptoParams object, that contains a list of all associated extended - // characteristics - const CCryptoParams* extendedCryptoParams = - extendedChars->ListExtendedCharacteristics(); - - TBool exclusiveUse; - - // The extended characteristics can then be accessed in much the same way as - // before, making a call to the appropriate 'Get' method with the UID value of the - // required type - exclusiveUse = extendedCryptoParams->GetTIntL(KExclusiveUseTypeUid); - - CleanupStack::PopAndDestroy(2, asymmetricCipherImpl); - } - -// Pop and destroy the remaining items on the cleanup stack -CleanupStack::PopAndDestroy(3,keyParams); - - -
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1AAA88BB-19AD-5B8E-993C-11F4B7CD90EB.dita --- a/Symbian3/PDK/Source/GUID-1AAA88BB-19AD-5B8E-993C-11F4B7CD90EB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1AAA88BB-19AD-5B8E-993C-11F4B7CD90EB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -18,7 +18,7 @@ to the Application Architecture (AppArc). AppArc launches the application that best handles the identified data type.

      -

      Symbian OS v9.1 +

      Symbian OS v9.1 and onwards, MIME recognizers are ECOM plug-ins. They are located in \sys\bin\.

      Each MIME recognizer is loaded by the Application diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1AF99DF6-C5BE-5713-940D-5E9FBD43F123.dita --- a/Symbian3/PDK/Source/GUID-1AF99DF6-C5BE-5713-940D-5E9FBD43F123.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1AF99DF6-C5BE-5713-940D-5E9FBD43F123.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,33 +9,31 @@ --> -Animation -example -

      Description

      This example is a UI application, which -demonstrates how to create and play basic and sprite animations. It implements -all the standard classes required by any application using UI controls such -as an application, a document, an application UI and a view.

      The application +Animation example +

      Description

      This example is a UI application, which demonstrates how to create +and play basic and sprite animations. It implements all the standard +classes required by any application using UI controls such as an application, +a document, an application UI and a view.

      The application provides UI controls to create a sprite animation and a basic client-side -animation. It also provides UI controls to control the behavior -of an animation such as, start, stop, pause, resume and move.

      The -application plays an animated .gif file both as a basic -client-side animation and a server-side sprite animation. It performs the -following tasks in the order they are listed to create the basic and sprite -animations:

        -
      1. Creates an object of -the CICLAnimationDataProvider class.

      2. -
      3. Loads the animated .gif file -into the object.

      4. -
      5. Configures the animation -to play in an infinite loop using TAnimationConfig.

      6. -
      7. Creates objects of CBasicAnimation and CSpriteAnimation classes by passing the data provider object as an argument.

      8. -
      9. Starts animations with -the TAnimationConfig object as an argument.

      10. -

      Once both the animations are started, the window server will automatically -draw the animations onto the window by calling the Draw() method.

      -
      Download

      Click on the following link to download -the example: AnimExample.zip

      Click: browse to view the example code.

      -
      Class summary
        +animation. It also provides UI controls to control the behavior of +an animation such as, start, stop, pause, resume and move.

        The application plays an animated .gif file +both as a basic client-side animation and a server-side sprite animation. +It performs the following tasks in the order they are listed to create +the basic and sprite animations:

          +
        1. Creates an object +of the CICLAnimationDataProvider class.

        2. +
        3. Loads the animated .gif file into the object.

        4. +
        5. Configures the +animation to play in an infinite loop using TAnimationConfig.

        6. +
        7. Creates objects +of CBasicAnimation and CSpriteAnimation classes by passing the data provider object as an argument.

        8. +
        9. Starts animations +with the TAnimationConfig object as an argument.

        10. +

        Once both the animations are started, the window server will +automatically draw the animations onto the window by calling the Draw() method.

      +
      Download

      Click on the following link to download the example: AnimExample.zip

      Click: browse to view the example code.

      +
      Class +summary
      • CEikApplication

      • CEikDocument

      • CEikAppUi

      • @@ -46,14 +44,10 @@
      • CICLAnimationDataProvider

      • TAnimationConfig

      -
      Build

      The Symbian -platform build process describes how to build an application. But, -use abld export command before abld build to -copy the animated .gif file to RAM (C:\ drive) -of the target platform.

      The AnimExample builds an executable called AnimExample.exe in -the standard location (\epoc32\release\winscw\ udeb -or urel for CodeWarrior). Either launch the executable or launch the emulator -and then select the AnimExample application from the Emulator's extras bar.

      -
      See also

      Using -Animation

      +
      Build

      The Symbian platform build process describes how to build an +application. But, use abld export command before abld build to copy the animated .gif file to RAM (C:\ drive) of the target platform.

      The AnimExample builds an executable called AnimExample.exe in the standard location (\epoc32\release\winscw\ udeb or urel for CodeWarrior). Either launch the executable +or launch the emulator and then select the AnimExample application +from the Emulator's extras bar.

      +
      See +also

      Using Animation

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1AFDDD6F-CB99-587D-A0B5-D3F5B27F7135.dita --- a/Symbian3/PDK/Source/GUID-1AFDDD6F-CB99-587D-A0B5-D3F5B27F7135.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1AFDDD6F-CB99-587D-A0B5-D3F5B27F7135.dita Fri Jul 16 17:23:46 2010 +0100 @@ -30,7 +30,7 @@ Database in the Central Repository.

      The Comms Database is available on all Symbian platforms.

      - + Configuring diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1B07A953-D652-59A7-8863-32875955B837_d0e449475_href.png Binary file Symbian3/PDK/Source/GUID-1B07A953-D652-59A7-8863-32875955B837_d0e449475_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1B07A953-D652-59A7-8863-32875955B837_d0e455320_href.png Binary file Symbian3/PDK/Source/GUID-1B07A953-D652-59A7-8863-32875955B837_d0e455320_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1B64E1D9-33AB-4C28-A471-22D4C51FEC43.dita --- a/Symbian3/PDK/Source/GUID-1B64E1D9-33AB-4C28-A471-22D4C51FEC43.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1B64E1D9-33AB-4C28-A471-22D4C51FEC43.dita Fri Jul 16 17:23:46 2010 +0100 @@ -29,7 +29,7 @@

      The API to use for the information pop-up is the Info pop-up API.

      Example of tooltip - +

      Design recommendation: Tooltips must not be used for items that might open a stylus pop-up menu with touch down and hold.

      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1B93FFF8-5DDD-491F-86F5-5246B321D3C2-GENID-1-12-1-12-1-1-8-1-5-1-5-1.dita --- a/Symbian3/PDK/Source/GUID-1B93FFF8-5DDD-491F-86F5-5246B321D3C2-GENID-1-12-1-12-1-1-8-1-5-1-5-1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ - - - - - -Updating -System TZ Data Using Software Installation -

      This tutorial -describes how to update System TZ Data.

      A client may need to update -the system time zone database as changes in existing time zone rules are introduced. -An example is the recent change in DST (daylight saving time) start and end -times in North America.

      If there are new time zones in the updated -TZ database, the update also needs to include localization data for these -time zones.

      There may also be a need to make changes to existing -time zones’ localization data. Examples of this include the correction of -typographic errors and reflecting city name changes. Notable city name changes -include Peking to Beijing and Leningrad to Saint Petersburg.

      To update -system TZ data a client must create a SIS (Symbian installation) file that -contains the updated TZ database.

      Create a Symbian Installation (SIS) -file that contains the updated TZ database. The SIS file may also contain -TZ localization resources. To create a SIS file you need to write a PKG (package) -file, which is a normal text file with the extension .pkg. -Example content of this file is given in the following steps:

      - -Specify a language. -An example is English. -

      &EN

      -
      -Set a header. -

      #{"System TZ Data Update"}, (0x200020B0), 1, 1, 0, TYPE=SP

      -
      -Specify the vendor. (This is Symbian): -

      %{"Symbian Software Ltd."} -:"Symbian Software Ltd." -

      -
      -Define local files and the target location to be updated (eclipsed). -

      "..\data\tzdb.dbz"-"$:\private\1020383E\tzdb.dbz" -"..\data\tz.r01 "-"$:\resource\timezonelocalization\timezones.r01" -"..\data\tzg.r01"-"$:\resource\timezonelocalization\timezonegroups.r01" -"..\data\tz.r02 "-"$:\resource\timezonelocalization\timezones.r02" -"..\data\tzg.r02"-"$:\resource\timezonelocalization\timezonegroups.r02"

      -

      The sample includes the TZ database and two sets of TZ localization -resources files, one for English (*.r01) and one for French -(*.r02).

      The PKG file can reference one TZ database. -The TZ database may be omitted if the update does not require any changes -to the TZ rules within the TZ database.

      The PKG file can reference -any number of sets of TZ localization resources. These resources may be omitted -if the update does not require any changes to the TZ localization strings. -

      For information on building SIS files from PKG files see Secure -Software Install SIS Tools.

      -
      -
      -
      - -Secure Software -Install SIS Tools Reference -Package file -format - -
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1B93FFF8-5DDD-491F-86F5-5246B321D3C2-GENID-1-12-1-12-1-1-8-1-5-1-8-1.dita --- a/Symbian3/PDK/Source/GUID-1B93FFF8-5DDD-491F-86F5-5246B321D3C2-GENID-1-12-1-12-1-1-8-1-5-1-8-1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ - - - - - -Updating -System TZ Data Using Software Installation -

      This tutorial -describes how to update System TZ Data.

      A client may need to update -the system time zone database as changes in existing time zone rules are introduced. -An example is the recent change in DST (daylight saving time) start and end -times in North America.

      If there are new time zones in the updated -TZ database, the update also needs to include localization data for these -time zones.

      There may also be a need to make changes to existing -time zones’ localization data. Examples of this include the correction of -typographic errors and reflecting city name changes. Notable city name changes -include Peking to Beijing and Leningrad to Saint Petersburg.

      To update -system TZ data a client must create a SIS (Symbian installation) file that -contains the updated TZ database.

      Create a Symbian Installation (SIS) -file that contains the updated TZ database. The SIS file may also contain -TZ localization resources. To create a SIS file you need to write a PKG (package) -file, which is a normal text file with the extension .pkg. -Example content of this file is given in the following steps:

      - -Specify a language. -An example is English. -

      &EN

      -
      -Set a header. -

      #{"System TZ Data Update"}, (0x200020B0), 1, 1, 0, TYPE=SP

      -
      -Specify the vendor. (This is Symbian): -

      %{"Symbian Software Ltd."} -:"Symbian Software Ltd." -

      -
      -Define local files and the target location to be updated (eclipsed). -

      "..\data\tzdb.dbz"-"$:\private\1020383E\tzdb.dbz" -"..\data\tz.r01 "-"$:\resource\timezonelocalization\timezones.r01" -"..\data\tzg.r01"-"$:\resource\timezonelocalization\timezonegroups.r01" -"..\data\tz.r02 "-"$:\resource\timezonelocalization\timezones.r02" -"..\data\tzg.r02"-"$:\resource\timezonelocalization\timezonegroups.r02"

      -

      The sample includes the TZ database and two sets of TZ localization -resources files, one for English (*.r01) and one for French -(*.r02).

      The PKG file can reference one TZ database. -The TZ database may be omitted if the update does not require any changes -to the TZ rules within the TZ database.

      The PKG file can reference -any number of sets of TZ localization resources. These resources may be omitted -if the update does not require any changes to the TZ localization strings. -

      For information on building SIS files from PKG files see Secure -Software Install SIS Tools.

      -
      -
      -
      - -Secure Software -Install SIS Tools Reference -Package file -format - -
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1B93FFF8-5DDD-491F-86F5-5246B321D3C2-GENID-1-12-1-13-1-1-8-1-5-1-5-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-1B93FFF8-5DDD-491F-86F5-5246B321D3C2-GENID-1-12-1-13-1-1-8-1-5-1-5-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,67 @@ + + + + + +Updating +System TZ Data Using Software Installation +

      This tutorial +describes how to update System TZ Data.

      A client may need to update +the system time zone database as changes in existing time zone rules are introduced. +An example is the recent change in DST (daylight saving time) start and end +times in North America.

      If there are new time zones in the updated +TZ database, the update also needs to include localization data for these +time zones.

      There may also be a need to make changes to existing +time zones’ localization data. Examples of this include the correction of +typographic errors and reflecting city name changes. Notable city name changes +include Peking to Beijing and Leningrad to Saint Petersburg.

      To update +system TZ data a client must create a SIS (Symbian installation) file that +contains the updated TZ database.

      Create a Symbian Installation (SIS) +file that contains the updated TZ database. The SIS file may also contain +TZ localization resources. To create a SIS file you need to write a PKG (package) +file, which is a normal text file with the extension .pkg. +Example content of this file is given in the following steps:

      + +Specify a language. +An example is English. +

      &EN

      +
      +Set a header. +

      #{"System TZ Data Update"}, (0x200020B0), 1, 1, 0, TYPE=SP

      +
      +Specify the vendor. (This is Symbian): +

      %{"Symbian Software Ltd."} +:"Symbian Software Ltd." +

      +
      +Define local files and the target location to be updated (eclipsed). +

      "..\data\tzdb.dbz"-"$:\private\1020383E\tzdb.dbz" +"..\data\tz.r01 "-"$:\resource\timezonelocalization\timezones.r01" +"..\data\tzg.r01"-"$:\resource\timezonelocalization\timezonegroups.r01" +"..\data\tz.r02 "-"$:\resource\timezonelocalization\timezones.r02" +"..\data\tzg.r02"-"$:\resource\timezonelocalization\timezonegroups.r02"

      +

      The sample includes the TZ database and two sets of TZ localization +resources files, one for English (*.r01) and one for French +(*.r02).

      The PKG file can reference one TZ database. +The TZ database may be omitted if the update does not require any changes +to the TZ rules within the TZ database.

      The PKG file can reference +any number of sets of TZ localization resources. These resources may be omitted +if the update does not require any changes to the TZ localization strings. +

      For information on building SIS files from PKG files see Secure +Software Install SIS Tools.

      +
      +
      +
      + +Secure Software +Install SIS Tools Reference +Package file +format + +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1B93FFF8-5DDD-491F-86F5-5246B321D3C2-GENID-1-12-1-13-1-1-8-1-5-1-8-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-1B93FFF8-5DDD-491F-86F5-5246B321D3C2-GENID-1-12-1-13-1-1-8-1-5-1-8-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,67 @@ + + + + + +Updating +System TZ Data Using Software Installation +

      This tutorial +describes how to update System TZ Data.

      A client may need to update +the system time zone database as changes in existing time zone rules are introduced. +An example is the recent change in DST (daylight saving time) start and end +times in North America.

      If there are new time zones in the updated +TZ database, the update also needs to include localization data for these +time zones.

      There may also be a need to make changes to existing +time zones’ localization data. Examples of this include the correction of +typographic errors and reflecting city name changes. Notable city name changes +include Peking to Beijing and Leningrad to Saint Petersburg.

      To update +system TZ data a client must create a SIS (Symbian installation) file that +contains the updated TZ database.

      Create a Symbian Installation (SIS) +file that contains the updated TZ database. The SIS file may also contain +TZ localization resources. To create a SIS file you need to write a PKG (package) +file, which is a normal text file with the extension .pkg. +Example content of this file is given in the following steps:

      + +Specify a language. +An example is English. +

      &EN

      +
      +Set a header. +

      #{"System TZ Data Update"}, (0x200020B0), 1, 1, 0, TYPE=SP

      +
      +Specify the vendor. (This is Symbian): +

      %{"Symbian Software Ltd."} +:"Symbian Software Ltd." +

      +
      +Define local files and the target location to be updated (eclipsed). +

      "..\data\tzdb.dbz"-"$:\private\1020383E\tzdb.dbz" +"..\data\tz.r01 "-"$:\resource\timezonelocalization\timezones.r01" +"..\data\tzg.r01"-"$:\resource\timezonelocalization\timezonegroups.r01" +"..\data\tz.r02 "-"$:\resource\timezonelocalization\timezones.r02" +"..\data\tzg.r02"-"$:\resource\timezonelocalization\timezonegroups.r02"

      +

      The sample includes the TZ database and two sets of TZ localization +resources files, one for English (*.r01) and one for French +(*.r02).

      The PKG file can reference one TZ database. +The TZ database may be omitted if the update does not require any changes +to the TZ rules within the TZ database.

      The PKG file can reference +any number of sets of TZ localization resources. These resources may be omitted +if the update does not require any changes to the TZ localization strings. +

      For information on building SIS files from PKG files see Secure +Software Install SIS Tools.

      +
      +
      +
      + +Secure Software +Install SIS Tools Reference +Package file +format + +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1B96241D-1914-5754-BB4F-954778CE342C_d0e450072_href.png Binary file Symbian3/PDK/Source/GUID-1B96241D-1914-5754-BB4F-954778CE342C_d0e450072_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1B96241D-1914-5754-BB4F-954778CE342C_d0e455917_href.png Binary file Symbian3/PDK/Source/GUID-1B96241D-1914-5754-BB4F-954778CE342C_d0e455917_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1BA6BC6E-0B77-5B8A-AEF6-9E5DBAB36254.dita --- a/Symbian3/PDK/Source/GUID-1BA6BC6E-0B77-5B8A-AEF6-9E5DBAB36254.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Overview of the native build targets

      Symbian platform natively runs on ARM processors that use the standard Application Binary Interface (ABI) to run the binary code. This standard interface enable the binaries created by different compilers (that meet the ABI standard) to operate together. For more information about the ABI specification, see http://www.arm.com/products/DevTools/ABI.html.

      The Symbian platform build tools define native build targets that use either the ARM's RealView Compilation Tools (RVCT), or the GNU Compiler Collection (GCC), known as GCCE. Where, ARM RVCT (http://www.arm.com/products/DevTools/RealViewDevSuite.html) is particularly intended for licensees building ROMs for phones. GCCE is delivered on Symbian platform kits, and is also freely available from http://www.codesourcery.com.

      There are two versions of the ARM ABI, referred to as v1 and v2 respectively. RVCT can be used to build for either of these ABI versions, and GCCE can only be used to build for ARM ABI v2.

      In addition, the toolchain supports building to three versions of the ARM architecture; v5, v6, and v7. See http://www.arm.com/products/CPUs/architecture.html for details of the ARM architectures.

      The build targets are intended to generate generic code suitable for execution on processors based on these architectures. The toolchain allows customisation by licensees, for example, in order to target a specific processor more closely: see ARMV5 build customisation.

      A summary of the available targets is shown below:

      Target name

      Instruction set

      Compiler

      ABI

      ARMV5

      v5

      RVCT 2.2

      v1

      ARMV5_ABIv2

      v5

      RVCT 2.2

      v2

      ARMV6

      v6

      RVCT 2.2

      v1

      ARMV6_ABIv2

      v6

      RVCT 2.2

      v2

      ARMV6t2

      v6

      RVCT 2.2

      v2

      ARMV7

      v7

      RVCT 3.1

      v2

      GCCE

      v5

      GCCE 3.4

      v2

      GCCEV6

      v6

      GCCE 3.4

      v2

      GCCEv6t2

      v6

      GCCE 3.4

      v2

      GCCEv7

      v7

      GCCE 4.2

      v2

      Notes:

      • The Symbian platform that you build using RVCT 4.0 provides run-time support for executables built using the RVCT 2.2, RVCT 3.1 and RVCT 4.0 toolchains.

      • From Symbian OS v9.4 onwards, the target names to build a binary conforming to ABIv2 are ARMV5 and ARMV6, and for ABIv1 they are ARMV5_ABIv1 and ARMV6_ABIv1. You can switch back to the conventional approach described in the table above. For more details, refer to Switching between ABI modes.

      For details of these targets, see:

      • ARMV5 build targets

      • ARMV6 build targets

      • ARMV7 build target

      • GCCE build targets

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1BB379B6-C0B5-5099-90A0-1BA39DC2C7DD_d0e377081_href.png Binary file Symbian3/PDK/Source/GUID-1BB379B6-C0B5-5099-90A0-1BA39DC2C7DD_d0e377081_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1BB379B6-C0B5-5099-90A0-1BA39DC2C7DD_d0e382925_href.png Binary file Symbian3/PDK/Source/GUID-1BB379B6-C0B5-5099-90A0-1BA39DC2C7DD_d0e382925_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1BDADA7A-D517-49F4-AF46-AFC2B7758571.dita --- a/Symbian3/PDK/Source/GUID-1BDADA7A-D517-49F4-AF46-AFC2B7758571.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1BDADA7A-D517-49F4-AF46-AFC2B7758571.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ item is same as that of the scrollbar.

      Slider setting item - +

      The actual slider item usage is specified in applications.

      Default touch diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1BDBFC07-A8E8-5150-953D-CA9CFE1CBF16_d0e351375_href.jpg Binary file Symbian3/PDK/Source/GUID-1BDBFC07-A8E8-5150-953D-CA9CFE1CBF16_d0e351375_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1BDBFC07-A8E8-5150-953D-CA9CFE1CBF16_d0e357313_href.jpg Binary file Symbian3/PDK/Source/GUID-1BDBFC07-A8E8-5150-953D-CA9CFE1CBF16_d0e357313_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1BEA00A2-7934-5CF6-A838-44CCA4A28F35.dita --- a/Symbian3/PDK/Source/GUID-1BEA00A2-7934-5CF6-A838-44CCA4A28F35.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ -<?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 xml:lang="en" id="GUID-1BEA00A2-7934-5CF6-A838-44CCA4A28F35"><title>Application registration files
      Introduction

      An application registration file defines information about an application that is required by the application launcher or system shell. This includes the application’s name, UID and properties. Other information required by the shell, for instance the icons and captions, is defined separately; the location of the icon/caption definitions is provided in the registration file. Before v8.1, all of this information was provided by aif files. In v8.1, both aif files and registration files are supported, but from v9.0 onwards, only registration files are supported.

      - Registration files -

      This diagram shows:

      A registration file is required by every application, even if it has default properties, icons and caption. Minimally, it must specify the application's UID and the name of the application’s executable.

      For an example, see An example registration file and icon/caption file.

      Registration information

      A registration file defines the following non-localisable application information; in other words, information that never varies according to the phone’s language setting:

      • the application’s properties, such as whether it is embeddable or hidden,

      • a group name; this may be used to categorize applications. Note that a group name may also be defined in the localisable file. If so, the localisable version will take precedence.

      • a number which identifies the screen on which the application is displayed (if the phone has multiple screens).

      • the MIME types supported by the application, and the priority of support for each,

      • a list of files owned by the application,

      • a flag that identifies non-standard types of application,

      • for server applications only, a list of the services provided.

      All of these properties are defined using an APP_REGISTRATION_INFO resource struct. See its declaration in AppInfo.rh for the default values. For more information about these properties, see Defining application icons, captions and properties.

      Most applications also need to define localisable information, for instance non-default captions and icons and possibly a group name (described above). The registration file specifies its location. This can be done in one of two ways:

      • as the name and path (excluding drive letter and extension) of a localisable icon/caption definition file,

      • as the ID of a LOCALISABLE_APP_INFO resource struct defined in the application’s UI resource file. In this case, the name and path of the application’s UI resource file (excluding drive letter and extension) must also be provided.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1C14ECA4-057B-5591-A8E3-F7DB0325E5AE_d0e317363_href.png Binary file Symbian3/PDK/Source/GUID-1C14ECA4-057B-5591-A8E3-F7DB0325E5AE_d0e317363_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1C14ECA4-057B-5591-A8E3-F7DB0325E5AE_d0e323353_href.png Binary file Symbian3/PDK/Source/GUID-1C14ECA4-057B-5591-A8E3-F7DB0325E5AE_d0e323353_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB.dita --- a/Symbian3/PDK/Source/GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1C499E7D-8099-5BE4-AE46-6143388E6ACB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,7 +9,7 @@ --> -Audio Input Streaming Tutorial

      This tutorial describes how to use Audio Input Streaming.

      Purpose

      The purpose of this tutorial is to show you how to open, read and then close an audio input stream.

      Required Background

      The Audio Input Streaming Overview provides an introduction to Audio Input Streaming.

      Introduction

      The audio input stream interface class, CMdaAudioInputStream, enables MMF client applications to:

      • stream audio data from the low level audio controller (which has collected it from a hardware device, such as a microphone) to specified buffers (record audio).

      • specify the priority of the audio stream relative to other clients trying to use the same audio hardware

      • set the sample rate and the number of channels to use for recording.

      • change the gain and channel balance of the input stream.

      The low level audio controller stores the audio data in buffers. CMdaAudioInputStream reads these buffers incrementally and does not have to wait until capture is complete.

      Using Audio Input Streaming

      Typically, using an audio input stream involves the following steps as shown in the sequence diagram below:

      The following tasks will be covered in this tutorial:

      • Constructing an audio input stream

      • Opening an audio input stream

      • Getting and setting the stream properties

      • Reading an audio input stream

      • Stopping an audio input stream

      Basic Procedure to Construct an Audio Input Stream

      The high level step to construct an audio input stream is shown here:

      • The client application creates an audio input stream object using the static function CMdaAudioInputStream::NewL(). The input stream class provides two versions of the constructor: one with the default priority and preferences, and another with specified priority and preferences. The client application must also implement the observer class MMdaAudioInputStreamCallback to notify it about audio input streaming progress.

        The following code constructs an audio input stream:

        CMdaAudioInputStream* aInputStream; +Audio Input Streaming Tutorial

        This tutorial describes how to use Audio Input Streaming.

        Purpose

        The purpose of this tutorial is to show you how to open, read and then close an audio input stream.

        Required Background

        The Audio Input Streaming Overview provides an introduction to Audio Input Streaming.

        Introduction

        The audio input stream interface class, CMdaAudioInputStream, enables MMF client applications to:

        • stream audio data from the low level audio controller (which has collected it from a hardware device, such as a microphone) to specified buffers (record audio).

        • specify the priority of the audio stream relative to other clients trying to use the same audio hardware

        • set the sample rate and the number of channels to use for recording.

        • change the gain and channel balance of the input stream.

        The low level audio controller stores the audio data in buffers. CMdaAudioInputStream reads these buffers incrementally and does not have to wait until capture is complete.

        Using Audio Input Streaming

        Typically, using an audio input stream involves the following steps as shown in the sequence diagram below:

        The following tasks will be covered in this tutorial:

        • Constructing an audio input stream

        • Opening an audio input stream

        • Getting and setting the stream properties

        • Reading an audio input stream

        • Stopping an audio input stream

        Basic Procedure to Construct an Audio Input Stream

        The high level step to construct an audio input stream is shown here:

        • The client application creates an audio input stream object using the static function CMdaAudioInputStream::NewL(). The input stream class provides two versions of the constructor: one with the default priority and preferences, and another with specified priority and preferences. The client application must also implement the observer class MMdaAudioInputStreamCallback to notify it about audio input streaming progress.

          The following code constructs an audio input stream:

          CMdaAudioInputStream* aInputStream; aInputStream = CMdaAudioInputStream::NewL(aCallback, EMdaPriorityNormal, EMdaPriorityPreferenceTimeAndQuality);

          where, aCallback is an MMdaAudioInputStreamCallback object.

        Basic Procedure to Open an Audio Input Stream

        The high level steps to open an audio input stream are shown here:

        1. To open an input stream, use the Open() member function, which provides a pointer to the TMdaPackage object with the required audio settings. You can also open the stream without the audio settings. For example:

          aInputStream->Open(NULL);
        2. Once the stream is open, a MMdaAudioInputStreamCallback::MaiscOpenComplete() is issued to indicate that the stream is ready for use.

          void CIOStreamAudio::MaiscOpenComplete(TInt aError) { ASSERT(iState==EStateOpeningInput); diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1CAECA45-9BAE-583F-B16C-FB8ACD0264D3.dita --- a/Symbian3/PDK/Source/GUID-1CAECA45-9BAE-583F-B16C-FB8ACD0264D3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1CAECA45-9BAE-583F-B16C-FB8ACD0264D3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,39 +1,39 @@ - - - - - -Patchable -Constants: KCafLoadPostProductionAgents -EXPORT_C extern const TUint8 KCafLoadPostProductionAgents = 0x00; - -
      - - - -

      Exported from:

      -

      CAF.DLL

      -
      - -

      Defined in:

      -

      .../os/security/contentmgmt/cafstreamingsupport/source/patchdata.cpp

      -
      - -

      Purpose:

      -

      This 8-bit variable is used in agent resolution. It is used to override -CAF's default resolution behaviour of only loading Content Access Agents (CAAs) -from the ROM drive. Compile time value is 0 - default resolution behaviour. -When non-zero CAF will load all CAA visible to the ECOM service regardless -of the drive. In the emulator platform the default resolution behaviour is -the same as when this variable is non-zero, therefore loading all CAAs.

      This -variable is changed at ROM build time using the patchdata obey keyword. See How to build ROMs with variants.

      -
      - - + + + + + +Patchable Constants: KCafLoadPostProductionAgents +EXPORT_C extern const TUint8 KCafLoadPostProductionAgents = 0x00; + +
      + + + +

      Exported from:

      +

      CAF.DLL

      +
      + +

      Defined in:

      +

      .../os/security/contentmgmt/cafstreamingsupport/source/patchdata.cpp

      +
      + +

      Purpose:

      +

      This 8-bit variable is used in agent resolution. It is used +to override CAF's default resolution behaviour of only loading Content +Access Agents (CAAs) from the ROM drive. Compile time value is 0 - +default resolution behaviour. When non-zero CAF will load all CAA +visible to the ECOM service regardless of the drive. In the emulator +platform the default resolution behaviour is the same as when this +variable is non-zero, therefore loading all CAAs.

      This variable +is changed at ROM build time using the patchdata obey keyword.

      +
      + +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1CB7491C-1207-5C2E-979F-8ABEB95EE9D9.dita --- a/Symbian3/PDK/Source/GUID-1CB7491C-1207-5C2E-979F-8ABEB95EE9D9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1CB7491C-1207-5C2E-979F-8ABEB95EE9D9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,7 +14,7 @@

      The following diagram describes all the node classes of the XML DOM Engine. Refer to the links below for more information about each class.

      XML DOM Engine classes - +
      • RXmlEngDocument

      • TXmlEngElement

      • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1CBDCDE6-1FC6-59BE-BA4A-9EAD3D6627CD.dita --- a/Symbian3/PDK/Source/GUID-1CBDCDE6-1FC6-59BE-BA4A-9EAD3D6627CD.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ - - - - - -Set capability test tool SETCAP

        Version 9.0 and later

        This is a tool that allows you to make a copy of an executable file and to assign a set of capabilities to it. It can also modify the Secure or Vendor IDs.

        The purpose of the tool is to allow you to test the executable with different capability combinations. It avoids the overhead of maintaining multiple copies of the executable's .mmp file for each capability combination, and the need to rebuild each copy of the executable after a change to the source code.

        Note: this is not a native PC utility. It is a command line tool that runs under Symbian platform.

        • Command line syntax

        • Arguments

        • Notes

        Command line syntax

        This is the command line syntax:

        SETCAP source_exe capability [-SID secureId] [-VID vendorId] [destination_path]
        Arguments

        The following arguments are used.

        source_exe

        The name and the path of an executable file to be copied. If the path is not specified, a default path of Z:\SYS\BIN\ is assumed.

        capability

        The hexadecimal representation of the set of capabilities.

        This should be a simple string of hexadecimal characters (i.e. not preceded by 0x characters, and not enclosed by quotation marks etc).

        For example, the three capabilities: LocalServices, ReadUserData and WriteUserData would be represented by the value of:

        ((1<<ECapabilityLocalServices) | (1<<ECapabilityReadUserData) | (1<<ECapabilityWriteUserData))

        which in hexadecimal is 1c000.

        If the value supplied includes capabilities that are not supported by the current version of Symbian platform, then these capabilities are ignored; they are not added to the file.

        -SID secureId

        The hexadecimal value of the secure ID that is to be assigned.

        This should be a simple string of hexadecimal characters (i.e. not preceded by 0x characters, and not enclosed by quotation marks etc).

        This is optional.

        -VID vendorId

        The hexadecimal value of the vendor ID to be assigned.

        This should be a simple string of hexadecimal characters (i.e. not preceded by 0x characters, and not enclosed by quotation marks etc).

        This is optional.

        destination_path

        The name and path of the target executable to which the executable is copied.

        This is optional, and if not specified, defaults to C:\SYS\BIN\source_executable_name.

        Notes
        • If the source executable is in ROM, then it must be a RAM executable image, not an execute-in-place (XIP) image. In other words, its entry in an OBY file must start with "data=" and not "file=".

          For OBY files generated automatically using ABLD - ROMFILE, this needs to be achieved by using lines similar to the following in the executable's .mmp file:

          ROMTARGET // Empty ROM path means don't include normal execute-in-place file -RAMTARGET \sys\bin\ // Target path (in ROM) for RAM executable image
        • Symbian platform only allows one binary file with a given name; the name does not include the file path or extension. This means that if SETCAP is used to make a copy of a binary which is already loaded, then the copy will not be loaded when used with RProcess::Create(); instead the already loaded version is used. To avoid this, use SETCAP to give the copy a different name. For example:

          SETCAP test.exe 1c000 test2.exe

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1CC6FEF0-7D1E-5329-8276-22ACFE3DE362.dita --- a/Symbian3/PDK/Source/GUID-1CC6FEF0-7D1E-5329-8276-22ACFE3DE362.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1CC6FEF0-7D1E-5329-8276-22ACFE3DE362.dita Fri Jul 16 17:23:46 2010 +0100 @@ -47,7 +47,7 @@ construct and maintain a CObjectIx object.

        The handle number is a combination of a unique id assigned to the object's container and a number generated by the object index.

        - +

        Subsession within a session

      Note
        diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1CCFBCD1-543F-5C53-A1E7-594591BB5905.dita --- a/Symbian3/PDK/Source/GUID-1CCFBCD1-543F-5C53-A1E7-594591BB5905.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,126 +0,0 @@ - - - - - -How -to use CapImportCheck -

        CapImportCheck is a command line tool that allows you -to compare the capabilities of a binary file with the capabilities of the -binaries that may import that specific file.

        -

        To use CapImportCheck, you need to define the name and -location of the ROM log file, and the Symbian Capability List (<EPOCROOT>\epoc32\include\e32capability.h).

        -

        You also need to define the location of a file containing dependency data -for ROM log binaries. This data is generated as a text file by a tool called ImportsAnalyser, -provided with CapImportCheck (see below). This data is used -by CapImportCheck to determine which binaries may import -a given binary.

        -

        The results are presented in HTML format, but may also be printed to the -standard output.

        -
        Running ImportsAnalyser

        ImportsAnalyser is -used to generate a mapping between a binary file and the binaries which import -it. This information is used by CapImportCheck to determine -dependency relationships between binaries in the ROM log.

        Command -line syntax

        The command line syntax to be used when running CapImportsAnalyser is -shown below.

        >ImportsAnalyser.pl –r myRom.log [–p pluginTable.pld] -[–D DependencyDataFile.txt]

        Arguments

        The -following arguments are used.

        - - - -

        -r <rom_log_file>

        -

        The name and location of the ROM log file to be checked, in relation -to the directory where the tool is run from, for example .\input\rom.log. -This is mandatory.

        -
        - -

        -p <plugin_table>

        -

        The name of the .pld file containing plug-in -relationships. This may be found <EPOCROOT>\epoc32\tools\CapTools\data. -If no plug-in table is specified, no dynamic dependencies are generated.

        -
        - -

        -D <dependency_data_file>

        -

        Defines the location of the output file containing dependency data.

        -
        - -

        -h

        -

        Displays help information (optional).

        -
        - - -

        Example

        An example of how to use the ImportsAnalyser tool -is shown below:

        >ImportsAnalyser.pl -r .\input\rom.log -p plugintable.pld -D .input\depsData.txt
        -
        Running CapImportCheck

        Once the dependency data -has been generated, you can run CapImportCheck. Along with -the dependency data file, you also need to specify the name and location of -the ROM log file and the Symbian Capability list.

        You may also specify -a capability override file, listing capabilities to be used instead of the -capabilities of binaries found in the ROM log.

        Command line syntax

        The -command line syntax to be used when running CapImportCheck is -shown below.

        >CapImportCheck.pl -r <rom_log_file> -s <Symbian_capability_list> --D <dependency_data_file> [-o <override_file>] [-R <HTML_report>]

        Mandatory -arguments are -r, -s and -D.

        Arguments

        The -following arguments are used.

        - - - -

        -r <rom_log_file>

        -

        The name and location of the ROM log file to be checked, in relation -to the directory where the tool is run from, for example .\input\rom.log. -This is mandatory.

        -
        - -

        -s <Symbian_capability_list>

        -

        The name of the Symbian Capability List, listing all the capabilities -available to search, and their corresponding values. This is a header file -named e32capability.h, located within <EPOCROOT>\epoc32\include. -This flag is mandatory.

        -
        - -

        -D <dependency_data_file>

        -

        Defines the location of the dependency data.

        -
        - -

        -O <override_file>

        -

        Defines a text file containing a list of binaries and capabilities, -to be used instead of the ones found in the ROM log. This is optional.

        The -file may contain a list of modifications to the set of capabilities granted -to specified binaries. Capabilities can be added, removed or assigned, using -the following format:

        -agnmodel.dll +00000000 000000c0 -agnmodel.dll -00000000 00808000 -form.dll +00000000 0F80FFFF

        where the first line specifies -that agnmodel.dll should be granted c0 capabilities -in addition to any existing capabilities, and the second line specifies that -it should have its 808000 capabilities revoked. The third -line specifies that form.dll should have those exact -capabilities regardless of its existing capabilities.

        -
        - -

        -R <HTML_report>

        -

        Defines the name of the HTML report to be generated in the working -directory. If not specified, the default name is CapImportCheckReport.html.

        -
        - -

        -h

        -

        Displays help information (optional).

        -
        - - -

        Example

        An example of how to use the CapImportCheck tool -is shown below:

        >CapImportCheck.pl -r .\input\rom.log -s e32capability.h -D .input\depsData.txt -R results.html
        -
        -CapImportCheck - report - file format -CapSearch -Guide -CapCheck -Guide -
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1D0301C5-52D8-4E4F-BEC3-52037BA2A003.dita --- a/Symbian3/PDK/Source/GUID-1D0301C5-52D8-4E4F-BEC3-52037BA2A003.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1D0301C5-52D8-4E4F-BEC3-52037BA2A003.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ The application must call the MTP Client API to start the MTP server (in the MTP framework). The MTP Framework then loads the USB MTP Transport plug-in.

        - + The user application must instantiate a service provider, RMTPClient, and connect to the MTP Server. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1D35F788-A470-5269-93E0-7C33A0013489.dita --- a/Symbian3/PDK/Source/GUID-1D35F788-A470-5269-93E0-7C33A0013489.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1D35F788-A470-5269-93E0-7C33A0013489.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,7 +9,7 @@ --> -Creating a Table This tutorial shows you how to create a Symbian SQL table.

        This tutorial uses code from the Basic SQL example application.

        Assumptions

        You have a database. The database has no tables and therefore no data.

        SQL statements

        The following SQL statements are used for this example:

        CREATE TABLE Pets( person TEXT, cat SMALLINT, dog SMALLINT, rodent SMALLINT, bird SMALLINT)

        The RSqlDatabase::Exec function provides a mechanism for executing Symbian SQL statements.

        Create a table The steps required to create a table are shown here: Declare a constant to hold the table handle: _LIT(KTabCreate,"CREATE TABLE Pets( person TEXT, cat SMALLINT, dog SMALLINT, rodent SMALLINT, bird SMALLINT);"); KTabCreate will be used later by the SQL EXECUTE command. Instantiate the required objects: RSqlDatabase db; +Creating a Table This tutorial shows you how to create a Symbian SQL table.

        This tutorial uses code from the Basic SQL example application.

        Assumptions

        You have a database. The database has no tables and therefore no data.

        SQL statements

        The following SQL statements are used for this example:

        CREATE TABLE Pets( person TEXT, cat SMALLINT, dog SMALLINT, rodent SMALLINT, bird SMALLINT)

        The RSqlDatabase::Exec function provides a mechanism for executing Symbian SQL statements.

        Create a table The steps required to create a table are shown here: Declare a constant to hold the table handle: _LIT(KTabCreate,"CREATE TABLE Pets( person TEXT, cat SMALLINT, dog SMALLINT, rodent SMALLINT, bird SMALLINT);"); KTabCreate will be used later by the SQL EXECUTE command. Instantiate the required objects: RSqlDatabase db; CConsoleBase* iConsole; This creates an RSqlDatabase object, which is needed to execute the SQL statement. Execute the SQL statement: db.Exec(KTabCreate) This will execute the SQL statement to create the table. The table now exists and you can begin adding data to it.

        Your database now has at least one table. You can begin to add data to the table and you can query and edit it.

        Create table example

        The following code snippet is from the example used for this tutorial:

        _LIT(KTabCreate,"CREATE TABLE Pets( person TEXT, cat SMALLINT, dog SMALLINT, rodent SMALLINT, bird SMALLINT);"); _LIT(KCreateTable,"\nCreating a table\n"); ... diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1D399C05-6CC0-4781-A6E1-1C94CFF8995B_d0e90481_href.png Binary file Symbian3/PDK/Source/GUID-1D399C05-6CC0-4781-A6E1-1C94CFF8995B_d0e90481_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1D399C05-6CC0-4781-A6E1-1C94CFF8995B_d0e94679_href.png Binary file Symbian3/PDK/Source/GUID-1D399C05-6CC0-4781-A6E1-1C94CFF8995B_d0e94679_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1D3E61BD-C09D-51FD-A10B-22392FDAEFEC.dita --- a/Symbian3/PDK/Source/GUID-1D3E61BD-C09D-51FD-A10B-22392FDAEFEC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1D3E61BD-C09D-51FD-A10B-22392FDAEFEC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -103,7 +103,7 @@
        Peripheral power state diagram and transitions Peripheral power state diagram - +

        It can be assumed that when the peripheral driver is loaded, the peripheral is put into the Low Power state. If a new request is asserted on that peripheral driver from a user of that peripheral (which can include @@ -125,6 +125,6 @@ the power manager so requests. It can be moved back to the Operational Power state on an internal event (Interrupt, Timer).

        Peripheral power states - +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1D58231A-7DDF-46DB-B5A6-7A326BD954F3_d0e455588_href.png Binary file Symbian3/PDK/Source/GUID-1D58231A-7DDF-46DB-B5A6-7A326BD954F3_d0e455588_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1D58231A-7DDF-46DB-B5A6-7A326BD954F3_d0e461433_href.png Binary file Symbian3/PDK/Source/GUID-1D58231A-7DDF-46DB-B5A6-7A326BD954F3_d0e461433_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1D60BB43-4FF8-5632-A597-0DF00234F93E-GENID-1-12-1-26-1-1-11-1-1-5-1-8-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-1D60BB43-4FF8-5632-A597-0DF00234F93E-GENID-1-12-1-26-1-1-11-1-1-5-1-8-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,36 @@ + + + + + +Finding +the cryptographic strength +

        The TCrypto class enables the user software to find +out the strength of a Cryptography library. The example below illustrates +how:

        + +// 1. Get the cryptography strength. + +TCrypto::TStrength strength = TCrypto::Strength(); + + +// 2. Determine the cryptographic strength. + +switch (strength) + { + case TCrypto::EWeak: + // Using 56 bit key strength. + break; + case TCrypto::EStrong: + // Using 512 bit key strength. + break; + default: + } + +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1D60BB43-4FF8-5632-A597-0DF00234F93E-GENID-1-12-1-26-1-1-9-1-5-1-9-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-1D60BB43-4FF8-5632-A597-0DF00234F93E-GENID-1-12-1-26-1-1-9-1-5-1-9-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,36 @@ + + + + + +Finding +the cryptographic strength +

        The TCrypto class enables the user software to find +out the strength of a Cryptography library. The example below illustrates +how:

        + +// 1. Get the cryptography strength. + +TCrypto::TStrength strength = TCrypto::Strength(); + + +// 2. Determine the cryptographic strength. + +switch (strength) + { + case TCrypto::EWeak: + // Using 56 bit key strength. + break; + case TCrypto::EStrong: + // Using 512 bit key strength. + break; + default: + } + +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1D60BB43-4FF8-5632-A597-0DF00234F93E.dita --- a/Symbian3/PDK/Source/GUID-1D60BB43-4FF8-5632-A597-0DF00234F93E.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ - - - - - -Finding -the cryptographic strength -

        The TCrypto class enables the user software to find -out the strength of a Cryptography library. The example below illustrates -how:

        - -// 1. Get the cryptography strength. - -TCrypto::TStrength strength = TCrypto::Strength(); - - -// 2. Determine the cryptographic strength. - -switch (strength) - { - case TCrypto::EWeak: - // Using 56 bit key strength. - break; - case TCrypto::EStrong: - // Using 512 bit key strength. - break; - default: - } - -
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1D7BD70F-40A3-53FF-8150-A9CAFA4D01D8.dita --- a/Symbian3/PDK/Source/GUID-1D7BD70F-40A3-53FF-8150-A9CAFA4D01D8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1D7BD70F-40A3-53FF-8150-A9CAFA4D01D8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -10,24 +10,24 @@ Minimal: A Minimal UI Application -
        Download

        Click on the following link to -download the example: Minimal.zip

        Click: browse to view the example code.

        -
        Description

        This example demonstrates a -minimal UI application without the use of resource files. It implements -the standard classes required by the UI framework of any application; -application, document, application UI and view, all of which are implemented -minimally.

        -
        Application class

        The application class -implements the following required functions:

          +
          Download

          Click on the following link to download the example: Minimal.zip

          Click: browse to view the example code.

          +
          Description

          This example demonstrates a minimal UI application without the +use of resource files. It implements the standard classes required +by the UI framework of any application; application, document, application +UI and view, all of which are implemented minimally.

          +
          Application +class

          The application class implements the following required +functions:

          • CApaApplication::CreateDocumentL(CApaProcess*)

          • CApaApplication::AppDllUid() const

          Because the application does not use a resource file, it also needs to override CEikApplication::ResourceFileName(), to return an empty resource filename.

          -
          Document class

          The document class must -implement CEikDocument::CreateAppUiL().

          -
          Application UI class

          The app UI class implements -the following required functions:

            +
            Document +class

            The document class must implement CEikDocument::CreateAppUiL().

            +
            Application +UI class

            The app UI class implements the following required +functions:

            • A ConstructL(). This must call CEikAppUi::BaseConstructL(). The ENoAppResourceFile flag is used to indicate that it has no resource file, and ENoScreenFurniture indicates that it does not require any resource independent 'screen furniture', @@ -37,16 +37,20 @@ to delete the view.

            • A HandleCommandL() This app UI only handles a single command, to exit the application.

            -
            View class

            Views are controls, derived -from CCoeControl. Their main purpose is to display -the application's data and to handle input. This view overrides CCoeControl::Draw(), to display a message in the centre -of the screen rectangle. It does not handle any key or pen input.

            -
            Class Summary
              +
              View +class

              Views are controls, derived from CCoeControl. Their main purpose is to display the application's data and to +handle input. This view overrides CCoeControl::Draw(), to display a message in the centre of the screen rectangle. It +does not handle any key or pen input.

              +
              Class +Summary
              • CEikApplication

              • CEikDocument

              • CEikAppUi

              • CCoeControl

              -
              Build

              The Symbian build process describes how to build an application.

              The Minimal example builds an executable called Minimal.exe in the standard location (\epoc32\release\winscw\ <build_variant> for CodeWarrior). Either launch the executable -itself, or launch the emulator and then select the Minimal application from the Emulator's extras bar.

              +
              Build

              The Symbian build process describes how to build an application.

              The Minimal example builds +an executable called Minimal.exe in the standard +location (\epoc32\release\winscw\ <build_variant> for CodeWarrior). Either launch the executable itself, or launch +the emulator and then select the Minimal application +from the Emulator's extras bar.

              \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1D81831A-FFC9-50E7-9FA1-EC0958060588.dita --- a/Symbian3/PDK/Source/GUID-1D81831A-FFC9-50E7-9FA1-EC0958060588.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1D81831A-FFC9-50E7-9FA1-EC0958060588.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,7 +12,7 @@ Bluetooth GPS PSY Events API OverviewThe Bluetooth GPS PSY Events API uses the Publish and Subscribe (P&S) service to notify clients about the state of the PSY and the connected Bluetooth GPS device. The API is for developers who write components to notify users of changes in the Bluetooth GPS PSY state.
              Purpose

              A client of this API would typically be a UI component that reports the status of the Bluetooth GPS PSY to a device user. The component would typically be a Notifier or a UI component in a status bar.

              Library details

              This API consists of a set of P&S keys defined in the header file BtGpsPsyPrivatePSKeys.h. Applications must link with euser.lib to use this API.

              Description

              Use cases

              The use cases of this API are:

              • Listening for changes in state of the Bluetooth GPS PSY and the connected Bluetooth GPS device.

              • Retrieving the current state of the Bluetooth GPS PSY.

              API class structure

              This API doesn’t define any classes. It defines a Bluetooth GPS PSY events P&S category KPsUidBluetoothGpsPsy, some keys and some enumerated types for key values. These are defined in the BtGpsPsyPrivatePSKeys.h.

              Using the Bluetooth GPS PSY Events API

              To listen for Bluetooth GPS PSY state changes, clients subscribe for notifications of changes in P&S keys from the KPsUidBluetoothGpsPsy category. When a state change is reported, the client reads the new value and can respond to the change event (such as by showing a dialog to the user). An API client does not require any capabilities to read key values.

              See Using Publish and Subscribe for details of how to get key values and subscribe for notification of value changes.

              The following table describes Bluetooth GPS PSY P&S keys and values which are defined in BtGpsPsyPrivatePSKeys.h.

              Keys Description Possible values

              KBluetoothGpsPsyState

              The current state of the PSY.

              Whether the PSY is loaded and whether it is connected to a particular type of device (PNOK or non PNOK) etc.

              Defined by TBTGPSPSYState.

              KBluetoothGpsPsyBatteryLevel

              The battery charge remaining in the Bluetooth GPS device.

              A value between 0-100 (100 means battery is full)

              KBluetoothGpsPsyBatteryState

              The battery charge remaining in the Bluetooth GPS device represented in three different bands:

              • Low: voltage level < 10%

              • High: voltage level > 90%

              • Normal: voltage level 10%-90%.

              Defined by TBTGPSBatteryState.

              KBluetoothGpsPsyExtAntennaState

              Whether an external antenna is connected to Bluetooth GPS device.

              An external antenna can be connected to a GPS device when it is in an environment where the GPS signal is weak or blocked.

              Defined by TBTGPSExtAntennaState.

              KBluetoothGpsPsyExtPowerState

              Whether a battery charger is connected to the Bluetooth GPS device.

              Defined by TBTGPSExtPowerState.

              KBluetoothGpsPsyVersion

              Version of Bluetooth GPS PSY currently in use.

              Descriptor with maximum length 32.

              KBluetoothGpsPsyBtHwVersion

              Version of Bluetooth hardware in the Bluetooth GPS device.

              Descriptor with maximum length 32.

              KBluetoothGpsPsyBtSwVersion

              Version of Bluetooth software in the Bluetooth GPS device.

              Descriptor with maximum length 32.

              KBluetoothGpsPsyGpsHwVersion

              Version of GPS chipset in the Bluetooth GPS device.

              Descriptor with maximum length 32.

              KBluetoothGpsPsyGpsSwVersion

              Version of GPS software in the Bluetooth GPS device.

              Descriptor with maximum length 32.

              Listening for changes in the state of Bluetooth GPS PSY

              Figure 1 is a sequence diagram describing notifications to the client about Bluetooth GPS PSY state changes.

              Figure 1. Registering for and receiving Bluetooth GPS device state change events. -

              Retrieving current state of Bluetooth GPS PSY

              Figure 2 shows a sequence diagram that describes retrieval of the current state of Bluetooth GPS PSY.

              +

              Retrieving current state of Bluetooth GPS PSY

              Figure 2 shows a sequence diagram that describes retrieval of the current state of Bluetooth GPS PSY.

              Figure 2. Getting the current value of a Bluetooth GPS property. -

              Error handling

              The Bluetooth GPS PSY Events API does not define or use any error codes. Refer to the RProperty class description in reference documentation for further details on error handling when using Publish and Subscribe.

              Memory overhead

              The Bluetooth GPS PSY Events API does not require any additional memory above that needed for normal use of Publish and Subscribe.

              Using Publish and Subscribe Bluetooth +

              Error handling

              The Bluetooth GPS PSY Events API does not define or use any error codes. Refer to the RProperty class description in reference documentation for further details on error handling when using Publish and Subscribe.

              Memory overhead

              The Bluetooth GPS PSY Events API does not require any additional memory above that needed for normal use of Publish and Subscribe.

            Using Publish and Subscribe Bluetooth GPS PSY Settings Storage API Overview \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1DD48C1F-B7E0-5379-BDF1-70C8744B57DD_d0e275189_href.png Binary file Symbian3/PDK/Source/GUID-1DD48C1F-B7E0-5379-BDF1-70C8744B57DD_d0e275189_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1DD48C1F-B7E0-5379-BDF1-70C8744B57DD_d0e281189_href.png Binary file Symbian3/PDK/Source/GUID-1DD48C1F-B7E0-5379-BDF1-70C8744B57DD_d0e281189_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1DDFFB60-BBA8-500E-A9B1-F048EE5BFBD0_d0e236781_href.png Binary file Symbian3/PDK/Source/GUID-1DDFFB60-BBA8-500E-A9B1-F048EE5BFBD0_d0e236781_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1DDFFB60-BBA8-500E-A9B1-F048EE5BFBD0_d0e242754_href.png Binary file Symbian3/PDK/Source/GUID-1DDFFB60-BBA8-500E-A9B1-F048EE5BFBD0_d0e242754_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1E25EE44-9421-549C-B79E-AEFE87308011_d0e519273_href.png Binary file Symbian3/PDK/Source/GUID-1E25EE44-9421-549C-B79E-AEFE87308011_d0e519273_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1E25EE44-9421-549C-B79E-AEFE87308011_d0e526733_href.png Binary file Symbian3/PDK/Source/GUID-1E25EE44-9421-549C-B79E-AEFE87308011_d0e526733_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1E2DC905-472F-519F-A390-A1189FCB0F9D_d0e611107_href.jpg Binary file Symbian3/PDK/Source/GUID-1E2DC905-472F-519F-A390-A1189FCB0F9D_d0e611107_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1E2DC905-472F-519F-A390-A1189FCB0F9D_d0e650261_href.jpg Binary file Symbian3/PDK/Source/GUID-1E2DC905-472F-519F-A390-A1189FCB0F9D_d0e650261_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1E43E258-A926-5D24-B0A5-8756491C687F.dita --- a/Symbian3/PDK/Source/GUID-1E43E258-A926-5D24-B0A5-8756491C687F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1E43E258-A926-5D24-B0A5-8756491C687F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -173,7 +173,7 @@ while B() is active.

            This scenario happens frequently when B() allocates a buffer (e.g. TBuf) on the stack which overlaps old stack frames.

            - +

          If you want to trace applications loaded into RAM, then stack tracing is more difficult because RAM-loaded DLLs are given addresses assigned at @@ -340,7 +340,7 @@

          noting that: SP = R13, FP = R11, IP = R12, LR = R14, and PC = R15.

          This code creates the following stack frame:

          - +

          Looking at the example session listed in when tracing through the stack heuristically. in which the crash is due to a panic, the FP value is the R11 value; this is 0x6571de70. This gives us the innermost stack frame:

          6571de64: e8 de 71 65 <------------- pointer to previous stack frame @@ -378,7 +378,7 @@ sub sp, #28 add r7, sp, #12 /* R7 is THUMB frame pointer */

          and this creates the following stack frame:

          - +

          A call stack can mix ARM and THUMB frames. Odd return addresses are used for THUMB code and even ones for ARM code.

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1E446762-AFE2-4198-8CD7-8C4466392543.dita --- a/Symbian3/PDK/Source/GUID-1E446762-AFE2-4198-8CD7-8C4466392543.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1E446762-AFE2-4198-8CD7-8C4466392543.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ is depicted in the figure below.

          Choice list API classes - +

          The CAknChoiceList class provides an interface for controlling the choice list. You need to create separate instances of this class for each diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1E4D4D69-E94F-5ABF-8DC7-063A37EF816F-master.png Binary file Symbian3/PDK/Source/GUID-1E4D4D69-E94F-5ABF-8DC7-063A37EF816F-master.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1E4D4D69-E94F-5ABF-8DC7-063A37EF816F_d0e568315_href.png Binary file Symbian3/PDK/Source/GUID-1E4D4D69-E94F-5ABF-8DC7-063A37EF816F_d0e568315_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1E4D4D69-E94F-5ABF-8DC7-063A37EF816F_d0e568925_href.png Binary file Symbian3/PDK/Source/GUID-1E4D4D69-E94F-5ABF-8DC7-063A37EF816F_d0e568925_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1E4D4D69-E94F-5ABF-8DC7-063A37EF816F_d0e572398_href.png Binary file Symbian3/PDK/Source/GUID-1E4D4D69-E94F-5ABF-8DC7-063A37EF816F_d0e572398_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1E4FFC56-8473-4E0A-B2E2-4E8DE8B1D00F.dita --- a/Symbian3/PDK/Source/GUID-1E4FFC56-8473-4E0A-B2E2-4E8DE8B1D00F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1E4FFC56-8473-4E0A-B2E2-4E8DE8B1D00F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,7 +12,7 @@ Increasing the Priority of a Third-Party ApplicationThis section describes how a third-party application can increase its OOM priority by using OOM Monitor APIs. -

          Third-party applications +

          Third-party applications that needs to be running all the time can increase their priority to High from the default level (Normal). By increasing the priority, applications can protect itself from being closed by the OOM Monitor. For example:

            @@ -20,21 +20,21 @@
          • Instant Messaging application receiving messages

          are applications which listens for events from the network all the time.

          - -Create an OOM Monitor + +Create an OOM Monitor session ROomMonitorSession ioomMonitorSession; CleanUpClosePushL(ioomMonitorSession); User::LeaveIfError(ioomMonitorSession.Connect()); -Set the priority +Set the priority for the application to High . iOomMonitorSession.SetOomPriority(ROomMonitorSession::EOomPriorityHigh); DoCriticalBackgroundProcessingL(); -Close the session. +Close the session. iOomMonitorSession.Close(); diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1E87CA7A-9733-58A1-A747-F5F3DE9B64D7.dita --- a/Symbian3/PDK/Source/GUID-1E87CA7A-9733-58A1-A747-F5F3DE9B64D7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1E87CA7A-9733-58A1-A747-F5F3DE9B64D7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -30,11 +30,11 @@
        • CEikAppUi

        • CCoeControl

        -
        Build

        The Symbian -build process describes how to build an application.

        The ControlFramework example builds an executable called ControlFramework.exe in the standard location (\epoc32\release\winscw\ <build_variant> for -CodeWarrior). Either launch the executable itself, or launch the emulator -and then select the ControlFramework application from the Emulator's -extras bar.

        +
        Build

        The Symbian build process describes how to build an application.

        The ControlFramework example builds an executable +called ControlFramework.exe in the standard location +(\epoc32\release\winscw\ <build_variant> for CodeWarrior). Either launch the executable itself, or launch +the emulator and then select the ControlFramework application from +the Emulator's extras bar.

        See also

        Using UI Control Framework (CONE)

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1EC68F99-C383-5D3A-BAE9-52AF530F8445_d0e228146_href.png Binary file Symbian3/PDK/Source/GUID-1EC68F99-C383-5D3A-BAE9-52AF530F8445_d0e228146_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1EC68F99-C383-5D3A-BAE9-52AF530F8445_d0e234145_href.png Binary file Symbian3/PDK/Source/GUID-1EC68F99-C383-5D3A-BAE9-52AF530F8445_d0e234145_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1F1A6FCD-DA06-5F8B-8F2C-0BAA08DE0041.dita --- a/Symbian3/PDK/Source/GUID-1F1A6FCD-DA06-5F8B-8F2C-0BAA08DE0041.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1F1A6FCD-DA06-5F8B-8F2C-0BAA08DE0041.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,56 +1,55 @@ - - - - - -How to -allocate buffersExplains the functions to create and allocate flat and segmented -buffers. -

        Allocating buffers is simple: use the desired class’s static NewL() function. -You must specify a granularity, whose meaning is particular to the -buffer type.

        -
        Flat buffer

        To allocate a flat buffer, use CFlatBuf::NewL(). -The granularity in this case means the number of bytes by which the buffer -will be re-allocated, whenever expansion is necessary. If expansion by a greater -amount than this is required, the next highest multiple of the granularity -will be used.

        In this example, the buffer pointer is pushed to the -cleanup stack for the lifetime of the buffer. If any operation involving the -buffer should leave, the buffer will be destroyed. In real use, the buffer -pointer would be stored as member data, and care should be taken to ensure -that the consequences of a leave are not fatal to the application. For example, -if the buffer is being used to store a word processor document, an attempt -to add a character may fail due to lack of memory. This should never cause -the entire document to be destroyed! Instead, the editing code should function -in such a way that the update is either implemented successfully, or no change -is made to the document.

        The function StandardBufferStuffL() is -one which takes a CBufBase type.

        // do flat buffer tests - CBufFlat* flatBuf=CBufFlat::NewL(4); - CleanupStack::PushL(flatBuf); - StandardBufferStuffL(flatBuf); - CleanupStack::PopAndDestroy();
        -
        Segmented buffer

        A segmented buffer is allocated -in a similar way to a flat buffer. The granularity in this case specifies -the size of each segment. During buffer operations, each segment may contain -less data than the granularity. After a compress, data is optimally distributed -to segments, so that all segments except possibly the last one are full.

        During -their lifetime, all standard buffer operations can be performed on either -flat or segmented buffers. This is shown in the examples above by calling standardBufferStuffL() with -both a flat and a segmented buffer pointer. The argument to this function -is a CBufBase*.

        The granularities chosen for these -examples are much smaller than would be used in most real applications.

        // do segmented buffer tests - CBufSeg* segBuf=CBufSeg::NewL(4); - CleanupStack::PushL(segBuf); - standardBufferStuffL(segBuf); - CleanupStack::PopAndDestroy();
        -
        - -Space management -and granularity - + + + + + +How to allocate buffersExplains the functions to create and allocate flat and +segmented buffers. +

        Allocating buffers is simple: use the desired class’s static NewL() function. You must specify a granularity, +whose meaning is particular to the buffer type.

        +
        Flat +buffer

        To allocate a flat buffer, use CFlatBuf::NewL(). The granularity in this case means the number of bytes by which +the buffer will be re-allocated, whenever expansion is necessary. +If expansion by a greater amount than this is required, the next highest +multiple of the granularity will be used.

        In this example, +the buffer pointer is pushed to the cleanup stack for the lifetime +of the buffer. If any operation involving the buffer should leave, +the buffer will be destroyed. In real use, the buffer pointer would +be stored as member data, and care should be taken to ensure that +the consequences of a leave are not fatal to the application. For +example, if the buffer is being used to store a word processor document, +an attempt to add a character may fail due to lack of memory. This +should never cause the entire document to be destroyed! Instead, the +editing code should function in such a way that the update is either +implemented successfully, or no change is made to the document.

        The function StandardBufferStuffL() is one which +takes a CBufBase type.

        // do flat buffer tests + CBufFlat* flatBuf=CBufFlat::NewL(4); + CleanupStack::PushL(flatBuf); + StandardBufferStuffL(flatBuf); + CleanupStack::PopAndDestroy();
        +
        Segmented +buffer

        A segmented buffer is allocated in a similar way +to a flat buffer. The granularity in this case specifies the size +of each segment. During buffer operations, each segment may contain +less data than the granularity. After a compress, data is optimally +distributed to segments, so that all segments except possibly the +last one are full.

        During their lifetime, all standard buffer +operations can be performed on either flat or segmented buffers. This +is shown in the examples above by calling standardBufferStuffL() with both a flat and a segmented buffer pointer. The argument to +this function is a CBufBase*.

        The granularities +chosen for these examples are much smaller than would be used in most +real applications.

        // do segmented buffer tests + CBufSeg* segBuf=CBufSeg::NewL(4); + CleanupStack::PushL(segBuf); + standardBufferStuffL(segBuf); + CleanupStack::PopAndDestroy();
        +
        + +Space management and granularity
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1F6DA049-AC03-5122-8B91-32C007A41526.dita --- a/Symbian3/PDK/Source/GUID-1F6DA049-AC03-5122-8B91-32C007A41526.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1F6DA049-AC03-5122-8B91-32C007A41526.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,91 +1,83 @@ - - - - - -SecureServerExample: -Implementing the Policy Server FrameworkThis example demonstrates the use of the policy server framework. -

        The example shows you how a server checks messages from a client against -a security policy. It also shows you how to deal with the result of a security -check.

        -

        The following sections provide more information about this example application:

        -
        Download

        Click -on the following link to download the example: SecureServer.zip

        Click: browse to view the example code.

        -
        Description

        The -server contains a simple counter. It can change the value of the counter. -It can also write the value of the counter to a file. The server offers the -following services to a client:

          -
        • Increase the value of -the counter by any number greater than 1.

        • -
        • Decrease the value of -the counter by any number greater than 1.

        • -
        • Increase the value of -the counter by 1.

        • -
        • Decrease the value of -the counter by 1.

        • -
        • Reset the counter to -its default value.

        • -
        • Reset the counter to -the value in the file counter.dat.

        • -
        • Save the counter value -in the file counter.dat.

        • -
        • Send the current value -of the counter to a client.

        • -
        • Create, initialise and -close a subsession.

        • -
        • Send the current number -of open subsessions to a client.

        • -

        The client sends a message to the server to request one of these -services. The server checks each request against its security policy. If the -request fails the security check, the request is rejected.

        The security -policy has the following rules:

          -
        • If a client asks the -server to increase the counter value by more than 10, the client ‘s SID value -must be less than or equal to 0x70fffff5.

        • -
        • If a client asks the -server to decrease the counter value by more than 10, the client ‘s SID value -must be less than or equal to 0x70fffff5.

        • -
        • If a client asks the -server for the number of open subsessions, the client’s SID value must be -0x70fffff0.

        • -
        • If a client asks the -server to save the counter value to the file counter.dat, -the client must have both ReadDeviceData and WriteDeviceData capabilities.

        • -
        • If a client asks the -server to reset the counter value from the file counter.dat, -the client must have both ReadDeviceData and WriteDeviceData capabilities.

        • -

        The example application shows how you to code security policies. -It also shows you the constants and classes that you must define to use the -policy server framework.

        -
        Class summary

        This -example demonstrates the following classes:

          -
        • CPolicyServer

        • -
        • CSession2

        • -
        • TVersion

        • -
        • RMessage2

        • -
        • CObject

        • -
        • CObjectCon

        • -
        • CObjectConIx

        • -
        • CObjectIx

        • -
        • RSessionBase

        • -
        • RThread

        • -
        • RSubSessionBase

        • -

        -
        Build

        The Symbian build process describes -how to build this example.

        The SecureServer example -builds the following binaries in the standard location (\epoc32\release\winscw\<build_variant>) -for Carbide.c++.

          -
        • secureclient.exe: -This is the client executable file. It starts the server and shows the behaviour -of the client.

        • -
        • secureserver.dll: -This is the DLL that contains the code for the server. This executable file -must be built before secureclient.exe file.

        • -
        + + + + + +SecureServerExample: Implementing the Policy Server FrameworkThis example demonstrates the use of the policy server +framework. +

        The example shows you how a server checks messages from a client +against a security policy. It also shows you how to deal with the +result of a security check.

        +

        The following sections provide more information about this example +application:

        +
        Download

        Click on the following link to download the example: SecureServer.zip

        Click: browse to view the example code.

        +
        Description

        The server contains a simple counter. It can change the value +of the counter. It can also write the value of the counter to a file. +The server offers the following services to a client:

          +
        • Increase the +value of the counter by any number greater than 1.

        • +
        • Decrease the +value of the counter by any number greater than 1.

        • +
        • Increase the +value of the counter by 1.

        • +
        • Decrease the +value of the counter by 1.

        • +
        • Reset the counter +to its default value.

        • +
        • Reset the counter +to the value in the file counter.dat.

        • +
        • Save the counter +value in the file counter.dat.

        • +
        • Send the current +value of the counter to a client.

        • +
        • Create, initialise +and close a subsession.

        • +
        • Send the current +number of open subsessions to a client.

        • +

        The client sends a message to the server to request one of +these services. The server checks each request against its security +policy. If the request fails the security check, the request is rejected.

        The security policy has the following rules:

          +
        • If a client +asks the server to increase the counter value by more than 10, the +client ‘s SID value must be less than or equal to 0x70fffff5.

        • +
        • If a client +asks the server to decrease the counter value by more than 10, the +client ‘s SID value must be less than or equal to 0x70fffff5.

        • +
        • If a client +asks the server for the number of open subsessions, the client’s SID +value must be 0x70fffff0.

        • +
        • If a client +asks the server to save the counter value to the file counter.dat, the client must have both ReadDeviceData and WriteDeviceData capabilities.

        • +
        • If a client +asks the server to reset the counter value from the file counter.dat, the client must have both ReadDeviceData and WriteDeviceData capabilities.

        • +

        The example application shows how you to code security policies. +It also shows you the constants and classes that you must define to +use the policy server framework.

        +
        Class +summary

        This example demonstrates the following classes:

          +
        • CPolicyServer

        • +
        • CSession2

        • +
        • TVersion

        • +
        • RMessage2

        • +
        • CObject

        • +
        • CObjectCon

        • +
        • CObjectConIx

        • +
        • CObjectIx

        • +
        • RSessionBase

        • +
        • RThread

        • +
        • RSubSessionBase

        • +

        +
        Build

        The Symbian build process describes how to build this example.

        The SecureServer example builds +the following binaries in the standard location (\epoc32\release\winscw\<build_variant>) for Carbide.c++.

          +
        • secureclient.exe: This is the client executable file. It starts the server and shows +the behaviour of the client.

        • +
        • secureserver.dll: This is the DLL that contains the code for the server. This executable +file must be built before secureclient.exe file.

        • +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1FC88405-616F-5ED1-A136-9FE1E9226F0E.dita --- a/Symbian3/PDK/Source/GUID-1FC88405-616F-5ED1-A136-9FE1E9226F0E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1FC88405-616F-5ED1-A136-9FE1E9226F0E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,7 +9,7 @@ --> -Exif Utility Library Guide

        Exif (Exchangeable image file format) is a standard specifying rules for storing metadata in digital image files, mainly those using JPEG compression.

        Purpose

        Exif enhances the JPEG and TIFF specifications with the addition of metadata tags to hold information such as the camera settings used to take the picture.

        Exif Overview

        The Exif standard defines a wide range of metadata tags, some of which are listed below:

        • Date and time information of the image captured.

        • Camera settings like camera model and make, and information that varies with each image such as orientation, aperture, shutter speed, focal length, metering mode, and film speed information.

        • A thumbnail for previewing the picture on camera LCD.

        • Copyright information.

        Accessing Exif Metadata

        Access to Exif metadata is provided through an abstract interface available in all the main ICL APIs. This interface can be implemented and managed through an ICL plugin, exhibiting the functionality to the client through the plugin extension mechanism.

        The MExifMetaData class is a generic interface for accessing the Exif metadata. To access a specific item of a metadata, both tag ID and the primary Image File Directory [IFD] number must be provided in the MExifMetaData access method, as some tags may appear in more than one IFD. The primary IFD number may either be 0 or 1. The main image tags are grouped together under IFD 0 and the tags for the thumbnail images are grouped under IFD 1 in the Exif metadata. The tags under these IFD can be further classified into sub IFD:

        For example : Tags related to the GPS can be sorted to form a group.

        The MExifMetaData is compounded by two classes as mentioned below:

        • MExifMetadataReader : This provides more generic functionalitites to read the tags from the Exif Metadata. The user is expected to provide the tag id and the primary IFD for the tags that needs to be read.

        • MExifMetadataWriter : This is a generic way to write or set the tags of the Exif metadata. Here also the user is expected to render the key inputs like tag id and IFD for the data that needs to be written or modified.

        The access provided by MExifMetaData is quite low level. The users are expected to know the tag IDs defined in the Exif specification in order to use it. Hence more user friendly classes as listed below are made available to access these tags.

        Examples

        This section contains code snippets showing how Exif metadata is accessed in several situations.

        JPEG Exif Plugin

        • TExifReaderUtility : This class provides a user friendly interface for reading the metadata in Exif encoded image files. The following example code illustrates its use:

          void CIclExample::AccessToEXIFMetadataL(const TDesC& aFileName) +Exif Utility Library Guide

          Exif (Exchangeable image file format) is a standard specifying rules for storing metadata in digital image files, mainly those using JPEG compression.

          Purpose

          Exif enhances the JPEG and TIFF specifications with the addition of metadata tags to hold information such as the camera settings used to take the picture.

          Exif Overview

          The Exif standard defines a wide range of metadata tags, some of which are listed below:

          • Date and time information of the image captured.

          • Camera settings like camera model and make, and information that varies with each image such as orientation, aperture, shutter speed, focal length, metering mode, and film speed information.

          • A thumbnail for previewing the picture on camera LCD.

          • Copyright information.

          Accessing Exif Metadata

          Access to Exif metadata is provided through an abstract interface available in all the main ICL APIs. This interface can be implemented and managed through an ICL plugin, exhibiting the functionality to the client through the plugin extension mechanism.

          The MExifMetaData class is a generic interface for accessing the Exif metadata. To access a specific item of a metadata, both tag ID and the primary Image File Directory [IFD] number must be provided in the MExifMetaData access method, as some tags may appear in more than one IFD. The primary IFD number may either be 0 or 1. The main image tags are grouped together under IFD 0 and the tags for the thumbnail images are grouped under IFD 1 in the Exif metadata. The tags under these IFD can be further classified into sub IFD:

          For example : Tags related to the GPS can be sorted to form a group.

          The MExifMetaData is compounded by two classes as mentioned below:

          • MExifMetadataReader : This provides more generic functionalitites to read the tags from the Exif Metadata. The user is expected to provide the tag id and the primary IFD for the tags that needs to be read.

          • MExifMetadataWriter : This is a generic way to write or set the tags of the Exif metadata. Here also the user is expected to render the key inputs like tag id and IFD for the data that needs to be written or modified.

          The access provided by MExifMetaData is quite low level. The users are expected to know the tag IDs defined in the Exif specification in order to use it. Hence more user friendly classes as listed below are made available to access these tags.

          Examples

          This section contains code snippets showing how Exif metadata is accessed in several situations.

          JPEG Exif Plugin

          • TExifReaderUtility : This class provides a user friendly interface for reading the metadata in Exif encoded image files. The following example code illustrates its use:

            void CIclExample::AccessToEXIFMetadataL(const TDesC& aFileName) { HBufC8* buffer8Bit=NULL; diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1FCD0312-7B28-47F9-BE54-822B74A8934C.dita --- a/Symbian3/PDK/Source/GUID-1FCD0312-7B28-47F9-BE54-822B74A8934C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1FCD0312-7B28-47F9-BE54-822B74A8934C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,84 +1,81 @@ - - - - -Designing applications for touch UI - - - - -

            Both touch screens and hybrid devices are supported by Symbian -platform. Touch screen enables direct manipulation of content and -objects, allowing for far more natural interaction with the device. -This means a completely different user experience and interaction -style compared to using a hardware keypad.

            - -

            All applications must be touch-enabled, which means that they can -be used with the touch screen alone, regardless of the presence of -a keypad. In Symbian platform-based touch devices, the important hardware -keys are Send, End, Multi-tasking and Power key.

            -

            The application features must follow the platform support for different -hardware. When designing a touch-enabled Symbian application, the -UI must be designed so that everything can be accomplished by using -the touch screen interface, as the potential target devices may or -may not have a hardware keyboard.

            -

            The touch UI in the Symbian platform is based on the use of resistive -and capacitive touch screens. In resistive touch screen technology, -two conductive and resistive layers are separated by a thin space. -When an object touches this kind of touch panel, the layers are connected -at a certain point, and a touch event is registered. This allows efficient -stylus control, in addition to finger touch - unlike capacitive panels, -which usually register only finger touch. Additionally, resistive -touch screen offers a higher resolution and more durability. In capacitive touch screen technology, the panel consists of an -insulator such as glass, coated with a transparent conductor (such -as indium tin oxide (ITO)). When an object touches the surface of -the screen, it results in a distortion of the local electrostatic -field, measurable as a change in capacitance. Then a touch controller -measures the frequency variations to ascertain the co-ordinates of -the object's touch. Capacitive touch screen supports multiple touch.

            -

            The hardware is supported by various:

            -
              -
            • touch-specific components (see Touch support -for common UI components)

            • -
            • component and UI behavior changes

            • -
            • layout changes, and

            • -
            • additions to the interaction style.

            • -
            -

            The touch UI is designed to enable full task flow with touch, with -minimal need to switch to hardware keys. Thus, the design ensures -that users can complete a task with the chosen interaction method -from start to finish.

            -

            While designing and implementing applications for touch screen -devices based on the Symbian platform, consider interactions that -benefit the most from the touch UI.

            -

            If you can apply direct manipulation of the UI, for example when -moving items from one place to another, or scrolling a page, do not -confine the user with unnecessary scrollbars or have the user resort -to options list commands.

            -

            Instead, enable the user to view pages larger than a screen by -panning them directly, and dragging and dropping items rather than -marking them and using menu options.

            -
              -
            • Remember that the most intuitive touch screen interactions -that can be performed using a finger are tapping, stroking up/down/left/right, -and the long tap.

            • -
            • Utilize strokes that are easily discovered to the users in -the given context. It should be explicit to the user where strokes -can be performed.

            • -
            • Design to ensure that users can complete a task with the same -interaction method from start to finish - touch or hardware keys, -stylus, or finger, and using one hand or both hands.

            • -
            • Aim to optimize system performance and battery consumption -to provide a fluid and reliable touch user experience.

            • -
            -

            See Also:

            -
            -
            - + + + + + +Designing applications for touch UI +

            Both touch screens and hybrid devices are supported by Symbian +platform. Touch screen enables direct manipulation of content and +objects, allowing for far more natural interaction with the device. +This means a completely different user experience and interaction +style compared to using a hardware keypad.

            + + + + +

            All applications must be touch-enabled, which means that they can +be used with the touch screen alone, regardless of the presence of +a keypad. In Symbian platform-based touch devices, the important hardware +keys are Send, End, Multi-tasking and Power key.

            +

            The application features must follow the platform support for different +hardware. When designing a touch-enabled Symbian application, the +UI must be designed so that everything can be accomplished by using +the touch screen interface, as the potential target devices may or +may not have a hardware keyboard.

            +

            The touch UI in the Symbian platform is based on the use of resistive +and capacitive touch screens. In resistive touch screen technology, +two conductive and resistive layers are separated by a thin space. +When an object touches this kind of touch panel, the layers are connected +at a certain point, and a touch event is registered. This allows efficient +stylus control, in addition to finger touch - unlike capacitive panels, +which usually register only finger touch. Additionally, resistive +touch screen offers a higher resolution and more durability. In capacitive touch screen technology, the panel consists of an +insulator such as glass, coated with a transparent conductor (such +as indium tin oxide (ITO)). When an object touches the surface of +the screen, it results in a distortion of the local electrostatic +field, measurable as a change in capacitance. Then a touch controller +measures the frequency variations to ascertain the co-ordinates of +the object's touch. Capacitive touch screen supports multiple touch.

            +

            The hardware is supported by various:

            +
              +
            • touch-specific components (see Touch support for +common UI components)

            • +
            • component and UI behavior changes

            • +
            • layout changes, and

            • +
            • additions to the interaction style.

            • +
            +

            The touch UI is designed to enable full task flow with touch, with +minimal need to switch to hardware keys. Thus, the design ensures +that users can complete a task with the chosen interaction method +from start to finish.

            +

            While designing and implementing applications for touch screen +devices based on the Symbian platform, consider interactions that +benefit the most from the touch UI.

            +

            If you can apply direct manipulation of the UI, for example when +moving items from one place to another, or scrolling a page, do not +confine the user with unnecessary scrollbars or have the user resort +to options list commands.

            +

            Instead, enable the user to view pages larger than a screen by +panning them directly, and dragging and dropping items rather than +marking them and using menu options.

            +
              +
            • Remember that the most intuitive touch screen interactions +that can be performed using a finger are tapping, stroking up/down/left/right, +and the long tap.

            • +
            • Utilize strokes that are easily discovered to the users in +the given context. It should be explicit to the user where strokes +can be performed.

            • +
            • Design to ensure that users can complete a task with the same +interaction method from start to finish - touch or hardware keys, +stylus, or finger, and using one hand or both hands.

            • +
            • Aim to optimize system performance and battery consumption +to provide a fluid and reliable touch user experience.

            • +
            +

            See Also:

            +
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-1FE5D4D5-B2BF-4090-9F69-D538B2220DA3.dita --- a/Symbian3/PDK/Source/GUID-1FE5D4D5-B2BF-4090-9F69-D538B2220DA3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-1FE5D4D5-B2BF-4090-9F69-D538B2220DA3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -13,9 +13,9 @@ Global Variable ExampleThis example demonstrates:

            How to handle global variables within the library code

            How to use WSD (Writable Static Data) in dll

            -
            Download

            Click +

            Download

            Click on the following link to download the example: handleglobalvar.zip

            Click: browse to view the example code.

            -
            Design and +<section id="GUID-7E7C4564-B10E-41F9-8A9D-D8A6C5E9C51C-GENID-1-12-1-14-1-1-5-1-3-1-11-1-10-1-3-4"><title>Design and Implementation

            The following sections provide information about the implementation of the example.

            Capabilities

            The program capabilities are defined in globalvarex.mmp: CAPABILITY @@ -28,7 +28,7 @@ it's required. For target release, use global variables and add EPOCALLOWDLLDATA in the library mmp file. wsddll.h and wsddll.cpp implement the concept of how to handle WSD data in Dll.
            -
            Building and +<section id="GUID-67A72761-1D92-46D1-B1C9-7455978BDE4E-GENID-1-12-1-14-1-1-5-1-3-1-11-1-10-1-3-5"><title>Building and Using To build the handleglobalvar example application, go to the handleglobalvar\group directory and build the application. The definition for the whole application can be found in the bld.inf file in the group subdirectory diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-201E6D4C-5F0F-5AA2-BC79-91E3C62C8971.dita --- a/Symbian3/PDK/Source/GUID-201E6D4C-5F0F-5AA2-BC79-91E3C62C8971.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ - - - - - -How to write a meta file

            A meta file is an additional information file associated with each template extension makefile. It is used to set values to attributes to specify the build platform, makefile type and default option values for the extension. The meta file name is same as that of the associated template extension makefile, except the .mk suffix is replaced with .meta.

            The following provides a step-by-step explanation to write a meta file:

            1. Specify whether the makefile is of type gnumake (GCC make format) or nmake (Microsoft make format) using the keyword makefile. It is recommended to use gnumake, as most of the templates are based on GNU make format. The value nmake is not recommended as use of nmake is deprecated.

            2. Specify the platform using the keyword platform which is optional. it is useful to specify the platform, if you want to build for a specific platform such as WINSCW, ARMV5 and so on.

            3. Specify the default values for options specific to the extension, using the keyword option which is optional. These default values can be changed in the bld.inf file within the START - EXTENSION ... END block. For more information on START - EXTENSION, refer to prj_extensions.

            For more information on meta file syntax, refer to Meta Files.

            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2051AAEF-140C-5EEF-874F-52971E76F853_d0e442925_href.png Binary file Symbian3/PDK/Source/GUID-2051AAEF-140C-5EEF-874F-52971E76F853_d0e442925_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2051AAEF-140C-5EEF-874F-52971E76F853_d0e448770_href.png Binary file Symbian3/PDK/Source/GUID-2051AAEF-140C-5EEF-874F-52971E76F853_d0e448770_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-20552A48-93D5-5B0E-8B53-A01913CC7A9F_d0e230006_href.png Binary file Symbian3/PDK/Source/GUID-20552A48-93D5-5B0E-8B53-A01913CC7A9F_d0e230006_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-20552A48-93D5-5B0E-8B53-A01913CC7A9F_d0e236001_href.png Binary file Symbian3/PDK/Source/GUID-20552A48-93D5-5B0E-8B53-A01913CC7A9F_d0e236001_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-209F19E9-B61B-5758-B742-CA02B8BD5B02.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-209F19E9-B61B-5758-B742-CA02B8BD5B02.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,147 @@ + + + + + +SCR Overview +

            The Software Component Registry (SCR) is a unified registry of +native and non-native software components. The SCR provides a common AppArc support +for handling native and non-native applications.

            +
            Purpose

            The SCR lists the software installed on a device. The installed +software can be native Symbian applications or non-native applications +such as Java or Python. The registry contains information about applications, +application related property and value pairs, and inter-dependencies +between applications and components.

            +
            Key +concepts

            Component: is a cohesive set of files +and settings that provides a single unit for installation or uninstallation.

            Software type: is a package format for delivering software, +such as SIS, MIDP, JAR and Flash SWF.

            Component and file +properties: are properties of a file or a component to be stored +in the SCR.

              +
            • File properties: include information such as the file size.

            • +
            • Component +properties: include information such as component name, vendor +name and software type.

            • +

            Global component ID: is the unique ID of a component. +This UID is consistent across all devices. For example, the global +component ID for native applications is the package UID. It is used +to state dependencies and to check for installed components.

            Locale: is represented by a language code.

            +
            Architectural +relationships

            SCR is a component in the Installation Services +collection. It collates all software book-keeping into a cohesive +unit that is used by the SWI, SIF, SIF installers, applications and +device managers and AppArc.

            The following architectural diagram +shows the high-level interaction between SCR and other components.

            +SCR interaction diagram + +

            SCR is implemented as a server. Clients use SCR through +the client-side resource class RSoftwareComponentRegistry.

            Note: Device creators must ensure that a default +database exists in the ROM when the SCR server is started for the +first time. The Symbian platform provides a PC-based tool, SCRTool, to create a default database.

            +
            APIs

            The SCR interface is designed to be used by software installation, +application management and device management applications. The following +are the key classes:

            + + + +API +Description + + +

            RSoftwareComponentRegistry

            +

            Provides interfaces to install, uninstall, and update software +components. It is a client-side class used to perform the following:

              +
            • Component management: Adds or removes components.

            • +
            • Transaction management: Commits or rolls back a set of SQL +operations together.

            • +
            • Read-only queries: Retrieves component properties, file properties +and application information.

            • +
            +
            + +

            RSoftwareComponentRegistryView

            +

            Opens a sub-session to the SCR server and sends a request +to create a component view using a supplied filter.

            A filter +can be set by specifying the component information such as ID, name, +size, removable, locale, version, vendor, string property, integer +property, software type, SCOMO state or installed drives.

            +
            + +

            RSoftwareComponentRegistryFilesList

            +

            Provides APIs to get the list of the files registered in +the SCR for a specific component.

            +
            + +

            RApplicationRegistryView

            +

            Opens a sub-session to the SCR server and sends a request +to create a complete Application Registration view. This class can +only be used by AppArc.

            +
            + +

            RApplicationInfoView

            +

            Opens a sub-session to the SCR server and sends a request +to create an AppInfo view by using filters on the server side. It +returns information based on the filters supplied. The information +includes the full pathname, caption, short caption information and +UID of the application.

            +
            + +

            RRegistrationInfoForApplication

            +

            Opens a sub-session to the SCR server with a particular +application UID and fetches the details such as Service UID for the +application only.

            +
            + +

            RApplicationRegistrationInfo

            +

            Opens a sub-session to the SCR server and is used to retrieve +application information such as the application UID.

            +
            + +

            RSoftwareComponentRegistry::AddComponentL()

            +

            Adds a new software component entry to the SCR database.

            +
            + +

            RSoftwareComponentRegistry::SetComponentPropertyL()

            +

            Is an overloaded API to add an integer, string or blob property +to the registry for a given software component and locale. If the +property already exists, the value is updated.

            +
            + +

            RSoftwareComponentRegistry::RegisterComponentFileL()

            +

            Registers a file to a given software component.

            +
            + +

            RSoftwareComponentRegistry::DeleteComponentPropertyL()

            +

            Deletes a specific file property entry for a given file +and software component.

            +
            + +

            RSoftwareComponentRegistry::AddApplicationEntryL()

            +

            Adds a new application entry to the SCR database.

            +
            + +

            RSoftwareComponentRegistry::DeleteApplicationEntriesL()

            +

            Deletes the information of all applications associated +with an existing component entry from the SCR database.

            +
            + + + + + + +
            +
            Typical +uses

            SCR APIs are typically used to manage software installation.

            SWI parses the registration resource files and updates the SCR +with the application registration information and package information.

            Non-native installers update the package information directly +to SCR.

            AppArc queries SCR to retrieve the list of applications +to create an application list.

            SIF uses SCR to retrieve the +package information.

            Application managers use SCR to retrieve +the application registration information.

            +
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-20B2C96A-9742-4CB0-A37F-19B65765E826.dita --- a/Symbian3/PDK/Source/GUID-20B2C96A-9742-4CB0-A37F-19B65765E826.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-20B2C96A-9742-4CB0-A37F-19B65765E826.dita Fri Jul 16 17:23:46 2010 +0100 @@ -25,7 +25,7 @@ virtual void DecodeL(const TDesC8& aData, HBufC8*& aHTTPData, TBool& aTransFail) = 0; }; -
            The EncodeL() +<section id="GUID-6E64E5BA-0FA7-5B9D-987E-09F2D5F53AE8-GENID-1-12-1-16-1-1-3-1-3-1-13-1-4-1-4-1-2-3"> <title>The EncodeL() method

            This method converts HTTP request data (to your selected network optimisation protocol format) before it is sent across the TCP connection. This method has the following parameters:

              @@ -36,7 +36,7 @@ format.

            Note: It is assumed that you define a custom optimisation mechanism to encode the HTTP request data by implementing the EncodeL() method.

            -
            The DecodeL() +<section id="GUID-6E64E5BA-0FA7-5B9D-987E-09F2D5F53AE8-GENID-1-12-1-16-1-1-3-1-3-1-13-1-4-1-4-1-2-4"> <title>The DecodeL() method

            This method converts the HTTP response data in your selected network optimisation protocol format back to the standard HTTP response data format. This method has the following parameters:

              diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-20B364FB-FC12-5EF1-B0EC-1A845693EFFD_d0e261138_href.png Binary file Symbian3/PDK/Source/GUID-20B364FB-FC12-5EF1-B0EC-1A845693EFFD_d0e261138_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-20B364FB-FC12-5EF1-B0EC-1A845693EFFD_d0e267147_href.png Binary file Symbian3/PDK/Source/GUID-20B364FB-FC12-5EF1-B0EC-1A845693EFFD_d0e267147_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-20C633DE-CD37-5807-9F2E-6E4CFC35DB28_d0e244837_href.png Binary file Symbian3/PDK/Source/GUID-20C633DE-CD37-5807-9F2E-6E4CFC35DB28_d0e244837_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-20C633DE-CD37-5807-9F2E-6E4CFC35DB28_d0e250848_href.png Binary file Symbian3/PDK/Source/GUID-20C633DE-CD37-5807-9F2E-6E4CFC35DB28_d0e250848_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-20FECB77-2E1D-4104-948F-8E878DAFE1B8_d0e95866_href.png Binary file Symbian3/PDK/Source/GUID-20FECB77-2E1D-4104-948F-8E878DAFE1B8_d0e95866_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-20FECB77-2E1D-4104-948F-8E878DAFE1B8_d0e99985_href.png Binary file Symbian3/PDK/Source/GUID-20FECB77-2E1D-4104-948F-8E878DAFE1B8_d0e99985_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-20FEEF54-23CB-4D30-B846-11B4ACE8E772_d0e2859_href.png Binary file Symbian3/PDK/Source/GUID-20FEEF54-23CB-4D30-B846-11B4ACE8E772_d0e2859_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-20FEEF54-23CB-4D30-B846-11B4ACE8E772_d0e2869_href.png Binary file Symbian3/PDK/Source/GUID-20FEEF54-23CB-4D30-B846-11B4ACE8E772_d0e2869_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2105B5F0-2D00-5ECA-8859-A8A432423327_d0e339048_href.png Binary file Symbian3/PDK/Source/GUID-2105B5F0-2D00-5ECA-8859-A8A432423327_d0e339048_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2105B5F0-2D00-5ECA-8859-A8A432423327_d0e345020_href.png Binary file Symbian3/PDK/Source/GUID-2105B5F0-2D00-5ECA-8859-A8A432423327_d0e345020_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-212C33A7-19DE-5936-B78E-CB7357FAEB5B_d0e587737_href.png Binary file Symbian3/PDK/Source/GUID-212C33A7-19DE-5936-B78E-CB7357FAEB5B_d0e587737_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-212C33A7-19DE-5936-B78E-CB7357FAEB5B_d0e615631_href.png Binary file Symbian3/PDK/Source/GUID-212C33A7-19DE-5936-B78E-CB7357FAEB5B_d0e615631_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-21562C58-896C-48B0-A574-975E1326A93A_d0e166696_href.jpg Binary file Symbian3/PDK/Source/GUID-21562C58-896C-48B0-A574-975E1326A93A_d0e166696_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-21562C58-896C-48B0-A574-975E1326A93A_d0e172789_href.jpg Binary file Symbian3/PDK/Source/GUID-21562C58-896C-48B0-A574-975E1326A93A_d0e172789_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2161BD64-889B-5EAB-B023-1162FE9619DB.dita --- a/Symbian3/PDK/Source/GUID-2161BD64-889B-5EAB-B023-1162FE9619DB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2161BD64-889B-5EAB-B023-1162FE9619DB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -39,7 +39,7 @@ object is not relevant to the example and is not shown.

              The following diagram shows the relationship between the classes.

              - +
              Encapsulating the service provider

              The class CActiveConsole encapsulates the provision of basic keyboard services. Its iConsole data diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-217C992B-AC56-42A7-9920-DEC891D233A5.dita --- a/Symbian3/PDK/Source/GUID-217C992B-AC56-42A7-9920-DEC891D233A5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-217C992B-AC56-42A7-9920-DEC891D233A5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -19,20 +19,20 @@ as soon as it is not needed anymore. An application can also keep the optional RAM allocation until OOM Monitor requests to release it.

              - -Create an OOM Monitor + +Create an OOM Monitor session. ROomMonitorSession ioomMonitorSession; CleanUpClosePushL(ioomMonitorSession); User::LeaveIfError(ioomMonitorSession.Connect()); -Request for optional +Request for optional RAM. iOomMonitorSession.RequestOptionalRam(aBytesRequested,aMinimumBytesNeeded,aPluginId,aBytesAvailable);

              -Close the session. +Close the session. iOomMonitorSession.Close(); diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2183F898-48C2-53A3-ADA0-1132EF7D4380_d0e170520_href.png Binary file Symbian3/PDK/Source/GUID-2183F898-48C2-53A3-ADA0-1132EF7D4380_d0e170520_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2183F898-48C2-53A3-ADA0-1132EF7D4380_d0e176594_href.png Binary file Symbian3/PDK/Source/GUID-2183F898-48C2-53A3-ADA0-1132EF7D4380_d0e176594_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-21A1D1D2-524E-560E-88C8-16E2E49E2B7F_d0e354227_href.jpg Binary file Symbian3/PDK/Source/GUID-21A1D1D2-524E-560E-88C8-16E2E49E2B7F_d0e354227_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-21A1D1D2-524E-560E-88C8-16E2E49E2B7F_d0e360144_href.jpg Binary file Symbian3/PDK/Source/GUID-21A1D1D2-524E-560E-88C8-16E2E49E2B7F_d0e360144_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-21E43B0E-85C7-536E-83A5-E829820775BF_d0e485288_href.png Binary file Symbian3/PDK/Source/GUID-21E43B0E-85C7-536E-83A5-E829820775BF_d0e485288_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-21E43B0E-85C7-536E-83A5-E829820775BF_d0e491117_href.png Binary file Symbian3/PDK/Source/GUID-21E43B0E-85C7-536E-83A5-E829820775BF_d0e491117_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-21EF9E6F-A0BF-5EB2-9E3F-CA6A011D4C89_d0e237456_href.png Binary file Symbian3/PDK/Source/GUID-21EF9E6F-A0BF-5EB2-9E3F-CA6A011D4C89_d0e237456_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-21EF9E6F-A0BF-5EB2-9E3F-CA6A011D4C89_d0e243429_href.png Binary file Symbian3/PDK/Source/GUID-21EF9E6F-A0BF-5EB2-9E3F-CA6A011D4C89_d0e243429_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-21F0EE0E-6CC6-44E7-9FED-FB8911E3C3A2_d0e282741_href.jpg Binary file Symbian3/PDK/Source/GUID-21F0EE0E-6CC6-44E7-9FED-FB8911E3C3A2_d0e282741_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-21F0EE0E-6CC6-44E7-9FED-FB8911E3C3A2_d0e288732_href.jpg Binary file Symbian3/PDK/Source/GUID-21F0EE0E-6CC6-44E7-9FED-FB8911E3C3A2_d0e288732_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-22093E74-EFE7-5642-93DE-1573E18F7C08.dita --- a/Symbian3/PDK/Source/GUID-22093E74-EFE7-5642-93DE-1573E18F7C08.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-22093E74-EFE7-5642-93DE-1573E18F7C08.dita Fri Jul 16 17:23:46 2010 +0100 @@ -19,7 +19,7 @@ and lower loops.

              The Window Server's upper and lower rendering loops - +

              The upper loop is the process by which the Window Server’s scene @@ -43,7 +43,7 @@

            The main participants in the ScreenPlay Window Server rendering loop - +

            On the client side, RWindow and CWindowGc commands are converted to opcodes that are stored in a command buffer. When the command @@ -101,7 +101,7 @@ window on the screen.

            A transition effect temporarily obscures a window on the screen - +

            In this and similar scenarios, the Window Server does not know whether a window is obscured or visible. Therefore dirty-rectangle tracking is not diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-220D3B2F-7A88-55AB-942F-1735A6E9E420_d0e536541_href.png Binary file Symbian3/PDK/Source/GUID-220D3B2F-7A88-55AB-942F-1735A6E9E420_d0e536541_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-220D3B2F-7A88-55AB-942F-1735A6E9E420_d0e544001_href.png Binary file Symbian3/PDK/Source/GUID-220D3B2F-7A88-55AB-942F-1735A6E9E420_d0e544001_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-220D7D10-5571-46C4-BA2B-B4FBAE4153F1_d0e63749_href.png Binary file Symbian3/PDK/Source/GUID-220D7D10-5571-46C4-BA2B-B4FBAE4153F1_d0e63749_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-220D7D10-5571-46C4-BA2B-B4FBAE4153F1_d0e67971_href.png Binary file Symbian3/PDK/Source/GUID-220D7D10-5571-46C4-BA2B-B4FBAE4153F1_d0e67971_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-22498580-E902-4024-921C-F756A8CD58DF_d0e102803_href.png Binary file Symbian3/PDK/Source/GUID-22498580-E902-4024-921C-F756A8CD58DF_d0e102803_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-22498580-E902-4024-921C-F756A8CD58DF_d0e98725_href.png Binary file Symbian3/PDK/Source/GUID-22498580-E902-4024-921C-F756A8CD58DF_d0e98725_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-22699952-D032-5B69-B38A-43347A40A420_d0e582132_href.png Binary file Symbian3/PDK/Source/GUID-22699952-D032-5B69-B38A-43347A40A420_d0e582132_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-22699952-D032-5B69-B38A-43347A40A420_d0e631420_href.png Binary file Symbian3/PDK/Source/GUID-22699952-D032-5B69-B38A-43347A40A420_d0e631420_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2273C35F-C8FD-5321-BAE8-4995C5B374E5.dita --- a/Symbian3/PDK/Source/GUID-2273C35F-C8FD-5321-BAE8-4995C5B374E5.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - --what

            This option creates a list of files in exactly the same way as option -check. The list of files is then piped to STDOUT.

            The option could be useful to find out where a particular build step is creating files, or for creating a zip file containing the releasables for a component by piping the list of files to a file and then having a zip utility process this file.

            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita --- a/Symbian3/PDK/Source/GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-22844C28-AB5B-5A6F-8863-7269464684B4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -36,7 +36,7 @@ It can only be reached via the client-side interface.

            This image depicts the client / server nature of Symbian SQL - +
            API summary

            The SQL component client consists of three APIs which are used to access, query and secure a database.

            SQL APIs

              diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-22E46647-D677-5A47-A7E0-E1E0AE736B27.dita --- a/Symbian3/PDK/Source/GUID-22E46647-D677-5A47-A7E0-E1E0AE736B27.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-22E46647-D677-5A47-A7E0-E1E0AE736B27.dita Fri Jul 16 17:23:46 2010 +0100 @@ -43,7 +43,7 @@ A configuration at ROM build time decides which implementation is used.

              DirectGDI architecture - +

              Notice that all three of the implementations implement the common MDirectGdiEngine interface. Also notice that the hardware implementation uses asynchronous calls to the @@ -58,7 +58,7 @@ red. Classes that cross the generic layer boundary have some parts that cannot be modified (such as a fixed API), but have other parts that can be modified.

              The DirectGDI generic layer classes - +
            DirectGDI diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-22F4D9EA-9912-466E-B729-7706BC17BDA1.dita --- a/Symbian3/PDK/Source/GUID-22F4D9EA-9912-466E-B729-7706BC17BDA1.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-22F4D9EA-9912-466E-B729-7706BC17BDA1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,45 +1,44 @@ - - - - - -Write -a converter DLL project file -

            Project file defines the location of the source files that -required are to build a plug-in.

            To write a converter DLL project file, -specify the following in the .mmp file:

              -
            • The extension of the target file as .dll.

            • -
            • The TARGETTYPE as plugin.

            • -
            • The second UID as 0x10009d8d. This value identifies -the DLL as an ECom plug-in. The third UID (0xE800009B in -this example) must be unique and properly allocated. See the Symbian -SignedSymbian Signed web site for information on how to allocate UIDs.

            • -
            • The library section must include conarc.lib.

            • -

            The following is an example of an .mmp file that -builds a converter DLL called EXAMPLECONV.dll:

            // ExampleConv.MMP -target exampleconv.dll -targettype plugin -UID 0x10009d8d 0xE800009B -VENDORID 0x70000001 -CAPABILITY All -Tcb -sourcepath . -start resource E800009B.rss -target exampleconv.rsc -end -start resource E80000AC.rss -targetpath /resource/convert -end -userinclude . -systeminclude . /epoc32/include -systeminclude /epoc32/include/ecom -source ExampleConv.CPP -library euser.lib -library conarc.lib estor.lib -
            + + + + + +Write a converter DLL project file +

            Project file defines the location of the source +files that required are to build a plug-in.

            To write a converter +DLL project file, specify the following in the .mmp file:

              +
            • The extension of the target file as .dll.

            • +
            • The TARGETTYPE as plugin.

            • +
            • The second UID as 0x10009d8d. This value identifies +the DLL as an ECom plug-in. The third UID (0xE800009B in this example) must be unique and properly allocated. See the Symbian +Signed Symbian Signed web site for information on how to allocate +UIDs.

            • +
            • The library section must include conarc.lib.

            • +

            The following is an example of an .mmp file +that builds a converter DLL called EXAMPLECONV.dll:

            // ExampleConv.MMP +target exampleconv.dll +targettype plugin +UID 0x10009d8d 0xE800009B +VENDORID 0x70000001 +CAPABILITY All -Tcb +sourcepath . +start resource E800009B.rss +target exampleconv.rsc +end +start resource E80000AC.rss +targetpath /resource/convert +end +userinclude . +systeminclude . /epoc32/include +systeminclude /epoc32/include/ecom +source ExampleConv.CPP +library euser.lib +library conarc.lib estor.lib +
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-231840A2-255B-5200-8AD1-1D7667FCB448.dita --- a/Symbian3/PDK/Source/GUID-231840A2-255B-5200-8AD1-1D7667FCB448.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-231840A2-255B-5200-8AD1-1D7667FCB448.dita Fri Jul 16 17:23:46 2010 +0100 @@ -35,7 +35,7 @@ is built.

            The class defines a schema for the record. A schema is a pattern for the record that all records of this type follow. The class contains a set of fields and links to other records.

            - +

            For example, Symbian platform defines the class CCDIAPRecord. The class represents an Internet Access Point (IAP) record. A set of IAP records form an IAP table. Symbian platform assigns the unique numeric Id KCDTIdIAPRecord to a record of this type.

            The @@ -71,7 +71,7 @@ to initialise a record in memory. Tools and Applications can also get use the LoadL() and FindL() functions to get the the table schema from the Comms Database.

            - +

            You use the same methods to create, store and access user defined records that Symbian platform defined records use. Symbian platform backs up user defined data and secures user defined data with Platform Security. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-231E58F2-7935-462A-B048-51729D8245D4_d0e13927_href.png Binary file Symbian3/PDK/Source/GUID-231E58F2-7935-462A-B048-51729D8245D4_d0e13927_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-231E58F2-7935-462A-B048-51729D8245D4_d0e14027_href.png Binary file Symbian3/PDK/Source/GUID-231E58F2-7935-462A-B048-51729D8245D4_d0e14027_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-236C0D1D-AC4C-5C08-9089-1AC59881CD39_d0e210776_href.jpg Binary file Symbian3/PDK/Source/GUID-236C0D1D-AC4C-5C08-9089-1AC59881CD39_d0e210776_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-236C0D1D-AC4C-5C08-9089-1AC59881CD39_d0e216777_href.jpg Binary file Symbian3/PDK/Source/GUID-236C0D1D-AC4C-5C08-9089-1AC59881CD39_d0e216777_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2380FDDE-5489-5B1C-87BB-1FD882E385D2.dita --- a/Symbian3/PDK/Source/GUID-2380FDDE-5489-5B1C-87BB-1FD882E385D2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2380FDDE-5489-5B1C-87BB-1FD882E385D2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -198,7 +198,7 @@ true.

            Consider the following case. A request has been made to read 1024 bytes from a media device that has a block size of 512 bytes. The 1024 bytes start at offset +256 on the media device.

            - +

            To get the first 256 bytes, you must read the first block of 512 bytes from the media device. This can corrupt the physical memory passed in the I/O request. The solution is to read the first block from the media device diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2393237A-E60F-5556-8657-B0AA6470225C.dita --- a/Symbian3/PDK/Source/GUID-2393237A-E60F-5556-8657-B0AA6470225C.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ - - - - - -option -

            option keyword compiler-options

            -

            Use the option statement to specify additional compiler -options.

            -

            keyword specifies the compiler. Possible values are ARMCC for -ARM RVCT, CW for CodeWarrior, GCC for GCC, GCCE for -GCCE, and MSVC for MS Visual C++.

            -

            The following statement turns warnings off in CodeWarrior -builds.

            OPTION CW -w off
            - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-239B8B32-5816-575E-97B1-FF7B68BC7575_d0e144608_href.png Binary file Symbian3/PDK/Source/GUID-239B8B32-5816-575E-97B1-FF7B68BC7575_d0e144608_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-239B8B32-5816-575E-97B1-FF7B68BC7575_d0e146857_href.png Binary file Symbian3/PDK/Source/GUID-239B8B32-5816-575E-97B1-FF7B68BC7575_d0e146857_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-23A60DE7-B72D-41BD-9F1E-882D31A7E3C7.dita --- a/Symbian3/PDK/Source/GUID-23A60DE7-B72D-41BD-9F1E-882D31A7E3C7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-23A60DE7-B72D-41BD-9F1E-882D31A7E3C7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,96 +1,92 @@ - - - - - -Required -resource file statements -

            As noted in Resource -file structure, -if the NAME is given, it must be the first statement -in the resource file.

            -

            After the NAME statement, resource files must begin -with the following three RESOURCE statements:

            -
              -
            • RESOURCE RSS_SIGNATURE

            • -
            • RESOURCE TBUF

            • -
            • RESOURCE TBUF RESOURCE EIK_APP_INFO

              -
            • -
            -
            RESOURCE RSS_SIGNATURE -

            The RSS_SIGNATURE resource is used to declare the -version number of the resource file. Leave this blank. The syntax is as follows:

            -RESOURCE RSS_SIGNATURE - { - signature = value - } -

            where signature is a LONG value.

            -

            By default the signature is set to 0.

            -

            For an example, see helloworldbasic.rss.

            -

            For more information on RSS_STRUCTURE, see BA_RSS_SIGNATURE.

            -
            -
            RESOURCE TBUF -

            The TBUF resource may be used to declare a file -name for use by the document class if it is stated that the StoreL and RestoreL of -the document class is called. Otherwise, it may be left blank. The syntax -is as follows:

            -RESOURCE TBUF - { - buf="NAME"; - } -

            where buf is one non-zero terminating string.

            -

            For an example, see helloworldbasic.rss.

            - -

            The TBUF structure is declared in badef.rh, which -is included in the uikon.rh file. For more information -on the TBUF resource, see TBUF.

            -
            -
            -
            RESOURCE EIK_APP_INFO -

            The EIK_APP_INFO resource defines the objects -used in the application GUI.

            - -

            Not all possible objects need to be declared.

            -
            -

            The syntax is as follows:

            -RESOURCE EIK_APP_INFO - { - menubar = value2; - cba = value5; - status_pane = value6; - } -

            where:

            -
              -
            • menubar defines the menubar resource.

              -
            • -
            • cba defines the softkeys resource.

              -
            • -
            • status_pane defines the status pane -resource.

            • -
            -

            All values refer to resources defined either in the resource file or -in a generated resource header file (.rsg) included in -the resource file.

            - -

            If an element is not defined, then it is not used. For example:

            -
            -RESOURCE EIK_APP_INFO - { - menubar=r_name4; - cba=R_AVKON_SOFTKEYS_OPTIONS_EXIT; - } -

            sets the application to use the menu bar defined by the RESOURCE statement -with the namer_name4, and creates the softkey options Options and Exit in -the control button area.

            -

            For an example, see helloworldbasic.rss.

            -

            For more information on the control button area softkeys provided by -the Symbian platform, see Precompiled -resource values available from the Symbian platform.

            -
            + + + + + +Required resource file statements +

            As noted in Resource file structure, if the NAME is given, it must be the +first statement in the resource file.

            +

            After the NAME statement, resource files +must begin with the following three RESOURCE statements:

            +
              +
            • RESOURCE RSS_SIGNATURE

              +
            • +
            • RESOURCE TBUF

            • +
            • RESOURCE TBUF RESOURCE EIK_APP_INFO

            • +
            +
            RESOURCE +RSS_SIGNATURE +

            The RSS_SIGNATURE resource is used to declare +the version number of the resource file. Leave this blank. The syntax +is as follows:

            +RESOURCE RSS_SIGNATURE + { + signature = value + } +

            where signature is a LONG value.

            +

            By default the signature is set to 0.

            +

            For an example, see helloworldbasic.rss.

            +

            For more information on RSS_STRUCTURE, see BA_RSS_SIGNATURE.

            +
            +
            RESOURCE +TBUF +

            The TBUF resource may be used to declare +a file name for use by the document class if it is stated that the StoreL and RestoreL of the document +class is called. Otherwise, it may be left blank. The syntax is as +follows:

            +RESOURCE TBUF + { + buf="NAME"; + } +

            where buf is one non-zero terminating string.

            +

            For an example, see helloworldbasic.rss.

            + +

            The TBUF structure is declared in badef.rh, which is included in the uikon.rh file. For +more information on the TBUF resource, see TBUF.

            +
            +
            +
            RESOURCE +EIK_APP_INFO +

            The EIK_APP_INFO resource defines the +objects used in the application GUI.

            + +

            Not all possible objects need to be declared.

            +
            +

            The syntax is as follows:

            +RESOURCE EIK_APP_INFO + { + menubar = value2; + cba = value5; + status_pane = value6; + } +

            where:

            +
              +
            • menubar defines the menubar +resource.

            • +
            • cba defines the softkeys resource.

              +
            • +
            • status_pane defines the status +pane resource.

            • +
            +

            All values refer to resources defined either in the resource +file or in a generated resource header file (.rsg) included in the resource file.

            + +

            If an element is not defined, then it is not used. For example:

            +
            +RESOURCE EIK_APP_INFO + { + menubar=r_name4; + cba=R_AVKON_SOFTKEYS_OPTIONS_EXIT; + } +

            sets the application to use the menu bar defined by the RESOURCE statement with the namer_name4, and creates the softkey options Options and Exit in the control button area.

            +

            For an example, see helloworldbasic.rss.

            +

            For more information on the control button area softkeys provided +by the Symbian platform, see Precompiled resource values available from the Symbian platform.

            +
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-23E414B0-581B-5B6C-A449-8DA7AD8E1FA4.dita --- a/Symbian3/PDK/Source/GUID-23E414B0-581B-5B6C-A449-8DA7AD8E1FA4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-23E414B0-581B-5B6C-A449-8DA7AD8E1FA4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,5 +11,5 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Window Server Plugins Component OverviewThe Window Server Plugins component provides render stage plug-ins for use in ScreenPlay. These reproduce the rendering behavior in Symbian OS v9.4. Device creators can use the supplied render stage plug-ins or use them as a reference when developing their own.

            Variant: ScreenPlay. Target audience: Device creators.

            The Window Server Plugins component supplies two render stages, known as the Flicker Buffer and Display render stages. The following diagram shows their standard configuration.

            Standard render stage configuration -

            The render stage API has Begin() and End() functions, which bracket batches of draw operations.

            The Display render stage simply renders the draw operations it receives straight into the UI surface.

            The Flicker Buffer renders the draw operations it receives into an offscreen surface. When it receives the End() call, it calls the Display render stage, but passes in only a single draw operation—a blit of the offscreen surface into the UI surface. As its name suggests, the purpose of the Flicker Buffer render stage is to reduce flicker. Without the Flicker Buffer render stage, each draw operation from the redraw store playback would be rendered straight into the UI surface.

            For example, suppose that the redraw store playback consists of two draw operations—a blit of a skin bitmap and some text drawing over the top of it. Without the Flicker Buffer, the end user would first see the skin bitmap appear and would then see the text drawn over the top. With the Flicker Buffer render stage, the skin and the text appear at once.

            These render stages also implement the features required for dynamic resolution switching. For example, they allow virtual resolutions that are half the real resolutions, if configured to do so in the wsini.ini file.

            Render Stages Window Server Rendering +

            The render stage API has Begin() and End() functions, which bracket batches of draw operations.

            The Display render stage simply renders the draw operations it receives straight into the UI surface.

            The Flicker Buffer renders the draw operations it receives into an offscreen surface. When it receives the End() call, it calls the Display render stage, but passes in only a single draw operation—a blit of the offscreen surface into the UI surface. As its name suggests, the purpose of the Flicker Buffer render stage is to reduce flicker. Without the Flicker Buffer render stage, each draw operation from the redraw store playback would be rendered straight into the UI surface.

            For example, suppose that the redraw store playback consists of two draw operations—a blit of a skin bitmap and some text drawing over the top of it. Without the Flicker Buffer, the end user would first see the skin bitmap appear and would then see the text drawn over the top. With the Flicker Buffer render stage, the skin and the text appear at once.

            These render stages also implement the features required for dynamic resolution switching. For example, they allow virtual resolutions that are half the real resolutions, if configured to do so in the wsini.ini file.

            Render Stages Window Server Rendering Loop Windowing Collection
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-24039DCE-B5C4-46CB-9E02-AB421C64FB87.dita --- a/Symbian3/PDK/Source/GUID-24039DCE-B5C4-46CB-9E02-AB421C64FB87.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-24039DCE-B5C4-46CB-9E02-AB421C64FB87.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,7 +20,7 @@ words, it uses the physical coordinates of the display.

            The following figure illustrates this relationship.

            Relative positions of three controls where the top-level parent owns -the window +the window

            Consider three controls, A, B, and C (shown in the figure above):

              @@ -42,7 +42,7 @@ of its own, it is a child window of A's window (as shown in the following figure). Then if C is a child of B and sets its window by calling CCoeControl::SetContainerWindowL(B), the position of C (p') is relative to B's window.

              -Relative positions of three controls where a child owns a window +Relative positions of three controls where a child owns a window

              As the example illustrates, a control position depends on the window in which it is drawn. Therefore, you need to know the drawing window for each control. It is an important issue when designing a UI layout. There are some diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-244631CF-03F9-4C48-9802-682A76E9ECCC.dita --- a/Symbian3/PDK/Source/GUID-244631CF-03F9-4C48-9802-682A76E9ECCC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-244631CF-03F9-4C48-9802-682A76E9ECCC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -48,10 +48,10 @@ item-specific submenu item (Delete) is hidden in the options menu and displayed in the stylus pop-up menu by setting the EEikMenuItemSpecific flag.

              Before setting the EEikMenuItemSpecific flag - + After setting the EEikMenuItemSpecific flag - +

              Add the EEikMenuItemSpecificListQuery flag to submenu resource definitions. As a result, the submenu items are displayed @@ -79,7 +79,7 @@ is displayed in the list query dialog box under option by setting the EEikMenuItemSpecificListQuery flag.

              After setting the EEikMenuItemSpecificListQuery flag - +
              diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-245FC4CA-EB57-5745-AD2E-79E33D43D912_d0e321829_href.png Binary file Symbian3/PDK/Source/GUID-245FC4CA-EB57-5745-AD2E-79E33D43D912_d0e321829_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-245FC4CA-EB57-5745-AD2E-79E33D43D912_d0e327815_href.png Binary file Symbian3/PDK/Source/GUID-245FC4CA-EB57-5745-AD2E-79E33D43D912_d0e327815_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2468821F-6C66-5761-AE56-CEC942A2EE95_d0e242075_href.png Binary file Symbian3/PDK/Source/GUID-2468821F-6C66-5761-AE56-CEC942A2EE95_d0e242075_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2468821F-6C66-5761-AE56-CEC942A2EE95_d0e248086_href.png Binary file Symbian3/PDK/Source/GUID-2468821F-6C66-5761-AE56-CEC942A2EE95_d0e248086_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2472E5E0-C33A-51B4-8210-89D7DEFA87C8_d0e317532_href.png Binary file Symbian3/PDK/Source/GUID-2472E5E0-C33A-51B4-8210-89D7DEFA87C8_d0e317532_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2472E5E0-C33A-51B4-8210-89D7DEFA87C8_d0e323522_href.png Binary file Symbian3/PDK/Source/GUID-2472E5E0-C33A-51B4-8210-89D7DEFA87C8_d0e323522_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-24860917-0FE2-5C8F-B436-96928350996E.dita --- a/Symbian3/PDK/Source/GUID-24860917-0FE2-5C8F-B436-96928350996E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-24860917-0FE2-5C8F-B436-96928350996E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -28,7 +28,7 @@ get notifications. The following illustration shows the architecture of the bearer mobility implementation in the Messaging Application module.

              Architecture of Bearer Mobility - +
            Settings

            The email client MTM CEmailAccounts interfaces are enhanced to configure the email account settings. These settings modify diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-24B8686D-727A-47A8-B01D-1BA1FBC8F771_d0e165375_href.png Binary file Symbian3/PDK/Source/GUID-24B8686D-727A-47A8-B01D-1BA1FBC8F771_d0e165375_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-24B8686D-727A-47A8-B01D-1BA1FBC8F771_d0e171468_href.png Binary file Symbian3/PDK/Source/GUID-24B8686D-727A-47A8-B01D-1BA1FBC8F771_d0e171468_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-24D16BF8-7BF1-5FF2-BCA8-E5200A9E8431.dita --- a/Symbian3/PDK/Source/GUID-24D16BF8-7BF1-5FF2-BCA8-E5200A9E8431.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-24D16BF8-7BF1-5FF2-BCA8-E5200A9E8431.dita Fri Jul 16 17:23:46 2010 +0100 @@ -22,7 +22,7 @@ }; Two elements in a linked list - +

            Although any kind of object can be an element of a linked list, most lists consist of elements which are all of the same type.

            @@ -39,7 +39,7 @@ An example of two elements, in two lists where they are consecutive elements in both lists - +

            Elements can also be objects constructed from a variety of classes, all ultimately derived from the same base class, where that base class includes @@ -64,7 +64,7 @@ Example of a linked list of different element types - +

            Note that the link object is at the same offset in each element in this list.

            diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-24D51B0B-7EBE-49AE-84CF-098096BE0A1C.dita --- a/Symbian3/PDK/Source/GUID-24D51B0B-7EBE-49AE-84CF-098096BE0A1C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-24D51B0B-7EBE-49AE-84CF-098096BE0A1C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,14 +20,14 @@ Confirmation note - + Information note - + @@ -37,7 +37,7 @@ Error note - + @@ -48,13 +48,13 @@ Wait note - + Progress note - + diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-24EFD1EC-333C-537C-89FF-A77627D962C3.dita --- a/Symbian3/PDK/Source/GUID-24EFD1EC-333C-537C-89FF-A77627D962C3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-24EFD1EC-333C-537C-89FF-A77627D962C3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,48 +1,48 @@ - - - - - -LocaleUpdateExample: -Using the Locale FunctionalityThis example demonstrates how to get different locale settings -from the locale DLLs in the system. -
            Download

            Click -on the following link to download the example: localeupdate.zip.

            Click: browse to view the example code.

            -
            Description

            An -object of the TExtendedLocale class is used to load a number -of locale DLLs from the system. For each locale DLL, it gets the following -locale settings:

              -
            • Calendar settings

            • -
            • Country code

            • -
            • Collation method

            • -
            • Currency format

            • -
            • Date and time format

            • -
            • Numeric value settings

            • -
            • Time zone information

            • -
            • Units of measurement.

            • -

            See also

            Locale Settings

            -
            Class summary
              -
            • TExtendedLocale - Extended locale class.

            • -
            • TLocale - Sets and gets the system's locale settings.

            • -
            • TDay - Defines the days of the week.

            • -
            • TCollationMethod - Defines a collation method.

            • -
            • TDateFormat - Defines the date formats.

            • -
            • TTimeFormat - Defines the time formats as either -12 hour or 24 hour.

            • -
            • TDaylightSavingZone - Defines the daylight -saving zones.

            • -
            • TUnitsFormat - Enumerates the units of measurement -as either Imperial or Metric.

            • -
            -
            Build

            The Symbian build process describes -how to build this example.

            The localeupdate example -builds the localeupdate.exe executable file in the standard -location (\epoc32\release\winscw\ <build_variant>) -for Carbide.c++.

            + + + + + +LocaleUpdateExample: Using the Locale FunctionalityThis example demonstrates how to get different locale settings +from the locale DLLs in the system. +
            Download

            Click on the following link to download the example: localeupdate.zip.

            Click: browse to view the example code.

            +
            Description

            An object of the TExtendedLocale class is +used to load a number of locale DLLs from the system. For each locale +DLL, it gets the following locale settings:

              +
            • Calendar settings

            • +
            • Country code

            • +
            • Collation method

            • +
            • Currency format

            • +
            • Date and time +format

            • +
            • Numeric value +settings

            • +
            • Time zone information

            • +
            • Units of measurement.

            • +

            See also

            Locale +Settings

            +
            Class +summary
              +
            • TExtendedLocale - Extended locale class.

            • +
            • TLocale - Sets and gets the system's locale +settings.

            • +
            • TDay - Defines the days of the week.

            • +
            • TCollationMethod - Defines a collation method.

            • +
            • TDateFormat - Defines the date formats.

            • +
            • TTimeFormat - Defines the time formats as +either 12 hour or 24 hour.

            • +
            • TDaylightSavingZone - Defines the daylight +saving zones.

            • +
            • TUnitsFormat - Enumerates the units of measurement +as either Imperial or Metric.

            • +
            +
            Build

            The Symbian build process describes how to build this example.

            The localeupdate example builds +the localeupdate.exe executable file in the standard +location (\epoc32\release\winscw\ <build_variant>) for Carbide.c++.

            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-24F464D8-36C1-592A-9BDB-673E771A5707_d0e435419_href.png Binary file Symbian3/PDK/Source/GUID-24F464D8-36C1-592A-9BDB-673E771A5707_d0e435419_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-24F464D8-36C1-592A-9BDB-673E771A5707_d0e441264_href.png Binary file Symbian3/PDK/Source/GUID-24F464D8-36C1-592A-9BDB-673E771A5707_d0e441264_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-25035286-5134-51F6-A3B6-C0DF0E802719.dita --- a/Symbian3/PDK/Source/GUID-25035286-5134-51F6-A3B6-C0DF0E802719.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-25035286-5134-51F6-A3B6-C0DF0E802719.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,5 +9,5 @@ --> -The Linear DDA

            Linear Digital Differential Analyzers (DDAs) are used by various functions to construct straight lines and to calculate bitmap stretching and compression.

            Line construction

            The linear DDA constructs a pixel line between the start point and end point, using the straight geometric line between these points.

            In the example below Line A has a start point (3,10) and end point (22,6). The x-delta is therefore 22-3+1=20. The y-delta is 10-6+1=5. 5 goes into 20 exactly four times, so each step of the pixel line has four pixels in it.

            The distribution of pixels is fairly straightforward if the x-delta is an exact multiple of the y-delta, or vice versa. In this case there are the same number of pixels in each pixel line step (as in the case of line A). When the x-delta is not an exact multiple of the y-delta, (or vice versa) the pixels in the pixel line cannot be distributed evenly so the pixel line steps each have differing numbers of pixels (as in the case of line B).

            Scaling bitmaps

            When a bitmap is to be displayed it often has to be stretched or compressed to fit the desired display area.

            The linear DDA constructs an imaginary pixel line between the start point and end point, using the straight geometric line between these points. This is then used to stretch or compress the original bitmap prior to display.

            The example below uses linear DDA to do a 400% horizontal scaling of a bitmapped "6" character. In most situations two linear DDAs would be needed, one for horizontal and one for vertical scaling.

            Drawing +The Linear DDA

            Linear Digital Differential Analyzers (DDAs) are used by various functions to construct straight lines and to calculate bitmap stretching and compression.

            Line construction

            The linear DDA constructs a pixel line between the start point and end point, using the straight geometric line between these points.

            In the example below Line A has a start point (3,10) and end point (22,6). The x-delta is therefore 22-3+1=20. The y-delta is 10-6+1=5. 5 goes into 20 exactly four times, so each step of the pixel line has four pixels in it.

            The distribution of pixels is fairly straightforward if the x-delta is an exact multiple of the y-delta, or vice versa. In this case there are the same number of pixels in each pixel line step (as in the case of line A). When the x-delta is not an exact multiple of the y-delta, (or vice versa) the pixels in the pixel line cannot be distributed evenly so the pixel line steps each have differing numbers of pixels (as in the case of line B).

            Scaling bitmaps

            When a bitmap is to be displayed it often has to be stretched or compressed to fit the desired display area.

            The linear DDA constructs an imaginary pixel line between the start point and end point, using the straight geometric line between these points. This is then used to stretch or compress the original bitmap prior to display.

            The example below uses linear DDA to do a 400% horizontal scaling of a bitmapped "6" character. In most situations two linear DDAs would be needed, one for horizontal and one for vertical scaling.

            Drawing to a Graphics Context Tutorials Drawing and Graphics Contexts
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2565AD08-6D97-5EF5-9CA2-83D6A953D772_d0e431716_href.png Binary file Symbian3/PDK/Source/GUID-2565AD08-6D97-5EF5-9CA2-83D6A953D772_d0e431716_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2565AD08-6D97-5EF5-9CA2-83D6A953D772_d0e437561_href.png Binary file Symbian3/PDK/Source/GUID-2565AD08-6D97-5EF5-9CA2-83D6A953D772_d0e437561_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-257212F5-A414-4F17-A786-DB3168218139_d0e95477_href.png Binary file Symbian3/PDK/Source/GUID-257212F5-A414-4F17-A786-DB3168218139_d0e95477_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-257212F5-A414-4F17-A786-DB3168218139_d0e99673_href.png Binary file Symbian3/PDK/Source/GUID-257212F5-A414-4F17-A786-DB3168218139_d0e99673_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-258FA5F7-5069-5DFE-8F6E-57063064CE65_d0e491086_href.jpg Binary file Symbian3/PDK/Source/GUID-258FA5F7-5069-5DFE-8F6E-57063064CE65_d0e491086_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-258FA5F7-5069-5DFE-8F6E-57063064CE65_d0e496901_href.jpg Binary file Symbian3/PDK/Source/GUID-258FA5F7-5069-5DFE-8F6E-57063064CE65_d0e496901_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-25A63716-D637-589D-BAB7-B962455F2DC6_d0e243458_href.png Binary file Symbian3/PDK/Source/GUID-25A63716-D637-589D-BAB7-B962455F2DC6_d0e243458_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-25A63716-D637-589D-BAB7-B962455F2DC6_d0e249469_href.png Binary file Symbian3/PDK/Source/GUID-25A63716-D637-589D-BAB7-B962455F2DC6_d0e249469_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-25CBA151-ED8E-5A88-A9FD-F20810371B4D_d0e316032_href.png Binary file Symbian3/PDK/Source/GUID-25CBA151-ED8E-5A88-A9FD-F20810371B4D_d0e316032_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-25CBA151-ED8E-5A88-A9FD-F20810371B4D_d0e322022_href.png Binary file Symbian3/PDK/Source/GUID-25CBA151-ED8E-5A88-A9FD-F20810371B4D_d0e322022_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-260C7ACD-0024-59DE-B1C6-0C852E44C457.dita --- a/Symbian3/PDK/Source/GUID-260C7ACD-0024-59DE-B1C6-0C852E44C457.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-260C7ACD-0024-59DE-B1C6-0C852E44C457.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,52 +1,54 @@ - - - - - -Dynamically -Loading Link Libraries OverviewDescription of Polymorphic DLLs. -
            Purpose

            Dynamically load libraries during program -execution.

            These interfaces are used by programs that need to load -libraries at run-time, that have a common interface, but different concrete -behaviour. Because of this relationship between interface and behaviour, such -libraries are called polymorphic DLLs.

            -
            Architectural relationships

            Many parts of the system -use polymorphic DLLs. Communications components, such as Sockets and Messaging, -use architectures in which particular communications protocols are provided -as polymorphic DLLs, and are loaded as needed. UI application programs are -also polymorphic DLLs that are loaded when the user starts the program.

            -
            Description

            The API has three key concepts: polymorphic -DLL, polymorphic DLL handle, and polymorphic DLL function pointer.

            -
            Polymorphic DLL

            A program that uses a type of polymorphic -DLLs defines their interface in terms of a single abstract class whose functions -are declared as pure virtual. Each type of polymorphic DLL is given a unique -identifier (UID).

            A particular concrete DLL:

              -
            • implements the interface -by defining and implementing a concrete class derived from the abstract class.

            • -
            • exports a function that -creates an object of the derived class type. All other functions in the DLL -are virtual and called through the base class interface.

            • -
            -
            Polymorphic DLL handle

            The polymorphic DLL handle -allows a program to load and close a particular polymorphic DLL. It also allows -the caller to obtain pointers to functions exported by the DLL. The system -can check that a polymorphic DLL is of the correct type by checking the type -UID value.

            The polymorphic DLL handle interface is provided by RLibrary.

            A -wildcard file system search for polymorphic DLLs can be done through TFindLibrary.

            -
            Polymorphic DLL function pointer

            An exported function -is called through a pointer to function obtained through a polymorphic DLL -handle.

            The polymorphic DLL function pointer type is provided by the TLibraryFunction typedef. -The caller casts the pointer to the real type of the exported function before -using it.

            -
            - -UID Manipulation -Overview - + + + + + +Dynamically Loading Link Libraries OverviewDescription of Polymorphic DLLs. +
            Purpose

            Dynamically load libraries during program execution.

            These +interfaces are used by programs that need to load libraries at run-time, +that have a common interface, but different concrete behavior. Because +of this relationship between interface and behaviour, such libraries +are called polymorphic DLLs.

            +
            Architectural +relationships

            Many parts of the system use polymorphic +DLLs. Communications components, such as Sockets and Messaging, use +architectures in which particular communications protocols are provided +as polymorphic DLLs, and are loaded as needed. UI application programs +are also polymorphic DLLs that are loaded when the user starts the +program.

            +
            Description

            The API has three key concepts: polymorphic DLL, polymorphic +DLL handle, and polymorphic DLL function pointer.

            +
            Polymorphic +DLL

            A program that uses a type of polymorphic DLLs defines +their interface in terms of a single abstract class whose functions +are declared as pure virtual. Each type of polymorphic DLL is given +a unique identifier (UID).

            A particular concrete DLL:

              +
            • implements the +interface by defining and implementing a concrete class derived from +the abstract class.

            • +
            • exports a function +that creates an object of the derived class type. All other functions +in the DLL are virtual and called through the base class interface.

            • +
            +
            Polymorphic +DLL handle

            The polymorphic DLL handle allows a program to +load and close a particular polymorphic DLL. It also allows the caller +to obtain pointers to functions exported by the DLL. The system can +check that a polymorphic DLL is of the correct type by checking the +type UID value.

            The polymorphic DLL handle interface is provided +by RLibrary.

            A wildcard file system search +for polymorphic DLLs can be done through TFindLibrary.

            +
            Polymorphic +DLL function pointer

            An exported function is called through +a pointer to function obtained through a polymorphic DLL handle.

            The polymorphic DLL function pointer type is provided by the TLibraryFunction typedef. The caller casts the pointer +to the real type of the exported function before using it.

            +
            +UID +Manipulation Overview
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-260E0D27-DCC3-52D5-A7E1-36152A04B7C6_d0e594061_href.jpg Binary file Symbian3/PDK/Source/GUID-260E0D27-DCC3-52D5-A7E1-36152A04B7C6_d0e594061_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-260E0D27-DCC3-52D5-A7E1-36152A04B7C6_d0e621955_href.jpg Binary file Symbian3/PDK/Source/GUID-260E0D27-DCC3-52D5-A7E1-36152A04B7C6_d0e621955_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2610E11C-26FA-538E-A3E1-34AADA35F20B.dita --- a/Symbian3/PDK/Source/GUID-2610E11C-26FA-538E-A3E1-34AADA35F20B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2610E11C-26FA-538E-A3E1-34AADA35F20B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -36,5 +36,5 @@ } ... CleanupStack::PopAndDestroy(1); -}

            Now that you have performed a basic database query you can start thinking about more advanced querying options. The following will show you how:

            • Reading to a buffer

            • Reading to memory

            • Reading to a data stream

            SQL Overview Basic SQL Example +}

            Now that you have performed a basic database query you can start thinking about more advanced querying options. The following will show you how:

            • Reading to a buffer

            • Reading to memory

            • Reading to a data stream

            SQL Overview Basic SQL Example Application
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-261ADCEC-C8C8-46E3-A7DC-804AC868C233.dita --- a/Symbian3/PDK/Source/GUID-261ADCEC-C8C8-46E3-A7DC-804AC868C233.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-261ADCEC-C8C8-46E3-A7DC-804AC868C233.dita Fri Jul 16 17:23:46 2010 +0100 @@ -10,23 +10,23 @@ Descriptors -

            Descriptors are self-describing strings that can be used to store binary -data and text. Each descriptor object holds the length of the string as well -as its type which identifies the underlying memory layout of the data it holds. -For more information on different descriptor classes, see Using -Descriptors.

            -

            There are modifiable and non-modifiable descriptors, the latter type -is identified by a "C" suffix in the class name. The length of a non-modifiable -descriptor is defined when compiling an application, and the length of a modifiable -descriptor can vary within the limits set by iMaxLength. -Nonmodifiable descriptors are more secure, as their length is checked during -compilation. The following figure shows the differences between these types.

            -Differences between modifiable, nonmodifiable, and pointer descriptors -

            When designing applications, avoid using fixed-length buffers as parameters -and use base classes (preferably constant base type TDesC) -instead. Descriptor objects provide a flexible interface for manipulating -the contained string, including size and length checks. Take advantage of -these when possible.

            -

            For more information and examples, see the Descriptors -Overview topic.

            +

            Descriptors are self-describing strings that can be used to +store binary data and text. Each descriptor object holds the length +of the string as well as its type which identifies the underlying +memory layout of the data it holds. For more information on different +descriptor classes, see Using Descriptors.

            +

            There are modifiable and non-modifiable descriptors, the latter +type is identified by a "C" suffix in the class name. The length of +a non-modifiable descriptor is defined when compiling an application, +and the length of a modifiable descriptor can vary within the limits +set by iMaxLength. Nonmodifiable descriptors are +more secure, as their length is checked during compilation. The following +figure shows the differences between these types.

            +Differences between modifiable, nonmodifiable, and pointer +descriptors +

            When designing applications, avoid using fixed-length buffers +as parameters and use base classes (preferably constant base type TDesC) instead. Descriptor objects provide +a flexible interface for manipulating the contained string, including +size and length checks. Take advantage of these when possible.

            +

            For more information and examples, see the Descriptors Overview topic.

            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2622DE31-AA12-5FAD-86FB-B13259EFC6D9_d0e380085_href.png Binary file Symbian3/PDK/Source/GUID-2622DE31-AA12-5FAD-86FB-B13259EFC6D9_d0e380085_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2622DE31-AA12-5FAD-86FB-B13259EFC6D9_d0e385938_href.png Binary file Symbian3/PDK/Source/GUID-2622DE31-AA12-5FAD-86FB-B13259EFC6D9_d0e385938_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-26354520-8E9C-58B8-81E7-001EDE9AB77F_d0e276441_href.png Binary file Symbian3/PDK/Source/GUID-26354520-8E9C-58B8-81E7-001EDE9AB77F_d0e276441_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-26354520-8E9C-58B8-81E7-001EDE9AB77F_d0e282441_href.png Binary file Symbian3/PDK/Source/GUID-26354520-8E9C-58B8-81E7-001EDE9AB77F_d0e282441_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-26399981-1E45-5578-851E-D234295F3B05_d0e106461_href.png Binary file Symbian3/PDK/Source/GUID-26399981-1E45-5578-851E-D234295F3B05_d0e106461_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-26399981-1E45-5578-851E-D234295F3B05_d0e108904_href.png Binary file Symbian3/PDK/Source/GUID-26399981-1E45-5578-851E-D234295F3B05_d0e108904_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-26435FE1-D912-4AA2-96EE-82B35DA231E6.dita --- a/Symbian3/PDK/Source/GUID-26435FE1-D912-4AA2-96EE-82B35DA231E6.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,177 +0,0 @@ - - - - - -Typical -functions of the standard keysStandard -key functions - - - -Keys -Functions - - - - -

            Arrow up / Arrow down

            -
              -
            • Moves the focus one item up/down in lists and grids.

            • -
            • Moves the cursor one line up/down in editors.

            • -
            • Scrolls the view up/down in viewers.

            • -
            • Adjusts the sound volume during calls and sound playback when the device -does not have dedicated volume keys.

            • -
            -
            - -

            Arrow left / Arrow right

            -
              -
            • Moves the focus one item to the left/right in grids.

            • -
            • Moves the cursor one character to the left/right in editors.

            • -
            • Moves to the previous/next view in tabbed views.

            • -
            • Moves to the previous/next document or view in certain document viewers.

            • -
            • Changes the value in a pop-up field immediately in forms.

            • -
            -
            - -

            Selection key

            -
              -
            • Opens the focused item (for example, a document or folder) in selection -lists and grids.

            • -
            • Selects an option in menus and lists.

            • -
            • Opens the context sensitive Options menu when there is no item to open -and no option to select (see Selection -list).

            • -

            The Selection key must not directly activate any such function the -user would not expect in the given situation; the Selection key is strictly -a Get-in or Accept key. Therefore, the context sensitive Options menu -will be offered in states where no selectable items exist.

            -
            - -

            Left softkey

            -

            Typically labeled Options. Opens the Options menu.

            Other -labels and functions:

              -
            • Select. Used in menu lists and grids where further options are -not available. Selects the focused item; same as the Selection key function.

            • -
            • OK, Yes and other positive replies; used in confirmation -queries.

            • -
            • In the home screen, a shortcut to a specific application. Configurable -by the user, labeled according to the application.

            • -
            -
            - -

            Right softkey

            -

            Typically labeled Back. Returns to the previous state.

            Other -labels and functions:

              -
            • Exit in applications' main states.

            • -
            • Cancel. Interrupts a procedure and returns to the previous state; -used in queries and other temporary states.

            • -
            • No and other negative replies; used in confirmation queries.

            • -
            • In the home screen, a shortcut to a specific application. Configurable -by the user, labeled according to the application.

            • -
            -
            - -

            Call creation

            -
              -
            • Answers the incoming call when the phone rings.

            • -
            • Creates an outgoing call when in Phonebook and other states -where the focus is in a field containing a phone number or a name associated -with a phone number.

            • -
            • Sends a message; used when in a message editor and the To field -contains a valid address.

            • -
            • Functions also as a shortcut for sending files.

            • -

            During calls:

              -
            • Puts an active call on hold; activates a held call; swaps active and -held calls, if both exist.

            • -
            • Answers a waiting call (if a call is in progress).

            • -

            In the home screen:

              -
            • Brings up the Last Dialled Calls list for redialing.

            • -
            -
            - -

            Call termination

            -
              -
            • Rejects an incoming call.

            • -
            • Ends an active call.

            • -
            • When there is only a held call, ends the held call.

            • -
            • When there is both an active call and a held call, ends the active -call and activates the held call.

            • -
            • When there are no calls and an application is active, returns to the -home screen. The application is terminated, except for applications that play -something in the background such as music players or radio. Any unsaved data -is automatically saved (also in case the user has pressed Exit in the Options -menu).

            • -

            And in devices that have a dedicated power key:

              -
            • A long press closes down all connections (for example GPRS, data call); -however, this has no effect on IR and Bluetooth

            • -

            And in devices without a dedicated Power key:

              -
            • When control is in the home screen (that is, there are no active calls), -a short press opens the list of Profiles (the Power key menu) and a -long press turns the device OFF regardless of whether there are active packet -data connections in the background or not.

            • -
            • When in the home screen without any packet data connections active -in the background, a short press opens the Power key menu and a long -press turns the device off.

            • -
            -
            - -

            Home / Menu key

            -
              -
            • Opens the Menu, -allowing application launching and swapping.

            • -
            • When within the Menu, returns to the home screen. -Note that there can be device-specific configurations for Home / Menu key -functionality.

            • -
            • A long press of the Home / Menu key opens the task swapping window, -allowing switching between running applications.

            • -
            -
            - -

            Numeric keypad (0-9, *, #)

            -
              -
            • Numeric and alphanumeric character entry.

            • -
            • Application-specific shortcuts and other functions.

            • -
            -
            - -

            Clear

            -
              -
            • Clears characters when editing text or numbers.

            • -
            • Deletes documents or other entities in lists and viewers (these functions -always require confirmation from the user).

            • -

            The Clear key is not used for back stepping or exiting; it is only -used for deletion.

            -
            - -

            Edit (optional)

            -
              -
            • Opens the Editing menu in editors; the menu contains functions -for input mode changing and other editing functions. See Editing -menu for the contents of the menu.

            • -
            • In editors, can be used together with the Arrow keys to select (highlight) -text, which then enables the Copy and Cut functions.

            • -
            • In markable lists, using the Edit key together with the arrow keys -allows the user to mark several items in the list, then a function can be -executed on all the marked items as one operation.

            • -

            The Edit key is handled in a special way; the primary action (the Editing menu) -is opened from the key release event, not the key down event as usually. This -is to enable the Mark/Select function where the key is being held down -as a modifier key (see Editing -menu and Lists -and grids for more detailed descriptions of the Select and Mark functions.)

            -
            - -

            Volume keys

            -

            Adjust the sound volume during calls and sound playback.

            -
            - - -
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2645AE91-8087-5423-95A7-8BC6EFD271E7.dita --- a/Symbian3/PDK/Source/GUID-2645AE91-8087-5423-95A7-8BC6EFD271E7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2645AE91-8087-5423-95A7-8BC6EFD271E7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Message Store on a Phone

            This section explains how the UI layer displays a Message Store to a phone user.

            A message centre application displays the structure of the Message Store to the user. Different UIs map the structure to different views.

            Note: The presentation of folders is done in the UI layer and not the Messaging API.

            Series 60

            The following figure shows the top level view of a message centre application on a Series 60 phone:

            Series 60 message centre -

            In the figure, you can see that the message centre has hidden the local service and shows the standard folders at the same level as the services. Also the SMTP, SMS and MMS services are marked as hidden entries in the Message Store, and so do not appear in the message application. The outbox does not retain copies of sent messages, but are saved in the Sent folder.

            \ No newline at end of file +

            In the figure, you can see that the message centre has hidden the local service and shows the standard folders at the same level as the services. Also the SMTP, SMS and MMS services are marked as hidden entries in the Message Store, and so do not appear in the message application. The outbox does not retain copies of sent messages, but are saved in the Sent folder.

            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-26778399-0105-413F-A39D-535A3BF5EBE2_d0e86022_href.png Binary file Symbian3/PDK/Source/GUID-26778399-0105-413F-A39D-535A3BF5EBE2_d0e86022_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-26778399-0105-413F-A39D-535A3BF5EBE2_d0e90220_href.png Binary file Symbian3/PDK/Source/GUID-26778399-0105-413F-A39D-535A3BF5EBE2_d0e90220_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-267D1E20-002E-53C7-8AE5-E063206C1562-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-6-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-267D1E20-002E-53C7-8AE5-E063206C1562-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-6-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,83 @@ + + + + + +Secure stream encryption example support code

            Below is the supporting code for the secure stream example code.

            <codeblock id="GUID-02ECEC04-E291-51B3-86DF-2FB28347F5AD-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-6-1-2-2-2" xml:space="preserve"> +#include "e32std.h" +#include "f32file.h" +#include "s32file.h" +#include "pbe.h" +#include "pbedata.h" +#include "s32crypt.h" + </codeblock> <codeblock id="GUID-13A09565-981A-56C0-9AC7-B849FFBE7395-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-6-1-2-2-3" xml:space="preserve"> +/* + * Class to demonstrate the use of secure stream encryption APIs. + */ +class CSecureStreamExample : public CBase + { +public: + static CSecureStreamExample* NewLC(); + virtual ~CSecureStreamExample(); + + void WriteEncryptedDataL(const TDesC8& aInput, const TDesC& aFilename, const TDesC& aPassword); + HBufC8* ReadEncryptedDataLC(const TDesC& aFilename, const TDesC& aPassword); +private: + CSecureStreamExample(); + void ConstructL(); +private: + RFs iFs; + }; + </codeblock> <codeblock id="GUID-B23E19C7-F6AD-5CB4-A944-EFEDC45AB623-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-6-1-2-2-4" xml:space="preserve"> +CSecureStreamExample* CSecureStreamExample::NewLC() + { + CSecureStreamExample* self = new (ELeave) CSecureStreamExample(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CSecureStreamExample::CSecureStreamExample() + { + } + +void CSecureStreamExample::ConstructL() + { + User::LeaveIfError(iFs.Connect()); + } + +CSecureStreamExample::~CSecureStreamExample() + { + iFs.Close(); + } + </codeblock> <codeblock id="GUID-11B8C0DD-AD05-53BB-BAD2-6F31457A2DD9-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-6-1-2-2-5" xml:space="preserve"> +LOCAL_D void RunPBEExampleL() + { + _LIT(KFilename, "c:\\pbe_example_data.dat"); + _LIT8(KInputData, "This is the data to be encrypted."); + _LIT(KPassword, "pa55w0rd"); + + CSecureStreamExample* main = CSecureStreamExample::NewLC(); + main->WriteEncryptedDataL(KInputData, KFilename, KPassword); + HBufC8* outputData = main->ReadEncryptedDataLC(KFilename, KPassword); + ASSERT(*outputData == KInputData); + CleanupStack::PopAndDestroy(2, main); + } + </codeblock> <codeblock id="GUID-0B93114C-6801-5053-85C3-181779A6185F-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-6-1-2-2-6" xml:space="preserve"> +GLDEF_C TInt E32Main() // main function called by E32 + { + __UHEAP_MARK; + CTrapCleanup* cleanup = CTrapCleanup::New(); // get clean-up stack + TRAPD(error, RunPBEExampleL()); + __ASSERT_ALWAYS(!error,User::Panic(_L("pbe_example_code"),error)); + delete cleanup; // destroy clean-up stack + __UHEAP_MARKEND; + return 0; + } + </codeblock> </section> </conbody></concept> \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-267D1E20-002E-53C7-8AE5-E063206C1562-GENID-1-12-1-26-1-1-9-1-12-1-6-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-267D1E20-002E-53C7-8AE5-E063206C1562-GENID-1-12-1-26-1-1-9-1-12-1-6-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,83 @@ +<?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 xml:lang="en" id="GUID-267D1E20-002E-53C7-8AE5-E063206C1562-GENID-1-12-1-26-1-1-9-1-12-1-6-1"><title>Secure stream encryption example support code

            Below is the supporting code for the secure stream example code.

            <codeblock id="GUID-02ECEC04-E291-51B3-86DF-2FB28347F5AD-GENID-1-12-1-26-1-1-9-1-12-1-6-1-2-2-2" xml:space="preserve"> +#include "e32std.h" +#include "f32file.h" +#include "s32file.h" +#include "pbe.h" +#include "pbedata.h" +#include "s32crypt.h" + </codeblock> <codeblock id="GUID-13A09565-981A-56C0-9AC7-B849FFBE7395-GENID-1-12-1-26-1-1-9-1-12-1-6-1-2-2-3" xml:space="preserve"> +/* + * Class to demonstrate the use of secure stream encryption APIs. + */ +class CSecureStreamExample : public CBase + { +public: + static CSecureStreamExample* NewLC(); + virtual ~CSecureStreamExample(); + + void WriteEncryptedDataL(const TDesC8& aInput, const TDesC& aFilename, const TDesC& aPassword); + HBufC8* ReadEncryptedDataLC(const TDesC& aFilename, const TDesC& aPassword); +private: + CSecureStreamExample(); + void ConstructL(); +private: + RFs iFs; + }; + </codeblock> <codeblock id="GUID-B23E19C7-F6AD-5CB4-A944-EFEDC45AB623-GENID-1-12-1-26-1-1-9-1-12-1-6-1-2-2-4" xml:space="preserve"> +CSecureStreamExample* CSecureStreamExample::NewLC() + { + CSecureStreamExample* self = new (ELeave) CSecureStreamExample(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CSecureStreamExample::CSecureStreamExample() + { + } + +void CSecureStreamExample::ConstructL() + { + User::LeaveIfError(iFs.Connect()); + } + +CSecureStreamExample::~CSecureStreamExample() + { + iFs.Close(); + } + </codeblock> <codeblock id="GUID-11B8C0DD-AD05-53BB-BAD2-6F31457A2DD9-GENID-1-12-1-26-1-1-9-1-12-1-6-1-2-2-5" xml:space="preserve"> +LOCAL_D void RunPBEExampleL() + { + _LIT(KFilename, "c:\\pbe_example_data.dat"); + _LIT8(KInputData, "This is the data to be encrypted."); + _LIT(KPassword, "pa55w0rd"); + + CSecureStreamExample* main = CSecureStreamExample::NewLC(); + main->WriteEncryptedDataL(KInputData, KFilename, KPassword); + HBufC8* outputData = main->ReadEncryptedDataLC(KFilename, KPassword); + ASSERT(*outputData == KInputData); + CleanupStack::PopAndDestroy(2, main); + } + </codeblock> <codeblock id="GUID-0B93114C-6801-5053-85C3-181779A6185F-GENID-1-12-1-26-1-1-9-1-12-1-6-1-2-2-6" xml:space="preserve"> +GLDEF_C TInt E32Main() // main function called by E32 + { + __UHEAP_MARK; + CTrapCleanup* cleanup = CTrapCleanup::New(); // get clean-up stack + TRAPD(error, RunPBEExampleL()); + __ASSERT_ALWAYS(!error,User::Panic(_L("pbe_example_code"),error)); + delete cleanup; // destroy clean-up stack + __UHEAP_MARKEND; + return 0; + } + </codeblock> </section> </conbody></concept> \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-267D1E20-002E-53C7-8AE5-E063206C1562.dita --- a/Symbian3/PDK/Source/GUID-267D1E20-002E-53C7-8AE5-E063206C1562.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,83 +0,0 @@ -<?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 xml:lang="en" id="GUID-267D1E20-002E-53C7-8AE5-E063206C1562"><title>Secure stream encryption example support code

            Below is the supporting code for the secure stream example code.

            <codeblock id="GUID-02ECEC04-E291-51B3-86DF-2FB28347F5AD" xml:space="preserve"> -#include "e32std.h" -#include "f32file.h" -#include "s32file.h" -#include "pbe.h" -#include "pbedata.h" -#include "s32crypt.h" - </codeblock> <codeblock id="GUID-13A09565-981A-56C0-9AC7-B849FFBE7395" xml:space="preserve"> -/* - * Class to demonstrate the use of secure stream encryption APIs. - */ -class CSecureStreamExample : public CBase - { -public: - static CSecureStreamExample* NewLC(); - virtual ~CSecureStreamExample(); - - void WriteEncryptedDataL(const TDesC8& aInput, const TDesC& aFilename, const TDesC& aPassword); - HBufC8* ReadEncryptedDataLC(const TDesC& aFilename, const TDesC& aPassword); -private: - CSecureStreamExample(); - void ConstructL(); -private: - RFs iFs; - }; - </codeblock> <codeblock id="GUID-B23E19C7-F6AD-5CB4-A944-EFEDC45AB623" xml:space="preserve"> -CSecureStreamExample* CSecureStreamExample::NewLC() - { - CSecureStreamExample* self = new (ELeave) CSecureStreamExample(); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -CSecureStreamExample::CSecureStreamExample() - { - } - -void CSecureStreamExample::ConstructL() - { - User::LeaveIfError(iFs.Connect()); - } - -CSecureStreamExample::~CSecureStreamExample() - { - iFs.Close(); - } - </codeblock> <codeblock id="GUID-11B8C0DD-AD05-53BB-BAD2-6F31457A2DD9" xml:space="preserve"> -LOCAL_D void RunPBEExampleL() - { - _LIT(KFilename, "c:\\pbe_example_data.dat"); - _LIT8(KInputData, "This is the data to be encrypted."); - _LIT(KPassword, "pa55w0rd"); - - CSecureStreamExample* main = CSecureStreamExample::NewLC(); - main->WriteEncryptedDataL(KInputData, KFilename, KPassword); - HBufC8* outputData = main->ReadEncryptedDataLC(KFilename, KPassword); - ASSERT(*outputData == KInputData); - CleanupStack::PopAndDestroy(2, main); - } - </codeblock> <codeblock id="GUID-0B93114C-6801-5053-85C3-181779A6185F" xml:space="preserve"> -GLDEF_C TInt E32Main() // main function called by E32 - { - __UHEAP_MARK; - CTrapCleanup* cleanup = CTrapCleanup::New(); // get clean-up stack - TRAPD(error, RunPBEExampleL()); - __ASSERT_ALWAYS(!error,User::Panic(_L("pbe_example_code"),error)); - delete cleanup; // destroy clean-up stack - __UHEAP_MARKEND; - return 0; - } - </codeblock> </section> </conbody></concept> \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-269D6756-98B5-5928-9A83-261C3F729BCE_d0e550054_href.png Binary file Symbian3/PDK/Source/GUID-269D6756-98B5-5928-9A83-261C3F729BCE_d0e550054_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-269D6756-98B5-5928-9A83-261C3F729BCE_d0e557510_href.png Binary file Symbian3/PDK/Source/GUID-269D6756-98B5-5928-9A83-261C3F729BCE_d0e557510_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-26B3BB7B-53CC-518F-85DA-CBAAD52DCE1C_d0e265087_href.png Binary file Symbian3/PDK/Source/GUID-26B3BB7B-53CC-518F-85DA-CBAAD52DCE1C_d0e265087_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-26B3BB7B-53CC-518F-85DA-CBAAD52DCE1C_d0e271087_href.png Binary file Symbian3/PDK/Source/GUID-26B3BB7B-53CC-518F-85DA-CBAAD52DCE1C_d0e271087_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-26CE565F-900B-5141-91AE-A5976213B8BF_d0e231227_href.png Binary file Symbian3/PDK/Source/GUID-26CE565F-900B-5141-91AE-A5976213B8BF_d0e231227_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-26CE565F-900B-5141-91AE-A5976213B8BF_d0e237222_href.png Binary file Symbian3/PDK/Source/GUID-26CE565F-900B-5141-91AE-A5976213B8BF_d0e237222_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-26D1E607-C63F-5A2D-9482-2A9A85F466C8_d0e244413_href.png Binary file Symbian3/PDK/Source/GUID-26D1E607-C63F-5A2D-9482-2A9A85F466C8_d0e244413_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-26D1E607-C63F-5A2D-9482-2A9A85F466C8_d0e250424_href.png Binary file Symbian3/PDK/Source/GUID-26D1E607-C63F-5A2D-9482-2A9A85F466C8_d0e250424_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-26D92AB3-510F-5D29-852A-D55F0C96A798_d0e556381_href.png Binary file Symbian3/PDK/Source/GUID-26D92AB3-510F-5D29-852A-D55F0C96A798_d0e556381_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-26D92AB3-510F-5D29-852A-D55F0C96A798_d0e563837_href.png Binary file Symbian3/PDK/Source/GUID-26D92AB3-510F-5D29-852A-D55F0C96A798_d0e563837_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-26E2294F-871F-45D1-B71C-9F470703A9C8_d0e63793_href.png Binary file Symbian3/PDK/Source/GUID-26E2294F-871F-45D1-B71C-9F470703A9C8_d0e63793_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-26E2294F-871F-45D1-B71C-9F470703A9C8_d0e68015_href.png Binary file Symbian3/PDK/Source/GUID-26E2294F-871F-45D1-B71C-9F470703A9C8_d0e68015_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-26E51AB0-C0FC-55EA-B747-C834E2D4FD27.dita --- a/Symbian3/PDK/Source/GUID-26E51AB0-C0FC-55EA-B747-C834E2D4FD27.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-26E51AB0-C0FC-55EA-B747-C834E2D4FD27.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,7 +20,7 @@ but reduced API that is optimized for sharing images across processes.</note> <fig id="GUID-6628DE21-A84A-4657-8C27-EA7D4FD5CD68"> <title>The Graphics Resource Services collection - + Graphics diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2700AAC8-A034-5E7D-B0E0-26B49E68BB18.dita --- a/Symbian3/PDK/Source/GUID-2700AAC8-A034-5E7D-B0E0-26B49E68BB18.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2700AAC8-A034-5E7D-B0E0-26B49E68BB18.dita Fri Jul 16 17:23:46 2010 +0100 @@ -22,7 +22,7 @@ as the underlying real time kernel.

            The following diagram illustrates the point simply.

            - +

            There is sample code at ...\e32\personality\... that you should refer to while reading this.

            diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-270C96B0-4BDF-5A18-A8FE-FA4F78BB34EE.dita --- a/Symbian3/PDK/Source/GUID-270C96B0-4BDF-5A18-A8FE-FA4F78BB34EE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-270C96B0-4BDF-5A18-A8FE-FA4F78BB34EE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1010,14 +1010,14 @@ -

            SecureSockets

            +

            SecureSockets

            Shows how to create and use a secure sockets (SSL/TLS) connection.

            PC -Tools

            Secure Software Install Tools

            +Tools

            Secure Software Install Tools

            @@ -1153,7 +1153,7 @@
            -
            Text & Localisation

            Font & Text Services

            +
            Text & Localisation

            Font & Text Services

            diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-271E14D1-7B9B-5048-B1F0-1E25B4EA4E16.dita --- a/Symbian3/PDK/Source/GUID-271E14D1-7B9B-5048-B1F0-1E25B4EA4E16.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-271E14D1-7B9B-5048-B1F0-1E25B4EA4E16.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,127 +1,111 @@ - - - - - -SqlExample: -Creating and Querying an SQL DatabaseThis example application demonstrates the use of the SQL API for -creating and querying a database. -
            Description

            Creating -the database

            You can create two types of databases; secure and -non-secure.

              -
            • Non-secure database: A -database that can be accessed and updated by any program since no security -policy is provided.

            • -
            • Secure database: A -database with static policy defined and therefore can be accessed by authorized -clients with specific capabilities.

            • -

            Creating a non-secure database

            The application first -creates an RSqlDatabase object and creates a non-secure -SQL database using the RSqlDatabase::Create() function. -The database is then closed. Finally the database is deleted using the RSqlDatabase::Delete() function.

            The -format for naming the non-secure database would be the following:

            X:<path><database-name>.db

            where, X is -the writable drive on the device or the emulator.

            If path is not specified, -it returns the KErrArgument error, and if the specified path -is not writable by SQL server, the application returns KErrPermission error. -In this example, the application will create the database in its own data -area, pass a handle to the database to enable the data manipulation by the -SQL server.

            You cannot create two databases with the same name -in a location

            Related APIs

              -
            • RSqlDatabase - A handle to a SQL database.

            • -
            • RSqlDatabase::Create()

            • -
            • RSqlDatabase::Delete()

            • -

            Creating a secure database

            To create a secure database, -you need to provide the following:

              -
            • UID of the application

            • -
            • security policy

            • -

            UID

            You need to use the UID of the example application -to name the database.

            The format for naming the database would be -the following:

            X:<UID><name>.db

            where,

              -
            • X is -the drive in which the database is created

            • -
            • UID is -the UID of the application that creates the database

            • -
            • name is -any valid database name. You should not specify the complete path of the database.

            • -

            To successfully create and use a secure database, you must have appropriate -capabilities such as READUSERDATA, WRITEUSERDATA. -The example application uses NETWORKCONTROL capablity along -with above specified capabilities.

            If the given UID does not -match with that of client application (in this case, the SQL example application) -the attempts to create the database fails.

            Security policy

            To -create a secure database, you need to initially set up a container that has -a set of security policies (TSecurityPolicy), and pass -it to the RSqlDatabase::Create() function. The TSecurityPolicy object -defines what capabilities the calling application must have in order to perform -a specific database operation. To cross check if the database security policy -matches with the policy used when the database was created, the RSqlDatabase::GetSecurityPolicy() function -is called.

            Related APIs

              -
            • RSqlDatabase::Create()

            • -
            • RSqlDatabase::GetSecurityPolicy()

            • -
            • TSecurityPolicy - Class representing a generic security -policy

            • -

            Copying one database to another

            The example copies -one database to another using the RSqlDatabase::Copy() function. -If the database was created using a specific UID, then only the application -with same UID, can perform the copy operation.

            In this example, -copy function is essentially a file copy as the client does a copy -within its data cage. The copy operation should ideally fail if the destination -database already exists. An application with appropriate permissions can use -the file system to copy the database.

            Related APIs

              -
            • RSqlDatabase::Copy()

            • -

            Attaching the database

            The example application then -demonstrates attaching two databases. In this example, a non-secure database -is attached to a secure database. The attached database is later read from -and written to, and the secure database is also written to before the two -databases are deleted using the RSqlDatabase::Delete() function.

            Related -APIs

              -
            • RSqlDatabase::Delete()

            • -

            Querying the database

            The example then demonstrates -how to prepare and execute a query.

            Simple query

            A -simple query statement is prepared and executed using the CSqlExample::DataTypesQueryL() function.

            Query -with a large parameter and writing using streaming

            A query with -a large parameter is prepared, executed and the results are written to RSqlParamWriteStream stream. -A table containing fields of data types; integer, 64-bit integer, float, text -and binary is created. It inserts two records into the table and implements -the TSqlScalarFullSelectQuery function for 64 bit integer -(F2) and text (F4) fields and checks the returned value. The query for the -data type which the column does not hold is executed, only to show that this -is possible. For example, if a column holding the integer value 1000 is queried -as real, it would return 1000.00.

            Related APIs

              -
            • RSqlParamWriteStream - The write stream interface.

            • -
            • TSqlScalarFullSelectQuery - TSqlScalarFullSelectQuery -interface is used for executing SELECT sql queries, which -return a single row consisting of a single column value.

            • -

            Query returning data being read using streaming

            The -example lastly demonstrates how to prepare and execute a query which returns -the data, and read that data from the data stream (RSqlColumnReadStream). -The read stream interface class is used for reading a large amount of binary -or text data from the column.

            Related APIs

              -
            • RSqlColumnReadStream - The read stream interface.

            • -
            -
            Download

            Click -on the following link to download the example: SqlExample.zip

            Click: browse to view the example code.

            -
            Class summary
              -
            • RSqlDatabase

            • -
            • RSqlStatement

            • -
            • RSqlColumnReadStream

            • -
            • RSqlParamWriteStream

            • -
            • RSqlSecurityPolicy

            • -
            • TSqlScalarFullSelectQuery

            • -
            -
            Build

            The Symbian build -process describes how to build an application.

            The Sql example -builds an executable called sqlexample.exe in the standard -location (\epoc32\release\winscw\ <build_variant> for -CodeWarrior). After launching the executable depending on the emulator, you -may need to task away from the app launcher or shell screen to view the console.

            -
            -SQL Tutorials - + + + + + +SqlExample: Creating and Querying an SQL DatabaseThis example application demonstrates the use of the SQL +API for creating and querying a database. +
            Description

            Creating the database

            You can create two types +of databases; secure and non-secure.

              +
            • Non-secure +database: A database that can be accessed and updated by any program +since no security policy is provided.

            • +
            • Secure database: A database with static policy defined and therefore can be accessed +by authorized clients with specific capabilities.

            • +

            Creating a non-secure database

            The application +first creates an RSqlDatabase object and creates +a non-secure SQL database using the RSqlDatabase::Create() function. The database is then closed. Finally the database is deleted +using the RSqlDatabase::Delete() function.

            The format for naming the non-secure database would be the following:

            X:<path><database-name>.db

            where, X is the writable drive on the device +or the emulator.

            If path is not specified, it returns the KErrArgument error, and if the specified path is not writable +by SQL server, the application returns KErrPermission error. In this example, the application will create the database +in its own data area, pass a handle to the database to enable the +data manipulation by the SQL server.

            You cannot create +two databases with the same name in a location

            Related +APIs

              +
            • RSqlDatabase - A handle to a SQL database.

            • +
            • RSqlDatabase::Create()

            • +
            • RSqlDatabase::Delete()

            • +

            Creating a secure database

            To create a secure +database, you need to provide the following:

              +
            • UID of the application

            • +
            • security policy

            • +

            UID

            You need to use the UID of the example +application to name the database.

            The format for naming the +database would be the following:

            X:<UID><name>.db

            where,

              +
            • X is the drive in which the database is created

            • +
            • UID is the UID of the application that creates the database

            • +
            • name is any valid database name. You should not specify the complete +path of the database.

            • +

            To successfully create and use a secure database, you must +have appropriate capabilities such as READUSERDATA, WRITEUSERDATA. The example application uses NETWORKCONTROL capablity along with above specified capabilities.

            If the given UID does not match with that of client application +(in this case, the SQL example application) the attempts to create +the database fails.

            Security policy

            To create a secure database, you need to initially set up a container +that has a set of security policies (TSecurityPolicy), and pass it to the RSqlDatabase::Create() function. +The TSecurityPolicy object defines what capabilities +the calling application must have in order to perform a specific database +operation. To cross check if the database security policy matches +with the policy used when the database was created, the RSqlDatabase::GetSecurityPolicy() function is called.

            Related APIs

              +
            • RSqlDatabase::Create()

            • +
            • RSqlDatabase::GetSecurityPolicy()

            • +
            • TSecurityPolicy - Class representing a generic +security policy

            • +

            Copying one database to another

            The example +copies one database to another using the RSqlDatabase::Copy() function. If the database was created using a specific UID, then +only the application with same UID, can perform the copy operation.

            In this example, copy function is essentially a file +copy as the client does a copy within its data cage. The copy +operation should ideally fail if the destination database already +exists. An application with appropriate permissions can use the file +system to copy the database.

            Related APIs

              +
            • RSqlDatabase::Copy()

            • +

            Attaching the database

            The example application +then demonstrates attaching two databases. In this example, a non-secure +database is attached to a secure database. The attached database is +later read from and written to, and the secure database is also written +to before the two databases are deleted using the RSqlDatabase::Delete() function.

            Related APIs

              +
            • RSqlDatabase::Delete()

            • +

            Querying the database

            The example then demonstrates +how to prepare and execute a query.

            Simple query

            A simple query statement is prepared and executed using the CSqlExample::DataTypesQueryL() function.

            Query +with a large parameter and writing using streaming

            A query +with a large parameter is prepared, executed and the results are written +to RSqlParamWriteStream stream. A table containing +fields of data types; integer, 64-bit integer, float, text and binary +is created. It inserts two records into the table and implements the TSqlScalarFullSelectQuery function for 64 bit integer (F2) +and text (F4) fields and checks the returned value. The query for +the data type which the column does not hold is executed, only to +show that this is possible. For example, if a column holding the integer +value 1000 is queried as real, it would return 1000.00.

            Related APIs

              +
            • RSqlParamWriteStream - The write stream +interface.

            • +
            • TSqlScalarFullSelectQuery - TSqlScalarFullSelectQuery +interface is used for executing SELECT sql queries, +which return a single row consisting of a single column value.

            • +

            Query returning data being read using streaming

            The example lastly demonstrates how to prepare and execute a +query which returns the data, and read that data from the data stream +(RSqlColumnReadStream). The read stream interface +class is used for reading a large amount of binary or text data from +the column.

            Related APIs

              +
            • RSqlColumnReadStream - The read stream interface.

            • +
            +
            Download

            Click on the following link to download the example: SqlExample.zip

            Click: browse to view the example code.

            +
            Class +summary
              +
            • RSqlDatabase

            • +
            • RSqlStatement

            • +
            • RSqlColumnReadStream

            • +
            • RSqlParamWriteStream

            • +
            • RSqlSecurityPolicy

            • +
            • TSqlScalarFullSelectQuery

            • +
            +
            Build

            The Symbian build process describes how to build an application.

            The Sql example builds an executable called sqlexample.exe in the standard location (\epoc32\release\winscw\ <build_variant> for CodeWarrior). After launching the +executable depending on the emulator, you may need to task away from +the app launcher or shell screen to view the console.

            +
            +SQL +Tutorials
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-27340D18-A31D-512E-920A-B06C784A978A.dita --- a/Symbian3/PDK/Source/GUID-27340D18-A31D-512E-920A-B06C784A978A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-27340D18-A31D-512E-920A-B06C784A978A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -26,7 +26,7 @@ idea:

            String pool representation - +

            A string pool is a mechanism for storing strings in a particular way that makes the comparison of strings a very fast operation. It is particularly @@ -81,7 +81,7 @@ to a call to:

            void RStringTable::OpenL( const TStringTable& aTable );

            The following diagram illustrates a general picture. Note that the strings in any given string table are deemed to be either case sensitive or case insensitive, and this governs how comparisons are made.

            - +

            As the name implies, a static string table is declared as a const TStringTable data member of a class with a user-defined name. The class name is defined in a header file while the table itself is diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2735BDAF-295F-5F1E-8925-8F4212D95CD1_d0e365862_href.png Binary file Symbian3/PDK/Source/GUID-2735BDAF-295F-5F1E-8925-8F4212D95CD1_d0e365862_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2735BDAF-295F-5F1E-8925-8F4212D95CD1_d0e371710_href.png Binary file Symbian3/PDK/Source/GUID-2735BDAF-295F-5F1E-8925-8F4212D95CD1_d0e371710_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2751DBB8-D882-5803-9881-1C1F7B4FE413.dita --- a/Symbian3/PDK/Source/GUID-2751DBB8-D882-5803-9881-1C1F7B4FE413.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2751DBB8-D882-5803-9881-1C1F7B4FE413.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,42 +1,38 @@ - - - - - -IRPrinting: -Infrared Printing -

            Download

            Click on the following link to download -the example: ServerClientSide.zip

            Download some additional files -required by the example: CommonFiles

            Click: browse to view the example code.

            View the additional -files: browse.
            -
            Description

            IRPrinting illustrates the use of the Serial Communications Server for -infra-red communications, such as to an IrDA-capable printer. See the IrDA -Serial Overview for more information.

            The example:

              -
            • Creates a connection -to the Comms server

            • -
            • Loads the Comms server -module that supports infra-red (“IrCOMM”)

            • -
            • Opens a port

            • -
            • Writes a short message -to the port

            • -
            • Closes the port

            • -
            • Closes the Comms server

            • -

            The write operation times out with an error after four seconds if -it is not successful, as will occur if no receiver is present.

            -
            Class Summary

            RComm: serial port

            RCommServ: -Comms server

            -
            Build

            The source code includes the two project -files needed for building: bld.inf and the .mmp file.

            The Symbian platform build process describes -how to build this application, which results in an executable called \epoc32\release\<target>\<urel -or udeb>\IRPRINTING.EXE.

            -
            Usage

            Run the executable IRPRINTING.EXE.

            Executables -for the emulator targets wins and winscw can -be run on your PC. Executables for ARM targets must be copied to your target -platform before being run.

            + + + + + +IRPrinting: Infrared Printing +
            Download

            Click on the following link to download the example: ServerClientSide.zip

            Download some additional +files required by the example: CommonFiles

            Click: browse to view the example code.

            View the +additional files: browse.
            +
            Description

            IRPrinting illustrates the use of the Serial Communications +Server for infra-red communications, such as to an IrDA-capable +printer. See the IrDA Serial Overview for more information.

            The example:

              +
            • Creates a connection +to the Comms server

            • +
            • Loads the Comms +server module that supports infra-red (“IrCOMM”)

            • +
            • Opens a port

            • +
            • Writes a short +message to the port

            • +
            • Closes the port

            • +
            • Closes the Comms +server

            • +

            The write operation times out with an error after four seconds +if it is not successful, as will occur if no receiver is present.

            +
            Class +Summary

            RComm: serial port

            RCommServ: Comms server

            +
            Build

            The source code includes the two project files needed for building: bld.inf and the .mmp file.

            The Symbian platform build process describes how to build this application, +which results in an executable called \epoc32\release\<target>\<urel +or udeb>\IRPRINTING.EXE.

            +
            Usage

            Run the executable IRPRINTING.EXE.

            Executables for the emulator targets wins and winscw can be run on your PC. Executables for ARM targets +must be copied to your target platform before being run.

            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-27529BB0-8034-56B0-82FA-3E4CFDEBC99A_d0e507096_href.png Binary file Symbian3/PDK/Source/GUID-27529BB0-8034-56B0-82FA-3E4CFDEBC99A_d0e507096_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-27529BB0-8034-56B0-82FA-3E4CFDEBC99A_d0e514558_href.png Binary file Symbian3/PDK/Source/GUID-27529BB0-8034-56B0-82FA-3E4CFDEBC99A_d0e514558_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2762FDF6-F76D-5268-AE2D-4ABA807CFFEE.dita --- a/Symbian3/PDK/Source/GUID-2762FDF6-F76D-5268-AE2D-4ABA807CFFEE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2762FDF6-F76D-5268-AE2D-4ABA807CFFEE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -47,7 +47,7 @@ use the resizable buffer descriptor.

            - +

            Example of a Heap descriptor

            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-27EC3C5B-175C-5D27-874C-43D46AA44C08_d0e490238_href.png Binary file Symbian3/PDK/Source/GUID-27EC3C5B-175C-5D27-874C-43D46AA44C08_d0e490238_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-27EC3C5B-175C-5D27-874C-43D46AA44C08_d0e496056_href.png Binary file Symbian3/PDK/Source/GUID-27EC3C5B-175C-5D27-874C-43D46AA44C08_d0e496056_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-27F345DA-7969-5B3B-B2BD-285CD168CF72.dita --- a/Symbian3/PDK/Source/GUID-27F345DA-7969-5B3B-B2BD-285CD168CF72.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-27F345DA-7969-5B3B-B2BD-285CD168CF72.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,40 +1,40 @@ - - - - - -Timers -And Timing Services OverviewProvides timers that asynchronously notify an application after -an interval or at a specific time. -
            Architectural relationships

            The User class -in the System Static Functions API provides simple functions to suspend a -thread for a given interval or until a specific time.

            -
            Description

            The API has three key concepts: simple -timer, periodic timer, and heartbeat timer.

            -
            Simple timer

            The simple timer produces an event -at a given system time or after a given interval. It is provided by RTimer. -This service is wrapped in an active object by CTimer.

            -
            Periodic timer

            A periodic timer -produces a sequence of events at a specified interval. The application is -called through a callback (TCallBack) when they occur. -It is provided by CPeriodic.

            -
            Heartbeat timer

            A heartbeat timer is similar to -a periodic timer. However, if the application is busy handling another event -when the timer event occurs, a periodic timer simple delays delivering the -event, while a heartbeat timer will inform the application that it has missed -the event.

            It is provided by CHeartbeat. Applications -are alerted to timer events through implementing an interface MBeating.

            -
            - -Asynchronous -Services Overview - -System Static -Functions Overview + + + + + +Timers And Timing Services OverviewProvides timers that asynchronously notify an application +after an interval or at a specific time. +
            Architectural +relationships

            The User class in the +System Static Functions API provides simple functions to suspend a +thread for a given interval or until a specific time.

            +
            Description

            The API has three key concepts: simple timer, periodic timer, +and heartbeat timer.

            +
            Simple +timer

            The simple timer produces an event at a given system +time or after a given interval. It is provided by RTimer. This service is wrapped in an active object by CTimer.

            +
            Periodic +timer

            A periodic timer produces a sequence +of events at a specified interval. The application is called through +a callback (TCallBack) when they occur. It is provided +by CPeriodic.

            +
            Heartbeat +timer

            A heartbeat timer is similar to a periodic timer. +However, if the application is busy handling another event when the +timer event occurs, a periodic timer simple delays delivering the +event, while a heartbeat timer will inform the application that it +has missed the event.

            It is provided by CHeartbeat. Applications are alerted to timer events through implementing an +interface MBeating.

            +
            + +Asynchronous Services Overview +System +Static Functions Overview
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-281CBD4C-44AC-5E5C-B594-D798F21B131F_d0e425670_href.png Binary file Symbian3/PDK/Source/GUID-281CBD4C-44AC-5E5C-B594-D798F21B131F_d0e425670_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-281CBD4C-44AC-5E5C-B594-D798F21B131F_d0e431515_href.png Binary file Symbian3/PDK/Source/GUID-281CBD4C-44AC-5E5C-B594-D798F21B131F_d0e431515_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-28222243-1531-524F-81A7-070FF6E98C4C_d0e276675_href.png Binary file Symbian3/PDK/Source/GUID-28222243-1531-524F-81A7-070FF6E98C4C_d0e276675_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-28222243-1531-524F-81A7-070FF6E98C4C_d0e282675_href.png Binary file Symbian3/PDK/Source/GUID-28222243-1531-524F-81A7-070FF6E98C4C_d0e282675_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-28227926-2D5A-500C-B2BC-0EE6CC077DBE.dita --- a/Symbian3/PDK/Source/GUID-28227926-2D5A-500C-B2BC-0EE6CC077DBE.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -About application resources
            Overview

            Much of the information that defines the appearance, behaviour and functionality of a Symbian platform application is stored externally to the main body of the program, in a resource file. This is unlike some other programming environments, in which a single executable contains all the code and information used by the application. Resource files can have the advantages that information is loaded only when needed, which can reduce RAM requirements, they can be compressed, and they can be localised without needing to recompile the main program.

            Resource files are developed as text files written in a Symbian platform-specific resource language. These source files are then compiled into a binary file format that can be loaded and read by programs. The source files can be compiled on their own using the command-line resource builder tool (epocrc), or as part of the standard project building process either from the command-line or from within an IDE.

            Purposes of resource files

            Resource files are used for the following purposes:

            • to define the application user interface. The C++ application programming framework requires that some aspects of an application’s layout and behaviour, such as the menu bars and dialogs, are defined in a resource file

            • to define application properties that are used by the application launcher or system shell.

              Until v9.0, (.aif) files are used to define the application's icon and caption, and various properties, for instance whether the application is exposed to users or hidden, whether the application can be embedded, and the priority at which the application should be associated with MIME data types. Aif files are built from a type of resource file.

              From v9.0, aif files are replaced by application registration information. The caption and icon are defined either in a special resource file called a localisable icon/caption definition file, or, if more convenient, in the application's UI resource file. The application's properties and some other information is defined in another type of resource file called a registration file.

            • Literal strings and other constant data: for example, dialog text and error messages. The resource tool chain provides support for localisation of these.

            File types reference

            The resource compilation process uses a number of file types:

            rss

            resource source file

            rls

            defines localisable strings, for inclusion in the resource source file

            h

            header file, for inclusion in C++ file

            rh

            resource header, for inclusion in the resource source file

            hrh

            common C++ or resource header, for inclusion in either type of source file

            rsg

            resource header file output from the resource compiler

            rsc

            compiled resource file from the resource compiler

            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2861F3D9-875E-5AB3-9600-B328F042CC38.dita --- a/Symbian3/PDK/Source/GUID-2861F3D9-875E-5AB3-9600-B328F042CC38.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2861F3D9-875E-5AB3-9600-B328F042CC38.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,57 +1,55 @@ - - - - - -MakeKeys -Overview -

            The MakeKeys tool -is a PC-side command-line tool that enables Symbian application developers -to create a private key-public key pair and generate certificate requests.

            -
            Purpose

            The MakeKeys tool can be used to create -a private key-public key (in form of a self-signed certificate) pair. The -private key can then be used by the SignSIS tool -to digitally sign an installation file. The self-signed certificate can be -used by the MakeKeys tool to create a certificate request file, which can -then be submitted to a Certification Authority (CA) for signing.

            The -MakeKeys tool cannot generate Certification Authority (CA) certificates.
            -
            Key concepts and terms
            - -
            Key
            -

            A key is a constant value applied using a cryptographic algorithm to -encrypt text or to decrypt encrypted text.

            Keys are classified as -symmetric and asymmetric based on the type of algorithm applied. If the same -key is used for both encryption and decryption, it is symmetric. If different -keys are used for encryption and decryption, they are asymmetric. Asymmetric -keys exist in the form of a private key-public key pair, where the public -key is used for encryption and the private key is used for decryption. For -more information, see Public -Key Cryptography.

            -
            -
            - -
            Certification Authority
            -

            Certification Authority (CAs) is a trusted third party that provides -root certificates to users (End Entities). For details, see Certificates.

            -
            -
            - -
            Digital signature
            -

            A digital signature is used to verify that a message (or data) actually -came from the sender (the one who signed the message) and that it has not -been tampered with. For details, see Digital -Signatures.

            -
            -
            -
            -MakeKeys -Tutorials -MakeKeys -Reference + + + + + +MakeKeys Overview +

            The MakeKeys tool is a PC-side command-line tool that enables Symbian application +developers to create a private key-public key pair and generate certificate +requests.

            +
            Purpose

            The MakeKeys tool can be used to +create a private key-public key (in form of a self-signed certificate) +pair. The private key can then be used by the SignSIS tool +to digitally sign an installation file. The self-signed certificate +can be used by the MakeKeys tool to create a certificate request file, +which can then be submitted to a Certification Authority (CA) for +signing.

            The MakeKeys tool cannot generate Certification +Authority (CA) certificates.
            +
            Key concepts and terms
            + +
            Key
            +

            A key is a constant value applied using a cryptographic algorithm +to encrypt text or to decrypt encrypted text.

            Keys are classified +as symmetric and asymmetric based on the type of algorithm applied. +If the same key is used for both encryption and decryption, it is +symmetric. If different keys are used for encryption and decryption, +they are asymmetric. Asymmetric keys exist in the form of a private +key-public key pair, where the public key is used for encryption and +the private key is used for decryption. For more information, see Public Key Cryptography.

            +
            +
            + +
            Certification Authority
            +

            Certification Authority (CAs) is a trusted third party that +provides root certificates to users (End Entities). For details, see Certificates.

            +
            +
            + +
            Digital signature
            +

            A digital signature is used to verify that a message (or data) +actually came from the sender (the one who signed the message) and +that it has not been tampered with. For details, see Digital Signatures.

            +
            +
            +
            +MakeKeys +Tutorials +MakeKeys +Reference
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-28844FE0-AE0F-531C-826E-CDA8400A0581.dita --- a/Symbian3/PDK/Source/GUID-28844FE0-AE0F-531C-826E-CDA8400A0581.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-28844FE0-AE0F-531C-826E-CDA8400A0581.dita Fri Jul 16 17:23:46 2010 +0100 @@ -35,7 +35,7 @@ anchored in the DMMCStack::iWorkSet private member.

          All three queues are circular queues as implemented using the internal Symbian platform class TMMCSessionRing.

          - +
          The scheduler

          Every time one of the following events occurs, the MultiMediaCard stack invokes @@ -68,7 +68,7 @@ containing the reason that the session is blocked.

          Scheduler algorithm

          The following flow-diagram shows the algorithm used by the scheduler.

          - +

          The DMMCStack private members referenced in this diagram have the following meaning:

          diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-28B9B737-AA79-5595-8DDE-7DD52402C0B9.dita --- a/Symbian3/PDK/Source/GUID-28B9B737-AA79-5595-8DDE-7DD52402C0B9.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,194 +0,0 @@ - - - - - -Tools -and file types used in the build process -

          This page briefly lists the main Symbian-specific tools and file types -used in building components. In addition to these tools, the build process -will use compilers and linkers supplied by various third party companies.

          -

          Tools supplied by Symbian are in epoc32\tools\ directory.

          -
          Tools
          - - - -

          Tool

          -

          Description

          -
          - -

          bldmake

          -

          This tool processes a component description file (bld.inf), -which describes various aspects of the component, and generates make files -and a batch file called abld.bat. This batch file is -then used to drive the rest of the component build.

          -
          - -

          abld

          -

          Calls the .make files generated by the bldmake tool -to build a component. The make files typically call the makmake tool -to create makefiles that specify the required build steps to build the component -for a particular target.

          -
          - -

          makmake

          -

          Takes a .mmp project file which lists the elements -of the project, and produces a makefile for the platform specified. The GCC make utility -is then called to execute the make file.

          -
          - -

          elf2e32

          -

          Converts the ELF representation of an executable into an E32Image -format file, the format required to run on Symbian platform. Used only for -ARMV5 (ABIv2) target.

          -
          - -

          elftran

          -

          Transforms the ELF representation of an executable into an E32Image -format file, the format required to run on Symbian platform. Used only for -ARMV5 (ABIv1) target.

          -
          - -

          elf2Inf

          -

          Gets a list of the symbol names of the exported definitions from -an ELF file. Its output .inf file is input to makedef. -Used only for ARMV5 (ABIv1) target.

          -
          - -

          evalid

          -

          A utility to compare two files, or two trees of files, ignoring -non-significant differences in some types of files, such as built executables.

          -
          - -

          makedef

          -

          Maintains or creates DEF files, which record an executable's exported -symbols by ordinal.

          -
          - -

          def2dll

          -

          Creates binary objects used to implement the Symbian platform DLL -model. These are a representation (ELF) of the export table (.exp file), -and its import library (.lib). Used only for ARMV5 (ABIv1) -target.

          -
          - -

          epocrc

          -

          Combines the actions of passing a resource file through the C++ -preprocessor, and then compiling it with the rcomp tool.

          -
          - -

          rcomp

          -

          Resource compiler. Compiles source rss resource -files into compiled resource data files, and a rsg resource -header file.

          -
          - -

          bmconv

          -

          Bitmap converter. Takes one or more Microsoft Windows bitmaps .bmp and -generates a single multi-bitmap file .mbm, optimised -for efficient runtime loading by the GDI. Also a header file .h with -symbolic definitions for each bitmap in the file.

          -
          - - -

          More specialised tools are available for particular types of development, -e.g. for generating font and printer driver libraries.

          -
          File types

          The following file types are involved -in the build processes:

          - - - -

          bld.inf

          -

          component description file, input to bldmake

          -
          - -

          .mmp

          -

          project file: specification of a project, input to abld/makmake

          -
          - -

          .<target>

          -

          a makefile, output from makmake, used to build -the project for the specified target. Examples are .winscw for -the WINSCW target, .armv5 for the ARMV5 target, etc.

          -
          - -

          .make

          -

          build batch makefile, for use by abld for the -purposes of building, output from bldmake bldfiles

          -
          - -

          .cpp

          -

          C++ source file

          -
          - -

          .h

          -

          header file, for inclusion in C++ file

          -
          - -

          .rss

          -

          resource source file, for input to rcomp

          -
          - -

          .rh

          -

          resource header, for inclusion in resource file

          -
          - -

          .hrh

          -

          common C++ or resource header, for inclusion in either type of source -file

          -
          - -

          .rsg

          -

          generated resource header file, output from rcomp

          -
          - -

          .rsc

          -

          generated resource file, output from rcomp

          -
          - -

          .bmp

          -

          bitmap file, in Microsoft Windows format, input to bmconv (can -also be output)

          -
          - -

          .mbm

          -

          multi-bitmap file, generated by Symbian platform bitmap compiler, -output from bmconv (can also be input)

          -
          - -

          .def

          -

          linker definition file, defining an executable's exports and their -ordinal positions.

          -
          - -

          .lib

          -

          static library file, often containing stub functions for DLL linking.

          -
          - -

          .map

          -

          map of entities in an executable, output by linker

          -
          - -

          .exe

          -

          executable that can be loaded and run as a process

          -
          - -

          .dll

          -

          dynamic link library or DLL: executable containing shared functionality -that can be loaded by other executables

          -
          - -

          .dso

          -

          ELF format file output by compiler/linkers for ARM targets. Also -used for linking against DLLs in the ARMV5 ABIv2 target.

          -
          - - -
          -
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-28E3645D-6673-569D-BF4A-409DDEA07CA9_d0e155782_href.png Binary file Symbian3/PDK/Source/GUID-28E3645D-6673-569D-BF4A-409DDEA07CA9_d0e155782_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-28E3645D-6673-569D-BF4A-409DDEA07CA9_d0e161883_href.png Binary file Symbian3/PDK/Source/GUID-28E3645D-6673-569D-BF4A-409DDEA07CA9_d0e161883_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-28F3F720-A2E0-59C9-8BB4-B6124CFC6C89_d0e378239_href.png Binary file Symbian3/PDK/Source/GUID-28F3F720-A2E0-59C9-8BB4-B6124CFC6C89_d0e378239_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-28F3F720-A2E0-59C9-8BB4-B6124CFC6C89_d0e384092_href.png Binary file Symbian3/PDK/Source/GUID-28F3F720-A2E0-59C9-8BB4-B6124CFC6C89_d0e384092_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2910AB26-CA7C-50B9-A187-0C8406C1ED1F.dita --- a/Symbian3/PDK/Source/GUID-2910AB26-CA7C-50B9-A187-0C8406C1ED1F.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ - - - - - -prj_extensions -

          prj_extensions

          -

          start extension subsystem\ext-template

          -

          [target target_file_name]

          -

          [sources source_file_1 ... source_file_n]

          -

          [dependencies dependency_file_1 ... -dependency_file_n]

          -

          [tool toolname]

          -

          [option key_1 value_1]

          -

          ...

          -

          [option key_n value_n]

          -

          end

          -

          Note: The value argument in the option statement is optional.

          -

          The prj_extensions section lists all the template extension -makefiles that are to be invoked while building the component. This approach -is introduced since Symbian OS v9.3 and it deprecates the use of makefile and gnumakefile directives -in bld.inf files. It is recommend to use prj_extensions approach -to call the extension makefile templates.

          -

          Note that a prj_extensions section can have one or more of start extension -... end blocks.

          -

          subsystem/ext-template specifies the extension makefile -template name along with its path relative to the epoc32 template -directory, which is \epoc32\tools\makefile_templates\. -The .mk suffix of the template need not be specified, as -it is handled automatically.

          -

          The optional target target_file_name specifies -the name and location of the target to be built.

          -

          The optional sources source_file_1 .... - source_file_n specifies the list of source file names along -with their path, which are required to build the target.

          -

          The optional dependencies dependency_file_1 -... dependency_file_n specifies the list of dependency file -names along with their path, which are required to build the target. -The file extension part of the name need not be specified, as this will be -automatically supplied.

          -

          The optional tool toolname specifies -the tool to be used to build the target.

          -

          The optional option key_1 value_1 specifies -the parameter values for the template extension makefile, as key-value pairs. -These parameters are variables used in the template, and the precise set of -variables specified here are entirely dependent on the requirement. There -is no limit to the number of parameters a template extension makefile may -require and can take.

          -

          This example sets PREFIX, HALPATH and SOURCE options -of the template extension makefile config.mk

          PRJ_EXTENSIONS -start extension base\config - -option PREFIX _SH2_ -option HALPATH \..\..\.. -option SOURCE \..\hal - -end -
          -
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2922758C-37A4-436E-B0F3-358944F84E2A.dita --- a/Symbian3/PDK/Source/GUID-2922758C-37A4-436E-B0F3-358944F84E2A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2922758C-37A4-436E-B0F3-358944F84E2A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -58,7 +58,7 @@

          Soft notification

          Soft notifications are reminders that inform the user of events that have typically occurred during the user's absence. Soft notifications -can only be seen in the home screen, and the user can acknowledge them. There +can only be seen in the Idle state, and the user can acknowledge them. There are two types of soft notifications; the layouts resemble those of Confirmation queries and List queries:

          • A single soft notification contains one notification.

          • @@ -70,32 +70,15 @@

            Call window

            Incoming calls and outgoing calls are presented in pop-up windows.

            - -

            Discreet pop-up

            -

            Discreet pop-up is a temporary pop-up that appears on the upper -left corner for certain time-out. When discreet pop-up appears, it does not -dim the background and it does not have the focus. User can navigate in the -underlying application normally.

            Pop-up can have simple touch functionality. -It can be used, for example, for the information and confirmation note.

            -
            - -

            Universal indicator pop-up

            -

            Universal indicator pop-up is opened from the universal indicator -pane. It contains more information of the active status indicators.

            -
            -

            For more information, see Pop-ups

            Using -pop-up windows in applications

            For implementation information on -the pop-up window components, see:

              +pop-up windows in C++ applications

              For implementation information +on the pop-up window components, see:

              • Options menu

              • Query

              • Note

              • Soft notification

              • -
              • Discreet pop-up

              • -
              • Universal indicator -pop-up

            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2939EEA8-DBC9-4882-B016-9C53166569CD_d0e84838_href.png Binary file Symbian3/PDK/Source/GUID-2939EEA8-DBC9-4882-B016-9C53166569CD_d0e84838_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2939EEA8-DBC9-4882-B016-9C53166569CD_d0e89036_href.png Binary file Symbian3/PDK/Source/GUID-2939EEA8-DBC9-4882-B016-9C53166569CD_d0e89036_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-29486886-CB54-4A83-AD6D-70F971A86DFC.dita --- a/Symbian3/PDK/Source/GUID-29486886-CB54-4A83-AD6D-70F971A86DFC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-29486886-CB54-4A83-AD6D-70F971A86DFC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -31,7 +31,7 @@

            Launching the application

            - +

            • Framework requirements @@ -45,7 +45,7 @@

              Handling left softkey events and launching the Options menu

              - +

              • Event handling

              • @@ -55,9 +55,9 @@

                Handling key and pointer events

                - +

                - +

                • Handling window @@ -71,7 +71,7 @@

                  Rotation

                  - +

                  Handling layout change events

                  @@ -79,9 +79,9 @@

                  Internationalization

                  - +

                  - +

                  Internationalization and localization

                  @@ -89,7 +89,7 @@

                  Exiting the application

                  - +

                  Handling EEikCmdExit

                  diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2955A35E-1215-5C4A-9C24-0106FB75E295.dita --- a/Symbian3/PDK/Source/GUID-2955A35E-1215-5C4A-9C24-0106FB75E295.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2955A35E-1215-5C4A-9C24-0106FB75E295.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,7 +9,7 @@ --> -Provide ECOM registry information for a PSYThis section describes how to package the PSY as an ECOM plug-in that can be loaded by the LBS subsystem.

                  A PSY must provide the ECOM registry with information about itself. Registry information is used by the Location Framework to recognise a PSY implementation. This section describes how to create ECOM registry information for a PSY.

                  Obtain two UIDs for the PSY from Symbian. A PSY DLL UID is required for the DLL that packages the PSY. A PSY implementation UID is required to identify the implementation of the PSY interface that is loaded by ECOM. Create an ECOM resource file for the PSY. ECOM Registry information is stored in a resource file. The resource file must define a REGISTRY_INFO resource at the start of the file. The resource file must not contain anything else. The REGISTRY_INFO structure and some useful constant declarations are defined in registryinfo.rh. The registry information consists of the following: PSY DLL UID. PSY implementation UID. PSY version. A display name for the PSY (this can be shown in a UI). The display name in the ECOM registration file cannot be localised. In order to provide a PSY name that can be localised, the PSY needs to create a separate localised resource file. The path to this localised resource file must be specified through the Positioning Plug-in Information API. If the localised resource file is not specified or cannot be found, the display name in the ECOM registry resource file is used. An example resource file is shown below. Note that the inteface_uid must be 0x101F7A7C as specified in this file. The dll_uid and implementation_uid will be different in your implementation. #include <registryinfo.rh> +Provide ECOM registry information for a PSYThis section describes how to package the PSY as an ECOM plug-in that can be loaded by the LBS subsystem.

                  A PSY must provide the ECOM registry with information about itself. Registry information is used by the Location Framework to recognise a PSY implementation. This section describes how to create ECOM registry information for a PSY.

                  Obtain two UIDs for the PSY from Symbian. A PSY DLL UID is required for the DLL that packages the PSY. A PSY implementation UID is required to identify the implementation of the PSY interface that is loaded by ECOM. Create an ECOM resource file for the PSY. ECOM Registry information is stored in a resource file. The resource file must define a REGISTRY_INFO resource at the start of the file. The resource file must not contain anything else. The REGISTRY_INFO structure and some useful constant declarations are defined in registryinfo.rh. The registry information consists of the following: PSY DLL UID. PSY implementation UID. PSY version. A display name for the PSY (this can be shown in a UI). The display name in the ECOM registration file cannot be localised. In order to provide a PSY name that can be localised, the PSY needs to create a separate localised resource file. The path to this localised resource file must be specified through the Positioning Plug-in Information API. If the localised resource file is not specified or cannot be found, the display name in the ECOM registry resource file is used. An example resource file is shown below. Note that the inteface_uid must be 0x101F7A7C as specified in this file. The dll_uid and implementation_uid will be different in your implementation. #include <registryinfo.rh> #include "ExamplePsy.hrh" // Defines KPosExamplePSYImplUid RESOURCE REGISTRY_INFO r_examplepsy_reginfo @@ -35,5 +35,5 @@ } }; } -

                  Define PSY attributes using the Positioning Plug-in Information API.

                  Test the PSY using the PSY tester application.

                  Positioning +

                  Define PSY attributes using the Positioning Plug-in Information API.

                  Test the PSY using the PSY tester application.

                  Positioning Plug-in API Tutorial
                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-296F25B4-8942-5FCB-B0A2-367157B72B72_d0e551004_href.png Binary file Symbian3/PDK/Source/GUID-296F25B4-8942-5FCB-B0A2-367157B72B72_d0e551004_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-296F25B4-8942-5FCB-B0A2-367157B72B72_d0e558460_href.png Binary file Symbian3/PDK/Source/GUID-296F25B4-8942-5FCB-B0A2-367157B72B72_d0e558460_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2972C100-EE68-5182-927C-3C46E8F5C0DD_d0e596993_href.png Binary file Symbian3/PDK/Source/GUID-2972C100-EE68-5182-927C-3C46E8F5C0DD_d0e596993_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2972C100-EE68-5182-927C-3C46E8F5C0DD_d0e615377_href.png Binary file Symbian3/PDK/Source/GUID-2972C100-EE68-5182-927C-3C46E8F5C0DD_d0e615377_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2972C100-EE68-5182-927C-3C46E8F5C0DD_d0e624887_href.png Binary file Symbian3/PDK/Source/GUID-2972C100-EE68-5182-927C-3C46E8F5C0DD_d0e624887_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2976D260-67D5-5DBB-8CA5-09046FBEC875-master.jpg Binary file Symbian3/PDK/Source/GUID-2976D260-67D5-5DBB-8CA5-09046FBEC875-master.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2976D260-67D5-5DBB-8CA5-09046FBEC875_d0e743085_href.jpg Binary file Symbian3/PDK/Source/GUID-2976D260-67D5-5DBB-8CA5-09046FBEC875_d0e743085_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-299B6CAB-3D4C-4FA5-A00E-244D04F0B6AB.dita --- a/Symbian3/PDK/Source/GUID-299B6CAB-3D4C-4FA5-A00E-244D04F0B6AB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-299B6CAB-3D4C-4FA5-A00E-244D04F0B6AB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,7 +20,7 @@ of the attempt failing completely the Location subsystem produces a fallback cell-based position.

                  The process is described in the steps below.

                  - + The client must open a connection to the server by calling RPositionServer::Connect(). @@ -28,29 +28,29 @@ then open RPositioner by calling RPositioner::Open() and specify the UID of the Network Proxy PSY. -The client application +The client application sends a location request to the Location subsystem by calling RPositioner::NotifyPositionUpdate(). -The Location subsystem +The Location subsystem forwards the location request to the Control Plane Protocol module by calling CLbsNetworkProtocolBase::RequestNetworkLocation() (if Control Plane is the default in the default configuration). -The Control Plane +The Control Plane protocol module communicates with the cellular network but the network is unable to provide a cell-based location. -The Control Protocol +The Control Protocol Module completes the session by calling MLbsNetworkProtocolObserver::ProcessSessionComplete(). -The Location subsystem +The Location subsystem fallbacks to SUPL positioning and forwards the request to the SUPL Protocol module by calling CLbsNetworkProtocolBase::RequestNetworkLocation(). (In the default configuration SUPL is used for cell-based positioning). -The SUPL Protocol +The SUPL Protocol module communicates with an external SUPL server and obtains a cell-based location. -The SUPL Protocol +The SUPL Protocol Module returns the cell-based position by calling MLbsNetworkProtocolObserver::ProcessLocationUpdate(). The Location subsystem diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-299D0C57-F200-5135-B4D6-304002730A28_d0e458971_href.png Binary file Symbian3/PDK/Source/GUID-299D0C57-F200-5135-B4D6-304002730A28_d0e458971_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-299D0C57-F200-5135-B4D6-304002730A28_d0e464816_href.png Binary file Symbian3/PDK/Source/GUID-299D0C57-F200-5135-B4D6-304002730A28_d0e464816_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-29B84A67-9DB7-5F4C-A4D1-A3BDC69015A8.dita --- a/Symbian3/PDK/Source/GUID-29B84A67-9DB7-5F4C-A4D1-A3BDC69015A8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-29B84A67-9DB7-5F4C-A4D1-A3BDC69015A8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -67,7 +67,7 @@ to the most power saving “Sleep” mode, additional actions can be taken to lower the system power level:

                  System power use over time - +
                  • The system is active when a request for service is made on peripheral A; the peripheral driver diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-29E54156-DF94-5B34-ACAB-1417265C950D_d0e321821_href.png Binary file Symbian3/PDK/Source/GUID-29E54156-DF94-5B34-ACAB-1417265C950D_d0e321821_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-29E54156-DF94-5B34-ACAB-1417265C950D_d0e327807_href.png Binary file Symbian3/PDK/Source/GUID-29E54156-DF94-5B34-ACAB-1417265C950D_d0e327807_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-29E7942D-A00D-5771-9782-59260965C687_d0e315631_href.png Binary file Symbian3/PDK/Source/GUID-29E7942D-A00D-5771-9782-59260965C687_d0e315631_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-29E7942D-A00D-5771-9782-59260965C687_d0e321621_href.png Binary file Symbian3/PDK/Source/GUID-29E7942D-A00D-5771-9782-59260965C687_d0e321621_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-29F55D74-A206-5862-9C83-2C5045B2DB7F_d0e507111_href.png Binary file Symbian3/PDK/Source/GUID-29F55D74-A206-5862-9C83-2C5045B2DB7F_d0e507111_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-29F55D74-A206-5862-9C83-2C5045B2DB7F_d0e514573_href.png Binary file Symbian3/PDK/Source/GUID-29F55D74-A206-5862-9C83-2C5045B2DB7F_d0e514573_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2A109FEC-5173-55FD-ACA8-3CAE48A93540_d0e583102_href.png Binary file Symbian3/PDK/Source/GUID-2A109FEC-5173-55FD-ACA8-3CAE48A93540_d0e583102_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2A109FEC-5173-55FD-ACA8-3CAE48A93540_d0e604372_href.png Binary file Symbian3/PDK/Source/GUID-2A109FEC-5173-55FD-ACA8-3CAE48A93540_d0e604372_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2A4DED23-D0AB-436A-BCED-F0645FF05726_d0e101061_href.png Binary file Symbian3/PDK/Source/GUID-2A4DED23-D0AB-436A-BCED-F0645FF05726_d0e101061_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2A4DED23-D0AB-436A-BCED-F0645FF05726_d0e79433_href.png Binary file Symbian3/PDK/Source/GUID-2A4DED23-D0AB-436A-BCED-F0645FF05726_d0e79433_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2A4DED23-D0AB-436A-BCED-F0645FF05726_d0e83631_href.png Binary file Symbian3/PDK/Source/GUID-2A4DED23-D0AB-436A-BCED-F0645FF05726_d0e83631_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2A4DED23-D0AB-436A-BCED-F0645FF05726_d0e94316_href.png Binary file Symbian3/PDK/Source/GUID-2A4DED23-D0AB-436A-BCED-F0645FF05726_d0e94316_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2A4DED23-D0AB-436A-BCED-F0645FF05726_d0e96982_href.png Binary file Symbian3/PDK/Source/GUID-2A4DED23-D0AB-436A-BCED-F0645FF05726_d0e96982_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2A4DED23-D0AB-436A-BCED-F0645FF05726_d0e98514_href.png Binary file Symbian3/PDK/Source/GUID-2A4DED23-D0AB-436A-BCED-F0645FF05726_d0e98514_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2A69B0EE-FA13-49C3-B4FE-50D0910FA37D.dita --- a/Symbian3/PDK/Source/GUID-2A69B0EE-FA13-49C3-B4FE-50D0910FA37D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2A69B0EE-FA13-49C3-B4FE-50D0910FA37D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,8 +14,8 @@ for initializing key stream decoders and process a key stream.

                    Follow the steps below to process a Key stream:

                    - -Initialize a key + +Initialize a key stream decoder using CKeyStreamDecoder::NewLC() to launch a streaming agent.

                    When a key stream decoder is initialized, a streaming diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2AB5AA00-71B2-58F4-AE17-9A38D1E5AA99_d0e315543_href.png Binary file Symbian3/PDK/Source/GUID-2AB5AA00-71B2-58F4-AE17-9A38D1E5AA99_d0e315543_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2AB5AA00-71B2-58F4-AE17-9A38D1E5AA99_d0e321533_href.png Binary file Symbian3/PDK/Source/GUID-2AB5AA00-71B2-58F4-AE17-9A38D1E5AA99_d0e321533_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2AB7F53A-5EDF-574D-866D-EF2592881559.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-2AB7F53A-5EDF-574D-866D-EF2592881559.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,81 @@ + + + + + +Configuring the SIF Launcher +

                    The SIF Launcher must be configured in the system ROM to ensure +that the software management requests from the device user are understood +by the SIF server.

                    +

                    Note: When you configure the SIF Launcher, you must also +ensure that the respective software types and installer information +are present in the Software Component Registry (SCR) database. For +more information, see the Software Component +Registry section.

                    +

                    You can configure the SIF launcher to customise the MIME types +supported and the icons that UI-based clients may use for files recognised +as software packages. Do this by modifying the siflauncher_reg.rss file located at securityconfig/usif/siflauncher/.

                    +

                    Note: For more information about modifying .rss files, see Symbian^3 Tools Guide > Building.

                    +

                    To customize the MIME types and icons for UI based clients, perform +the following steps:

                    +
                      +
                    1. Open the siflauncher_reg.rss file located at securityconfig/usif/siflauncher/.

                      // siflauncher_reg.rss +// SIF Launcher application's registration resource file + +#include <appinfo.rh> + +UID2 KUidAppRegistrationResourceFile +UID3 0x10285BD0 + +RESOURCE APP_REGISTRATION_INFO + { + app_file="siflauncher"; + localisable_resource_file="\\resource\\apps\\siflauncher_loc"; + + hidden=KAppNotHidden; + embeddability=KAppNotEmbeddable; + newfile=KAppDoesNotSupportNewFile; + datatype_list= + { + DATATYPE { priority=EDataTypePriorityHigh; type="x-epoc/x-sisx-app"; } + }; + }
                    2. +
                    3. Add the MIME +type that you want to support in the datatype_list section. For example, if you want to support the MIME type, x-adobe/x-flash-app, you must add the following statement +to the datatype_list section:

                      DATATYPE { priority=EDataTypePriorityHigh; type="x-adobe/x-flash-app"; }
                    4. +
                    5. Configure the +icons for UI based clients using the localisable_resource_file statement in siflauncher_loc.rss. The file +defined by this statement contains the icon configuration.

                      For example:

                      //siflauncher_loc.rss +#include <appinfo.rh> +#include "siflauncher_loc.rls" + +RESOURCE LOCALISABLE_APP_INFO + { + short_caption = STRING_r_siflauncher_short_caption; + caption_and_icon = + { + CAPTION_AND_ICON_INFO + { + caption=STRING_r_siflauncher_caption; + number_of_icons=1; + icon_file=STRING_r_siflauncher_icon_path; + } + }; + }

                      The strings used in siflauncher_loc.rss are defined in siflauncher_loc.rls.

                      //siflauncher_loc.rls + +rls_string STRING_r_siflauncher_icon_path "z:\\resource\\apps\\siflauncher.mbm" +rls_string STRING_r_siflauncher__short_caption "USIF" +rls_string STRING_r_siflauncher_caption "Universal Software Install Framework"
                    6. +
                    + +SIF + Overview +SIF + Tutorial + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2ABCF233-7DCC-59E2-B075-81E148A1D2AB_d0e364053_href.png Binary file Symbian3/PDK/Source/GUID-2ABCF233-7DCC-59E2-B075-81E148A1D2AB_d0e364053_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2ABCF233-7DCC-59E2-B075-81E148A1D2AB_d0e369902_href.png Binary file Symbian3/PDK/Source/GUID-2ABCF233-7DCC-59E2-B075-81E148A1D2AB_d0e369902_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2AD64552-440B-5439-885B-BE71DE0E8F1F.dita --- a/Symbian3/PDK/Source/GUID-2AD64552-440B-5439-885B-BE71DE0E8F1F.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Compiler macros

                    The following macros are defined by the build tools. These macros may be used to control conditional compilation.

                    __SYMBIAN32__

                    indicates Symbian platform code in general

                    __WINS__

                    indicates the WINS or WINSCW platforms

                    __DLL__

                    if applicable, indicates that a DLL is being built

                    __EXE__

                    if applicable, indicates that a .exe is being built

                    __CW32__

                    indicates CodeWarrior is the compiler

                    __EPOC32__

                    indicates any target hardware platform, regardless of processor type or hardware architecture

                    Further macros can be defined in project files through the MACRO statement.

                    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2AE024D5-B34B-5E7E-BC7E-8C45E80173C5.dita --- a/Symbian3/PDK/Source/GUID-2AE024D5-B34B-5E7E-BC7E-8C45E80173C5.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ - - - - - -freeze

                    abld [ test ] freeze [-k] [-v] [ platform ] [ program ]

                    This command freezes new DLL exports in frozen .def files using the FREEZE target provided in makefiles generated by makmake.

                    The frozen .def files should be considered part of source for your component.

                    • To freeze your component for the first time, having built the component, call this command.

                    • Next, regenerate the makefiles so that import libraries can be created from the frozen .def files.

                    The import libraries can be created explicitly using the abld - library command, or they can be built implicitly through abld - build or abld target.

                    • To add new exports to a project within your component, having built the component, call this command.

                    • Next, rebuild the import libraries so that they incorporate the new exports.

                    Limitation:

                    When freezing functions from the target types, build system can auto generate .def files only for DLL, EXEDLL, EXEXP, and STDDLL target types even if, you do not have a .def file specified in the matching .mmp file.

                    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2B4E0859-1CA9-5C4A-B20C-25FC6BC357C4_d0e610277_href.jpg Binary file Symbian3/PDK/Source/GUID-2B4E0859-1CA9-5C4A-B20C-25FC6BC357C4_d0e610277_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2B4E0859-1CA9-5C4A-B20C-25FC6BC357C4_d0e649431_href.jpg Binary file Symbian3/PDK/Source/GUID-2B4E0859-1CA9-5C4A-B20C-25FC6BC357C4_d0e649431_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2B50C6B1-E1E8-44E6-840B-7FAA206E6C26_d0e69821_href.png Binary file Symbian3/PDK/Source/GUID-2B50C6B1-E1E8-44E6-840B-7FAA206E6C26_d0e69821_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2B50C6B1-E1E8-44E6-840B-7FAA206E6C26_d0e74034_href.png Binary file Symbian3/PDK/Source/GUID-2B50C6B1-E1E8-44E6-840B-7FAA206E6C26_d0e74034_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2B5C905C-CEE7-5B7B-8143-A73D3352949A_d0e430245_href.png Binary file Symbian3/PDK/Source/GUID-2B5C905C-CEE7-5B7B-8143-A73D3352949A_d0e430245_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2B5C905C-CEE7-5B7B-8143-A73D3352949A_d0e436090_href.png Binary file Symbian3/PDK/Source/GUID-2B5C905C-CEE7-5B7B-8143-A73D3352949A_d0e436090_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2B6D3A9D-1481-5587-A954-48CE7EC311EE.dita --- a/Symbian3/PDK/Source/GUID-2B6D3A9D-1481-5587-A954-48CE7EC311EE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2B6D3A9D-1481-5587-A954-48CE7EC311EE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,14 +11,14 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Render Stage Display Control and MappingScreenPlay has a new approach to display resolution control to support externally connected displays, such as TV-out. It involves the render stages plus a number of other components in the Graphics package, including the Window Server and the composition engine. The render stages are able to monitor and modify display control attributes, and to scale and position the application extent within the full UI area. In addition, they can optionally implement a display policy, which determines the UI to composition mapping policy.

                    Variant: ScreenPlay. Target audience: Device creators.

                    This topic builds on the material covered in the following topics:

                    • Dynamic Resolution Switching

                    • Render Stages Overview

                    • Render Stage Interfaces

                    Render stage display control and mapping interfaces

                    The following diagram provides an overview of the render stage display control interfaces. There is further information about the interfaces under separate headings below the diagram.

                    The render stage display control interfaces -

                    Symbian provides a reference render stage implementation that device creators can use as an example when implementing their own. It demonstrates how to implement these interfaces. See Window Server Plugins Component Overview for more information.

                    MWsDisplayControl

                    MWsDisplayControl is derived from the MWsObjectProvider and MDisplayControlBase interfaces as shown in the following diagram.

                    +

                    Symbian provides a reference render stage implementation that device creators can use as an example when implementing their own. It demonstrates how to implement these interfaces. See Window Server Plugins Component Overview for more information.

                    MWsDisplayControl

                    MWsDisplayControl is derived from the MWsObjectProvider and MDisplayControlBase interfaces as shown in the following diagram.

                    MWsDisplayControl class diagram -

                    For a diagram of the TDisplayConfiguration class hierarchy, see the Common Graphics Headers Component Overview.

                    A render stage uses the MWsDisplayControl interface to intercept MDisplayControlBase::GetResolutions() calls at runtime. A render stage can add virtual resolutions into the list of display resolutions in order to scale the full UI area to the full composition area. Using virtual resolutions in this way reduces the memory required for the UI buffers and allows the Window Server to work purely in the application UI coordinate space. Virtual resolutions are marked with a flag in the TResolution structure provided by GetResolutions(). The structure also includes the size of the resolution in both pixels and twips. A render stage may also remove physical resolutions from the list in order to disable the client's ability to change the resolution.

                    A render stage that provides virtual resolutions can include one (or more) virtual resolutions that give the UI pixel aspect ratio to fit a screen mode defined in the wsini.ini file. However, this may require anisotropic scaling of the UI surface in the composition engine. For example, PAL has 720 x 576 non-square pixels. To get approximately square pixels, virtual resolutions of either 788 x 576 or 720 x 540 would work on a 4:3 display, and 1050 x 576 or 720 x 395 would work on a 16:9 display. The choice of stretching or shrinking virtual resolutions may depend on the quality of scaling available and other factors, and should only be used for backwards compatibility purposes. This is because 1:1 or integer scaling generally gives a better appearance for user interfaces. Providing shrinking virtual resolutions may also raise expectations in applications of a higher horizontal resolution than actually exists.

                    The term real resolution is used for the display resolutions that are returned by the composition engine adaptation. These correspond to the supported composition spaces that the Window Server can select for output. These may be scaled and filtered beyond the composition engine adaptation (for example, in the physical display device, such as an HDMI TV).

                    In addition to defining static screen modes in the wsini.ini file, device creators can define one or two dynamic screen modes in the wsini.ini file. These are used to represent the current display configuration—one for 0° and 180° rotations and the other for 90° and 270° rotations. The latter has the dimensions in both pixels and in twips swapped, to appear similar to the static modes. You define a dynamic screen mode by setting the SCR_WIDTH and SCR_HEIGHT parameters to -1. If there is only one dynamic mode, it is not possible to use the CWsScreenDevice API to change the current rotation by 90 degrees.

                    If MDisplayControl::SetConfiguration() is used to change the configuration, the dynamic mode(s) are updated as necessary. With two dynamic modes, if one is the current mode, the other generally becomes the new mode (even if only the resolution changed, for example) so that applications see a mode number change. The only time this does not happen is in the case of a 180° rotation, because the static mode behavior is to retain the current mode.

                    Whenever the dynamic mode data changes, or a new mode is selected, an EEventScreenDeviceChanged event is sent to all clients that have enabled it. Window Server client functions are provided to query whether the current or a given mode index is dynamic.

                    Without dynamic size modes, an application can still use the full display, by positioning windows outside the reported display area.

                    MWsDisplayMapping

                    MWsDisplayMapping is an "information" interface, answering questions rather than anything else. In ScreenPlay, there are several coordinate spaces and there is a common requirement to map a rectangle from one space to another. The render stage implements this interface and ultimately the Window Server exposes the mapping feature to its clients. The MWsDisplayMapping interface derives from the MWsObjectProvider and MDisplayMappingBase interfaces as shown in the following diagram.

                    +

                    For a diagram of the TDisplayConfiguration class hierarchy, see the Common Graphics Headers Component Overview.

                    A render stage uses the MWsDisplayControl interface to intercept MDisplayControlBase::GetResolutions() calls at runtime. A render stage can add virtual resolutions into the list of display resolutions in order to scale the full UI area to the full composition area. Using virtual resolutions in this way reduces the memory required for the UI buffers and allows the Window Server to work purely in the application UI coordinate space. Virtual resolutions are marked with a flag in the TResolution structure provided by GetResolutions(). The structure also includes the size of the resolution in both pixels and twips. A render stage may also remove physical resolutions from the list in order to disable the client's ability to change the resolution.

                    A render stage that provides virtual resolutions can include one (or more) virtual resolutions that give the UI pixel aspect ratio to fit a screen mode defined in the wsini.ini file. However, this may require anisotropic scaling of the UI surface in the composition engine. For example, PAL has 720 x 576 non-square pixels. To get approximately square pixels, virtual resolutions of either 788 x 576 or 720 x 540 would work on a 4:3 display, and 1050 x 576 or 720 x 395 would work on a 16:9 display. The choice of stretching or shrinking virtual resolutions may depend on the quality of scaling available and other factors, and should only be used for backwards compatibility purposes. This is because 1:1 or integer scaling generally gives a better appearance for user interfaces. Providing shrinking virtual resolutions may also raise expectations in applications of a higher horizontal resolution than actually exists.

                    The term real resolution is used for the display resolutions that are returned by the composition engine adaptation. These correspond to the supported composition spaces that the Window Server can select for output. These may be scaled and filtered beyond the composition engine adaptation (for example, in the physical display device, such as an HDMI TV).

                    In addition to defining static screen modes in the wsini.ini file, device creators can define one or two dynamic screen modes in the wsini.ini file. These are used to represent the current display configuration—one for 0° and 180° rotations and the other for 90° and 270° rotations. The latter has the dimensions in both pixels and in twips swapped, to appear similar to the static modes. You define a dynamic screen mode by setting the SCR_WIDTH and SCR_HEIGHT parameters to -1. If there is only one dynamic mode, it is not possible to use the CWsScreenDevice API to change the current rotation by 90 degrees.

                    If MDisplayControl::SetConfiguration() is used to change the configuration, the dynamic mode(s) are updated as necessary. With two dynamic modes, if one is the current mode, the other generally becomes the new mode (even if only the resolution changed, for example) so that applications see a mode number change. The only time this does not happen is in the case of a 180° rotation, because the static mode behavior is to retain the current mode.

                    Whenever the dynamic mode data changes, or a new mode is selected, an EEventScreenDeviceChanged event is sent to all clients that have enabled it. Window Server client functions are provided to query whether the current or a given mode index is dynamic.

                    Without dynamic size modes, an application can still use the full display, by positioning windows outside the reported display area.

                    MWsDisplayMapping

                    MWsDisplayMapping is an "information" interface, answering questions rather than anything else. In ScreenPlay, there are several coordinate spaces and there is a common requirement to map a rectangle from one space to another. The render stage implements this interface and ultimately the Window Server exposes the mapping feature to its clients. The MWsDisplayMapping interface derives from the MWsObjectProvider and MDisplayMappingBase interfaces as shown in the following diagram.

                    MWsDisplayMapping class diagram -

                    The MWsDisplayMapping interface is very flexible. UIDs are used to signify the application UI coordinate space, the full UI space, the composition/display coordinate space (which may be a different scale to the UI coordinate space) and the Direct Screen Access (DSA) space (which may match the full UI space, or be offset relative to the application UI space).

                    The MDisplayMappingBase::MapCoordinates() function simply takes a rectangle, a source space and a target space and returns the correspondingly mapped rectangle in the target space. The render stage must guarantee that if two rectangles abut in the source coordinate space, their mapped equivalents also abut. For information about the use of the MapCoordinates() function by Window Server clients, see Display Control and Mapping in the Window Server Client.

                    The MWsDisplayMapping::SetSizeModeExtent() function sets the screen mode extent for use in one or more contexts. If this is successful, the offset is set on the render stage pipeline in two ways:

                    • Firstly, the offset applies to rendering and must only affect the coordinates in the first render stage that actually performs rendering, and not to later stages. For example, in the reference configuration of the flicker buffer and display render stages, only the flicker buffer render stage applies the rendering offset. A render stage using a CGraphicsContext can use SetOrigin() to apply the offset. Other graphics contexts may have a similar feature.

                    • Secondly, the offset is applied to translate the coordinates of the scene element's destination rectangle (layer extent). This means it is applied only by the first stage that implements the scene element translation. In the reference configuration, this is the display stage.

                    MWsDisplayPolicy

                    MWsDisplayPolicy is an optional interface, which derives from MWsObjectProvider as shown in the following diagram. The main purpose of MWsDisplayPolicy is to enable the render stage chain to position the application extent as intelligently as possible to suit the resolution. However, there is no requirement for the render stage chain to implement the interface. If it is not implemented, the offset defined in the wsini.ini file is used. If that is not available a zero offset is used.

                    +

                    The MWsDisplayMapping interface is very flexible. UIDs are used to signify the application UI coordinate space, the full UI space, the composition/display coordinate space (which may be a different scale to the UI coordinate space) and the Direct Screen Access (DSA) space (which may match the full UI space, or be offset relative to the application UI space).

                    The MDisplayMappingBase::MapCoordinates() function simply takes a rectangle, a source space and a target space and returns the correspondingly mapped rectangle in the target space. The render stage must guarantee that if two rectangles abut in the source coordinate space, their mapped equivalents also abut. For information about the use of the MapCoordinates() function by Window Server clients, see Display Control and Mapping in the Window Server Client.

                    The MWsDisplayMapping::SetSizeModeExtent() function sets the screen mode extent for use in one or more contexts. If this is successful, the offset is set on the render stage pipeline in two ways:

                    • Firstly, the offset applies to rendering and must only affect the coordinates in the first render stage that actually performs rendering, and not to later stages. For example, in the reference configuration of the flicker buffer and display render stages, only the flicker buffer render stage applies the rendering offset. A render stage using a CGraphicsContext can use SetOrigin() to apply the offset. Other graphics contexts may have a similar feature.

                    • Secondly, the offset is applied to translate the coordinates of the scene element's destination rectangle (layer extent). This means it is applied only by the first stage that implements the scene element translation. In the reference configuration, this is the display stage.

                    MWsDisplayPolicy

                    MWsDisplayPolicy is an optional interface, which derives from MWsObjectProvider as shown in the following diagram. The main purpose of MWsDisplayPolicy is to enable the render stage chain to position the application extent as intelligently as possible to suit the resolution. However, there is no requirement for the render stage chain to implement the interface. If it is not implemented, the offset defined in the wsini.ini file is used. If that is not available a zero offset is used.

                    MWsDisplayPolicy class diagram -

                    The GetSizeModeConfiguration() function determines the display configuration and application rendering extent to use for a given screen mode defined in the wsini.ini file. The Window Server calls this when an eligible client does one of the following:

                    • Sets the system screen mode using CWsScreenDevice::SetScreenMode(). In this case the configuration structure passed to the policy function is empty because it is the current configuration.

                    • Sets a new display configuration. In this case the requested configuration is passed to the policy function.

                    On success, the render stage fills in the TDisplayConfiguration structure. Then the Window Server calls the following as appropriate:

                    • MWsDisplayMapping::SetSizeModeExtent() and passes the configuration structure to indicate the position and size of the application area.

                    • MWsDisplayContol::SetConfiguration() and passes the configuration structure to indicate the appropriate real or virtual display resolution.

                    On failure, the current screen mode and display resolution are retained, but a screen device changed event should still be sent, because there is no way to return failure to the caller.

                    Applications are given the static offset associated with the screen mode, not the offset described above. Note that because of the way that DSA works, if the render stage uses a CFbsScreenDevice object for rendering, the DSA buffer and the UI buffer are the same (that is, the Screen Driver surface). This means that the offset returned by this policy function must be the same as the one passed in. The policy function has the option to reject the mode change, however.

                    The Symbian display render stage applies a "best fit" approach, taking into account virtual resolutions if configured, whereby the offset and resolution are chosen to make the screen mode fill as much of the display as possible, while retaining the same (or very similar) pixel aspect ratio. The offset may be limited if the Screen Driver surface is being used for rendering, as described above. The quality of the scaling of screen modes to virtual resolutions and real resolutions is determined by the DP_SCALING wsini.ini file parameter. However, more typically a render stage would implement just one scaling mode, and not require configuration.

                    MWsScreenConfigList

                    The Window Server exposes the MWsScreenConfigList interface for use by render stages. Render stages can use this to get the screen mode parameters for a given index without parsing the wsini.ini file. This interface is similar to MWsScreenConfig, which applies only to the current mode. The MWsScreenConfigList methods leave only if the mode index is out of range.

                    +

                    The GetSizeModeConfiguration() function determines the display configuration and application rendering extent to use for a given screen mode defined in the wsini.ini file. The Window Server calls this when an eligible client does one of the following:

                    • Sets the system screen mode using CWsScreenDevice::SetScreenMode(). In this case the configuration structure passed to the policy function is empty because it is the current configuration.

                    • Sets a new display configuration. In this case the requested configuration is passed to the policy function.

                    On success, the render stage fills in the TDisplayConfiguration structure. Then the Window Server calls the following as appropriate:

                    • MWsDisplayMapping::SetSizeModeExtent() and passes the configuration structure to indicate the position and size of the application area.

                    • MWsDisplayContol::SetConfiguration() and passes the configuration structure to indicate the appropriate real or virtual display resolution.

                    On failure, the current screen mode and display resolution are retained, but a screen device changed event should still be sent, because there is no way to return failure to the caller.

                    Applications are given the static offset associated with the screen mode, not the offset described above. Note that because of the way that DSA works, if the render stage uses a CFbsScreenDevice object for rendering, the DSA buffer and the UI buffer are the same (that is, the Screen Driver surface). This means that the offset returned by this policy function must be the same as the one passed in. The policy function has the option to reject the mode change, however.

                    The Symbian display render stage applies a "best fit" approach, taking into account virtual resolutions if configured, whereby the offset and resolution are chosen to make the screen mode fill as much of the display as possible, while retaining the same (or very similar) pixel aspect ratio. The offset may be limited if the Screen Driver surface is being used for rendering, as described above. The quality of the scaling of screen modes to virtual resolutions and real resolutions is determined by the DP_SCALING wsini.ini file parameter. However, more typically a render stage would implement just one scaling mode, and not require configuration.

                    MWsScreenConfigList

                    The Window Server exposes the MWsScreenConfigList interface for use by render stages. Render stages can use this to get the screen mode parameters for a given index without parsing the wsini.ini file. This interface is similar to MWsScreenConfig, which applies only to the current mode. The MWsScreenConfigList methods leave only if the mode index is out of range.

                    MWsScreenConfigList class diagram -
                    Dynamic Resolution +
        Dynamic Resolution Switching Render Stages Window Server Plugins Component Overview
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2B7F7484-3A44-4A96-9B5D-79DF8A09115A.dita --- a/Symbian3/PDK/Source/GUID-2B7F7484-3A44-4A96-9B5D-79DF8A09115A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2B7F7484-3A44-4A96-9B5D-79DF8A09115A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,63 +1,59 @@ - - - - - -How resource -files work -

        In the Symbian platform, resource files -are used to define UI components used in applications. See Managing -resource files for information on defining the data structure.

        -

        The following resource files are typically used as source files in Symbian -applications:

        -
          -
        • .rss – resource source files used for UI -components in the application. For more information, see Resource -file structure, Required -resource file statements, and Optional -resource file statements.

          -
        • -
        • _reg.rss – resource source file used for -registration. For more information, see Creating -registration resource files.

          -
        • -
        • .hrh – resource header file used to define -enumerated sets of values. For more information, see Creating -resource header files.

          -
        • -
        • .rls – localization files used as a source -for UI texts strings in applications, and for managing these texts. For more -information, see Internationalization -and localization.

          -
        • -
        -

        The structures and symbolic IDs of the files are used in various ways -in your code.

        -

        The resource files above are then compiled to yield the following files:

        -
          -
        • .rsc or rNN, where -NN is a two number Symbian locale ID - compiled, machine-readable resource -files used by the application.

        • -
        • .rsg - generated resource header file containing -the symbolic IDs of the resources for inclusion into your code.

        • -
        • _reg.rsc or _reg.rNN, -where NN is a two number Symbian locale ID - compiled, machine-readable resource -file used for registration .

        • -
        -

        The rsc, rNN, -and _reg.rsc files need to be included in your .sis installation -file so that they are placed in the device when the application is installed.

        - - -

        When the application framework launches an application, it loads the -application resource file. The application framework compares the system locale -language setting with the available resource files, and loads the resource -file whose extension matches the locale language code. If there is no match, -then the system loads the resource file with the .rsc.

        + + + + + +How resource files work +

        In the Symbian platform, resource files +are used to define UI components used in applications. See Managing resource +files for information on defining the data structure.

        +

        The following resource files are typically used as source files +in Symbian applications:

        +
          +
        • .rss – resource source files used +for UI components in the application. For more information, see Resource file structure, Required resource file statements, and Optional resource file statements.

          +
        • +
        • _reg.rss – resource source file +used for registration. For more information, see Creating registration resource files.

          +
        • +
        • .hrh – resource header file used +to define enumerated sets of values. For more information, see Creating resource header files.

          +
        • +
        • .rls – localization files used as +a source for UI texts strings in applications, and for managing these +texts. For more information, see Internationalization +and localization.

          +
        • +
        +

        The structures and symbolic IDs of the files are used in various +ways in your code.

        +

        The resource files above are then compiled to yield the following +files:

        +
          +
        • .rsc or rNN, where NN is a two number Symbian locale ID - compiled, machine-readable +resource files used by the application.

        • +
        • .rsg - generated resource header +file containing the symbolic IDs of the resources for inclusion into +your code.

        • +
        • _reg.rsc or _reg.rNN, where NN is a two number Symbian locale ID - compiled, machine-readable +resource file used for registration .

        • +
        +

        The rsc, rNN, and _reg.rsc files +need to be included in your .sis installation +file so that they are placed in the device when the application is +installed.

        + + +

        When the application framework launches an application, it loads +the application resource file. The application framework compares +the system locale language setting with the available resource files, +and loads the resource file whose extension matches the locale language +code. If there is no match, then the system loads the resource file +with the .rsc.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2B820ED0-D0E1-4CF0-9D63-C91806EDB8F6_d0e5159_href.png Binary file Symbian3/PDK/Source/GUID-2B820ED0-D0E1-4CF0-9D63-C91806EDB8F6_d0e5159_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2B820ED0-D0E1-4CF0-9D63-C91806EDB8F6_d0e5168_href.png Binary file Symbian3/PDK/Source/GUID-2B820ED0-D0E1-4CF0-9D63-C91806EDB8F6_d0e5168_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2B8CA0F5-8956-4D7B-B719-DE5EFD62C232.dita --- a/Symbian3/PDK/Source/GUID-2B8CA0F5-8956-4D7B-B719-DE5EFD62C232.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2B8CA0F5-8956-4D7B-B719-DE5EFD62C232.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ a number. This can be used to indicate item numbers in lists where necessary.

        Numbered list item - +

        Numbered items should be used only in lists where numbers are meaningful and give added value. There is no specific functionality (such as shortcuts) diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2B902EA0-F954-5474-9A79-7C1AB208A3D4.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-2B902EA0-F954-5474-9A79-7C1AB208A3D4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,57 @@ + + + + + +STS Overview +

        Purpose

        STS provides transactional support for the Symbian platform file +system. It helps clients (such as Software Installation Framework +plug-ins) to maintain file system integrity during installation, uninstallation +and upgrading of software packages. If the file system operation is +interrupted or fails for reasons such as battery drain or a server +crash, the STS rolls back the uncommitted file system operations performed +as part of the transaction.

        +
        Key +concepts

        SIF Plug-in: Installs and manages a particular type of software package such as native SIS files +or Python.

        Symbian client-server framework: For details, +see Using Client/Server.

        +
        Architectural +relationships

        STS follows client-server architecture. The +STS (server) has TCB capability. A STS client ( implemented by device +creators) uses STS instead of using the file server directly. STS +provides APIs to start a file system transaction, record various file +system operation as part of a transaction, and commit or roll back +the transaction. The STS client instructs the STS to commit a transaction +atomically once all the operations have been performed.

        The +STS client is implemented in stsclient.dll file.

        An STS client application can access the services provided by +the STS by linking against stsclient.lib.

        The figure below shows interaction between the STS, STS clients +and the file system.

        +STS Architecture + +
        +
        APIs + + + +API +Description + + + + +

        RStsSession

        +

        Provides APIs for STS client applications to use the STS.

        +
        + + +
        +
        Typical +uses

        Software installers use the STS to provide a secure +environment for updating the file system.

        +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2BE10ABA-E34E-53F9-8B63-6BED177BFB21_d0e448794_href.png Binary file Symbian3/PDK/Source/GUID-2BE10ABA-E34E-53F9-8B63-6BED177BFB21_d0e448794_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2BE10ABA-E34E-53F9-8B63-6BED177BFB21_d0e454639_href.png Binary file Symbian3/PDK/Source/GUID-2BE10ABA-E34E-53F9-8B63-6BED177BFB21_d0e454639_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2BF99BD2-5DB5-5DF6-8F82-22DD2E818584_d0e76215_href.png Binary file Symbian3/PDK/Source/GUID-2BF99BD2-5DB5-5DF6-8F82-22DD2E818584_d0e76215_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2BF99BD2-5DB5-5DF6-8F82-22DD2E818584_d0e80428_href.png Binary file Symbian3/PDK/Source/GUID-2BF99BD2-5DB5-5DF6-8F82-22DD2E818584_d0e80428_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2C0C173D-C659-4011-8B7A-8EB35E64D150.dita --- a/Symbian3/PDK/Source/GUID-2C0C173D-C659-4011-8B7A-8EB35E64D150.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2C0C173D-C659-4011-8B7A-8EB35E64D150.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,42 +1,37 @@ - - - - -Touch gestures - - - - -

        The touch gestures (finger movements on the device display area) -are interpreted using touch gesture framework provided by UI framework. - The UI FW listens to the pointer events and notifies the client after -recognizing the gestures. The client can enable listening of desired -gestures.

        -

        The touch gesture framework supports the following single touch -gestures:

          -
        • Tap

        • -
        • Double tap

        • -
        • Drag

        • -
        • Flick

        • -
        • Swipe (up, down, left and right)

        • -
        Gesture Framework can provide swipe speed that can be used as -input to inertia based effects. Two finger pinch (zoom) multiple touch gesture is also recognized.

        -

        Additionally, there is an option to support drag and drop. It -is initiated by holding the touch position for a short time in the -same place. The holding mode is active until the user releases the -touch.

        -
        Using touch gestures in C++ applications

        The API to use -for recognizing touch gestures is Touch Gesture API.

        Touch Gesture -Framework contains a pointer to a control (derived from CCoeControl) where gestures are recognized. These gestures are reported -to the gesture observer. Based on the gesture interest set by the -gesture observer, CAknTouchGestureFw converts the pointer events to the logical gesture.

        -
        -
        - + + + + + +Touch gestures +

        The touch gestures (finger movements on the device display area) +are interpreted using touch gesture framework provided by UI framework. + The UI FW listens to the pointer events and notifies the client after +recognizing the gestures. The client can enable listening of desired +gestures.

        +

        The touch gesture framework supports the following single touch +gestures:

          +
        • Tap

        • +
        • Double tap

        • +
        • Drag

        • +
        • Flick

        • +
        • Swipe (up, down, left and right)

        • +
        Gesture Framework can provide swipe speed that can be used as +input to inertia based effects. Two finger pinch (zoom) multiple touch gesture is also recognized.

        +

        Additionally, there is an option to support drag and drop. It +is initiated by holding the touch position for a short time in the +same place. The holding mode is active until the user releases the +touch.

        +
        Using touch gestures in C++ applications

        The API to use +for recognizing touch gestures is Touch Gesture API.

        Touch Gesture +Framework contains a pointer to a control (derived from CCoeControl) where gestures are recognized. These gestures are reported to the +gesture observer. Based on the gesture interest set by the gesture +observer, CAknTouchGestureFw converts the pointer +events to the logical gesture.

        +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2C1DB75C-FB12-520C-85B1-57F1EDB61E3B.dita --- a/Symbian3/PDK/Source/GUID-2C1DB75C-FB12-520C-85B1-57F1EDB61E3B.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ - - - - - -Feature variants

        Symbian platform can be built for multiple product configurations (variants). Each variant can include, enable or disable various features

        A variant-specific .hrh file is used to configure each different product. For example, the following .hrh files define features for products phone1, phone2 and phone3 respectively:

        • /epoc32/include/variant/Phone1.hrh

        • /epoc32/include/variant/Phone2.hrh

        • /epoc32/include/variant/Phone3.hrh

        The .hrh files contain macros which are used throughout the Symbian platform source. A DLL containing variant macros may be built differently for certain variants. It may also be common for certain variants. In order to identify variant DLLs, and to establish before compilation whether a variant DLL will be unique, a checksum value is calculated based on the combination of variant macros and appended to the DLL filename. If the checksum matches an existing DLL, already built for a different variant, that DLL is shared.

        For example, a my.dll with checksum appended appears as follows:

        /epoc32/release/armv5/urel/my.685dfabca1f1d90889ef4ac115c01a14.dll

        Support for variant builds is included in the Symbian platform build tool-chain as follows:

        • The configuration information specific to each product is defined in a .var file. The .var file is placed in the /epoc32/tools/variant/ folder. For more information on .var file syntax, refer to variant configuration file syntax.

        • The .hrh file containing the feature macro definitions is placed in the /epoc32/include/variant/ folder, and is referred in the .var file.

        • A DLL for a variant is built by specifying the variant name on the command-line using abld. For example, the following abld command builds the DLL for the variant var1:

          abld build armv5.var1

        • The build tool-chain generates a checksum for each variant (including the default variant) and appends it to the DLL name.

        • BUILDROM is modified to build a ROM image for a variant using the option -DFEATUREVARIANT. For example, the following command builds ROM image for var1:

          buildrom [options] –DFEATUREVARIANT=var1 <obey1> [<obey2> ...]

        If no .var file is specified the default.var file is used. The checksum will still be calculated and appended. You may avoid the checksum calculation by using the -invariant (or -inv) option with abld. This will build a default DLL with no checksum in the filename. If a DLL has FEATUREVARIANT specified in its mmp file, however, the -invariant option will be ignored.

        Notes
        • The .var file name must be same as the variant name.

        • If the .var file does not include an .hrh file, the build system uses default.hrh in /epoc32/include/variant/.

        • A DLL can be explicitly marked as a feature variant using the MMP keyword FEATUREVARIANT.

        • The DLLs built for a variant are placed in the appropriate folder under /epoc32/release/. For example, for all urel builds of ARMV5 variants the DLLs are stored in /epoc32/release/armv5/urel/.

        • The -inv or -invariant abld option is effective only if the DLL is not marked as feature variant explicitly.

        How to build feature based - variants How to build ROMs with - variants
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2C443E6F-BC3D-5252-8098-9F850AA88A35.dita --- a/Symbian3/PDK/Source/GUID-2C443E6F-BC3D-5252-8098-9F850AA88A35.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2C443E6F-BC3D-5252-8098-9F850AA88A35.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,7 +21,7 @@ v9.4).

        The following diagram provides an overview of the Window Server architecture in ScreenPlay.

        The Window Server in ScreenPlay - +

        Below we list some of the key features of the Window Server, including differences between the two architectures. The term surface is used in ScreenPlay for a hardware-independent memory buffer for holding an image diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2C60C1C3-82B5-5ED3-98DF-E787193E8797.dita --- a/Symbian3/PDK/Source/GUID-2C60C1C3-82B5-5ED3-98DF-E787193E8797.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2C60C1C3-82B5-5ED3-98DF-E787193E8797.dita Fri Jul 16 17:23:46 2010 +0100 @@ -25,7 +25,7 @@ and generates bytecode for carrying out the work of each statement. The generated bytecode is then handed over to a Virtual Machine for evaluation.

        Simplified SQLite Architecture - +

        The Virtual Machine considers the database to be a set of B-Trees, one B-Tree for each table and one B-Tree for each index. The logic for creating, reading, writing, updating, balancing and destroying B-Trees is contained diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2C68AC8D-6767-5865-B684-CB627C20C6DC.dita --- a/Symbian3/PDK/Source/GUID-2C68AC8D-6767-5865-B684-CB627C20C6DC.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ - - - - - -prj_testmmpfiles

        prj_testmmpfiles

        mmp_file_1 - [tidy] [manual] - [support]

        mmp_file_1 [tidy] [manual] - [support]

        makefile makefile_1 [tidy] [manual] - [support]

        makefile makefile_n [tidy] [manual] - [support]

        In the prj_testmmpfiles section, list the .mmp files contained in your component which define test programs.

        This section for test .mmp files has the same syntax as the section for standard .mmp files, except that two extra .mmp file attributes are provided: the manual and support attributes.

        If any such tests are listed, bldmake - bldfiles can create batch files for running the test programs for your component.

        • For automatic tests, which can be run without any user-intervention, do not specify either attribute.

        • For manual tests, which require user-input in order for them to complete successfully, specify the manual attribute.

        • Specify the support attribute if the test should not to be included in a batch file.

        For each platform, two batch files are created in the bldmake output directory for your component:

        • For automatic tests, a batch file called platform-name .auto.bat is created.

        • For manual tests, a batch file called platform-name .manual.bat is created.

        Note that, in order for the releasable test to be invoked successfully, the basename of the .mmp file must be the same as the basename of the releasable specified with the target statement in the .mmp file.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2C74E932-B1CA-434B-AF96-66D52D689620.dita --- a/Symbian3/PDK/Source/GUID-2C74E932-B1CA-434B-AF96-66D52D689620.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2C74E932-B1CA-434B-AF96-66D52D689620.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,47 +9,39 @@ --> -Optional -resource file statements -

        The resource file statements listed in the following are optional; Create -resource file statements only for the UI components used by the application -for which the default implementation is not used.

        -

        For more information on resource statements for these components, see:

        +Optional resource file statements +

        The resource file statements listed in the following are optional; +Create resource file statements only for the UI components used by +the application for which the default implementation is not used.

        +

        For more information on resource statements for these components, +see:

          -
        • CBA buttons

          -
        • -
        • Menu -bar resource statements

        • +
        • CBA buttons

        • +
        • Menu bar resource statements

        • View -resource statements in the view architecture

          -
        • +resource statements in the view architecture

        • UI components

          -

          Building an AVKON-based application UI is a primary choice for third-party -add-on applications that do not need advanced customization. Such an approach -guarantees compatibility across different Series 60 Developer Platform editions, -but, in turn, puts some limitations on the application UI layout imposed by -AVKON. AVKON provides a wide choice of well-designed and versatile components, -but not all of these are easily modifiable.

          +

          Building an AVKON-based application UI is a primary choice for +third-party add-on applications that do not need advanced customization. +Such an approach guarantees compatibility across different Series +60 Developer Platform editions, but, in turn, puts some limitations +on the application UI layout imposed by AVKON. AVKON provides a wide +choice of well-designed and versatile components, but not all of these +are easily modifiable.

          -

          AVKON or AVKON-derived components should be favoured over custom CCoeControl-derived controls. AVKON UI components scale automatically +

          AVKON or AVKON-derived components should be favoured over custom CCoeControl-derived controls. +AVKON UI components scale automatically according to screen resolution and orientation.

            -
          • Dialogs -API

          • -
          • Editors -API

          • -
          • Form -API

          • -
          • Grids -API

          • -
          • Lists -API

          • -
          • Notes -API

          • -
          • Setting -Pages API

          • +
          • Dialogs API

          • +
          • Editors API

          • +
          • Form API

          • +
          • Grids API

          • +
          • Lists API

          • +
          • Notes API

          • +
          • Setting Pages API

        • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2C8F2C68-5D25-5DB8-973C-E9CA6882A3FB_d0e535985_href.jpg Binary file Symbian3/PDK/Source/GUID-2C8F2C68-5D25-5DB8-973C-E9CA6882A3FB_d0e535985_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2C8F2C68-5D25-5DB8-973C-E9CA6882A3FB_d0e543445_href.jpg Binary file Symbian3/PDK/Source/GUID-2C8F2C68-5D25-5DB8-973C-E9CA6882A3FB_d0e543445_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2CBD504A-5538-4823-9139-2941A0BA5E8B_d0e101485_href.png Binary file Symbian3/PDK/Source/GUID-2CBD504A-5538-4823-9139-2941A0BA5E8B_d0e101485_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2CBD504A-5538-4823-9139-2941A0BA5E8B_d0e91232_href.png Binary file Symbian3/PDK/Source/GUID-2CBD504A-5538-4823-9139-2941A0BA5E8B_d0e91232_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2CBD504A-5538-4823-9139-2941A0BA5E8B_d0e95430_href.png Binary file Symbian3/PDK/Source/GUID-2CBD504A-5538-4823-9139-2941A0BA5E8B_d0e95430_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2CBD504A-5538-4823-9139-2941A0BA5E8B_d0e97406_href.png Binary file Symbian3/PDK/Source/GUID-2CBD504A-5538-4823-9139-2941A0BA5E8B_d0e97406_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2CEF22AD-7F80-58CE-AF5F-C7BF636D524F.dita --- a/Symbian3/PDK/Source/GUID-2CEF22AD-7F80-58CE-AF5F-C7BF636D524F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2CEF22AD-7F80-58CE-AF5F-C7BF636D524F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Camera Plug-in OverviewThis document introduces you to the Camera Plug-in component overview.
          Purpose

          The Camera Plug-in component provides an actual implementation for the Camera Framework component.

          Required background

          The Camera Plug-in component is implemented with the support of EcamPluginSupport.dll. It is expected that device creators can replace their own Camera Plug-in implementation.

          Architecture

          The Camera Plug-in component interacts with the Camera Framework component.

          The architectural relationship between Camera Plug-in and Camera Framework is shown below:

          Camera Plug-in Component Architecture -
          APIs

          The Camera Plug-in component consists of the following library:

          API Description

          ecamstubplugin.lib

          The Camera Stub Plug-in library is used to support the EcamPluginSupport.dll which is in the Camera Framework component.

          Typical uses

          Camera Plug-in is used as a symbian support implementation for the Camera Framework Ecom plug-ins.

          Camera Stub Plug-in +
      APIs

      The Camera Plug-in component consists of the following library:

      API Description

      ecamstubplugin.lib

      The Camera Stub Plug-in library is used to support the EcamPluginSupport.dll which is in the Camera Framework component.

      Typical uses

      Camera Plug-in is used as a symbian support implementation for the Camera Framework Ecom plug-ins.

      Camera Stub Plug-in Overview Camera Plug-in Support Camera Framework Overview \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita --- a/Symbian3/PDK/Source/GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2D3F7471-9B92-5E49-B8BC-E0FA7AA709D7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> DevSound Overview This document provides an overview of DevSound.
      Purpose

      DevSound provides a common API for all audio functionality.

      DevSound library details

      The DLL that provides the functionality and the library to which your code must link is identified below.

      DLL LIB Short Description

      mmfdevsound.dll

      mmfdevsound.lib

      These files are used for implementing DevSound.

      Architectural relationship

      Shown below is a representation of how DevSound interacts with the MMF Controller Framework and other components:

      DevSound and related components -

      DevSound uses the following components:

      • Client - DevSound can be used by the following clients:

        • applications

        • device creator library.

      • MMF Controller Framework

        For audio playing, recording, and conversion, the MMF client APIs interact with the lower levels of the MMF, the controller framework. The controller framework helps to manage the interface to DevSound and provides controller plug-ins for playing, recording, and converting audio data. The controller framework has two main classes RMMFController and CMMFController.

      • Controller Plug-in

        Depending on the functionality required by the client, the MMF controller framework loads the appropriate controller plug-ins. The plug-ins perform the required operations by communicating with DevSound and/or DevVideo, codecs and hardware.

        Custom controller plug-ins can be written to extend the MMF framework. For more information, see How to write a controller plug-in.

      • Audio Policy

        The Audio Policy component manages requests to access the audio hardware. For example, if DevSound needs to acquire the hardware for playing audio, it makes a request to the Audio Policy component. Depending on the priority of the request, the Audio Policy component grants or denies access to the hardware. DevSound must obey the Audio Policy.

      • Codecs

        DevSound uses codecs to convert multimedia data between different encodings.

        Custom codec plug-ins can be written. For more information, see How to write a codec plug-in.

      • Hardware Device API

        For audio functionality, the CMMFHwDevice plug-in class acts as the DevSound interface to the audio processing hardware.

      Description

      DevSound provides the interface between the Symbian platform and the audio processing hardware for all audio functionality. DevSound is responsible for providing access to audio resources, configuring audio hardware, and audio playback and recording.

      Key DevSound classes

      The DevSound API comprises the following classes:

      • CMMFDevSound is the class which forms the DevSound API.

      • MDevSoundObserver provides callbacks to users of the DevSound API. It serves as the method of communication between a client and DevSound. For example, MDevSoundObserver handles completion and cancellation requests for audio playing, recording, and conversion.

      Using DevSound

      DevSound offers the following main functions which can be used by DevSound clients:

      • Audio Settings

        DevSound can be used to initialise and configure hardware devices, for example, set microphone gain and stereo balance.

      • Audio Play

        DevSound can be used to play buffered audio data.

      • Audio Record

        DevSound can be used to record audio data.

      • Audio Convert

        DevSound can be used to convert the type, sample rate and format of audio data.

      • Tone Play

        DevSound can play a single tone, tone sequence or Dual Tone Multi-Frequency (DTMF) string.

      Playing audio Recording Audio Playing tones
      \ No newline at end of file +

      DevSound uses the following components:

      • Client - DevSound can be used by the following clients:

        • applications

        • device creator library.

      • MMF Controller Framework

        For audio playing, recording, and conversion, the MMF client APIs interact with the lower levels of the MMF, the controller framework. The controller framework helps to manage the interface to DevSound and provides controller plug-ins for playing, recording, and converting audio data. The controller framework has two main classes RMMFController and CMMFController.

      • Controller Plug-in

        Depending on the functionality required by the client, the MMF controller framework loads the appropriate controller plug-ins. The plug-ins perform the required operations by communicating with DevSound and/or DevVideo, codecs and hardware.

        Custom controller plug-ins can be written to extend the MMF framework. For more information, see How to write a controller plug-in.

      • Audio Policy

        The Audio Policy component manages requests to access the audio hardware. For example, if DevSound needs to acquire the hardware for playing audio, it makes a request to the Audio Policy component. Depending on the priority of the request, the Audio Policy component grants or denies access to the hardware. DevSound must obey the Audio Policy.

      • Codecs

        DevSound uses codecs to convert multimedia data between different encodings.

        Custom codec plug-ins can be written. For more information, see How to write a codec plug-in.

      • Hardware Device API

        For audio functionality, the CMMFHwDevice plug-in class acts as the DevSound interface to the audio processing hardware.

    Description

    DevSound provides the interface between the Symbian platform and the audio processing hardware for all audio functionality. DevSound is responsible for providing access to audio resources, configuring audio hardware, and audio playback and recording.

    Key DevSound classes

    The DevSound API comprises the following classes:

    • CMMFDevSound is the class which forms the DevSound API.

    • MDevSoundObserver provides callbacks to users of the DevSound API. It serves as the method of communication between a client and DevSound. For example, MDevSoundObserver handles completion and cancellation requests for audio playing, recording, and conversion.

    Using DevSound

    DevSound offers the following main functions which can be used by DevSound clients:

    • Audio Settings

      DevSound can be used to initialise and configure hardware devices, for example, set microphone gain and stereo balance.

    • Audio Play

      DevSound can be used to play buffered audio data.

    • Audio Record

      DevSound can be used to record audio data.

    • Audio Convert

      DevSound can be used to convert the type, sample rate and format of audio data.

    • Tone Play

      DevSound can play a single tone, tone sequence or Dual Tone Multi-Frequency (DTMF) string.

    Playing audio Recording Audio Playing tones
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2D74594C-AFEB-550E-AD69-1C4A0455C5AC.dita --- a/Symbian3/PDK/Source/GUID-2D74594C-AFEB-550E-AD69-1C4A0455C5AC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2D74594C-AFEB-550E-AD69-1C4A0455C5AC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,8 +11,8 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Structure of a Message Store

    This section provides information about the Message Store entries.

    Message Framework provides a tree view of entries in a Message Store. The tree is divided into three levels: root entry, service entry, and folder and message entry, which are provided TMsvEntry. The child entries of the root entry must be service entries. A message client application can begin from the root entry, and by successively finding the children of an entry, can traverse the whole entry tree. The parent of each entry is recorded in the index entry's details.

    The following figure illustrates how services are placed below a root entry.

    Message Store -
    • 1: Root entry —This entry is just present to tie the tree structure together.

    • 2: Service entry —This level used for settings information, usually to set up communication protocols, for example, ISP settings. There is one local service under which local folders and messages are stored, and zero or more remote services. Remote services represent message accounts.

      There are two types of service entry:

      • Remote Services: These represent message accounts stored on remote stores such as email servers and the SIM store of SMS messages.

      • Local Services: There is a single local service under which local folders and messages are stored.

        The Message Server handles changes to local entries. Internally it may delegate changes to remote entries, such as copying and moving messages to and from a remote service, to the server MTM that owns that service.

      +
      • 1: Root entry —This entry is just present to tie the tree structure together.

      • 2: Service entry —This level used for settings information, usually to set up communication protocols, for example, ISP settings. There is one local service under which local folders and messages are stored, and zero or more remote services. Remote services represent message accounts.

        There are two types of service entry:

        • Remote Services: These represent message accounts stored on remote stores such as email servers and the SIM store of SMS messages.

        • Local Services: There is a single local service under which local folders and messages are stored.

          The Message Server handles changes to local entries. Internally it may delegate changes to remote entries, such as copying and moving messages to and from a remote service, to the server MTM that owns that service.

        Remote and local entries -
      • 3: Folder entries and message entries — Folders entries are used to group a number of message entries. For more information on folders, see Message folders. Messages store the content of a message. Message entries can have child entries which represent the structure of a message.

        Folders and messages under the local service represent messages stored on the device. Folders and messages under remote services represent a local copy of messages that are present on a remote server. For example, under a POP3 email service you can have copies of all the messages present on the POP3 email server, and under an SMS service you can have SMS messages that are stored on a SIM.

        Each message entry also has an associated service ID. The service ID is associated with a service entry whose settings is used in all Messaging operations on that message entry.

      Validity of the Message Store

      The structure of the Message store is considered to be valid only if an index entry conforms to the following rules:

      • A non-service entry cannot be owned by root and must have its service ID field set.

      • A service entry must be owned by root and have the service ID of itself.

      Important: The Message Server controls access to the entries in the store. It enforces the three levels; therefore, attempts to create message or folder entries directly under the root entry fails.

      Message Server and Store Messaging Framework Message Server and Store +
    • 3: Folder entries and message entries — Folders entries are used to group a number of message entries. For more information on folders, see Message folders. Messages store the content of a message. Message entries can have child entries which represent the structure of a message.

      Folders and messages under the local service represent messages stored on the device. Folders and messages under remote services represent a local copy of messages that are present on a remote server. For example, under a POP3 email service you can have copies of all the messages present on the POP3 email server, and under an SMS service you can have SMS messages that are stored on a SIM.

      Each message entry also has an associated service ID. The service ID is associated with a service entry whose settings is used in all Messaging operations on that message entry.

    Validity of the Message Store

    The structure of the Message store is considered to be valid only if an index entry conforms to the following rules:

    • A non-service entry cannot be owned by root and must have its service ID field set.

    • A service entry must be owned by root and have the service ID of itself.

    Important: The Message Server controls access to the entries in the store. It enforces the three levels; therefore, attempts to create message or folder entries directly under the root entry fails.

    Message Server and Store Messaging Framework Message Server and Store Concepts Message Server and Store Tutorials
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2D7BD92E-E242-524B-8D83-874C32EC0503_d0e175688_href.png Binary file Symbian3/PDK/Source/GUID-2D7BD92E-E242-524B-8D83-874C32EC0503_d0e175688_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2D7BD92E-E242-524B-8D83-874C32EC0503_d0e181757_href.png Binary file Symbian3/PDK/Source/GUID-2D7BD92E-E242-524B-8D83-874C32EC0503_d0e181757_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2D86812F-5DB1-5FD9-A199-AE344D5A10C8_d0e456651_href.png Binary file Symbian3/PDK/Source/GUID-2D86812F-5DB1-5FD9-A199-AE344D5A10C8_d0e456651_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2D86812F-5DB1-5FD9-A199-AE344D5A10C8_d0e462496_href.png Binary file Symbian3/PDK/Source/GUID-2D86812F-5DB1-5FD9-A199-AE344D5A10C8_d0e462496_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2D872656-7FD3-56D2-B084-8CC84E8453A4.dita --- a/Symbian3/PDK/Source/GUID-2D872656-7FD3-56D2-B084-8CC84E8453A4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2D872656-7FD3-56D2-B084-8CC84E8453A4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,5 +11,5 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> MTP PTP-IP Transport Overview

    PTP-IP is one of the supported MTP transport modes. This section describes the PTP-IP Transport plug-in and its sub-components (the PTP-IP Connection Controller and related APIs).

    Required Background

    Before you start, you must be familiar with the following:

    • The data type, communication layers, and transport model of PTP-IP can be found in the PTP-IP specification.

    • Socket programming.

    Architecture

    The diagram below shows the components and sub-components provided by the Symbian platform in green and those that a device creator must implement in blue. They run in two processes:

    • The PTP-IP Controller process is responsible for setting up the TCP/IP connection and PTP-IP connection. According to the PTP-IP specification, PTP-IP is the layer above the TCP/IP.

      Note: Once a PTP-IP connection is established, the Listener rejects new connection requests until the current connection stops.

    • The MTP process loads the PTP-IP Transport plug-in and transfers MTP data over the Symbian TCP/IP Stack between a host PC and a device.

    MTP Architecture with PTP-IP Transport Plug-in -

    MTP over PTP-IP is initiated in the following way:

    1. A Listener listens on a specific port to accept a PTP-IP connection (based on TCP/IP) request from a host PC. It calls the TCP/IP Stack to establish the TCP/IP connection between the host PC (initiator) and the Symbian device (responder).

      A Listener must be implemented by a device creator. For more information about implementing a Listener, refer to Implementing a Listener.

    2. Once the TCP/IP connection is established, the Listener calls the PTP-IP Connection Controller to set up the PTP-IP connection.

      For more information about using PTP-IP Controller, refer to Using PTP-IP Controller.

    3. The PTP-IP Connection Controller validates whether to accept the request for a PTP-IP connection by calling a Filter.

      The Filter (MPTPIPHostFilter and CPTPIPHostFilterInterface) must be implemented by a device creator. For more information about implementing a Filter, refer to Implementing a Filter.

    4. Once the PTP-IP connection request is accepted and the PTP-IP connection is established, the PTP-IP Connection Controller calls the MTP Client API to send the StartTransport command to the MTP Framework.

    5. The MTP Framework loads the MTP PTP-IP Transport plug-in.

    6. Requests and responses can be issued and MTP data can be transferred between the host PC and the Symbian device over the TCP/IP Stack.

    APIs

    The MTP PTP-IP Transport includes the following key APIs:

    API Description

    CPTPIPHostFilterInterface

    Provides an ECom plug-in interface for the Connection Controller to load the right Filter implementation.

    RPTPIPFramework

    Gets an instance of the MPTPIPController instance.

    Typical uses

    The MTP PTP-IP Transport can be used to

    • Validate and set up a PTP-IP connection between a host PC and a Symbian device.

    • Provide MTP over PTP-IP transport support.

    Implementing a Listener Implementing a Filter Configuring Multiple Transport +

    MTP over PTP-IP is initiated in the following way:

    1. A Listener listens on a specific port to accept a PTP-IP connection (based on TCP/IP) request from a host PC. It calls the TCP/IP Stack to establish the TCP/IP connection between the host PC (initiator) and the Symbian device (responder).

      A Listener must be implemented by a device creator. For more information about implementing a Listener, refer to Implementing a Listener.

    2. Once the TCP/IP connection is established, the Listener calls the PTP-IP Connection Controller to set up the PTP-IP connection.

      For more information about using PTP-IP Controller, refer to Using PTP-IP Controller.

    3. The PTP-IP Connection Controller validates whether to accept the request for a PTP-IP connection by calling a Filter.

      The Filter (MPTPIPHostFilter and CPTPIPHostFilterInterface) must be implemented by a device creator. For more information about implementing a Filter, refer to Implementing a Filter.

    4. Once the PTP-IP connection request is accepted and the PTP-IP connection is established, the PTP-IP Connection Controller calls the MTP Client API to send the StartTransport command to the MTP Framework.

    5. The MTP Framework loads the MTP PTP-IP Transport plug-in.

    6. Requests and responses can be issued and MTP data can be transferred between the host PC and the Symbian device over the TCP/IP Stack.

APIs

The MTP PTP-IP Transport includes the following key APIs:

API Description

CPTPIPHostFilterInterface

Provides an ECom plug-in interface for the Connection Controller to load the right Filter implementation.

RPTPIPFramework

Gets an instance of the MPTPIPController instance.

Typical uses

The MTP PTP-IP Transport can be used to

  • Validate and set up a PTP-IP connection between a host PC and a Symbian device.

  • Provide MTP over PTP-IP transport support.

Implementing a Listener Implementing a Filter Configuring Multiple Transport Protocols \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2D93660B-8206-5D20-85F5-6FFCF4549127.dita --- a/Symbian3/PDK/Source/GUID-2D93660B-8206-5D20-85F5-6FFCF4549127.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2D93660B-8206-5D20-85F5-6FFCF4549127.dita Fri Jul 16 17:23:46 2010 +0100 @@ -28,7 +28,7 @@ stream:

Persistent store with a root stream - +
See also

File stores

diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2D98DB88-BA48-5EF8-A5F9-0CB8688B0B63_d0e408469_href.png Binary file Symbian3/PDK/Source/GUID-2D98DB88-BA48-5EF8-A5F9-0CB8688B0B63_d0e408469_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2D98DB88-BA48-5EF8-A5F9-0CB8688B0B63_d0e414322_href.png Binary file Symbian3/PDK/Source/GUID-2D98DB88-BA48-5EF8-A5F9-0CB8688B0B63_d0e414322_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2D9B17E7-2B7A-5E16-AB06-D9507457A85D.dita --- a/Symbian3/PDK/Source/GUID-2D9B17E7-2B7A-5E16-AB06-D9507457A85D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2D9B17E7-2B7A-5E16-AB06-D9507457A85D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,33 +9,31 @@ --> -SMS -exampleThis example code demonstrates how to send and receive SMS messages -using the Messaging Framework APIs. -
Description

This -updated C++ example demonstrates programmatical handling of SMS messages. -Messages can be sent from the application and they can be received directly -into the application (that is, catching incoming messages before the user -gets any notification). In addition, messages can be deleted, copied, or moved -to other folders of the message store (inbox, outbox, drafts).

-
Download

Click -on the following link to download the example: smsexample.zip

Click: browse to view the example code.

+SMS exampleThis example code demonstrates how to send and receive +SMS messages using the Messaging Framework APIs. +
Description

This updated C++ example demonstrates programmatical handling +of SMS messages. Messages can be sent from the application and they +can be received directly into the application (that is, catching incoming +messages before the user gets any notification). In addition, messages +can be deleted, copied, or moved to other folders of the message store +(inbox, outbox, drafts).

+
Download

Click on the following link to download the example: smsexample.zip

Click: browse to view the example code.

Classes

CMsvSession

CMsvEntry

CMmsClientMtm

CSmsClientMtm

CClientMtmRegistry

CSmsHeader

-
Building and -configuring
    -
  • You can build the example -from your IDE or the command line.

    If you use an IDE, import the bld.inf file -of the example into your IDE, and use the build command of the IDE.

    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:

    bldmake -bldfiles

    abld build

    How to use bldmake and How to use abld describe -how to use the SBSv1 build tools.

  • -
  • For the emulator, the -example builds an executable called smsexample.exe in -the epoc32\release\winscw\<udeb or urel>\ folder.

  • +
    Building +and configuring
      +
    • You can build +the example from your IDE or the command line.

      If you use +an IDE, import the bld.inf file of the example +into your IDE, and use the build command of the IDE.

      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:

      bldmake bldfiles

      abld +build

    • +
    • For the emulator, +the example builds an executable called smsexample.exe in the epoc32\release\winscw\<udeb or + urel>\ folder.

    -SMS MTM Overview - +SMS +MTM Overview \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2DA8C6F2-93BD-5D39-9E5A-5FF8B8777CE7-GENID-1-12-1-26-1-1-11-1-1-3-1-5-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-2DA8C6F2-93BD-5D39-9E5A-5FF8B8777CE7-GENID-1-12-1-26-1-1-11-1-1-3-1-5-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,278 @@ + + + + + +How +to create a CryptoSPI plug-in +
    Introduction

    Note: +this document is intended for device manufacturers.

    The purpose of +a CryptoSPI plug-in is to implement one or more cryptographic algorithms.

    Symbian +provides a plug-in called softwarecrypto.dll that implements +all algorithms supported by the legacy (pre-Symbian^3) cryptography APIs. +In Symbian^3, the legacy APIs have all been re-implemented to use this plug-in +DLL. The source code for softwarecrypto.dll is located +under src/common/generic/security/cryptospi/source/softwarecrypto/.

    This +is a summary of the steps involved in creating a plug-in, in no particular +order. Details of each step are given in the rest of the document.

      +
    • Create the MMP file.

    • +
    • Define the characteristics of the algorithms.

    • +
    • Implement all or a subset of the functions defined in pluginentrydef.h.

    • +
    • Implement the MPlugin-derived objects.

    • +
    • Update the ROM configuration file.

    • +
    +
    How to create +the MMP file

    See for instance src/common/generic/security/cryptospi/group/softwarecrypto.mmp.

    TARGET softwarecrypto.dll +TARGETTYPE dll + +UID 0x1000008d 0x102835C2 +VENDORID 0x70000001 + +CAPABILITY All + +DEFFILE softwarecrypto.def + +USERINCLUDE . +USERINCLUDE ..\inc +USERINCLUDE ..\inc\spi +SYSTEMINCLUDE \epoc32\include +SYSTEMINCLUDE \epoc32\include\cryptospi + +SOURCEPATH ..\source\softwarecrypto +SOURCE pluginentry.cpp +SOURCE md2impl.cpp md5impl.cpp sha1impl.cpp hmacimpl.cpp +SOURCE 3desimpl.cpp desimpl.cpp rc2impl.cpp rijndaelimpl.cpp arc4impl.cpp symmetriccipherimpl.cpp +SOURCE randomimpl.cpp dsasignerimpl.cpp dsaverifyimpl.cpp rsaimpl.cpp rsafunction.cpp +SOURCE signerimpl.cpp verifierimpl.cpp asymmetriccipherimpl.cpp + +LIBRARY euser.lib cryptospi.lib + +// Depends on bigint and padding code +LIBRARY cryptography.lib +//Depends on random server for random number generation +LIBRARY random.lib

    Key points:

      +
    • 0x1000008d identifies +the DLL as static (not polymorphic or an ECOM plug-in) and 0x102835C2 is +unique to this plug-in, allocated by Symbian Signed.

    • +
    • It is recommended that +plug-ins have ALL capabilities because this ensures that +they can be loaded by client applications with any capabilities.

    • +
    • The project needs to +link against cryptospi.lib, the CryptoSPI library.

    • +
    • The plug-in needs to +link against cryptography.lib because big integers (RInteger) +are implemented in cryptography.dll.

    • +
    • SYSTEMINCLUDE +\epoc32\include\cryptospi allows code to #include the +CryptoSPI header files, which are all exported to epoc32\include\cryptospi\.

    • +
    +
    How to define +the algorithm's characteristics

    All plug-ins must define the characteristics +of their algorithm implementations that are fixed at compile time, as constant +data. Some characteristics are common to all interface types, for instance +the name and UID of the algorithm implemented, the name of the plug-in vendor, +whether the plug-in uses hardware acceleration, and whether it is FIPS certified. +Common characteristics are defined in CryptoSpi::TCommonCharacteristics:

    class TCommonCharacteristics + { + public: + ... + TInt32 iInterfaceUID; + TInt32 iAlgorithmUID; + TInt32 iImplementationUID; + const TRomLitC16* iCreatorName; + TBool iIsFIPSApproved; + TBool iIsHardwareSupported; + TUint iMaxConcurrencySupported; + const TRomLitC16* iAlgorithmName; + TInt iLatency; + TInt iThroughput; + }; +

    Other characteristics are specific to a particular interface. +For each interface type, a T class is defined as an aggregation of a TCommonCharacteristics object +and some additional characteristics particular to that interface. For instance, THashCharacteristics includes +a block size, output size and operation mode. (The operation mode can be either KHashMode or KHmacMode, +and indicates whether the hash algorithm is an HMAC or not.)

    class THashCharacteristics + { + public: + IMPORT_C TBool IsOperationModeSupported(TUid aOperationMode) const; + + public: + TCommonCharacteristics cmn; + TUint iBlockSize; + TUint iOutputSize; + const TInt32* iSupportedOperationModes; + TUint iOperationModeNum; + }; +

    All the data types relating to characteristics are defined +in plugincharacteristics.h.

    For an example, see src/common/generic/security/cryptospi/source/softwarecrypto/pluginconfig.h.

    +
    How to implement +the framework code

    Plug-in modules must implement a defined set +of functions exported at defined ordinals. The function prototypes and the +ordinals (see TPluginEntryOrdinal) are defined in pluginentrydef.h. +When a client requests an algorithm, these functions are used by CryptoSPI +to query and instantiate algorithm implementations. The simplest way to ensure +that functions are assigned the correct ordinal is to copy the softwarecryptoU.def exports +file, which can be found in the EABI and BWINS directories +in the CryptoSPI source code.

    Minimally, the plug-in DLL must implement +the function exported at ordinal 1, whose prototype is:

    typedef const TCharacteristics** (*EnumerateCharacteristicsFunc)(TUid, TInt&);

    and at least one of the algorithm factory functions. See for example +class CCryptoPluginEntry (pluginentry.h / pluginentry.cpp).

    If +the plug-in DLL does not support a particular algorithm, the ABSENT keyword +should be used in its .def file to ensure any subsequent +exports are at the correct ordinals.

    Querying the characteristics +of plug-ins

    CryptoSPI builds up a list of the characteristics +of all the plug-in DLLs by calling the function exported at ordinal 1 (EEnumerateCharacteristicsOrdinal) +for each DLL and for each interface type. Here is an example implementation:

    EXPORT_C const TCharacteristics** CCryptoPluginEntry::Enumerate(TUid aInterface, TInt& aNumPlugins) + { + const TCharacteristics** ptr(0); + switch (aInterface.iUid) + { + case KHashInterface: + { + aNumPlugins=sizeof(KHashCharacteristics)/sizeof(THashCharacteristics*); + ptr = (const TCharacteristics**) &KHashCharacteristics[0]; + } + break; + + case KRandomInterface: + { + aNumPlugins=sizeof(KRandomCharacteristics)/sizeof(TRandomCharacteristics*); + ptr= (const TCharacteristics**) &KRandomCharacteristics[0]; + } + break; + ... + } + return ptr; + } +

    Key points:

      +
    • Every plug-in must implement +this function.

    • +
    • TUid aInterface is +the interface UID, as defined in CryptoSpi::KInterfacesUids.

    • +
    • TInt& aNumPlugins should +be set to the number of algorithms of that interface type implemented by the +plug-in.

    • +

    Extended characteristics

    Extended characteristics +are those which can only be determined at runtime. They are retrieved on demand +by CryptoSPI or clients can call the plug-in's implementation of CryptoSpi::CCryptoBase::GetExtendedCharacteristicsL().

    The +function exported at ordinal 2 has this prototype:

    typedef void (*GetExtendedCharacteristicsFuncL)(TUid, CExtendedCharacteristics*&);

    Symbian defines 2 extended characteristics:

      +
    • TInt iAvailableConcurrency;

      The +number of available resources for processing the operation for the requested +plug-in. This could be zero even if no operations are in progress; for instance +cryptographic acceleration hardware is turned off to save battery power.

    • +
    • TBool iExclusiveUse;

      Whether +it is possible for the application to reserve exclusive use of hardware resources +used by the plug-in.

    • +

    Additional plug-in specific characteristics may be defined. The plug-in +creator needs to define UIDs for each of these and specify the UID when calling CryptoSpi::CExtendedCharacteristics::AddCharacteristicL().

    Algorithm instantiation

    A plug-in must implement +one or more factory methods for instantiating algorithms. The functions exported +at ordinals 3 to 20 have the following declarations. (Note that symmetric +key generation is not yet implemented by Symbian's software crypto plug-in, +so the ordinals ECreateSymmetricKeyGeneratorOrdinal and ECreateAsyncSymmetricKeyGeneratorOrdinal have +no corresponding declarations).

    typedef void (*CreateRandomFuncL)(MRandom*&, TUid, const CCryptoParams*); +typedef void (*CreateHashFuncL)(MHash*&, TUid, TUid, const CKey*, const CCryptoParams*); +typedef void (*CreateSymmetricCipherFuncL)(MSymmetricCipher*&, TUid, const CKey&, TUid, TUid, TUid, const CCryptoParams*); +typedef void (*CreateAsymmetricCipherFuncL)(MAsymmetricCipher*&, TUid, const CKey&, TUid, TUid, const CCryptoParams*); +typedef void (*CreateSignerFuncL)(MSigner*&, TUid, const CKey&, TUid, const CCryptoParams*); +typedef void (*CreateVerifierFuncL)(MVerifier*&, TUid, const CKey&, TUid, const CCryptoParams*); +typedef void (*CreateKeyAgreementFuncL)(MKeyAgreement*&, TUid, const CKey&, const CCryptoParams*); +typedef void (*CreateKeyPairGeneratorFuncL)(MKeyPairGenerator*&, TUid, const CCryptoParams*); +typedef void (*CreateAsyncRandomFuncL)(MAsyncRandom*&, TUid, const CCryptoParams*); +typedef void (*CreateAsyncHashFuncL)(MAsyncHash*&, TUid, TUid, const CKey*, const CCryptoParams*); +typedef void (*CreateAsyncSymmetricCipherFuncL)(MAsyncSymmetricCipher*&, TUid, const CKey&, TUid, TUid, TUid, const CCryptoParams*); +typedef void (*CreateAsyncAsymmetricCipherFuncL)(MAsyncAsymmetricCipher*&, TUid, const CKey&, TUid, TUid, const CCryptoParams*); +typedef void (*CreateAsyncSignerFuncL)(MAsyncSigner*&, TUid, const CKey&, TUid, const CCryptoParams*); +typedef void (*CreateAsyncVerifierFuncL)(MAsyncVerifier*&, TUid, const CKey&, TUid, const CCryptoParams*); +typedef void (*CreateAsyncKeyAgreementFuncL)(MAsyncKeyAgreement*&, TUid, const CKey&, const CCryptoParams*); +typedef void (*CreateAsyncKeyPairGeneratorFuncL)(MAsyncKeyPairGenerator*&, TUid, const CCryptoParams*);

    Clients +instantiate algorithms by calling one of the CryptoSPI factory methods, for +instance CHashFactory::CreateHashL(). All CryptoSPI factory +methods take a CCryptoParams parameter. This class allows +clients to supply arbitrary, algorithm-specific data to plug-ins, for instance +the effective key length for RC2, or the number of bytes to discard from the +keystream for ARC4.

    The data type of each parameter can be integer +(TInt), big integer (RInteger), or 8/16 +bit descriptor. Additional data types could be added in future, by extending +the TParamType enum in CCryptoParam and +deriving a class from CCryptoParam, but this is unlikely +to be necessary.

    +
    How to implement +the MPlugin-derived class

    All concrete algorithm classes are derived +from one of the abstract base classes listed below, which are in turn all +derived from MPlugin.

      +
    • Random (MRandom /MAsyncRandom)

    • +
    • Hash (MHash /MAsyncHash)

    • +
    • Symmetric cipher (MSymmetricCipher /MAsyncSymmetricCipher)

    • +
    • Asymmetric cipher (MAsymmetricCipher /MAsyncAsymmetricCipher)

    • +
    • Signer (MSigner /MAsyncSigner)

    • +
    • Verifier (MVerifier /MAsyncVerifier)

    • +
    • Key agreement (MKeyAgreement /MAsyncKeyAgreement)

    • +
    • Key pair generator (MKeyPairGenerator /MAsyncKeyPairGenerator)

    • +
    • Key generator (MSymmetricKeyGenerator /MAsyncSymmetricKeyGenerator)

    • +

    MPlugin (cryptoplugin.h) +declares the following pure virtual functions:

    virtual void Close() = 0; +virtual void Reset() = 0; +virtual void GetCharacteristicsL(const TCharacteristics*& aPluginCharacteristics) = 0; +virtual const CExtendedCharacteristics& GetExtendedCharacteristicsL() = 0; +virtual TAny* GetExtension(TUid aExtensionId) = 0;

    For example, +the random number generator plug-in implemented in softwarecrypto.dll implements +these functions as follows:

    void CRandomImpl::Close() + { + delete this; + } + +void CRandomImpl::Reset() + { //Not required + } + +const CExtendedCharacteristics* CRandomImpl::GetExtendedCharacteristicsL() + // All Symbian software plug-ins have unlimited concurrency and cannot be reserved + // for exclusive use + { + return CExtendedCharacteristics::NewL(KMaxTInt, EFalse); + } + +//Get the plug-in characteristics (defined at compile time) +void CRandomImpl::GetCharacteristicsL(const TCharacteristics*& aPluginCharacteristics) + { + //Find out how many algorithms are implemented by the plug-in + TInt randomNum = sizeof(KRandomCharacteristics)/sizeof(TRandomCharacteristics*); + for (TInt i = 0; i < randomNum; i++) + { + //Compare implementation UIDs + //ImplementationUid() is a helper function that returns KCryptoPluginRandomUid + if (KRandomCharacteristics[i]->cmn.iImplementationUID == ImplementationUid().iUid) + { + aPluginCharacteristics = KRandomCharacteristics[i]; + break; + } + } + } + +TAny* CRandomImpl::GetExtension(TUid /*aExtensionId*/) + { + return NULL; + }

    The main purpose of MPlugin::Reset() is +to reset the hardware, so is usually not relevant to a software-only implementation. GetExtension() is +intended for internal use, and may be removed from the API in future.

    These +functions are called through the client API to CryptoSPI, in other words CCryptoBase and +the various classes derived from it, in this case, CRandom. +For instance when the client calls CCryptoBase::GetCharacteristicsL(), +this calls GetCharacteristicsL() in the plug-in, or calling CRandom::GenerateRandomBytesL(), +calls GenerateRandomBytesL() in the plug-in.

    +
    The configuration +file

    The set of available plug-ins is listed in the configuration +file z:\resource\cryptospi\plug-ins.txt. Each line in +the file contains the filename of a single plug-in DLL, without the path. +The path is not required because the DLLs are assumed to be located in z:\sys\bin. +The configuration file must be on the Z: drive and therefore +additional plug-ins cannot be installed post-manufacture. Depending on the +plug-in selector in use, plug-ins may be loaded individually, as required, +or all at once when CryptoSPI is initialized. The default selector implemented +by Symbian (CLegacySelector) loads plug-in DLLs as required.

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2DA8C6F2-93BD-5D39-9E5A-5FF8B8777CE7-GENID-1-12-1-26-1-1-9-1-10-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-2DA8C6F2-93BD-5D39-9E5A-5FF8B8777CE7-GENID-1-12-1-26-1-1-9-1-10-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,278 @@ + + + + + +How +to create a CryptoSPI plug-in +
    Introduction

    Note: +this document is intended for device manufacturers.

    The purpose of +a CryptoSPI plug-in is to implement one or more cryptographic algorithms.

    Symbian +provides a plug-in called softwarecrypto.dll that implements +all algorithms supported by the legacy (pre-Symbian^3) cryptography APIs. +In Symbian^3, the legacy APIs have all been re-implemented to use this plug-in +DLL. The source code for softwarecrypto.dll is located +under src/common/generic/security/cryptospi/source/softwarecrypto/.

    This +is a summary of the steps involved in creating a plug-in, in no particular +order. Details of each step are given in the rest of the document.

      +
    • Create the MMP file.

    • +
    • Define the characteristics of the algorithms.

    • +
    • Implement all or a subset of the functions defined in pluginentrydef.h.

    • +
    • Implement the MPlugin-derived objects.

    • +
    • Update the ROM configuration file.

    • +
    +
    How to create +the MMP file

    See for instance src/common/generic/security/cryptospi/group/softwarecrypto.mmp.

    TARGET softwarecrypto.dll +TARGETTYPE dll + +UID 0x1000008d 0x102835C2 +VENDORID 0x70000001 + +CAPABILITY All + +DEFFILE softwarecrypto.def + +USERINCLUDE . +USERINCLUDE ..\inc +USERINCLUDE ..\inc\spi +SYSTEMINCLUDE \epoc32\include +SYSTEMINCLUDE \epoc32\include\cryptospi + +SOURCEPATH ..\source\softwarecrypto +SOURCE pluginentry.cpp +SOURCE md2impl.cpp md5impl.cpp sha1impl.cpp hmacimpl.cpp +SOURCE 3desimpl.cpp desimpl.cpp rc2impl.cpp rijndaelimpl.cpp arc4impl.cpp symmetriccipherimpl.cpp +SOURCE randomimpl.cpp dsasignerimpl.cpp dsaverifyimpl.cpp rsaimpl.cpp rsafunction.cpp +SOURCE signerimpl.cpp verifierimpl.cpp asymmetriccipherimpl.cpp + +LIBRARY euser.lib cryptospi.lib + +// Depends on bigint and padding code +LIBRARY cryptography.lib +//Depends on random server for random number generation +LIBRARY random.lib

    Key points:

      +
    • 0x1000008d identifies +the DLL as static (not polymorphic or an ECOM plug-in) and 0x102835C2 is +unique to this plug-in, allocated by Symbian Signed.

    • +
    • It is recommended that +plug-ins have ALL capabilities because this ensures that +they can be loaded by client applications with any capabilities.

    • +
    • The project needs to +link against cryptospi.lib, the CryptoSPI library.

    • +
    • The plug-in needs to +link against cryptography.lib because big integers (RInteger) +are implemented in cryptography.dll.

    • +
    • SYSTEMINCLUDE +\epoc32\include\cryptospi allows code to #include the +CryptoSPI header files, which are all exported to epoc32\include\cryptospi\.

    • +
    +
    How to define +the algorithm's characteristics

    All plug-ins must define the characteristics +of their algorithm implementations that are fixed at compile time, as constant +data. Some characteristics are common to all interface types, for instance +the name and UID of the algorithm implemented, the name of the plug-in vendor, +whether the plug-in uses hardware acceleration, and whether it is FIPS certified. +Common characteristics are defined in CryptoSpi::TCommonCharacteristics:

    class TCommonCharacteristics + { + public: + ... + TInt32 iInterfaceUID; + TInt32 iAlgorithmUID; + TInt32 iImplementationUID; + const TRomLitC16* iCreatorName; + TBool iIsFIPSApproved; + TBool iIsHardwareSupported; + TUint iMaxConcurrencySupported; + const TRomLitC16* iAlgorithmName; + TInt iLatency; + TInt iThroughput; + }; +

    Other characteristics are specific to a particular interface. +For each interface type, a T class is defined as an aggregation of a TCommonCharacteristics object +and some additional characteristics particular to that interface. For instance, THashCharacteristics includes +a block size, output size and operation mode. (The operation mode can be either KHashMode or KHmacMode, +and indicates whether the hash algorithm is an HMAC or not.)

    class THashCharacteristics + { + public: + IMPORT_C TBool IsOperationModeSupported(TUid aOperationMode) const; + + public: + TCommonCharacteristics cmn; + TUint iBlockSize; + TUint iOutputSize; + const TInt32* iSupportedOperationModes; + TUint iOperationModeNum; + }; +

    All the data types relating to characteristics are defined +in plugincharacteristics.h.

    For an example, see src/common/generic/security/cryptospi/source/softwarecrypto/pluginconfig.h.

    +
    How to implement +the framework code

    Plug-in modules must implement a defined set +of functions exported at defined ordinals. The function prototypes and the +ordinals (see TPluginEntryOrdinal) are defined in pluginentrydef.h. +When a client requests an algorithm, these functions are used by CryptoSPI +to query and instantiate algorithm implementations. The simplest way to ensure +that functions are assigned the correct ordinal is to copy the softwarecryptoU.def exports +file, which can be found in the EABI and BWINS directories +in the CryptoSPI source code.

    Minimally, the plug-in DLL must implement +the function exported at ordinal 1, whose prototype is:

    typedef const TCharacteristics** (*EnumerateCharacteristicsFunc)(TUid, TInt&);

    and at least one of the algorithm factory functions. See for example +class CCryptoPluginEntry (pluginentry.h / pluginentry.cpp).

    If +the plug-in DLL does not support a particular algorithm, the ABSENT keyword +should be used in its .def file to ensure any subsequent +exports are at the correct ordinals.

    Querying the characteristics +of plug-ins

    CryptoSPI builds up a list of the characteristics +of all the plug-in DLLs by calling the function exported at ordinal 1 (EEnumerateCharacteristicsOrdinal) +for each DLL and for each interface type. Here is an example implementation:

    EXPORT_C const TCharacteristics** CCryptoPluginEntry::Enumerate(TUid aInterface, TInt& aNumPlugins) + { + const TCharacteristics** ptr(0); + switch (aInterface.iUid) + { + case KHashInterface: + { + aNumPlugins=sizeof(KHashCharacteristics)/sizeof(THashCharacteristics*); + ptr = (const TCharacteristics**) &KHashCharacteristics[0]; + } + break; + + case KRandomInterface: + { + aNumPlugins=sizeof(KRandomCharacteristics)/sizeof(TRandomCharacteristics*); + ptr= (const TCharacteristics**) &KRandomCharacteristics[0]; + } + break; + ... + } + return ptr; + } +

    Key points:

      +
    • Every plug-in must implement +this function.

    • +
    • TUid aInterface is +the interface UID, as defined in CryptoSpi::KInterfacesUids.

    • +
    • TInt& aNumPlugins should +be set to the number of algorithms of that interface type implemented by the +plug-in.

    • +

    Extended characteristics

    Extended characteristics +are those which can only be determined at runtime. They are retrieved on demand +by CryptoSPI or clients can call the plug-in's implementation of CryptoSpi::CCryptoBase::GetExtendedCharacteristicsL().

    The +function exported at ordinal 2 has this prototype:

    typedef void (*GetExtendedCharacteristicsFuncL)(TUid, CExtendedCharacteristics*&);

    Symbian defines 2 extended characteristics:

      +
    • TInt iAvailableConcurrency;

      The +number of available resources for processing the operation for the requested +plug-in. This could be zero even if no operations are in progress; for instance +cryptographic acceleration hardware is turned off to save battery power.

    • +
    • TBool iExclusiveUse;

      Whether +it is possible for the application to reserve exclusive use of hardware resources +used by the plug-in.

    • +

    Additional plug-in specific characteristics may be defined. The plug-in +creator needs to define UIDs for each of these and specify the UID when calling CryptoSpi::CExtendedCharacteristics::AddCharacteristicL().

    Algorithm instantiation

    A plug-in must implement +one or more factory methods for instantiating algorithms. The functions exported +at ordinals 3 to 20 have the following declarations. (Note that symmetric +key generation is not yet implemented by Symbian's software crypto plug-in, +so the ordinals ECreateSymmetricKeyGeneratorOrdinal and ECreateAsyncSymmetricKeyGeneratorOrdinal have +no corresponding declarations).

    typedef void (*CreateRandomFuncL)(MRandom*&, TUid, const CCryptoParams*); +typedef void (*CreateHashFuncL)(MHash*&, TUid, TUid, const CKey*, const CCryptoParams*); +typedef void (*CreateSymmetricCipherFuncL)(MSymmetricCipher*&, TUid, const CKey&, TUid, TUid, TUid, const CCryptoParams*); +typedef void (*CreateAsymmetricCipherFuncL)(MAsymmetricCipher*&, TUid, const CKey&, TUid, TUid, const CCryptoParams*); +typedef void (*CreateSignerFuncL)(MSigner*&, TUid, const CKey&, TUid, const CCryptoParams*); +typedef void (*CreateVerifierFuncL)(MVerifier*&, TUid, const CKey&, TUid, const CCryptoParams*); +typedef void (*CreateKeyAgreementFuncL)(MKeyAgreement*&, TUid, const CKey&, const CCryptoParams*); +typedef void (*CreateKeyPairGeneratorFuncL)(MKeyPairGenerator*&, TUid, const CCryptoParams*); +typedef void (*CreateAsyncRandomFuncL)(MAsyncRandom*&, TUid, const CCryptoParams*); +typedef void (*CreateAsyncHashFuncL)(MAsyncHash*&, TUid, TUid, const CKey*, const CCryptoParams*); +typedef void (*CreateAsyncSymmetricCipherFuncL)(MAsyncSymmetricCipher*&, TUid, const CKey&, TUid, TUid, TUid, const CCryptoParams*); +typedef void (*CreateAsyncAsymmetricCipherFuncL)(MAsyncAsymmetricCipher*&, TUid, const CKey&, TUid, TUid, const CCryptoParams*); +typedef void (*CreateAsyncSignerFuncL)(MAsyncSigner*&, TUid, const CKey&, TUid, const CCryptoParams*); +typedef void (*CreateAsyncVerifierFuncL)(MAsyncVerifier*&, TUid, const CKey&, TUid, const CCryptoParams*); +typedef void (*CreateAsyncKeyAgreementFuncL)(MAsyncKeyAgreement*&, TUid, const CKey&, const CCryptoParams*); +typedef void (*CreateAsyncKeyPairGeneratorFuncL)(MAsyncKeyPairGenerator*&, TUid, const CCryptoParams*);

    Clients +instantiate algorithms by calling one of the CryptoSPI factory methods, for +instance CHashFactory::CreateHashL(). All CryptoSPI factory +methods take a CCryptoParams parameter. This class allows +clients to supply arbitrary, algorithm-specific data to plug-ins, for instance +the effective key length for RC2, or the number of bytes to discard from the +keystream for ARC4.

    The data type of each parameter can be integer +(TInt), big integer (RInteger), or 8/16 +bit descriptor. Additional data types could be added in future, by extending +the TParamType enum in CCryptoParam and +deriving a class from CCryptoParam, but this is unlikely +to be necessary.

    +
    How to implement +the MPlugin-derived class

    All concrete algorithm classes are derived +from one of the abstract base classes listed below, which are in turn all +derived from MPlugin.

      +
    • Random (MRandom /MAsyncRandom)

    • +
    • Hash (MHash /MAsyncHash)

    • +
    • Symmetric cipher (MSymmetricCipher /MAsyncSymmetricCipher)

    • +
    • Asymmetric cipher (MAsymmetricCipher /MAsyncAsymmetricCipher)

    • +
    • Signer (MSigner /MAsyncSigner)

    • +
    • Verifier (MVerifier /MAsyncVerifier)

    • +
    • Key agreement (MKeyAgreement /MAsyncKeyAgreement)

    • +
    • Key pair generator (MKeyPairGenerator /MAsyncKeyPairGenerator)

    • +
    • Key generator (MSymmetricKeyGenerator /MAsyncSymmetricKeyGenerator)

    • +

    MPlugin (cryptoplugin.h) +declares the following pure virtual functions:

    virtual void Close() = 0; +virtual void Reset() = 0; +virtual void GetCharacteristicsL(const TCharacteristics*& aPluginCharacteristics) = 0; +virtual const CExtendedCharacteristics& GetExtendedCharacteristicsL() = 0; +virtual TAny* GetExtension(TUid aExtensionId) = 0;

    For example, +the random number generator plug-in implemented in softwarecrypto.dll implements +these functions as follows:

    void CRandomImpl::Close() + { + delete this; + } + +void CRandomImpl::Reset() + { //Not required + } + +const CExtendedCharacteristics* CRandomImpl::GetExtendedCharacteristicsL() + // All Symbian software plug-ins have unlimited concurrency and cannot be reserved + // for exclusive use + { + return CExtendedCharacteristics::NewL(KMaxTInt, EFalse); + } + +//Get the plug-in characteristics (defined at compile time) +void CRandomImpl::GetCharacteristicsL(const TCharacteristics*& aPluginCharacteristics) + { + //Find out how many algorithms are implemented by the plug-in + TInt randomNum = sizeof(KRandomCharacteristics)/sizeof(TRandomCharacteristics*); + for (TInt i = 0; i < randomNum; i++) + { + //Compare implementation UIDs + //ImplementationUid() is a helper function that returns KCryptoPluginRandomUid + if (KRandomCharacteristics[i]->cmn.iImplementationUID == ImplementationUid().iUid) + { + aPluginCharacteristics = KRandomCharacteristics[i]; + break; + } + } + } + +TAny* CRandomImpl::GetExtension(TUid /*aExtensionId*/) + { + return NULL; + }

    The main purpose of MPlugin::Reset() is +to reset the hardware, so is usually not relevant to a software-only implementation. GetExtension() is +intended for internal use, and may be removed from the API in future.

    These +functions are called through the client API to CryptoSPI, in other words CCryptoBase and +the various classes derived from it, in this case, CRandom. +For instance when the client calls CCryptoBase::GetCharacteristicsL(), +this calls GetCharacteristicsL() in the plug-in, or calling CRandom::GenerateRandomBytesL(), +calls GenerateRandomBytesL() in the plug-in.

    +
    The configuration +file

    The set of available plug-ins is listed in the configuration +file z:\resource\cryptospi\plug-ins.txt. Each line in +the file contains the filename of a single plug-in DLL, without the path. +The path is not required because the DLLs are assumed to be located in z:\sys\bin. +The configuration file must be on the Z: drive and therefore +additional plug-ins cannot be installed post-manufacture. Depending on the +plug-in selector in use, plug-ins may be loaded individually, as required, +or all at once when CryptoSPI is initialized. The default selector implemented +by Symbian (CLegacySelector) loads plug-in DLLs as required.

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2DA8C6F2-93BD-5D39-9E5A-5FF8B8777CE7.dita --- a/Symbian3/PDK/Source/GUID-2DA8C6F2-93BD-5D39-9E5A-5FF8B8777CE7.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,278 +0,0 @@ - - - - - -How -to create a CryptoSPI plug-in -
    Introduction

    Note: -this document is intended for device manufacturers.

    The purpose of -a CryptoSPI plug-in is to implement one or more cryptographic algorithms.

    Symbian -provides a plug-in called softwarecrypto.dll that implements -all algorithms supported by the legacy (pre-Symbian^3) cryptography APIs. -In Symbian^3, the legacy APIs have all been re-implemented to use this plug-in -DLL. The source code for softwarecrypto.dll is located -under src/common/generic/security/cryptospi/source/softwarecrypto/.

    This -is a summary of the steps involved in creating a plug-in, in no particular -order. Details of each step are given in the rest of the document.

      -
    • Create the MMP file.

    • -
    • Define the characteristics of the algorithms.

    • -
    • Implement all or a subset of the functions defined in pluginentrydef.h.

    • -
    • Implement the MPlugin-derived objects.

    • -
    • Update the ROM configuration file.

    • -
    -
    How to create -the MMP file

    See for instance src/common/generic/security/cryptospi/group/softwarecrypto.mmp.

    TARGET softwarecrypto.dll -TARGETTYPE dll - -UID 0x1000008d 0x102835C2 -VENDORID 0x70000001 - -CAPABILITY All - -DEFFILE softwarecrypto.def - -USERINCLUDE . -USERINCLUDE ..\inc -USERINCLUDE ..\inc\spi -SYSTEMINCLUDE \epoc32\include -SYSTEMINCLUDE \epoc32\include\cryptospi - -SOURCEPATH ..\source\softwarecrypto -SOURCE pluginentry.cpp -SOURCE md2impl.cpp md5impl.cpp sha1impl.cpp hmacimpl.cpp -SOURCE 3desimpl.cpp desimpl.cpp rc2impl.cpp rijndaelimpl.cpp arc4impl.cpp symmetriccipherimpl.cpp -SOURCE randomimpl.cpp dsasignerimpl.cpp dsaverifyimpl.cpp rsaimpl.cpp rsafunction.cpp -SOURCE signerimpl.cpp verifierimpl.cpp asymmetriccipherimpl.cpp - -LIBRARY euser.lib cryptospi.lib - -// Depends on bigint and padding code -LIBRARY cryptography.lib -//Depends on random server for random number generation -LIBRARY random.lib

    Key points:

      -
    • 0x1000008d identifies -the DLL as static (not polymorphic or an ECOM plug-in) and 0x102835C2 is -unique to this plug-in, allocated by Symbian Signed.

    • -
    • It is recommended that -plug-ins have ALL capabilities because this ensures that -they can be loaded by client applications with any capabilities.

    • -
    • The project needs to -link against cryptospi.lib, the CryptoSPI library.

    • -
    • The plug-in needs to -link against cryptography.lib because big integers (RInteger) -are implemented in cryptography.dll.

    • -
    • SYSTEMINCLUDE -\epoc32\include\cryptospi allows code to #include the -CryptoSPI header files, which are all exported to epoc32\include\cryptospi\.

    • -
    -
    How to define -the algorithm's characteristics

    All plug-ins must define the characteristics -of their algorithm implementations that are fixed at compile time, as constant -data. Some characteristics are common to all interface types, for instance -the name and UID of the algorithm implemented, the name of the plug-in vendor, -whether the plug-in uses hardware acceleration, and whether it is FIPS certified. -Common characteristics are defined in CryptoSpi::TCommonCharacteristics:

    class TCommonCharacteristics - { - public: - ... - TInt32 iInterfaceUID; - TInt32 iAlgorithmUID; - TInt32 iImplementationUID; - const TRomLitC16* iCreatorName; - TBool iIsFIPSApproved; - TBool iIsHardwareSupported; - TUint iMaxConcurrencySupported; - const TRomLitC16* iAlgorithmName; - TInt iLatency; - TInt iThroughput; - }; -

    Other characteristics are specific to a particular interface. -For each interface type, a T class is defined as an aggregation of a TCommonCharacteristics object -and some additional characteristics particular to that interface. For instance, THashCharacteristics includes -a block size, output size and operation mode. (The operation mode can be either KHashMode or KHmacMode, -and indicates whether the hash algorithm is an HMAC or not.)

    class THashCharacteristics - { - public: - IMPORT_C TBool IsOperationModeSupported(TUid aOperationMode) const; - - public: - TCommonCharacteristics cmn; - TUint iBlockSize; - TUint iOutputSize; - const TInt32* iSupportedOperationModes; - TUint iOperationModeNum; - }; -

    All the data types relating to characteristics are defined -in plugincharacteristics.h.

    For an example, see src/common/generic/security/cryptospi/source/softwarecrypto/pluginconfig.h.

    -
    How to implement -the framework code

    Plug-in modules must implement a defined set -of functions exported at defined ordinals. The function prototypes and the -ordinals (see TPluginEntryOrdinal) are defined in pluginentrydef.h. -When a client requests an algorithm, these functions are used by CryptoSPI -to query and instantiate algorithm implementations. The simplest way to ensure -that functions are assigned the correct ordinal is to copy the softwarecryptoU.def exports -file, which can be found in the EABI and BWINS directories -in the CryptoSPI source code.

    Minimally, the plug-in DLL must implement -the function exported at ordinal 1, whose prototype is:

    typedef const TCharacteristics** (*EnumerateCharacteristicsFunc)(TUid, TInt&);

    and at least one of the algorithm factory functions. See for example -class CCryptoPluginEntry (pluginentry.h / pluginentry.cpp).

    If -the plug-in DLL does not support a particular algorithm, the ABSENT keyword -should be used in its .def file to ensure any subsequent -exports are at the correct ordinals.

    Querying the characteristics -of plug-ins

    CryptoSPI builds up a list of the characteristics -of all the plug-in DLLs by calling the function exported at ordinal 1 (EEnumerateCharacteristicsOrdinal) -for each DLL and for each interface type. Here is an example implementation:

    EXPORT_C const TCharacteristics** CCryptoPluginEntry::Enumerate(TUid aInterface, TInt& aNumPlugins) - { - const TCharacteristics** ptr(0); - switch (aInterface.iUid) - { - case KHashInterface: - { - aNumPlugins=sizeof(KHashCharacteristics)/sizeof(THashCharacteristics*); - ptr = (const TCharacteristics**) &KHashCharacteristics[0]; - } - break; - - case KRandomInterface: - { - aNumPlugins=sizeof(KRandomCharacteristics)/sizeof(TRandomCharacteristics*); - ptr= (const TCharacteristics**) &KRandomCharacteristics[0]; - } - break; - ... - } - return ptr; - } -

    Key points:

      -
    • Every plug-in must implement -this function.

    • -
    • TUid aInterface is -the interface UID, as defined in CryptoSpi::KInterfacesUids.

    • -
    • TInt& aNumPlugins should -be set to the number of algorithms of that interface type implemented by the -plug-in.

    • -

    Extended characteristics

    Extended characteristics -are those which can only be determined at runtime. They are retrieved on demand -by CryptoSPI or clients can call the plug-in's implementation of CryptoSpi::CCryptoBase::GetExtendedCharacteristicsL().

    The -function exported at ordinal 2 has this prototype:

    typedef void (*GetExtendedCharacteristicsFuncL)(TUid, CExtendedCharacteristics*&);

    Symbian defines 2 extended characteristics:

      -
    • TInt iAvailableConcurrency;

      The -number of available resources for processing the operation for the requested -plug-in. This could be zero even if no operations are in progress; for instance -cryptographic acceleration hardware is turned off to save battery power.

    • -
    • TBool iExclusiveUse;

      Whether -it is possible for the application to reserve exclusive use of hardware resources -used by the plug-in.

    • -

    Additional plug-in specific characteristics may be defined. The plug-in -creator needs to define UIDs for each of these and specify the UID when calling CryptoSpi::CExtendedCharacteristics::AddCharacteristicL().

    Algorithm instantiation

    A plug-in must implement -one or more factory methods for instantiating algorithms. The functions exported -at ordinals 3 to 20 have the following declarations. (Note that symmetric -key generation is not yet implemented by Symbian's software crypto plug-in, -so the ordinals ECreateSymmetricKeyGeneratorOrdinal and ECreateAsyncSymmetricKeyGeneratorOrdinal have -no corresponding declarations).

    typedef void (*CreateRandomFuncL)(MRandom*&, TUid, const CCryptoParams*); -typedef void (*CreateHashFuncL)(MHash*&, TUid, TUid, const CKey*, const CCryptoParams*); -typedef void (*CreateSymmetricCipherFuncL)(MSymmetricCipher*&, TUid, const CKey&, TUid, TUid, TUid, const CCryptoParams*); -typedef void (*CreateAsymmetricCipherFuncL)(MAsymmetricCipher*&, TUid, const CKey&, TUid, TUid, const CCryptoParams*); -typedef void (*CreateSignerFuncL)(MSigner*&, TUid, const CKey&, TUid, const CCryptoParams*); -typedef void (*CreateVerifierFuncL)(MVerifier*&, TUid, const CKey&, TUid, const CCryptoParams*); -typedef void (*CreateKeyAgreementFuncL)(MKeyAgreement*&, TUid, const CKey&, const CCryptoParams*); -typedef void (*CreateKeyPairGeneratorFuncL)(MKeyPairGenerator*&, TUid, const CCryptoParams*); -typedef void (*CreateAsyncRandomFuncL)(MAsyncRandom*&, TUid, const CCryptoParams*); -typedef void (*CreateAsyncHashFuncL)(MAsyncHash*&, TUid, TUid, const CKey*, const CCryptoParams*); -typedef void (*CreateAsyncSymmetricCipherFuncL)(MAsyncSymmetricCipher*&, TUid, const CKey&, TUid, TUid, TUid, const CCryptoParams*); -typedef void (*CreateAsyncAsymmetricCipherFuncL)(MAsyncAsymmetricCipher*&, TUid, const CKey&, TUid, TUid, const CCryptoParams*); -typedef void (*CreateAsyncSignerFuncL)(MAsyncSigner*&, TUid, const CKey&, TUid, const CCryptoParams*); -typedef void (*CreateAsyncVerifierFuncL)(MAsyncVerifier*&, TUid, const CKey&, TUid, const CCryptoParams*); -typedef void (*CreateAsyncKeyAgreementFuncL)(MAsyncKeyAgreement*&, TUid, const CKey&, const CCryptoParams*); -typedef void (*CreateAsyncKeyPairGeneratorFuncL)(MAsyncKeyPairGenerator*&, TUid, const CCryptoParams*);

    Clients -instantiate algorithms by calling one of the CryptoSPI factory methods, for -instance CHashFactory::CreateHashL(). All CryptoSPI factory -methods take a CCryptoParams parameter. This class allows -clients to supply arbitrary, algorithm-specific data to plug-ins, for instance -the effective key length for RC2, or the number of bytes to discard from the -keystream for ARC4.

    The data type of each parameter can be integer -(TInt), big integer (RInteger), or 8/16 -bit descriptor. Additional data types could be added in future, by extending -the TParamType enum in CCryptoParam and -deriving a class from CCryptoParam, but this is unlikely -to be necessary.

    -
    How to implement -the MPlugin-derived class

    All concrete algorithm classes are derived -from one of the abstract base classes listed below, which are in turn all -derived from MPlugin.

      -
    • Random (MRandom /MAsyncRandom)

    • -
    • Hash (MHash /MAsyncHash)

    • -
    • Symmetric cipher (MSymmetricCipher /MAsyncSymmetricCipher)

    • -
    • Asymmetric cipher (MAsymmetricCipher /MAsyncAsymmetricCipher)

    • -
    • Signer (MSigner /MAsyncSigner)

    • -
    • Verifier (MVerifier /MAsyncVerifier)

    • -
    • Key agreement (MKeyAgreement /MAsyncKeyAgreement)

    • -
    • Key pair generator (MKeyPairGenerator /MAsyncKeyPairGenerator)

    • -
    • Key generator (MSymmetricKeyGenerator /MAsyncSymmetricKeyGenerator)

    • -

    MPlugin (cryptoplugin.h) -declares the following pure virtual functions:

    virtual void Close() = 0; -virtual void Reset() = 0; -virtual void GetCharacteristicsL(const TCharacteristics*& aPluginCharacteristics) = 0; -virtual const CExtendedCharacteristics& GetExtendedCharacteristicsL() = 0; -virtual TAny* GetExtension(TUid aExtensionId) = 0;

    For example, -the random number generator plug-in implemented in softwarecrypto.dll implements -these functions as follows:

    void CRandomImpl::Close() - { - delete this; - } - -void CRandomImpl::Reset() - { //Not required - } - -const CExtendedCharacteristics* CRandomImpl::GetExtendedCharacteristicsL() - // All Symbian software plug-ins have unlimited concurrency and cannot be reserved - // for exclusive use - { - return CExtendedCharacteristics::NewL(KMaxTInt, EFalse); - } - -//Get the plug-in characteristics (defined at compile time) -void CRandomImpl::GetCharacteristicsL(const TCharacteristics*& aPluginCharacteristics) - { - //Find out how many algorithms are implemented by the plug-in - TInt randomNum = sizeof(KRandomCharacteristics)/sizeof(TRandomCharacteristics*); - for (TInt i = 0; i < randomNum; i++) - { - //Compare implementation UIDs - //ImplementationUid() is a helper function that returns KCryptoPluginRandomUid - if (KRandomCharacteristics[i]->cmn.iImplementationUID == ImplementationUid().iUid) - { - aPluginCharacteristics = KRandomCharacteristics[i]; - break; - } - } - } - -TAny* CRandomImpl::GetExtension(TUid /*aExtensionId*/) - { - return NULL; - }

    The main purpose of MPlugin::Reset() is -to reset the hardware, so is usually not relevant to a software-only implementation. GetExtension() is -intended for internal use, and may be removed from the API in future.

    These -functions are called through the client API to CryptoSPI, in other words CCryptoBase and -the various classes derived from it, in this case, CRandom. -For instance when the client calls CCryptoBase::GetCharacteristicsL(), -this calls GetCharacteristicsL() in the plug-in, or calling CRandom::GenerateRandomBytesL(), -calls GenerateRandomBytesL() in the plug-in.

    -
    The configuration -file

    The set of available plug-ins is listed in the configuration -file z:\resource\cryptospi\plug-ins.txt. Each line in -the file contains the filename of a single plug-in DLL, without the path. -The path is not required because the DLLs are assumed to be located in z:\sys\bin. -The configuration file must be on the Z: drive and therefore -additional plug-ins cannot be installed post-manufacture. Depending on the -plug-in selector in use, plug-ins may be loaded individually, as required, -or all at once when CryptoSPI is initialized. The default selector implemented -by Symbian (CLegacySelector) loads plug-in DLLs as required.

    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2DC89F9D-30E8-5260-8850-53E4152EE3CF.dita --- a/Symbian3/PDK/Source/GUID-2DC89F9D-30E8-5260-8850-53E4152EE3CF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2DC89F9D-30E8-5260-8850-53E4152EE3CF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,58 +1,55 @@ - - - - - -Finding -your way aroundRead this page to learn about the contents and structure of the -library. -
    The platform -structure and APIs

    The Symbian -Guide provides introductory documents to the platform -as a whole, and guides that describe the major areas of the platform in depth.

    The -Symbian platform is a large system, and contains hundreds of C++ classes and -thousands of member functions. Like most complex systems, it is easiest to -divide it into large areas, and gradually to narrow your focus down to the -areas that are most important to your tasks.

    The Symbian System Model organises the components of the -Symbian platform into a layered software architecture. The guides in this -library are also structured around this architecture. The guides describe -the key technology and architectural concepts of the area, and show the key -ways to use its classes.

    Note: Before the System Model was introduced, -the Symbian platform used another architectural view based on large divisions -called subsystems. Some documentation has not yet been changed to use the -System Model rather than subsystems.

    -
    Newcomers to -the Symbian platform

    For those developing on the Symbian platform -for the first time, the Essential -Idioms section describes the distinctive programming idioms and conventions -of the Symbian platform.

    -
    Examples

    The Examples section gives -instructions for building and using the large set of C++ example projects -that accompany the library. Projects include examples that demonstrate the -use of fundamental Symbian platform classes, and many examples showing how -to use particular Symbian platform C++ APIs.

    Example code is provided -for illustrative and demonstration purposes, and should not be assumed to -be useable as product code.

    -
    Hardware -integration

    The library provides the following guides related to -hardware integration.

    Kernel and Hardware Services guide

    The Kernel and Hardware Services -Guide provides information for device creators and silicon vendors -who port the Symbian platform base to new hardware. The porting process is -explained through a Template port.

    Device Driver guide

    The Device Driver Guide contains -information on writing device drivers to run on the Symbian platform. It gives -an overview that explains the device driver model as used in the Symbian platform, -and then goes on to explain what you need to do in order to write a driver.

    -
    Tools

    The -library does not include documentation for most tools, which are usually delivered -separately from the Symbian platform code. See the Tools section of the Symbian Developer Community website.

    The Tools And Utilities section -documents the tools that are delivered with the platform. In particular, the Build Tools Guide and -the Build Tools Reference document -the abld/bldmake (SBSv1) command line -build tools, and explain the project file formats.

    + + + + + +Finding your way aroundRead this page to learn about the contents and structure +of the library. +
    The +platform structure and APIs

    The Symbian Guide provides introductory documents to the platform as a whole, and +guides that describe the major areas of the platform in depth.

    The Symbian platform is a large system, and contains hundreds +of C++ classes and thousands of member functions. Like most complex +systems, it is easiest to divide it into large areas, and gradually +to narrow your focus down to the areas that are most important to +your tasks.

    The Symbian System Model organises the components +of the Symbian platform into a layered software architecture. The +guides in this library are also structured around this architecture. +The guides describe the key technology and architectural concepts +of the area, and show the key ways to use its classes.

    Note: +Before the System Model was introduced, the Symbian platform used +another architectural view based on large divisions called subsystems. +Some documentation has not yet been changed to use the System Model +rather than subsystems.

    +
    Newcomers +to the Symbian platform

    For those developing on the Symbian +platform for the first time, the Essential Idioms section describes the distinctive programming idioms and conventions +of the Symbian platform.

    +
    Examples

    The Examples section gives instructions for building and using the large set +of C++ example projects that accompany the library. Projects include +examples that demonstrate the use of fundamental Symbian platform +classes, and many examples showing how to use particular Symbian platform +C++ APIs.

    Example code is provided for illustrative and demonstration +purposes, and should not be assumed to be useable as product code.

    +
    Hardware integration

    The library provides the following guides related to hardware +integration.

    Kernel and Hardware Services guide

    The Kernel +and Hardware Services Guide provides information for device +creators and silicon vendors who port the Symbian platform base to +new hardware. The porting process is explained through a Template +port.

    Device Driver guide

    The Device Driver Guide contains information on writing device drivers to run on the Symbian +platform. It gives an overview that explains the device driver model +as used in the Symbian platform, and then goes on to explain what +you need to do in order to write a driver.

    +
    Tools

    The library does not include documentation for most tools, which +are usually delivered separately from the Symbian platform code. See +the Tools section of the Symbian Developer +Community website.

    The Tools section documents +the tools that are delivered with the platform. In particular, the +Build Tools Guide and the Build Tools Reference document the abld/bldmake (SBSv1) command line build +tools, and explain the project file formats.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2DDAAD1C-D9EB-5741-B6AE-2383646E0EDB.dita --- a/Symbian3/PDK/Source/GUID-2DDAAD1C-D9EB-5741-B6AE-2383646E0EDB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2DDAAD1C-D9EB-5741-B6AE-2383646E0EDB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -39,7 +39,7 @@ class, TDesC, contains a data member which holds the length of the data. The following drawing shows the layout of a TPtrC object for a string of five characters representing the English word "Hello".

    - +

    Non-modifiable pointer descriptor

Modifiable pointer descriptor

The data represented @@ -64,7 +64,7 @@ layout of a TPtr object for a string of five characters representing the English word "Hello". The maximum length to be represented by the descriptor is 12.

- +

Modifiable pointer descriptor

\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2DDFE745-3991-573C-94D6-22A43A2F0BF0_d0e229777_href.png Binary file Symbian3/PDK/Source/GUID-2DDFE745-3991-573C-94D6-22A43A2F0BF0_d0e229777_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2DDFE745-3991-573C-94D6-22A43A2F0BF0_d0e235772_href.png Binary file Symbian3/PDK/Source/GUID-2DDFE745-3991-573C-94D6-22A43A2F0BF0_d0e235772_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2E0F793F-3D80-4303-AF48-C7341F417DC9.dita --- a/Symbian3/PDK/Source/GUID-2E0F793F-3D80-4303-AF48-C7341F417DC9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2E0F793F-3D80-4303-AF48-C7341F417DC9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -90,7 +90,7 @@ Editing menu - + Default touch events in editor diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2E22CB5B-E648-5760-AB74-8947C7EDE2CF.dita --- a/Symbian3/PDK/Source/GUID-2E22CB5B-E648-5760-AB74-8947C7EDE2CF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2E22CB5B-E648-5760-AB74-8947C7EDE2CF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,32 +1,30 @@ - - - - - -Lexical -Analysis OverviewProvides string analysis and string-to-number conversions -
Description

The API has two key concepts: lexical -analyser, and extraction mark.

-
Lexical analyser

The lexical analyser provides facilities -to identify and extract characters and tokens (substrings delimited by white -space) from a descriptor or NULL-terminated string. It also provides string-to-number -conversions.

The lexical analyser interface is provided by TLex16 for -wide strings, and TLex8 for narrow strings. TLex is -a typedef for TLex16.

-
Extraction mark

The extraction mark allows positions -in a string that is being analysed to be remembered. Later lexical analysis -operations can then operate on this position in the string.

The extraction -mark interface is provided by TLexMark16 for wide strings, -and TLexMark8 for narrow strings. TLexMark is -a typedef for TLexMark16.

-
- -Descriptors Overview - + + + + + +Lexical Analysis OverviewProvides string analysis and string-to-number conversions +
Description

The API has two key concepts: lexical analyser, and extraction +mark.

+
Lexical +analyser

The lexical analyser provides facilities to identify +and extract characters and tokens (substrings delimited by white space) +from a descriptor or NULL-terminated string. It also provides string-to-number +conversions.

The lexical analyser interface is provided by TLex16 for wide strings, and TLex8 for +narrow strings. TLex is a typedef for TLex16.

+
Extraction +mark

The extraction mark allows positions in a string that +is being analysed to be remembered. Later lexical analysis operations +can then operate on this position in the string.

The extraction +mark interface is provided by TLexMark16 for wide +strings, and TLexMark8 for narrow strings. TLexMark is a typedef for TLexMark16.

+
+ +Descriptors Overview
\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2E253B30-2611-546D-AE5B-1752556FC8E8.dita --- a/Symbian3/PDK/Source/GUID-2E253B30-2611-546D-AE5B-1752556FC8E8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2E253B30-2611-546D-AE5B-1752556FC8E8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -13,7 +13,7 @@ Concepts

This section section describes the Simple Mail Transfer Protocol (SMTP) and its implementation on Symbian platform.

-
SMTP protocol

SMTP +

SMTP protocol

SMTP is the most widely used protocol for sending emails. It is a text-based and push protocol that cannot pull messages from a remote server on demand.

One or more recipients of a message are specified in a message along with the diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2E28D8F7-7406-4EBF-BD52-E82BAE1A7D31.dita --- a/Symbian3/PDK/Source/GUID-2E28D8F7-7406-4EBF-BD52-E82BAE1A7D31.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2E28D8F7-7406-4EBF-BD52-E82BAE1A7D31.dita Fri Jul 16 17:23:46 2010 +0100 @@ -25,7 +25,7 @@ of the home screen content.

Home screen - +
Enabling applications for the home screen

Application developers must enable diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2E3A91F9-5538-5E23-8D23-CE97B677A668_d0e214263_href.jpg Binary file Symbian3/PDK/Source/GUID-2E3A91F9-5538-5E23-8D23-CE97B677A668_d0e214263_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2E3A91F9-5538-5E23-8D23-CE97B677A668_d0e220278_href.jpg Binary file Symbian3/PDK/Source/GUID-2E3A91F9-5538-5E23-8D23-CE97B677A668_d0e220278_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2E3F9FBD-21FE-4F02-B410-F756012805D2_d0e16940_href.png Binary file Symbian3/PDK/Source/GUID-2E3F9FBD-21FE-4F02-B410-F756012805D2_d0e16940_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2E3F9FBD-21FE-4F02-B410-F756012805D2_d0e17239_href.png Binary file Symbian3/PDK/Source/GUID-2E3F9FBD-21FE-4F02-B410-F756012805D2_d0e17239_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2E402D4E-53A9-5BA6-9FBD-B2713DBC7858.dita --- a/Symbian3/PDK/Source/GUID-2E402D4E-53A9-5BA6-9FBD-B2713DBC7858.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2E402D4E-53A9-5BA6-9FBD-B2713DBC7858.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,7 +21,7 @@

The following diagram is an example of such an arrangement.

Example of peripheral power domains - +

To reduce power leakage, it may be useful to cut the power supply to an area or a group of peripherals in the ASIC or the hardware platform, when @@ -96,6 +96,6 @@ diagram above:

Base port software architecture diagram - + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2E8929E6-9555-51D2-B41D-6F1D05A4DB87.dita --- a/Symbian3/PDK/Source/GUID-2E8929E6-9555-51D2-B41D-6F1D05A4DB87.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2E8929E6-9555-51D2-B41D-6F1D05A4DB87.dita Fri Jul 16 17:23:46 2010 +0100 @@ -29,7 +29,7 @@ following diagram shows where render stages fit into the Window Server architecture.

Window Server architecture showing render stages - +

Symbian provides default render stage plug-ins, which are of production quality and reproduce the rendering behavior in Symbian OS v9.4. In ScreenPlay, device creators can replace the render stage plug-ins with their own bespoke @@ -48,7 +48,7 @@ a sequence of frames, in order to create the desired effect.

A typical render stage configuration, showing some of the key interfaces - +

The render stages are stacked on top of each other—effectively they are chained into a pipeline, in which the Window Server "talks" only to the first render stage. This render stage in turn talks only to the second render @@ -98,7 +98,7 @@ to helper classes.

A concrete render stage class implementing key render stage interfaces - +
Advanced use case

Render stages can optionally create their own visuals tree to @@ -117,7 +117,7 @@ drawing operations relates to.

Render stage that has a visuals tree and visual stores - +

Render stages that implement their own visuals stores typically use the Window Server's change-tracking rendering mode. This is an optimization of the Window diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2E986A81-F094-4F1D-9ECB-6A325CFA5BB4.dita --- a/Symbian3/PDK/Source/GUID-2E986A81-F094-4F1D-9ECB-6A325CFA5BB4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2E986A81-F094-4F1D-9ECB-6A325CFA5BB4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -10,38 +10,34 @@ Plug-ins -

Plug-ins connect to the system using the EPOC Component Object Model -(ECom). ECom is based on client/server architecture and provides services -to instantiate, resolve, and destroy instances of plug-ins at run time. For -more information, see the ECom -Architecture.

-ECom framework -

A hostile or malfunctioning plug-in may cause crashes or security leaks, -even on otherwise well-tested applications. The platform -security architecture protects the processes by verifying that the -plug-in has equal or greater set of capabilities than the process in which -it is loaded. For more information, see the ECom -and the Platform Security Architecture.

-

For examples, see Plug-in -Framework (ECom) Examples.

+

Plug-ins connect to the system using the EPOC Component Object +Model (ECom). ECom is based on client/server architecture and provides +services to instantiate, resolve, and destroy instances of plug-ins +at run time. For more information, see the ECom Architecture.

+ECom framework +

A hostile or malfunctioning plug-in may cause crashes or security +leaks, even on otherwise well-tested applications. The platform security architecture protects the processes by verifying that the plug-in +has equal or greater set of capabilities than the process in which +it is loaded. For more information, see the ECom and the Platform +Security Architecture.

+

For examples, see Plug-in Framework +(ECom) Examples.

Communication plug-ins

It is possible to use plug-ins to implement additional functionality to serial, socket, and messaging frameworks. These plug-ins are especially important for security because they deal with communication.

    -
  • For serial communication there are serial protocol modules -(CSY modules ), which are loaded by the Serial Comms Server. For more information -on serial communication, see Serial -Communications Server.

  • -
  • For socket-based communication there are protocol modules -(PRT), which are loaded by the Socket Server. For more information on socket-based -communication, see Socket +

  • For serial communication there are serial protocol +modules (CSY modules ), which are loaded by the Serial Comms Server. +For more information on serial communication, see Serial Communications Server.

  • -
  • For messaging there are Message Type Modules (MTM), which -include both client and server components. MTMs are a set of dlls -rather than a single dll. For more information, see Message Type Module.

    -
  • +
  • For socket-based communication there are protocol +modules (PRT), which are loaded by the Socket Server. For more information +on socket-based communication, see Socket Server.

  • +
  • For messaging there are Message Type Modules (MTM), +which include both client and server components. MTMs are a set of dlls rather than a single dll. For more +information, see Message Type Module.

\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2EB7D9C7-BB61-5282-A7F9-C25F8B1C62FE_d0e168030_href.png Binary file Symbian3/PDK/Source/GUID-2EB7D9C7-BB61-5282-A7F9-C25F8B1C62FE_d0e168030_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2EB7D9C7-BB61-5282-A7F9-C25F8B1C62FE_d0e174118_href.png Binary file Symbian3/PDK/Source/GUID-2EB7D9C7-BB61-5282-A7F9-C25F8B1C62FE_d0e174118_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2ECF13A1-9D56-5740-A09F-8267E6A45DD9.dita --- a/Symbian3/PDK/Source/GUID-2ECF13A1-9D56-5740-A09F-8267E6A45DD9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2ECF13A1-9D56-5740-A09F-8267E6A45DD9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,115 +1,113 @@ - - - - - -Porting -the Power Resource ManagerThis tutorial describes how to port the Platform Specific Layer -(PSL) of the Power Resource Manager (PRM) and how to modify -clients, such as device drivers, to use the PRM framework. -
Purpose

The -PRM is a framework for managing system power resources. This framework improves -portability across different platforms and reduces device driver complexity.

The -PRM framework is split into two layers:

    -
  • Platform Independent -Layer - the PIL is a generic software layer that is implemented by Symbian. -This is the base virtual class for the Power Resource Controller (DPowerResourceController),

  • -
  • Platform Specific Layer -- the PSL is developed specifically to interface with the target hardware -by licensees. This is the class derived from DPowerResourceController.

  • -

Other acronyms used in this document set:

    -
  • H4 HRP - OMAP2420 SDP -hardware reference platform referred to in these documents as examples of -the base port,

  • -
  • LDD - Logical Device -Driver. The higher layer of abstraction within the Symbian platform device -driver framework which implements common functionality among differing pieces -of hardware of one type,

  • -
  • PDD - Physical Device -Driver. The lower layer of abstraction within the Symbian platform device -driver framework which implements functionality that is specific to a particular -piece of hardware.

  • -

Intended audience

This document is intended to be -used by Symbian platform device creators.

Required background

The -reader of this document is assumed to have knowledge of the Symbian platform -device driver model and base port layering and components.

    -
  • Device -Driver Concepts,

  • -
  • The -core porting process.

  • -

This document refers to the reference implementation of the PRM PSL -for the H4 HRP platform wherever possible. The source code for the reference -implementation can be found in \omap_hrp\h4\resman. The -MMC and Sound_SC (in H4 HRP) device drivers are modified to use the new PRM -framework.

Introduction

The PRM provides a unique place -where all the current power states for resources can be obtained at any time. -The sum of all internal and external power states defines the current system-wide -power state.

Setup -and configuration requirements

The PRM component is implemented -as a kernel extension with an exported public interface that is accessible -to kernel side components through statically linking against its export library. -The export library is built from the resource manager and the resource manager -libraries.

There are two versions available:

    -
  • basic resource manager -- provides essential or required functionality for static resources.

    The -basic version of the PIL layer is compiled into resmanpsl.lib. -This kernel library must be included by the PSL to produce the kernel extension.

  • -
  • extended resource manager -- provides additional support for dynamic resources and resource dependencies.

    The -extended version of the PIL layer is complied into resmanextenedpsl.lib. -This kernel library must be included by the PSL to produce the kernel extension.

  • -

Device drivers that require the use of the PRM should link against -the appropriate library. resman.lib to use the basic -version and resmanextended.lib to use the extended version -of the PRM.

Building the PRM for the target platform

The -PRM is an early extension, so the targettype in -the mmp file must be set to kext. If the -PRM is implemented as a PDD the targettype in the mmp file -should be should be pdd.

Boot sequence

The -PRM cannot be used to operate on power resources until later in the boot sequence -when the kernel allows the scheduling of other threads. During this time it -is not possible to read or change the state of resources, but DPowerResourceController::PostBootLevel() can -be used to specify the state of specific resources and the PRM can change -the state of resources to appropriate levels before the PRM is fully initialised.

PostBootLevel() is -used within the extension entry point, during this time PRM is not fully initialised. Note: -This function can only be used for static resources and static resources with -dependencies.

static TInt PostBootLevel(TUint aResId, TInt aLevel);

PostBootLevel() takes the resource ID and the post boot -level that the level a resource needs to be after it is initialised. Typically -the post boot level is only known to the PSL. However kernel extensions (and -the variant) may request a post boot level.

If a kernel extension -needs to know if certain resources have reached the post boot state in order -to complete its own initialisation then the kernel extension should queue -resource state change notifications for the resource when first registering -as clients with the PRM. Note: notification requests are accepted before -the PRM is fully initialised.

Variants or kernel extensions can register -static resources before the PRM is fully initialised with DPowerResourceController::RegisterStaticResource(). -This API can only be used by static resources and not by static resource that -support dependency. See DoRegisterStaticResources().

-
Using the Power -Resource Manager

Porting the PRM consists of implementing the PSL -layer for a given hardware platform and modifying clients, such as device -drivers, to use the PRM framework.

The following tasks are covered -in this tutorial:

    -
  • Implement -the controllable power resources,

  • -
  • Implement -the PSL for the target,

  • -
  • Port -the client drivers to use the PRM (to control the implemented resources),

  • -
  • Debugging -the PRM,

  • -
  • Testing -the PRM PSL.

  • -
-
-Power Resource -Manager (PRM) -Power Management -Tutorials + + + + + +Porting the Power Resource ManagerThis tutorial describes how to port the Platform Specific +Layer (PSL) of the Power Resource Manager (PRM) +and how to modify clients, such as device drivers, to use the PRM +framework. +
Purpose

The PRM is a framework for managing system power resources. This +framework improves portability across different platforms and reduces +device driver complexity.

The PRM framework is split into +two layers:

    +
  • Platform Independent +Layer - the PIL is a generic software layer that is implemented by +Symbian. This is the base virtual class for the Power Resource Controller +(DPowerResourceController),

  • +
  • Platform Specific +Layer - the PSL is developed specifically to interface with the target +hardware by licensees. This is the class derived from DPowerResourceController.

  • +

Other acronyms used in this document set:

    +
  • H4 HRP - OMAP2420 +SDP hardware reference platform referred to in these documents as +examples of the base port,

  • +
  • LDD - Logical +Device Driver. The higher layer of abstraction within the Symbian +platform device driver framework which implements common functionality +among differing pieces of hardware of one type,

  • +
  • PDD - Physical +Device Driver. The lower layer of abstraction within the Symbian platform +device driver framework which implements functionality that is specific +to a particular piece of hardware.

  • +

Intended audience

This document is intended +to be used by Symbian platform device creators.

Required +background

The reader of this document is assumed to have +knowledge of the Symbian platform device driver model and base port layering and components.

    +
  • Device Driver Concepts,

  • +
  • The core porting +process.

  • +

This document refers to the reference implementation of the +PRM PSL for the H4 HRP platform wherever possible. The source code +for the reference implementation can be found in \omap_hrp\h4\resman. The MMC and Sound_SC (in H4 HRP) device drivers are modified to +use the new PRM framework.

Introduction

The +PRM provides a unique place where all the current power states for +resources can be obtained at any time. The sum of all internal and +external power states defines the current system-wide power state.

Setup and configuration +requirements

The PRM component is implemented as a kernel +extension with an exported public interface that is accessible to +kernel side components through statically linking against its export +library. The export library is built from the resource manager and +the resource manager libraries.

There are two versions available:

    +
  • basic resource +manager - provides essential or required functionality for static +resources.

    The basic version of the PIL layer is compiled +into resmanpsl.lib. This kernel library must +be included by the PSL to produce the kernel extension.

  • +
  • extended resource +manager - provides additional support for dynamic resources and resource +dependencies.

    The extended version of the PIL layer is complied +into resmanextenedpsl.lib. This kernel library +must be included by the PSL to produce the kernel extension.

  • +

Device drivers that require the use of the PRM should link +against the appropriate library. resman.lib to +use the basic version and resmanextended.lib to +use the extended version of the PRM.

Building the PRM for +the target platform

The PRM is an early extension, so +the targettype in the mmp file +must be set to kext. If the PRM is implemented as +a PDD the targettype in the mmp file should be should +be pdd.

Boot sequence

The PRM cannot be used to operate on power resources until +later in the boot sequence when the kernel allows the scheduling of +other threads. During this time it is not possible to read or change +the state of resources, but DPowerResourceController::PostBootLevel() can be used to specify the state of specific resources and the PRM +can change the state of resources to appropriate levels before the +PRM is fully initialised.

PostBootLevel() is used within the extension entry point, during this time PRM is +not fully initialised. Note: This function can only be used +for static resources and static resources with dependencies.

static TInt PostBootLevel(TUint aResId, TInt aLevel);

PostBootLevel() takes the resource ID and the +post boot level that the level a resource needs to be after it is +initialised. Typically the post boot level is only known to the PSL. +However kernel extensions (and the variant) may request a post boot +level.

If a kernel extension needs to know if certain resources +have reached the post boot state in order to complete its own initialisation +then the kernel extension should queue resource state change notifications +for the resource when first registering as clients with the PRM. Note: notification requests are accepted before the PRM is fully +initialised.

Variants or kernel extensions can register static +resources before the PRM is fully initialised with DPowerResourceController::RegisterStaticResource(). This API can only be used by static resources and not by static +resource that support dependency. See DoRegisterStaticResources().

+
Using +the Power Resource Manager

Porting the PRM consists of +implementing the PSL layer for a given hardware platform and modifying +clients, such as device drivers, to use the PRM framework.

The following tasks are covered in this tutorial:

    +
  • Implement the controllable +power resources,

  • +
  • Implement the PSL +for the target,

  • +
  • Port the client +drivers to use the PRM (to control the implemented resources),

  • +
  • Debugging the PRM,

  • +
  • Testing the PRM +PSL.

  • +
+
+Power +Resource Manager (PRM) +Power +Management Tutorials
\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2ED8BB5F-27CA-5DD3-BA0F-5773AE14A8CC_d0e261218_href.png Binary file Symbian3/PDK/Source/GUID-2ED8BB5F-27CA-5DD3-BA0F-5773AE14A8CC_d0e261218_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2ED8BB5F-27CA-5DD3-BA0F-5773AE14A8CC_d0e267227_href.png Binary file Symbian3/PDK/Source/GUID-2ED8BB5F-27CA-5DD3-BA0F-5773AE14A8CC_d0e267227_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2EF123C9-62A2-52FF-9792-66EF41F37452_d0e637932_href.png Binary file Symbian3/PDK/Source/GUID-2EF123C9-62A2-52FF-9792-66EF41F37452_d0e637932_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2EF123C9-62A2-52FF-9792-66EF41F37452_d0e650754_href.png Binary file Symbian3/PDK/Source/GUID-2EF123C9-62A2-52FF-9792-66EF41F37452_d0e650754_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2F0008EB-715C-50EC-87AD-C78619F44858_d0e322861_href.png Binary file Symbian3/PDK/Source/GUID-2F0008EB-715C-50EC-87AD-C78619F44858_d0e322861_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2F0008EB-715C-50EC-87AD-C78619F44858_d0e328847_href.png Binary file Symbian3/PDK/Source/GUID-2F0008EB-715C-50EC-87AD-C78619F44858_d0e328847_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2F264A2A-FA7A-4718-A6B6-9A764C1D1E0E.dita --- a/Symbian3/PDK/Source/GUID-2F264A2A-FA7A-4718-A6B6-9A764C1D1E0E.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ - - - - - -Labeling -the Selection key -

In the portrait mode, the Selection key takes a textual label to indicate -the current functionality. The Selection key always functions identically -in both portrait and landscape orientation. In most cases, the label on the -middle softkey is the first item in the Options menu (for example,Open, Select, Play, -and so on). The Selection key functions normally in all landscape modes, but -it cannot be labelled in the landscape orientation owing to space restrictions. -Since the middle softkey label is not visible in landscape (nor in Touch UI), -it is important that the function assigned to the Selection key is as instinctive -as possible. If there is no obvious, intuitive function available in a given -situation, the context sensitive Options menu can be used.

-

When the Selection key opens the context sensitive Options menu -or performs the same function as the left softkey, the corresponding icons -are used. When there is an item in focus that is in itself a function (for -example, Download images or a button in a player), the middle softkey -is labelled Select. Otherwise, the middle softkey is labelled with -an appropriate text. The purpose of using a special icon for the Selection -key when it repeats the left softkey is to avoid repeating the text label -and also to promote the use of the Selection key as a quick and convenient -way of performing some typical tasks.

-

In case the Selection key does not perform its primary function in the -situation (and the related first Options menu item is not available) -the middle softkey label is not displayed, for example, in case of a locked -setting item, the label Change is not shown.

- -Labeling the Selection key in the control pane: left and right softkeys -have textual labels, the Selection key has either a textual label or one of -two icons: the context sensitive Options menu icon (bottom left) or the Select -icon (bottom right). - - - -
\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2F48BCBA-9256-50B6-A8D1-02617655FEED_d0e55240_href.png Binary file Symbian3/PDK/Source/GUID-2F48BCBA-9256-50B6-A8D1-02617655FEED_d0e55240_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2F48BCBA-9256-50B6-A8D1-02617655FEED_d0e59474_href.png Binary file Symbian3/PDK/Source/GUID-2F48BCBA-9256-50B6-A8D1-02617655FEED_d0e59474_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2F53F12B-C51F-4E20-ACCC-BFD768B05863.dita --- a/Symbian3/PDK/Source/GUID-2F53F12B-C51F-4E20-ACCC-BFD768B05863.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2F53F12B-C51F-4E20-ACCC-BFD768B05863.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,8 +12,8 @@ Building the Test Product

You must first build the test product component before you run the tests.

- -Open the command + +Open the command prompt and navigate to …\sip\group\. Run the following diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2F6EF388-CA87-5AAD-A4C5-37FC3CE15331_d0e344599_href.png Binary file Symbian3/PDK/Source/GUID-2F6EF388-CA87-5AAD-A4C5-37FC3CE15331_d0e344599_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2F6EF388-CA87-5AAD-A4C5-37FC3CE15331_d0e350550_href.png Binary file Symbian3/PDK/Source/GUID-2F6EF388-CA87-5AAD-A4C5-37FC3CE15331_d0e350550_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2F7E988C-C90D-54BA-A4A2-8255EF82135D-GENID-1-12-1-24-1-1-8-1-4-1-4-1-7-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-2F7E988C-C90D-54BA-A4A2-8255EF82135D-GENID-1-12-1-24-1-1-8-1-4-1-4-1-7-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,13 @@ + + + + + +ReferenceThis section provides a summary of documents related to the secure sockets that you can refer.
Item Header

CSecureSocket

SecureSocket.h

MSecureSocket

SecureSocketInterface.h

TClientCertMode

SecureSocketInterface.h

TDialogMode

SecureSocketInterface.h

For more information about TLS_PSK operation, see RFC4279.

Sockets + Server
\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2F7E988C-C90D-54BA-A4A2-8255EF82135D-GENID-1-12-1-24-1-1-8-1-5-1-4-1-7-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-2F7E988C-C90D-54BA-A4A2-8255EF82135D-GENID-1-12-1-24-1-1-8-1-5-1-4-1-7-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,13 @@ + + + + + +ReferenceThis section provides a summary of documents related to the secure sockets that you can refer. Item Header

CSecureSocket

SecureSocket.h

MSecureSocket

SecureSocketInterface.h

TClientCertMode

SecureSocketInterface.h

TDialogMode

SecureSocketInterface.h

For more information about TLS_PSK operation, see RFC4279.

Sockets + Server
\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2F7E988C-C90D-54BA-A4A2-8255EF82135D-GENID-1-12-1-24-1-1-9-1-4-1-7-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-2F7E988C-C90D-54BA-A4A2-8255EF82135D-GENID-1-12-1-24-1-1-9-1-4-1-7-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,13 @@ + + + + + +ReferenceThis section provides a summary of documents related to the secure sockets that you can refer. Item Header

CSecureSocket

SecureSocket.h

MSecureSocket

SecureSocketInterface.h

TClientCertMode

SecureSocketInterface.h

TDialogMode

SecureSocketInterface.h

For more information about TLS_PSK operation, see RFC4279.

Sockets + Server
\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2F8B9FAD-1669-5458-BA24-2E15BB0D2F53_d0e477360_href.png Binary file Symbian3/PDK/Source/GUID-2F8B9FAD-1669-5458-BA24-2E15BB0D2F53_d0e477360_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2F8B9FAD-1669-5458-BA24-2E15BB0D2F53_d0e483189_href.png Binary file Symbian3/PDK/Source/GUID-2F8B9FAD-1669-5458-BA24-2E15BB0D2F53_d0e483189_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2F987147-1435-55F1-B61C-8413C4AD8424.dita --- a/Symbian3/PDK/Source/GUID-2F987147-1435-55F1-B61C-8413C4AD8424.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2F987147-1435-55F1-B61C-8413C4AD8424.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,7 +14,7 @@

The general structure of a direct file store, from the point of view of the physical file containing the store, is illustrated below.

- +

The header is the content of the descriptor returned by the Des() member function of TCheckedUid; this contains the file store type diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2FAB8281-569A-52BE-8BC8-A2D378068706.dita --- a/Symbian3/PDK/Source/GUID-2FAB8281-569A-52BE-8BC8-A2D378068706.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-2FAB8281-569A-52BE-8BC8-A2D378068706.dita Fri Jul 16 17:23:46 2010 +0100 @@ -18,7 +18,7 @@ cache functionality in the Message Server.

Caching architecture - +
Creating and maintaining free space in memory

Memory allocation to the cache @@ -34,12 +34,12 @@ created with an initial size of 410KB (40 percent of 1024KB). If 70 percent of the free space in the cache gets used the server allocates an additional 205KB (20 percent of 1024).

- +

Message Server can make two further 205KB allocations which it does as use reaches 70 percent of the memory already allocated.

- +

If more than 70 percent of the first two allocated memory chunks is used, an additional 20 percent of memory is added to the free space.

- +
\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2FCB4609-1568-5B5F-AD9D-5A531B17A68F.dita --- a/Symbian3/PDK/Source/GUID-2FCB4609-1568-5B5F-AD9D-5A531B17A68F.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,24 +0,0 @@ - - - - - -resource -

resource resource-file-list

-

From v9.0, applications need to specify the directory -for the built resource. Use the start resource syntax to do this..

-

Use the resource statement, to specify resource files -for application projects. The makefile will build the resource file into the -target directory.

-

Each resource file should be given with its extension, e.g. squash.rss.

-

If more than one language is specified with the lang, -then each resource will be compiled multiple times, once for each language -specified.

-

If you have a system project rather than an application, use the systemresource statement.

-
\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2FDD1CAE-0FBF-4CC4-9C16-5AE4F538ED85.dita --- a/Symbian3/PDK/Source/GUID-2FDD1CAE-0FBF-4CC4-9C16-5AE4F538ED85.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ - - - - - -Rotation -

Whenever the orientation of UI is changed, all applications rotate 90 or -270 degrees (not only the foreground application). By default, the UI does -not rotate automatically to any other orientation while opening or closing -an application, swapping to another application, or in the case of embedded -applications or seamless task flows. In addition, the UI should not change -its orientation when another view within an application is opened.

-

Applications that support only one orientation, and thus trigger automatic -orientation switch, do not change the orientation of other applications. That -is, if the orientation is ’portrait’ before launching a ’landscape-only application’, -it is portrait even after exiting it.

-

An exception to this rule is for the applications that are launched from -the landscape application itself (for example, the Go to gallery option -in the Camera application) or embedded within the application (for example, -the embedded Browser within an image editor when downloading content). In -these cases, one orientation should remain throughout the task flow, and the -original orientation should be returned only after exiting the application -that triggered the rotation.

-

No queries or notes are recommended to inform or ask the user about rotation.

- - - -
\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2FE3BDE7-8782-5026-9B90-D96B77197498_d0e276488_href.png Binary file Symbian3/PDK/Source/GUID-2FE3BDE7-8782-5026-9B90-D96B77197498_d0e276488_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-2FE3BDE7-8782-5026-9B90-D96B77197498_d0e282488_href.png Binary file Symbian3/PDK/Source/GUID-2FE3BDE7-8782-5026-9B90-D96B77197498_d0e282488_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-300B4AF5-7F6E-542D-886D-335674EDE8FD_d0e533831_href.png Binary file Symbian3/PDK/Source/GUID-300B4AF5-7F6E-542D-886D-335674EDE8FD_d0e533831_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-300B4AF5-7F6E-542D-886D-335674EDE8FD_d0e541291_href.png Binary file Symbian3/PDK/Source/GUID-300B4AF5-7F6E-542D-886D-335674EDE8FD_d0e541291_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-301037F1-1983-565A-88F9-633BBF0EBB91.dita --- a/Symbian3/PDK/Source/GUID-301037F1-1983-565A-88F9-633BBF0EBB91.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-301037F1-1983-565A-88F9-633BBF0EBB91.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,205 +9,157 @@ --> -posixsignals: -POSIX Signal Example, Using P.I.P.S.This example demonstrates various signal use cases as supported +posixsignals: POSIX Signal Example, Using P.I.P.S.This example demonstrates various signal use cases as supported in P.I.P.S. -
Purpose

The -example demonstrates the following use cases:

    -
  1. Sending and handling -a signal using the default handler

  2. -
  3. Sending and handling -a signal using a customized signal handler

  4. -
  5. Ignoring an incoming -signal

  6. -
  7. Blocking and releasing +

    Purpose

    The example demonstrates the following use cases:

      +
    1. Sending and +handling a signal using the default handler

    2. +
    3. Sending and +handling a signal using a customized signal handler

    4. +
    5. Ignoring an +incoming signal

    6. +
    7. Blocking and +releasing a signal

    8. +
    9. Waiting for a signal

    10. -
    11. Waiting for a signal

    12. -
    13. Generating and handling -a SIGPIPE signal

    14. -
    15. Using a signal to gracefully -terminate a process

    16. -
    17. Using a signal to handle -an asynchronous event

    18. +
    19. Generating and +handling a SIGPIPE signal

    20. +
    21. Using a signal +to gracefully terminate a process

    22. +
    23. Using a signal +to handle an asynchronous event

    The example delivers 3 sub projects:

      -
    • basicSignals: This -project demonstrates basic signal use cases. It shows the first six use cases -mentioned in the list above. The use cases are demonstrated through basicsignals.exe.

    • -
    • sigtermSignal: This -project demonstrates the graceful termination of a process using the SIGTERM signal. -The use case is demonstrated through sigtermsignal.exe and raisesignal.exe.

    • -
    • asyncSignal: This -project demonstrates asynchronous signal handling using the SIGUSR1 signal -and the SIGUSR2 signal. The use case is demonstrated using sigusr1.exe and sigusr2.exe.

    • +
    • basicSignals: This project demonstrates basic signal use cases. It shows the first +six use cases mentioned in the list above. The use cases are demonstrated +through basicsignals.exe.

    • +
    • sigtermSignal: This project demonstrates the graceful termination of a process +using the SIGTERM signal. The use case is demonstrated +through sigtermsignal.exe and raisesignal.exe.

    • +
    • asyncSignal: This project demonstrates asynchronous signal handling using the SIGUSR1 signal and the SIGUSR2 signal. +The use case is demonstrated using sigusr1.exe and sigusr2.exe.

    -
    Description

    The -use cases demonstrated in this example are described below.

    Note: For -clarity in the documentation for this example, signal names have been given -in capitals whilst process names have been given in lower case.

    1. -Sending and handling a signal using the default handler

    The default -implementation of the signals supported in P.I.P.S. will either terminate -a process or ignore a process. Signals are generated using the Kill() method -and they are handled as per the implementation in the default handler.

    To -demonstrate this use case we use SIGCHLD and SIGALRM signals. SIGCHLD by -default gets ignored whenever it is raised, whereas SIGALRM causes -a process termination when raised. As a result the example terminates whenever SIGALRM is -raised, whereas an info message is printed when SIGCHLD is -raised.

    2. Sending and handling a signal using a customized signal -handler

    To override the default implementation of a signal a -customized handler can be defined. This customized handler can be set either -by using sigaction() or signal(). The sigaction() method -takes struct sigaction as one of its parameters (the sa_handler member -of this structure is filled with the custom handler). Now whenever a signal -is generated the custom handler is executed.

    For the demonstration -of this particular use case, SIGCHLD and SIGALRM signals -are used. These signals are assigned custom handler functions. The handlers -for these signals contains a simple user message. Thus, whenever the signals -are raised, the customized signal handlers get invoked instead of the default -handlers.

    3. Ignoring an incoming signal

    A signal -can be ignored by setting SIG_IGN in the sa_handler member -of struct sigaction. The demonstration of this use case also -uses SIGCHLD and SIGALRM signals, and as -a result of setting SIG_IGN in sa_handler the -signals are ignored when raised.

    4. Blocking and releasing a signal

    A -signal can be blocked by first adding it to the blocking set (a list of signals -we want to block, when a signal is executing) by using the sigaddset() method -and then calling the sigprocmask() function. Once a signal -is blocked it will always be ignored upon generation. The sigrelse() method -is used to unblock a signal.

    Demonstration of this use case involves -the SIGUSR1 and SIGUSR2 signals. Both SIGUSR1 and SIGUSR2 are -user-defined signals. We first block the SIGUSR1 signal by -adding it to the blocking set and making a call to the sigprocmask() function. -Now whenever SIGUSR1 is raised it will get ignored as it -is blocked. SIGUSR1 will keep waiting in the pending queue -until it is released. The release of SIGUSR1 happens in the SIGUSR2 signal -handler. Once SIGUSR1 is released, it is removed from the -pending queue and its handler function is called to handle it.

    5. -Waiting for a signal

    Before a process can wait on a particular -signal, it has to add the signal to the mask set (which is a list of signals -we want to block) and then call the sigprocmask() method. -The process then sets the timeout value using struct timespec. -Once this is done the process waits on a signal for a specified time period -using thesigtimedwait() method. If the signal is not received -within the specified time period, an error message is generated.

    For -the demonstration of this use case we are setting a timeout of 5 seconds. -The SIGALRM signal is raised by a call to alarm() as -and when the timer expires. There are two instances in the example where SIGALRM signal -is raised, one after a duration of 4 seconds and one after 6 seconds. When SIGALRM is -raised after 4 seconds, it is well within the timeout limit (of 5 seconds) -and hence the signal gets received but not handled. But when the alarm is -raised after 6 seconds, timeout happens and an error is generated. Now as -the SIGALRM signal was added to the mask set it never gets -handled even though it is received. To handle the signal we need to move it -from block state to unblock state, which we do using the sigprocmask() method. -Once the signal gets unblocked its custom handler gets called.

    6. -Generating and handling a SIGPIPE signal

    The - SIGPIPE signal is generated when writing to a broken pipe. -To achieve this broken pipe condition the read end of the pipe (obtained using -the pipe() function call) is closed and then write to the -pipe is done. The associated handler function is executed in response to the -raised SIGPIPE signal .

    7. Using a signal to gracefully -terminate a process

    Graceful termination of process can be achieved -by using the SIGTERM signal. In the handler function of the -signal all the opened file descriptors need to be closed before exiting.

    This -use case is demonstrated using the sigtermSignal project. -The project consists of two processes: the sigtermsignal process -and the raisesignal process.

      -
    • The sigtermsignal process -first defines a custom handler for the SIGTERM signal that -carries out the closing of all the open file descriptors when the signal is -raised. This is done in order to achieve the graceful termination of the process. -The sigtermsignal process then opens a file and obtains -names from user to be written in to it. It then simultaneously spawns a raisesignal process -and starts reading from the file. When the raisesignal process -sends a SIGTERM signal to the sigtermsignal process, -the sigtermsignal process closes all the open file descriptors -and prepares to exit.

    • -
    • The raisesignal process -sends the SIGTERM signal to the sigtermsignal process. -The custom handler of the SIGTERM signal takes care of properly -closing all opened file descriptors and then terminating the process. If the -custom handler is not implemented, the default handler will get called, which -will result in process termination without closing any opened file descriptors.

    • -

    8. Using a signal to handle an asynchronous event

    The -SIGUSR1 and SIGUSR2 signals are used to demonstrate -the handling of an asynchronous event. These signals are sent from one process -to another. On reception of these signals, respective custom handlers are -called and any necessary action is taken. The action taken is purely implementation -dependent .

    This use case demonstration is performed using the asyncSignal project. -The project consists of two processes: the sigusr1 process -and the sigusr2 process, where the sigusr1 process -handles the SIGUSR1 signal and sends the SIGUSR2 signal -to the sigusr2 process. Whereas the sigusr2 process -handles the SIGUSR2 signal and sends the SIGUSR1 signal -to the sigusr1 process.

      -
    • The sigusr1 process -assigns a custom handler for the SIGUSR1 signal. It then -opens a file in read and write mode and write some content into the open file. -Once write operation is done the sigusr1 process spawns sigusr2 process -and waits for SIGUSR1 signal from sigusr2 process. -On receiving SIGUSR1 signal sigusr1 process -starts reading from the file. Once reading from the file is done and its contents -are displayed on the console, sigusr1 process sends SIGUSR2 signal -to sigusr2 process. It then closes all its open file -descriptor and prepares to exit.

    • -
    • The sigusr2 process -is spawned from sigusr1 process and it assigns a custom -handler for SIGUSR2 signal. It sends SIGUSR1 signal -to sigusr1 process in order to start file read and then -waits for SIGUSR2 signal from sigusr1 process. -When sigusr2 process receives SIGUSR2 signal +

      Description

      The use cases demonstrated in this example are described below.

      Note: For clarity in the documentation for this example, signal +names have been given in capitals whilst process names have been given +in lower case.

      1. Sending and handling a signal using the +default handler

      The default implementation of the signals +supported in P.I.P.S. will either terminate a process or ignore a +process. Signals are generated using the Kill() method +and they are handled as per the implementation in the default handler.

      To demonstrate this use case we use SIGCHLD and SIGALRM signals. SIGCHLD by default gets +ignored whenever it is raised, whereas SIGALRM causes +a process termination when raised. As a result the example terminates +whenever SIGALRM is raised, whereas an info message +is printed when SIGCHLD is raised.

      2. +Sending and handling a signal using a customized signal handler

      To override the default implementation of a signal a customized +handler can be defined. This customized handler can be set either +by using sigaction() or signal(). The sigaction() method takes struct sigaction as one of its parameters (the sa_handler member +of this structure is filled with the custom handler). Now whenever +a signal is generated the custom handler is executed.

      For +the demonstration of this particular use case, SIGCHLD and SIGALRM signals are used. These signals are +assigned custom handler functions. The handlers for these signals +contains a simple user message. Thus, whenever the signals are raised, +the customized signal handlers get invoked instead of the default +handlers.

      3. Ignoring an incoming signal

      A +signal can be ignored by setting SIG_IGN in the sa_handler member of struct sigaction. +The demonstration of this use case also uses SIGCHLD and SIGALRM signals, and as a result of setting SIG_IGN in sa_handler the signals are ignored +when raised.

      4. Blocking and releasing a signal

      A signal can be blocked by first adding it to the blocking set +(a list of signals we want to block, when a signal is executing) by +using the sigaddset() method and then calling the sigprocmask() function. Once a signal is blocked it will +always be ignored upon generation. The sigrelse() method is used to unblock a signal.

      Demonstration of this +use case involves the SIGUSR1 and SIGUSR2 signals. Both SIGUSR1 and SIGUSR2 are user-defined signals. We first block the SIGUSR1 signal by adding it to the blocking set and making a call to the sigprocmask() function. Now whenever SIGUSR1 is raised it will get ignored as it is blocked. SIGUSR1 will keep waiting in the pending queue until it is released. The +release of SIGUSR1 happens in the SIGUSR2 signal handler. Once SIGUSR1 is released, it is +removed from the pending queue and its handler function is called +to handle it.

      5. Waiting for a signal

      Before +a process can wait on a particular signal, it has to add the signal +to the mask set (which is a list of signals we want to block) and +then call the sigprocmask() method. The process then +sets the timeout value using struct timespec. Once +this is done the process waits on a signal for a specified time period +using thesigtimedwait() method. If the signal is +not received within the specified time period, an error message is +generated.

      For the demonstration of this use case we are setting +a timeout of 5 seconds. The SIGALRM signal is raised +by a call to alarm() as and when the timer expires. +There are two instances in the example where SIGALRM signal is raised, one after a duration of 4 seconds and one after +6 seconds. When SIGALRM is raised after 4 seconds, +it is well within the timeout limit (of 5 seconds) and hence the signal +gets received but not handled. But when the alarm is raised after +6 seconds, timeout happens and an error is generated. Now as the SIGALRM signal was added to the mask set it never gets handled +even though it is received. To handle the signal we need to move it +from block state to unblock state, which we do using the sigprocmask() method. Once the signal gets unblocked its custom handler gets called.

      6. Generating and handling a SIGPIPE signal

      The SIGPIPE signal is generated when writing +to a broken pipe. To achieve this broken pipe condition the read end +of the pipe (obtained using the pipe() function +call) is closed and then write to the pipe is done. The associated +handler function is executed in response to the raised SIGPIPE signal .

      7. Using a signal to gracefully terminate a +process

      Graceful termination of process can be achieved +by using the SIGTERM signal. In the handler function +of the signal all the opened file descriptors need to be closed before +exiting.

      This use case is demonstrated using the sigtermSignal project. The project consists of two processes: +the sigtermsignal process and the raisesignal process.

        +
      • The sigtermsignal process first defines a custom handler for +the SIGTERM signal that carries out the closing of +all the open file descriptors when the signal is raised. This is done +in order to achieve the graceful termination of the process. The sigtermsignal process then opens a file and obtains names +from user to be written in to it. It then simultaneously spawns a raisesignal process and starts reading from the file. +When the raisesignal process sends a SIGTERM signal to the sigtermsignal process, the sigtermsignal process closes all +the open file descriptors and prepares to exit.

      • +
      • The raisesignal process sends the SIGTERM signal to the sigtermsignal process. The custom +handler of the SIGTERM signal takes care of properly +closing all opened file descriptors and then terminating the process. +If the custom handler is not implemented, the default handler will +get called, which will result in process termination without closing +any opened file descriptors.

      • +

      8. Using a signal to handle an asynchronous event

      The SIGUSR1 and SIGUSR2 signals are used to demonstrate the handling of an asynchronous +event. These signals are sent from one process to another. On reception +of these signals, respective custom handlers are called and any necessary +action is taken. The action taken is purely implementation dependent +.

      This use case demonstration is performed using the asyncSignal project. The project consists of two processes: +the sigusr1 process and the sigusr2 process, where the sigusr1 process handles +the SIGUSR1 signal and sends the SIGUSR2 signal to the sigusr2 process. Whereas the sigusr2 process handles the SIGUSR2 signal +and sends the SIGUSR1 signal to the sigusr1 process.

        +
      • The sigusr1 process assigns a custom handler for the SIGUSR1 signal. It then opens a file in read and write mode +and write some content into the open file. Once write operation is +done the sigusr1 process spawns sigusr2 process and waits for SIGUSR1 signal from sigusr2 process. On receiving SIGUSR1 signal sigusr1 process starts reading from +the file. Once reading from the file is done and its contents are +displayed on the console, sigusr1 process sends SIGUSR2 signal to sigusr2 process. +It then closes all its open file descriptor and prepares to exit.

      • +
      • The sigusr2 process is spawned from sigusr1 process and it assigns a custom handler for SIGUSR2 signal. It sends SIGUSR1 signal to sigusr1 process in order to start file read and then waits for SIGUSR2 signal from sigusr1 process. When sigusr2 process receives SIGUSR2 signal it prepares to exit.

      • -

      Hence, the communication between the two processes happens through -the SIGUSR1 and SIGUSR2 signals and asynchronous -signal handling happens.

      -
      Download

      Click -on the following link to download the example: BasicSignals.zip

      Click on the following link -to download the example: SigtermSignal.zip

      Click on the following link -to download the example: AsyncSignal.zip

      To view the BasicSignal -example source click: browseBasicSignals

      To view the SigtermSignal example -source click: browseSigtermSignal

      To view the AsyncSignal example -source click: browseAsyncSignal

      -
      Building and -configuring

      You can build the example from your IDE or the command -line:

        -
      • If you use an -IDE, import the bld.inf file of the example into your -IDE, and use the build command of the IDE.

      • -
      • 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 using the following commands:

          +

        Hence, the communication between the two processes happens +through the SIGUSR1 and SIGUSR2 signals +and asynchronous signal handling happens.

      +
      Download

      Click on the following link to download the example: BasicSignals.zip

      Click on the following +link to download the example: SigtermSignal.zip

      Click on the following +link to download the example: AsyncSignal.zip

      To view the BasicSignal +example source click: browseBasicSignals

      To view the SigtermSignal +example source click: browseSigtermSignal

      To view the AsyncSignal +example source click: browseAsyncSignal

      +
      Building +and configuring

      You can build the example from your IDE +or the command line:

        +
      • If you +use an IDE, import the bld.inf file of the example +into your IDE, and use the build command of the IDE.

      • +
      • 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 using the +following commands:

        • bldmake bldfiles

        • abld build

        • -

        How to use -bldmake and How -to use abld describe how to use the SBSv1 build tools.

      • +

    The example builds the following executables :

      -
    • basicsignals.exe : for basic signal use cases -demonstration.

    • -
    • sigtermsignal.exe : for demonstrating graceful -termination of process .

    • +
    • basicsignals.exe : for basic signal use +cases demonstration.

    • +
    • sigtermsignal.exe : for demonstrating +graceful termination of process .

    • raisesignal.exe : for sending SIGTERM signal.

    • -
    • sigusr1.exe : for demonstrating asynchronous event -handling , sending SIGUSR2 signal and receiving SIGUSR1 signal.

    • -
    • sigusr2.exe : for sending SIGUSR1 signal -and receiving SIGUSR2 signal.

    • +
    • sigusr1.exe : for demonstrating asynchronous +event handling , sending SIGUSR2 signal and receiving SIGUSR1 signal.

    • +
    • sigusr2.exe : for sending SIGUSR1 signal and receiving SIGUSR2 signal.

    in the epoc32\release\winscw\<udeb or urel>\ folder.

    -
    Running the -example

    NOTE :

    basicsignals.exe should -be executed first for running the first six uses cases mentioned above.

    sigtermsignal.exe should -be executed for running the seventh use case.

    sigusr1.exe should -be executed for running the last use case.

    The sigtermsignal process -internally spawns the raisesignal process for taking -an input from the user and sending the SIGTERM signal. You -should not run the raisesignal process explicitly. You -should only run sigtermsignal.exe as the sigtermsignal process -takes proper care of launching the raisesignal process.

    The sigusr1 process -also internally spawns the sigusr2 process.

    The sigusr1 process -sends the SIGUSR2 signal to the sigusr2 process -and receives the SIGUSR1 signal from it.

    The sigusr2 process -sends the SIGUSR1 signal to the sigusr1 process -and receives the SIGUSR2 signal from it.

    As the sigusr1 process -spawns the sigusr2 process, hence you should run sigusr1.exe only.

    In -order to toggle between the processes use Alt+ctrl+shift+T and -observe the behavior.

    +
    Running +the example

    NOTE :

    basicsignals.exe should be executed first for running the first six uses cases mentioned +above.

    sigtermsignal.exe should be executed +for running the seventh use case.

    sigusr1.exe should be executed for running the last use case.

    The sigtermsignal process internally spawns the raisesignal process for taking an input from the user and sending the SIGTERM signal. You should not run the raisesignal process explicitly. You should only run sigtermsignal.exe as the sigtermsignal process takes proper care +of launching the raisesignal process.

    The sigusr1 process also internally spawns the sigusr2 process.

    The sigusr1 process sends the SIGUSR2 signal to the sigusr2 process and receives the SIGUSR1 signal from it.

    The sigusr2 process +sends the SIGUSR1 signal to the sigusr1 process and receives the SIGUSR2 signal from it.

    As the sigusr1 process spawns the sigusr2 process, hence you should run sigusr1.exe only.

    In order to toggle between the processes use Alt+ctrl+shift+T and observe the behavior.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3013C136-6041-5A77-8A11-41DE406DC689_d0e20586_href.jpg Binary file Symbian3/PDK/Source/GUID-3013C136-6041-5A77-8A11-41DE406DC689_d0e20586_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3013C136-6041-5A77-8A11-41DE406DC689_d0e22553_href.jpg Binary file Symbian3/PDK/Source/GUID-3013C136-6041-5A77-8A11-41DE406DC689_d0e22553_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-301488F8-B6D8-569A-B05E-19B740FE4C00.dita --- a/Symbian3/PDK/Source/GUID-301488F8-B6D8-569A-B05E-19B740FE4C00.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-301488F8-B6D8-569A-B05E-19B740FE4C00.dita Fri Jul 16 17:23:46 2010 +0100 @@ -34,28 +34,28 @@ About Remote Devices , discusses in detail how to go about this.

Where Next?

This tutorial set takes you through all the steps involved in setting up and communicating over a Bluetooth connection.

    -
  • Selecting a Remote +

  • Selecting a Remote Device - This document

  • -
  • Inquiring +

  • Inquiring About Remote Devices

  • -
  • Inquiring +

  • Inquiring About Services on a Remote Device

  • -
  • Connecting +

  • Connecting and Transferring Data to a Remote Device

  • -
  • Using +

  • Using security on outgoing sockets

Where Next?

This tutorial set takes you through all the steps involved in setting up and communicating over a Bluetooth connection.

    -
  • Selecting a Remote +

  • Selecting a Remote Device - This document

  • -
  • Inquiring +

  • Inquiring About Remote Devices

  • -
  • Inquiring +

  • Inquiring About Services on a Remote Device

  • -
  • Connecting +

  • Connecting and Transferring Data to a Remote Device

  • -
  • Using +

  • Using security on outgoing sockets

\ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-301CEDFA-6329-56BA-ADA6-8A89BA17E398_d0e24772_href.png Binary file Symbian3/PDK/Source/GUID-301CEDFA-6329-56BA-ADA6-8A89BA17E398_d0e24772_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-301CEDFA-6329-56BA-ADA6-8A89BA17E398_d0e26739_href.png Binary file Symbian3/PDK/Source/GUID-301CEDFA-6329-56BA-ADA6-8A89BA17E398_d0e26739_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-301E5FAA-A1C3-4FD7-9D84-DAA61C66981B.dita --- a/Symbian3/PDK/Source/GUID-301E5FAA-A1C3-4FD7-9D84-DAA61C66981B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-301E5FAA-A1C3-4FD7-9D84-DAA61C66981B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,267 +9,261 @@ --> -Symbian -C++ Quick StartThis Quick Start is relevant if you want to create Symbian C++ -applications that run on Symbian devices - i.e. "on top" of the Symbian platform. -Typically this will include: professional application and games developers, -professional service companies, hobbyist developers and students. -

The tutorial shows you how to get the development tools (e.g. IDE) and -set up your development environment. It then shows you how to create a skeleton -application using Carbide.c++ and UI designer, and how to get it up and running -on both the Symbian Emulator and on the device; the whole process -takes just a few minutes!

+Symbian C++ Quick StartThis Quick Start is relevant if you want to create Symbian +C++ applications that run on Symbian devices - i.e. "on top" of the +Symbian platform. Typically this will include: professional application +and games developers, professional service companies, hobbyist developers +and students. +

The tutorial shows you how to get the development tools (e.g. IDE) +and set up your development environment. It then shows you how to +create a skeleton application using Carbide.c++ and UI designer, and +how to get it up and running on both the Symbian Emulator and on the device; the whole +process takes just a few minutes!

Comes with Code: File: HelloSymbianWorld Example Code.zip

-
Set -up the development environment

Assuming your computer meets -the System Requirements then setting up your PC for Symbian -C++ development is as simple as downloading and installing (do so in this -order):

    -
  1. Perl. See the Kits Q&As for notes on the recommended version.

  2. +
    Set up the development environment

    Assuming your +computer meets the System Requirements then setting up your PC +for Symbian C++ development is as simple as downloading and installing +(do so in this order):

      +
    1. Perl. See the Kits Q&As for notes on the recommended +version.

    2. Application Developer Toolkit (ADT).

    3. Software Developer Kit (SDK) (full installation) .

    4. -

    For help installing the SDK please refer to the Symbian^1 SDK Installation Guide.

    You can now -create your first application using the Carbide.c++ project wizard, as the -following sections will describe.

    -
    Starting Carbide.c++

    The -Carbide.c++ IDE is installed as part of the free Application Developer Toolkit (ADT) (step 2 in the -section above). It is the only supported/official IDE for Symbian C++ development. -

    Carbide.c++ is launched from the Windows Start button: All -Programs | Symbian Foundation ADT v<ADTVersion> | Carbide.c++ -| Carbide.++ v<CarbideVersion>.

    On start, you will be -prompted to select a workspace directory. The workspace directory contains -any projects you’ve already created in the workspace and their common settings -- such as code-formatting options (you can define multiple workspaces in order -to separate completely different tasks). If this is the first time you've -run Carbide.c++ the workspace will be empty.

    Your Symbian projects -must be on the drive where you installed your SDK. You must also ensure that -the path name of the workspace does not contain non-alphanumeric characters -or spaces. This is because the Symbian toolchain uses command line tools that -cannot read special path names.

    If you installed the SDK to drive C:\, -an example of a correct workspace path is: C:\Symbian\development\.

    - -

    Once Carbide.c++ has started, close the Welcome tab (by clicking -the cross shown circled in red below) to see the default workspace.

    - +

For help installing the SDK please refer to the Symbian^1 SDK Installation Guide.

You +can now create your first application using the Carbide.c++ project +wizard, as the following sections will describe.

+
Starting +Carbide.c++

The Carbide.c++ IDE is installed as part of +the free Application Developer Toolkit (ADT) (step +2 in the section above). It is the only supported/official IDE for +Symbian C++ development.

Carbide.c++ is launched from the +Windows Start button: All Programs | Symbian Foundation +ADT v<ADTVersion> | Carbide.c++ | Carbide.++ v<CarbideVersion>.

On start, you will be prompted +to select a workspace directory. The workspace directory contains +any projects you’ve already created in the workspace and their common +settings - such as code-formatting options (you can define multiple +workspaces in order to separate completely different tasks). If this +is the first time you've run Carbide.c++ the workspace will be empty.

Your Symbian projects must be on the drive where you installed +your SDK. You must also ensure that the path name of the workspace +does not contain non-alphanumeric characters or spaces. This is because +the Symbian toolchain uses command line tools that cannot read special +path names.

If you installed the SDK to drive C:\, an example of a correct workspace path is: C:\Symbian\development\.

+ +

Once Carbide.c++ has started, close the Welcome tab (by clicking the cross shown circled in red below) to see the default +workspace.

+
Creating -a Project

To launch the Carbide.c++ Create New Project Wizard select: File -| New | Symbian OS C++ Project.

Choose the GUI Application with -UI Designer application template (see S60 section). This template creates -a runnable GUI application with the UI Designer tool enabled (the UI -Designer allows views to be created "visually" by drag & dropping -standard UI components).

- -

The Next page of the wizard is "New Symbian OS C++ Project". -Define the project name - in this case "HelloWorld". Once again, make sure -the project directory is on the same drive as the SDK and does not contain -spaces or other special characters.

- -

The Next page of the wizard is "Symbian OS SDKs". Choose -the SDK(s) you want to use for building the project from among those installed -to your PC (You can add more SDKs to your project later on). This should include -a Symbian platform SDK. At time of writing the only -C++ Application Development SDK is the Symbian^1 SDK (Note: this is -a copy of the S60 5th Edition SDK v1.0).

- -

By default all build configurations will be selected:

    +a Project

    To launch the Carbide.c++ Create New Project +Wizard select: File | New | Symbian OS C++ Project.

    Choose the GUI Application with UI Designer application +template (see S60 section). This template creates a runnable GUI application +with the UI Designer tool enabled (the UI Designer allows +views to be created "visually" by drag & dropping standard UI +components).

    + +

    The Next page of the wizard is "New Symbian OS +C++ Project". Define the project name - in this case "HelloWorld". +Once again, make sure the project directory is on the same drive as +the SDK and does not contain spaces or other special characters.

    + +

    The Next page of the wizard is "Symbian OS SDKs". Choose the SDK(s) you want to use for building the project from +among those installed to your PC (You can add more SDKs to your project +later on). This should include a Symbian platform SDK. At time of writing the +only C++ Application Development SDK is the Symbian^1 SDK (Note: this is a copy of the S60 5th Edition SDK v1.0).

    + +

    By default all build configurations will be selected: +

    • Emulator Debug (WINSCW) builds binaries for the Windows-hosted emulator.

    • -
    • Phone Debug | Release (GCCE) builds binaries for the phone using -the (free) GCCE compiler that was installed with the SDK.

    • -
    • Phone Debug | Release (ARMV5) builds binaries for the phone -using the ARM RealView Compiler (RVCT). RVCT produces code that -is a few percent smaller and faster than the current versions of GCCE supported -for Symbian C++ development, but must be separately licensed from ARM. RVCT -is primarily used by phone manufacturers to build binaries for device ROM.

    • -

    Most developers should simply de-select the ARMV5 options above as -shown (the Emulator is needed by all developers, and GCCE is sufficient for -most third-party development).

    The Next page of the wizard -sets the "Application properties".

    - -

    Keep the default values. The Baseline SDK defines the common -compatibility level of your application. For example, if set to the S60 -5th Edition SDK, the UI designer doesn’t let you add elements that are -only available in later S60 5th Edition, Feature Pack 1+ SDKs and devices. -

    The Next page of the wizard allows you to choose an S60 UI -design. Keep the Empty user interface variant.

    The Next page -of the wizard "Container Name and Type" has default values that are -usually acceptable.

    The Finish button is active -in this page. The next page is optional but for the purposes of this tutorial -you should click Next, rather than Finish.

    - -

    Even though our application will only use one view, it’s usually -better to check "Support View Switching", in order to make the application -easier to extend later on.

    The Next page of the wizard "Basic -Settings" can be used to customize the project with your name and a copyright -notice for every human-readable file. It also allows you to specify the application -unique identifier (UID).

    - -

    The UID (actually the SID, but for the moment we can ignore the distinction) -defines the private area in the file system in which the application can store -its data. Among other things the UID can also be used to programmatically -identify and/or start the application.

    Carbide.c++ generates -a random UID value for you starting with ‘0xE’, which is the range of UIDs -reserved for internal development and testing. If you want to release your -application to the public, you need to get your own unique UID allocated by Symbian Signed. -

    As we do not intend to release our Hello World application to the -public, we’ll simply continue to use the value Carbide.c++ assigned us from -the development range (you can change the UID later on, although you must -be careful to change every instance of it found within your project - see How to change your application's UID).

    Select Finish to -close the wizard and create your application (there is no need to go to the Next (last) -page of the wizard as the default values are always acceptable).

    That's -it, your workspace should look similar to the screenshot below.

    - +
  • Phone Debug | Release (GCCE) builds binaries for the +phone using the (free) GCCE compiler that was installed with the SDK.

  • +
  • Phone Debug | Release (ARMV5) builds binaries for the +phone using the ARM RealView Compiler (RVCT). RVCT produces +code that is a few percent smaller and faster than the current versions +of GCCE supported for Symbian C++ development, but must be separately +licensed from ARM. RVCT is primarily used by phone manufacturers to +build binaries for device ROM.

  • +

Most developers should simply de-select the ARMV5 options +above as shown (the Emulator is needed by all developers, and GCCE +is sufficient for most third-party development).

The Next page of the wizard sets the "Application properties".

+ +

Keep the default values. The Baseline SDK defines +the common compatibility level of your application. For example, if +set to the S60 5th Edition SDK, the UI designer doesn’t let +you add elements that are only available in later S60 5th Edition, +Feature Pack 1+ SDKs and devices.

The Next page of +the wizard allows you to choose an S60 UI design. Keep the Empty user interface variant.

The Next page of the wizard +"Container Name and Type" has default values that are usually +acceptable.

The Finish button is active +in this page. The next page is optional but for the purposes of this +tutorial you should click Next, rather than Finish. +

+ +

Even though our application will only use one view, it’s +usually better to check "Support View Switching", in order to make +the application easier to extend later on.

The Next page of the wizard "Basic Settings" can be used to customize +the project with your name and a copyright notice for every human-readable +file. It also allows you to specify the application unique identifier +(UID).

+ +

The UID (actually the SID, but for the moment we can ignore the +distinction) defines the private area in the file system in which +the application can store its data. Among other things the UID can +also be used to programmatically identify and/or start the application.

Carbide.c++ +generates a random UID value for you starting with ‘0xE’, which is +the range of UIDs reserved for internal development and testing. If +you want to release your application to the public, you need to get +your own unique UID allocated by Symbian Signed.

As we do not intend to release our Hello World application +to the public, we’ll simply continue to use the value Carbide.c++ +assigned us from the development range (you can change the UID later +on, although you must be careful to change every instance of it found +within your project - see How to change your application's UID).

Select Finish to close the wizard and create your application +(there is no need to go to the Next (last) page of the wizard +as the default values are always acceptable).

That's it, your +workspace should look similar to the screenshot below.

+
Targeting the Emulator

Normally you'll start by building for the emulator; -you can use the emulator for most of your development work (it is possible -to access the Internet through the emulator, and even simulate GPS).

Building -for the Emulator

    -
  • First set the active build configuration. You can do this by clicking -the Manage configurations for the current project icon - in the toolbar or by selecting menu: Project | Build Configurations -| Set Active and select Emulator Debug.

  • +you can use the emulator for most of your development work (it is +possible to access the Internet through the emulator, and even simulate +GPS).

    Building for the Emulator

      +
    • First set the active build configuration. You can do this by +clicking the Manage configurations for the current project icon in the toolbar +or by selecting menu: Project | Build Configurations | Set Active and select Emulator Debug.

    - +
      -
    • Then build the current configuration using the Build icon in the toolbar or -through the menu: Project | Build Project (You can also select a particular -configuration to build from the Build icon selector).

    • -

    Warning: If you get an error message similar to "WARNING: EPOCROOT -does not specify an existing directory", you did not place your workspace/project -on the same drive as the application development SDK (which is installed by -default to C:\). Delete the project and start again. The diagram shows how -this might appear in Carbide.c++:

    - -

    Running on the Emulator

    If your application built -successfully, click on the Run button - (Ctrl + F11). Upon the first launch of your project, Carbide.c++ -will ask you which executable you want to launch:

    - +
  • Then build the current configuration using the Build icon in the toolbar or through the menu: Project | Build Project (You can also select a particular configuration to build from the +Build icon selector).

  • +

Warning: If you get an error message similar to "WARNING: +EPOCROOT does not specify an existing directory", you did not place +your workspace/project on the same drive as the application development +SDK (which is installed by default to C:\). Delete the project and +start again. The diagram shows how this might appear in Carbide.c++:

+ +

Running on the Emulator

If your application +built successfully, click on the Run button (Ctrl + +F11). Upon the first launch of your project, Carbide.c++ will ask +you which executable you want to launch:

+
  • If you choose HelloWorld.exe, the emulator will be launched -and your application started automatically. The emulator will close once you -exit your application.

  • -
  • If you choose Emulator the emulator (epoc.exe) will be launched -and you will need to navigate to the application and start it by clicking -on the icon (just as you do when starting an application on a device). We’ll -explain how to find the application shortly.

  • -

It may sound more difficult to choose the second method, but it has -some advantages. You can leave the emulator running if you are only doing -small edits in your source code – simply close your application in the emulator, -recompile and restart your app through the emulator’s menu. You’ll also see -any error messages that may be shown when you exit the application, because -the emulator will not shut down instantly after you exit Hello World in the -emulator. Those error messages are also visible in Carbide.c++’s console window. -

When the emulator starts for the first time you might have to wait -for several minutes before it is completely ready for use. Successive starts -will be a lot faster, because Windows caches most of the emulator DLLs.

- -

If you decide to launch the emulator and navigate to your application: First, -open the menu through the S60 menu symbol on the bottom left of the -screen. Your own application will be located at the bottom of the Applications folder; -use your mouse to navigate in the emulator’s menus.

When you launch -your application, the main pane will be empty. As you can see, the example -application the wizard has created already supports a full user interface -and handles input from the left and right softkeys at the bottom of the screen.

- -

Debugging on the Emulator

The Emulator is the -default debug target - you simply click the Debug button -.

Debugging on the Emulator is not covered further in this -tutorial. See Carbide.c++ User Guide > Debugging projects for extensive +and your application started automatically. The emulator will close +once you exit your application.

+
  • If you choose Emulator the emulator (epoc.exe) will +be launched and you will need to navigate to the application and start +it by clicking on the icon (just as you do when starting an application +on a device). We’ll explain how to find the application shortly.

  • +

    It may sound more difficult to choose the second method, but +it has some advantages. You can leave the emulator running if you +are only doing small edits in your source code – simply close your +application in the emulator, recompile and restart your app through +the emulator’s menu. You’ll also see any error messages that may be +shown when you exit the application, because the emulator will not +shut down instantly after you exit Hello World in the emulator. Those +error messages are also visible in Carbide.c++’s console window.

    When the emulator starts for the first time you might have to +wait for several minutes before it is completely ready for use. Successive +starts will be a lot faster, because Windows caches most of the emulator +DLLs.

    + +

    If you decide to launch the emulator and navigate to your +application: First, open the menu through the S60 menu +symbol on the bottom left of the screen. Your own application will +be located at the bottom of the Applications folder; use your +mouse to navigate in the emulator’s menus.

    When you launch +your application, the main pane will be empty. As you can see, the +example application the wizard has created already supports a full +user interface and handles input from the left and right softkeys +at the bottom of the screen.

    + +

    Debugging on the Emulator

    The Emulator +is the default debug target - you simply click the Debug button .

    Debugging on the Emulator is not covered further in this tutorial. +See Carbide.c++ User Guide > Debugging projects for extensive information on debugging using Carbide.c++.

    -
    Targeting the -Device

    The emulator can be used for most of your development work. -However, some situations still require a real device – for example, when you -want to use the camera or the acceleration sensor.

    Tip: You -should test your applications on the phone from time to time, even if it is -fully supported by the emulator.

    When you've finished development, -you'll also want to build a release version; stripping out debug code and -symbol information to make your binaries smaller and more efficient.

    Building -for the Device

    To tell the IDE that you want to build for the device, -change the active build configuration to a phone-release configuration for -GCCE (unless you have the RVCT compiler). As before, use the Manage configurations -for current project toolbar icon ( -) to select the active-build configuration.

    - -

    Next, choose to build the current configuration using the toolbar Build icon (or in the menu: Project -| Build Project).

    This will automatically compile the project -using the GCCE compiler and create an installation package – a file called HelloWorld.sisx in -your project's \HelloWorld\sis\ directory. You now need to -transfer this file to your phone to install it.

    Tip: Use -Carbide.c++ to find the file on your PC. Navigate to the file in the project -view, then right-click on it and select Show in Explorer.

    Don’t -forget to switch back to the Emulator Debug build configuration when -you continue development!

    Installing on the Device

    -You can use the PC Suite that came with your phone to install the application -on your device

      +
      Targeting +the Device

      The emulator can be used for most of your development +work. However, some situations still require a real device – for example, +when you want to use the camera or the acceleration sensor.

      Tip: You should test your applications on the phone from +time to time, even if it is fully supported by the emulator.

      When you've finished development, you'll also want to build a +release version; stripping out debug code and symbol information to +make your binaries smaller and more efficient.

      Building +for the Device

      To tell the IDE that you want to build for +the device, change the active build configuration to a phone-release +configuration for GCCE (unless you have the RVCT compiler). As before, use the Manage +configurations for current project toolbar icon () to select +the active-build configuration.

      + +

      Next, choose to build the current configuration using the +toolbar Build icon (or in the +menu: Project | Build Project).

      This will automatically +compile the project using the GCCE compiler and create an installation +package – a file called HelloWorld.sisx in your project's \HelloWorld\sis\ directory. You now need to transfer this +file to your phone to install it.

      Tip: Use Carbide.c++ +to find the file on your PC. Navigate to the file in the project view, +then right-click on it and select Show in Explorer.

      Don’t forget to switch back to the Emulator Debug build +configuration when you continue development!

      Installing +on the Device

      You can use the PC Suite that came with +your phone to install the application on your device

      • Ensure that the PC Suite is installed and running

      • -
      • Connect your device to the PC via Bluetooth or USB and add the phone -to the known devices in the PC Suite (if necessary).

      • -
      • Double-click the .sisx file in Windows Explorer or -the Project Explorer window of Carbide.c++.

      • -

      If the PC Suite is not installed on your PC, you can send the file -to the phone via Bluetooth or IrDA (if available):

        +
      • Connect your device to the PC via Bluetooth or USB and add +the phone to the known devices in the PC Suite (if necessary).

      • +
      • Double-click the .sisx file in Windows Explorer +or the Project Explorer window of Carbide.c++.

      • +

      If the PC Suite is not installed on your PC, you can send +the file to the phone via Bluetooth or IrDA (if available):

      • Locate the .sisx file in Windows Explorer

      • Right-click on it and select Send to | Bluetooth device.

      • -

      You will be prompted to install the application when you open the -message.

      Warning: If you get a Certificate -Error message when you try to install the application, then your -phone has been configured to prevent installation of self-signed sis files. -To change this behavior, go to Settings - Application manager - Installation -settings - Software installation and change the setting from Signed -Only to All. For other errors received upon installation, consult -the installation -error troubleshooting guide.

      Debugging on the Device

      -Debugging on a production phone is covered in the topic: Getting Started with Debugging on the Device.

      -
      Building on -the Command Line

      It is also possible to build your applications -using the command-line based Symbian toolchain. If you've never done so before -you will first need to set up the environment using the tool provided:

        -
      • Select the windows start button and select: Start | All Programs -| Symbian Foundation ADT v1.0 | Carbide.c++ | Configure environment for WINSCW -command line

      • -

      Open a command prompt in your project's /group/ folder (where the -bld.inf project file is located) and do:

      bldmake bldfiles -abld build

      The command bldmake bldfiles creates -a batch file abld.bat based on the component-definition file -(bld.inf) and the project-definition file(s) (.mmp). -The abld build command uses the batch file to build all the -default targets (i.e. for gcce and Emulator).

      You can build just one -target using

      abld build <target>

      For -example, "abld build winscw udeb" builds just the emulator -debug variant.

      You can start the emulator by selecting its executable -in your file system (it will be located at SDK DIRECTORY\epoc32\release\winscw\udeb\epoc.exe). -

      An overview of the commands and the generated outputs is shown below. +

    You will be prompted to install the application when you open +the message.

    Warning: If you get a Certificate Error message when you try to install the +application, then your phone has been configured to prevent installation +of self-signed sis files. To change this behavior, go to Settings +- Application manager - Installation settings - Software installation and change the setting from Signed Only to All. For +other errors received upon installation, consult the installation error troubleshooting guide.

    Debugging on the Device

    Debugging on +a production phone is covered in the topic: Getting Started with Debugging on the Device.

    +
    Building +on the Command Line

    It is also possible to build your applications +using the command-line based Symbian toolchain. If you've never done +so before you will first need to set up the environment using the +tool provided:

      +
    • Select the windows start button and select: Start | All +Programs | Symbian Foundation ADT v1.0 | Carbide.c++ | Configure environment +for WINSCW command line

    • +

    Open a command prompt in your project's /group/ folder +(where the bld.inf project file is located) and do:

    bldmake bldfiles +abld build

    The command bldmake bldfiles creates a batch file abld.bat based on the component-definition +file (bld.inf) and the project-definition file(s) +(.mmp). The abld build command uses +the batch file to build all the default targets (i.e. for gcce +and Emulator).

    You can build just one target using

    abld build <target>

    For example, +"abld build winscw udeb" builds just the emulator +debug variant.

    You can start the emulator by selecting its +executable in your file system (it will be located at SDK +DIRECTORY\epoc32\release\winscw\udeb\epoc.exe).

    An +overview of the commands and the generated outputs is shown below. There is also extensive documentation on the build process in the Symbian Developer Library: Symbian OS build process.

    - +
    -
    Troubleshooting

    -For the vast majority of users the preceding instructions can be followed -through without issue. If however you have any build issues, then please follow -the following instructions to check that your environment is set up correctly and troubleshoot any problems that may arise.

    -
    Summary

    In -this tutorial you set up your development environment, learned how to create -a skeleton application using Carbide.c++ UI Designer, and how to get -it up and running on both the Symbian platform emulator and on the device. -

    In Going Beyond -Hello: A Tutorial for Symbian C++ Applications we will extend the basic -skeleton to create a small paint application, along the way learning more -about the application frameworks (e.g. defining menus, how to handle touch-screen -events, drawing to the screen etc.).

    -
    Related Info

    -Further reading:

      -
    • Going Beyond -Hello: A Tutorial for Symbian C++ Applications provides a step by step -guide to creating your first "real application", covering the key elements -of the application framework.

    • -
    • Fundamentals of Symbian C++ provides all the essential -information you need to understand Symbian C++.

    • +
      Troubleshooting

      For the vast majority of users the preceding instructions can +be followed through without issue. If however you have any build issues, +then please follow the following instructions to check that your environment is set up correctly and troubleshoot any problems that may arise.

      +
      Summary

      In this tutorial you set up your development environment, learned +how to create a skeleton application using Carbide.c++ UI Designer, and how to get it up and running on both the Symbian platform emulator +and on the device.

      In Going Beyond Hello: +A Tutorial for Symbian C++ Applications we will extend the +basic skeleton to create a small paint application, along the way +learning more about the application frameworks (e.g. defining menus, +how to handle touch-screen events, drawing to the screen etc.).

      +
      Related +Info

      Further reading:

        +
      • Going +Beyond Hello: A Tutorial for Symbian C++ Applications provides +a step by step guide to creating your first "real application", covering +the key elements of the application framework.

      • +
      • Fundamentals of Symbian C++ provides all the +essential information you need to understand Symbian C++.

      About the Kits:

        -
      • What -are the Kits? explains the ADT and SDK.

      • +
      • What are the Kits? explains the ADT and SDK.

      • Kits Q&As.

      • Getting Started with Debugging on the Device.

      • Symbian^1 SDK Release Notes.

      • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-30201A05-C6CE-5D34-9BDF-CDA4EE44878D.dita --- a/Symbian3/PDK/Source/GUID-30201A05-C6CE-5D34-9BDF-CDA4EE44878D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-30201A05-C6CE-5D34-9BDF-CDA4EE44878D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,51 +9,53 @@ --> -ECom -Architecture -

        In C++, the existence of abstract base classes and virtual functions allows -the programs to call, or access interfaces without knowing the actual implementation. -This mechanism gives a flexibility of writing the implementation independent -of the interface. The implementations are known as Plug-ins.

        -

        When an application wishes to use a plug-in, an object is to be instantiated -to perform the required processing. The object specifics are not known until -run-time. The general characteristics of the processing are known, and these -are presented as an interface API.

        -

        In early versions of Symbian platform, implementations were provided by polymorphic interface DLLs. -All the frameworks within the Symbian platform that needed to use plug-ins -had to provide own mechanisms for the clients to discover and instantiate -the implementations. The above method resulted in duplication of functionality.

        -

        The Plug-in (ECom) Framework introduces a generic framework that provides -a single mechanism to:

        +ECom Architecture +

        In C++, the existence of abstract base classes and virtual functions +allows the programs to call, or access interfaces without knowing +the actual implementation. This mechanism gives a flexibility of writing +the implementation independent of the interface. The implementations +are known as Plug-ins.

        +

        When an application wishes to use a plug-in, an object is to be +instantiated to perform the required processing. The object specifics are not known until run-time. The general characteristics +of the processing are known, and these are presented as an interface +API.

        +

        In early versions of Symbian platform, implementations were provided +by polymorphic interface DLLs. All the frameworks within the Symbian +platform that needed to use plug-ins had to provide own mechanisms +for the clients to discover and instantiate the implementations. The +above method resulted in duplication of functionality.

        +

        The Plug-in (ECom) Framework introduces a generic framework that +provides a single mechanism to:

          -
        • Register and discover -interface implementations

        • +
        • Register and +discover interface implementations

        • Select an appropriate implementation

        • -
        • Provide version control -for plug-ins

        • +
        • Provide version +control for plug-ins

        -
        Essentials of a Plug-In System

        A client wishes -to access an object to perform some processing. The specifics of this object -are not known until run-time. The general characteristics of the processing -are known, and are defined in an interface, but several variants of required -processing could exist, which are provided by implementations that support -the interface.

        There are four clearly-defined roles in such a system.

          -
        • The Client that -wishes to access services.

        • -
        • The Interface API that -defines how to request services.

        • -
        • The Interface Implementation that -provides the required processing.

        • -
        • The Framework that -provides the clients with the required access to the implementations.

        • +
          Essentials +of a Plug-In System

          A client wishes to access an object +to perform some processing. The specifics of this object are not known +until run-time. The general characteristics of the processing are +known, and are defined in an interface, but several variants of required +processing could exist, which are provided by implementations that +support the interface.

          There are four clearly-defined roles +in such a system.

            +
          • The Client that wishes to access services.

          • +
          • The Interface +API that defines how to request services.

          • +
          • The Interface +Implementation that provides the required processing.

          • +
          • The Framework that provides the clients with the required access to the implementations.

          The relationships can be represented as follows:

          Plug-in relationships - -

          The instantiation mechanism forms the backbone of such a system, -and is responsible for providing the services that identify, and load the -correct interface implementation at run-time. ECom is such a framework.

          We'll -now look at the system from the perspectives in turn of each of the interface -client, interface implementation, and interface definition, before summarising -the functions of the ECom.

          + +

          The instantiation mechanism forms the backbone of such a +system, and is responsible for providing the services that identify, +and load the correct interface implementation at run-time. ECom is +such a framework.

          We'll now look at the system from the perspectives +in turn of each of the interface client, interface implementation, +and interface definition, before summarising the functions of the +ECom.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-30382EFD-90D5-570C-A6CD-19D34360F329.dita --- a/Symbian3/PDK/Source/GUID-30382EFD-90D5-570C-A6CD-19D34360F329.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-30382EFD-90D5-570C-A6CD-19D34360F329.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,42 +9,31 @@ --> -GraphicsShell: -drawing and zoomingA TechView application that demonstrates drawing points, lines -and shapes, and zooming a bitmap and text. -
        Download

        Click on the following link to download -the example: GraphicsShell.zip

        Download some additional files -required by the example: CommonGraphicsExampleFiles

        Click: browse to view the example code.

        View the additional -files: browse.
        -
        Description

        GraphicsShell provides -an application shell, and two concrete controls.

        CGraphicExampleControl is -a control class, derived from CCoeControl, which links the -app shell to the particular controls.

        CDrawControl illustrates -the drawing of shapes in a window. The code draws points, lines and shapes; -this exercises a variety of drawing functions provided by the window graphics -context such as MoveTo(), DrawLineTo(), DrawArc() etc.

        CZoomControl illustrates -the use of zooming.

        -
        Class Summary

        TPoint

        TRectTSize

        CWindowGc

        TRgb

        CFont

        TFontSpec

        CWindowGc

        TZoomFactor

        MGraphicsDeviceMap

        CFbsBitmap

        -
        Build

        The source code for this example -application can be found in the directory:

        examples\Graphics\GraphicsShell

        This -source code may be in the directory in which you installed the Symbian platform, -or it may be in the src\common\developerlibrary\ directory. -The directory includes the two project files needed for building the example: bld.inf and -the .mmp file.

        The -Symbian build process describes how to build this application. For -the emulator, an application called GraphicsShell.exe is -created in epoc32\release\winscw\<udeb or urel>\.

        +GraphicsShell: drawing and zoomingA TechView application that demonstrates drawing points, +lines and shapes, and zooming a bitmap and text. +
        Download

        Click on the following link to download the example: GraphicsShell.zip

        Download some additional +files required by the example: CommonGraphicsExampleFiles

        Click: browse to view the example code.

        View the +additional files: browse.
        +
        Description

        GraphicsShell provides an application shell, +and two concrete controls.

        CGraphicExampleControl is a control class, derived from CCoeControl, which +links the app shell to the particular controls.

        CDrawControl illustrates the drawing of shapes in a window. The code draws points, +lines and shapes; this exercises a variety of drawing functions provided +by the window graphics context such as MoveTo(), DrawLineTo(), DrawArc() etc.

        CZoomControl illustrates the use of zooming.

        +
        Class +Summary

        TPoint

        TRectTSize

        CWindowGc

        TRgb

        CFont

        TFontSpec

        CWindowGc

        TZoomFactor

        MGraphicsDeviceMap

        CFbsBitmap

        +
        Build

        The source code for this example application can be found in +the directory:

        examples\Graphics\GraphicsShell

        This source code may be in the directory in which you installed +the Symbian platform, or it may be in the src\common\developerlibrary\ directory. The directory includes the two project files needed for +building the example: bld.inf and the .mmp file.

        The Symbian build process describes +how to build this application. For the emulator, an application called GraphicsShell.exe is created in epoc32\release\winscw\<udeb +or urel>\.

        Usage
          -
        1. Launch the emulator:

          \epoc32\release\winscw\<udeb -or urel>\EPOC.EXE.

        2. -
        3. Click on GRAPHICSSHELL to -run the application. If using the TechView emulator, this will be in -the Extras menu.

        4. -
        5. The controls are listed -on the menu List of Programs. -Press the appropriate menu item to select a specific control.

        6. -
        7. Step through each phase -of the example by pressing the space bar or by tapping on the window drawn -by that example.

        8. +
        9. Launch the emulator:

          \epoc32\release\winscw\<udeb or urel>\EPOC.EXE.

        10. +
        11. Click on GRAPHICSSHELL to run the application. If using the TechView emulator, this will be in the Extras menu.

        12. +
        13. The controls +are listed on the menu List of Programs. Press the appropriate menu item to select a specific control.

        14. +
        15. Step through +each phase of the example by pressing the space bar or by tapping +on the window drawn by that example.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-30647807-A0D2-4D96-975A-BF1800749977.dita --- a/Symbian3/PDK/Source/GUID-30647807-A0D2-4D96-975A-BF1800749977.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-30647807-A0D2-4D96-975A-BF1800749977.dita Fri Jul 16 17:23:46 2010 +0100 @@ -30,7 +30,7 @@ through the Tools > Preferences menu or by editing the epoc.ini file. The following illustration shows the options you have in the Platform security tab of the Preferences window.

        -Preferences window in the emulator +Preferences window in the emulator

        To set the platform security settings:

        1. In the emulator, diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-30987768-8B0A-5A35-820C-DBB410D2053B_d0e137761_href.png Binary file Symbian3/PDK/Source/GUID-30987768-8B0A-5A35-820C-DBB410D2053B_d0e137761_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-30987768-8B0A-5A35-820C-DBB410D2053B_d0e140010_href.png Binary file Symbian3/PDK/Source/GUID-30987768-8B0A-5A35-820C-DBB410D2053B_d0e140010_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-309B01B6-F74A-5EF0-B225-702BF8814847.dita --- a/Symbian3/PDK/Source/GUID-309B01B6-F74A-5EF0-B225-702BF8814847.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-309B01B6-F74A-5EF0-B225-702BF8814847.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,8 +11,8 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> TFX Render Stage ExamplesThis topic provides examples of how a transition effect (TFX) render stage can perform simple transitions in the ScreenPlay variant. Note that the APIs are different in the non-ScreenPlay variant.

          Variant: ScreenPlay. Target audience: Device creators.

          This example assumes a render stage configuration that consists of two render stage plug-ins—the first in the chain is a transition effect (TFX) engine and the second and final one displays the results on the screen. The TFX render stage does not implement a visuals tree and visuals stores. The configuration matches that shown in the Typical Use Case section of the Render Stages Overview.

          The TFX render stage creates a TFX surface for its own use—for example, to capture drawing for use in transition effects. It can then introduce parts of the TFX surface into the composition scene as required.

          A window slides on from the side

          First we will consider what happens when a window slides onto the view from the side.

          A window slides onto the screen from the side -

          We will assume that the window does not have an external surface attached. However, it could have semi-transparent pixels and the background scene could have an external surface attached. The transition effect is performed by capturing the window pixels to the TFX surface, and then using composition operations to make the TFX surface (containing the window pixels) slide on from the side. In particular, no updates to the TFX surface or UI surface are required during the transition—everything is done with element updates. The following sequence diagram shows the high-level steps involved in setting up and performing the transition effect.

          +

          We will assume that the window does not have an external surface attached. However, it could have semi-transparent pixels and the background scene could have an external surface attached. The transition effect is performed by capturing the window pixels to the TFX surface, and then using composition operations to make the TFX surface (containing the window pixels) slide on from the side. In particular, no updates to the TFX surface or UI surface are required during the transition—everything is done with element updates. The following sequence diagram shows the high-level steps involved in setting up and performing the transition effect.

          Window slide-on sequence diagram -

          The main points to note are:

          • The MWsDrawAnnotationObserver::WindowRedrawStart and MWsDrawAnnotationObserver::WindowRedrawEnd methods enable the TFX render stage to associate drawing operations with windows. When a window requires TFX, the render stage captures its drawing operations onto the TFX surface, while letting all other drawing pass through to the UI surface. See MWsDrawAnnotationObserver for more information.

          • The TFX render stage calls MWsScreenRedraw::ScheduleRender() in order to ensure that it is called again after a short interval. It also does this repeatedly while performing the transition effect, although this is not shown on the diagram.

          • The TFX render stage introduces the TFX surface into the composition scene by calling MWsScene::InsertSceneElement().

          • The TFX render stage achieves the transition effect by successively updating the element metadata of the TFX surface to move it across the scene.

          • When the transition effect is finished, the TFX render stage blits the window pixels from the TFX surface into their final position in the UI surface. For semi-transparent windows this must be synchronized with the removal of the TFX surface from the scene—by Begin() and End() calls—otherwise the semi-transparent content would be blended twice. This is not an issue for opaque windows.

          Full screen slide-on transition

          Now we will consider what happens when the user switches between two views, A and B. The transition slides A off to one side while B slides on from the other side.

          +

          The main points to note are:

          • The MWsDrawAnnotationObserver::WindowRedrawStart and MWsDrawAnnotationObserver::WindowRedrawEnd methods enable the TFX render stage to associate drawing operations with windows. When a window requires TFX, the render stage captures its drawing operations onto the TFX surface, while letting all other drawing pass through to the UI surface. See MWsDrawAnnotationObserver for more information.

          • The TFX render stage calls MWsScreenRedraw::ScheduleRender() in order to ensure that it is called again after a short interval. It also does this repeatedly while performing the transition effect, although this is not shown on the diagram.

          • The TFX render stage introduces the TFX surface into the composition scene by calling MWsScene::InsertSceneElement().

          • The TFX render stage achieves the transition effect by successively updating the element metadata of the TFX surface to move it across the scene.

          • When the transition effect is finished, the TFX render stage blits the window pixels from the TFX surface into their final position in the UI surface. For semi-transparent windows this must be synchronized with the removal of the TFX surface from the scene—by Begin() and End() calls—otherwise the semi-transparent content would be blended twice. This is not an issue for opaque windows.

          Full screen slide-on transition

          Now we will consider what happens when the user switches between two views, A and B. The transition slides A off to one side while B slides on from the other side.

          Full screen slide-on transition -

          First we will assume that neither A nor B has an external surface. The transition effect is performed in a similar way to the window transition described earlier. The outgoing view is captured into the TFX surface, and introduced as the topmost element into the composition scene. One complication is that on the client side, the outgoing and incoming views may run in different processes. The transition engine must therefore wait for A's exit and B's entry to be signaled before it performs the transition effect.

          As in the previous example, the actors are the client application, the Window Server and the two render stages. The system boundary is the Window Server process. Assuming that view A is currently present in the UI surface, the basic flow is as follows:

          1. View A signals the start and end of its exit transition.

          2. View B signals the start of its entry transition.

          3. View B issues new drawing operations to the Window Server.

          4. View B calls RWsSession::Finish().

          5. The Window Server lower loop runs.

          6. The Window Server calls CWsRenderStage::Begin() on the TFX render stage.

          7. The TFX render stage introduces the TFX surface as the topmost surface in the composition scene, and moves the UI surface off to the side of the scene. It does this by calling MWsScene::InsertSceneElement() and then performing the MWsElement updates for the UI surface.

          8. The Window Server lower loop uses MWsGraphicsContext calls to issue the draw operations for view B.

          9. The TFX render stage passes the draw operations straight through to the display render stage, which renders them into the UI surface. However, this is not visible in the composition scene, because it is obscured by the TFX surface.

          10. The Window Server calls CWsRenderStage::End().

          11. The TFX render stage calls MWsScreenRedraw::ScheduleRender(), to ensure that it is called again after a short interval.

          12. The client application signals the end of the entry transition and the Window Server scheduler fires.

          13. The Window Server calls CWsRenderStage::Begin() and CWsRenderStage::End() on the TFX render stage, but without any drawing, giving it the opportunity to run.

          14. Over a series of frames, the TFX render stage modifies the element metadata to make the TFX surface (containing view A) slide off, and the UI surface (containing view B) slide on. It does this by updating the elements using MWsElement calls.

          15. When the transition is finished, the TFX render stage removes the TFX surface from composition scene, by calling MWsScene::RemoveSceneElement().

          Render Stages \ No newline at end of file +

          First we will assume that neither A nor B has an external surface. The transition effect is performed in a similar way to the window transition described earlier. The outgoing view is captured into the TFX surface, and introduced as the topmost element into the composition scene. One complication is that on the client side, the outgoing and incoming views may run in different processes. The transition engine must therefore wait for A's exit and B's entry to be signaled before it performs the transition effect.

          As in the previous example, the actors are the client application, the Window Server and the two render stages. The system boundary is the Window Server process. Assuming that view A is currently present in the UI surface, the basic flow is as follows:

          1. View A signals the start and end of its exit transition.

          2. View B signals the start of its entry transition.

          3. View B issues new drawing operations to the Window Server.

          4. View B calls RWsSession::Finish().

          5. The Window Server lower loop runs.

          6. The Window Server calls CWsRenderStage::Begin() on the TFX render stage.

          7. The TFX render stage introduces the TFX surface as the topmost surface in the composition scene, and moves the UI surface off to the side of the scene. It does this by calling MWsScene::InsertSceneElement() and then performing the MWsElement updates for the UI surface.

          8. The Window Server lower loop uses MWsGraphicsContext calls to issue the draw operations for view B.

          9. The TFX render stage passes the draw operations straight through to the display render stage, which renders them into the UI surface. However, this is not visible in the composition scene, because it is obscured by the TFX surface.

          10. The Window Server calls CWsRenderStage::End().

          11. The TFX render stage calls MWsScreenRedraw::ScheduleRender(), to ensure that it is called again after a short interval.

          12. The client application signals the end of the entry transition and the Window Server scheduler fires.

          13. The Window Server calls CWsRenderStage::Begin() and CWsRenderStage::End() on the TFX render stage, but without any drawing, giving it the opportunity to run.

          14. Over a series of frames, the TFX render stage modifies the element metadata to make the TFX surface (containing view A) slide off, and the UI surface (containing view B) slide on. It does this by updating the elements using MWsElement calls.

          15. When the transition is finished, the TFX render stage removes the TFX surface from composition scene, by calling MWsScene::RemoveSceneElement().

      Render Stages \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-30C8FE14-00CA-5B7F-9970-30E9632F00A6.dita --- a/Symbian3/PDK/Source/GUID-30C8FE14-00CA-5B7F-9970-30E9632F00A6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-30C8FE14-00CA-5B7F-9970-30E9632F00A6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,10 +21,10 @@ Terminated (MT) calls

    MO call state diagram - + MT call state diagram - +

    RMobileCall provides the functions to manipulate and control call actions.

    The high level steps to use the call control information are: diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-30E37559-B24D-569B-89BF-D5261DC5C689_d0e275140_href.png Binary file Symbian3/PDK/Source/GUID-30E37559-B24D-569B-89BF-D5261DC5C689_d0e275140_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-30E37559-B24D-569B-89BF-D5261DC5C689_d0e281140_href.png Binary file Symbian3/PDK/Source/GUID-30E37559-B24D-569B-89BF-D5261DC5C689_d0e281140_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-30EB4252-4CBA-5174-9133-E79AC9AEAEBF.dita --- a/Symbian3/PDK/Source/GUID-30EB4252-4CBA-5174-9133-E79AC9AEAEBF.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ - - - - - -Header information source file

    The build tools automatically generates a stub file, project-name .uid.cpp, which is built by the project and which contains the information on the project's UIDs and other properties. This stub file should not be edited, and should be considered as an intermediate file rather than a source file. It has a syntax such as:

    #include <e32cmn.h> -#pragma data_seg(".SYMBIAN") -__EMULATOR_IMAGE_HEADER2(0x10000079,0x1000008d,0x08a715f2,EPriorityForeground,0x00000000u,0x00000000u,0x08a715f2,0,0x00010000,0) -#pragma data_seg() \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita --- a/Symbian3/PDK/Source/GUID-3100800B-B2F7-50EF-BD4C-3C345ECCB2A5.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,93 +0,0 @@ - - - - - -The -Symbian build process -

    Symbian platform programs are initially developed for a Symbian emulator -running on Windows, and are then rebuilt for the ARM processor (native) targets -used in real Symbian platform phones. Building can be performed from the Windows -command line, or from within an IDE if one is available. The descriptions -given in this documentation set concentrate on command line building, as documentation -for using an IDE is normally distributed with the IDE itself.

    -

    Note: This page includes a description of the use of Symbian's -SBSv1 build system, which provides the bldmake and abld command -line tools. Symbian also provides a newer command line build system, called -SBSv2, in its Platform Developer Toolkit (PDT) product. SBSv2 can help achieve -improved build speed over SBSv1.

    -
    Build targets

    This section describes the tools -and compilers supported on the kits supplied by Symbian. Note that licensees -or third-parties may supply additional tools, or extend support to additional -compilers which are not described here.

    Symbian build their emulator -code with the Metrowerks CodeWarrior compiler. This is known as the WINSCW build -target. Binaries built with this compiler are put in the epoc32\release\winscw and epoc32\winscw directory -trees.

    You can build your programs for the Symbian emulator using -Metrowerks CodeWarrior. The build tools also have support for using the Microsoft -Visual Studio .NET 2003, or Microsoft Visual Studio v6 IDEs. See The -Symbian emulator build targets for more details.

    To build code -for a phone, a compiler based on the Application Binary Interface (ABI) for -the ARM Architecture is needed. This is a standard for the interfaces of binary -code running in ARM environments, and is intended to allow inter-operation -of binaries produced by different compilers that conform to the standard. -The specification is published by ARM at http://infocenter.arm.com.

    The Symbian platform -build tools are configured to work with two compilers in particular:

      -
    • ARM's own RealView Compiler -Tools (RVCT). This is particularly intended for licensee's building ROMs for -phones. For details, see ARM's website at http://www.arm.com.

      The situation -is complicated by there existing two versions of the ARM ABI, referred to -as v1 and v2 respectively. The toolchain allows either to be chosen.

    • -
    • A version of the GNU -Compiler Collection (GCC) that supports the ABI for the ARM Architecture. -This compiler is delivered on Symbian platform kits, and is freely available. -This target is known as GCCE. It can only be used to compile -code to v2 of the ARM ABI, not to the earlier v1.

    • -

    See The native -build targets for more details.

    -
    Project files

    Because of the variety of targets -and toolchains available, Symbian platform allows projects to be specified -in a form not specific to any. These neutral project files are then used by -Symbian platform tools to create toolchain-specific project files when these -are required.

    The key project files are:

      -
    • a project definition -file (.mmp file) that describes a project to be built. -This is an environment neutral file that can be used by the tools to produce -make files for any of the supported target environments. It also defines resource -file and application information files to be built.

    • -
    • a component description -file (bld.inf), which lists all the projects in a component, -and gives additional build instructions.

    • -

    When you create a new project, you write these files (or typically -copy existing similar files and modify them) in a text editor. IDE's may allow -new projects to be created from existing template projects.

    See How to build GUI applications, How to build DLLs, -and How to build EXEs for -guidance on how to write project files for the three most common types of -program. See the Build -tools reference for details on the file formats and syntax.

    -
    Building from the command line

    You can build for -any target from the command line. The procedure is summarised below.

      -
    1. Create a project specification -(.mmp) file.

    2. -
    3. Create a component definition -file (bld.inf). In many cases this will specify a single -project mmp file.

    4. -
    5. Run bldmake from -the directory where the bld.inf file is located:

      bldmake -bldfiles

      This creates a abld.bat batch -file, which you use in the next step.

    6. -
    7. Use abld -build to build the project.

      This builds the project -for all valid targets and both release and debug variants. To build for a -particular target and variant, use abld build -target-name variant, for example

      abld build -winscw udeb

      to build for the debug variant of WINSCW.

    8. -

    For more details on using the tools, see How -to use bldmake and How -to use abld.

    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-310A8A9C-98E7-59EE-9376-8E572580190F.dita --- a/Symbian3/PDK/Source/GUID-310A8A9C-98E7-59EE-9376-8E572580190F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-310A8A9C-98E7-59EE-9376-8E572580190F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,174 +1,177 @@ - - - - - -File -services in Symbian platformThis topic describes the common concepts of file systems and files -used by Symbian platform. -

    Like other software systems, Symbian platform can store data so that it -is kept when a handset is powered down.

    -

    On PCs, a file is kept on magnetic disk or optical media such as CD or -DVD. On older generations of personal organisers, a file was often kept in -RAM, needing a permanent power supply, and a backup battery to guarantee this. -On the most recent telephone handsets, files are normally stored in flash -memory, either NOR flash or NAND flash, and also on removable devices such -as MultiMediaCard (MMC), Secure Digital card (SD card), Memory Stick or Compact -flash (CF).

    -

    There are more sophisticated services for persisting data such as streams, -stores, central repository etc. that applications can use, but they all rely, -either directly or indirectly, on the commonly understood idea of the file.

    -

    The ROM on a typical handset is located in non-volatile flash memory, allowing -it to be upgraded by the handset manufacturer after initial production. The -location for user data is almost always flash memory (NAND or NOR), on the -grounds of cost, although rotating media devices capable of holding large -amounts of data are likely in future handsets.

    -
      -
    • Basic concepts

    • -
    • Accessing file services

    • -
    • Security issues

    • -
    • File systems and mounting a drive

    • -
    -
    Basic concepts

    Symbian -platform uses a number of file concepts that are common to most operating -systems, for example, drives and directories.

    Drives

    Symbian -platform uses the concept of the drive. This idea is similar to that -in other operating systems, i.e. it corresponds to a logical device. A media -device such as a MultiMediaCard can be logically split into partitions, and -each partition is treated as a separate drive. Symbian platform adopts a DOS-like -convention where each drive is identified by a single letter. This means that -there can be up to 26 drives on a handset, identified by the letters A: through -to Z:. In practice, there are far fewer than this, and -the number depends on the individual manufacturer's handset

    Internally, -Symbian platform uses the idea of a drive number instead of a letter, and -some legacy API items take a drive number as input, or return a drive number -as output. However, there are functions that can translate drive numbers to -and from drive letters: RFs::DriveToChar() and RFs::CharToDrive().

    The -main ROM on a handset is always identified as the Z: drive. -Other drives may be in use: sixteen of the drives C: to R: are -usually reserved as local drives, i.e. for media devices located within the -handset. A common convention is to adopt C: as the main -user data drive. and to designate D: or E: as -drives for removable media. Be aware, however, that this is a convention -that some handset manufacturers may not follow, so you are always advised -to check the full SDK that applies to a specific handset for guidance. Indeed, -as a matter of principle, you should always use the system -drive for user data.

    Volume

    The concept of the volume applies to removable media. As users insert -and remove individual devices, so different volumes are said to be mounted -and demounted. For media types that can be split into partitions, each partition -corresponds to a separate volume.

    File -names and directory structures

    Files have names, and Symbian platform -uses a hierarchical directory structure in which to organize them; this is -similar to schemes adopted by other operating systems. For example:

    C:\AAA\BBB\CCC\DDD.EXT

    There -are four main parts to the structure:

      -
    • the drive; this -is always at the top of the hierarchy, and is represented by a drive letter -and a colon.

    • -
    • the path; this -is a list of names, each name representing a level in the hierarchy. Each -directory name is separated by a back slash character, and the last directory -name is always terminated by a back slash character.

    • -
    • the filename; -this is everything after the final backslash, and before the dot if there -is a file extension. Symbian platform supports long file filenames.

    • -
    • the extension, -everything after the final dot. There is no restriction on the length of the -extension; limits on length apply to the whole structure, not to any single -part of it.

    • -

    You will find that the whole structure is sometimes referred to as -the full file name or the full path name. The maximum length of a full file -name is limited to 256 characters. Symbian platform does not use the extension -to identify the software or application that can access the data. Instead, -files have UIDs embedded within them, and the mapping of files to applications -is done through these UIDs. See Application -registration information.

    The case of full path names is always -preserved, but operations on names are case insensitive. This means that two -files that have the same name but differ only in case are considered to refer -to the same file.

    Full file names are normally manipulated programmatically. -Extracting drive names, filenames, file extensions, and changing the names -of a directory structure are typical activities. Symbian platform provides -you with the TParse, TParsePtr, and TParsePtrC classes -to help you do this manipulation.

    See parsing -paths and filenames .

    -
    Accessing file -services

    On Symbian platform, file services are a common resource. -Like other common or shared resources on Symbian platform, file services are -handled by a server - the file server. Applications and other software that -require access to files, directories and drives are clients of the file server, -and send file-related requests using the file -server client-side API.

    The file server is multithreaded, which -allows each logical drive to be accessed concurrently. More than one request -can be issued for the same drive, but these requests are handled sequentially. -For example, a request to read or write data to a MultiMediaCard can be handled -at the same time as a request to read or write data to the main user drive.

    The -file server has a main thread that initially handles all requests. Short requests, -such as those that require access to the ROM drive, and those that do not -require access to any media, run in the file server.

    The services -provided by the file server can be divided into two types:

      -
    • those that give you -access to individual files, directories and drives using the RFile, RDir and RFormat classes.

      See also How to -use sessions, files, and directories.

    • -
    • those that allow you -to do higher level longer running operations such as moving, copying and deleting -files, using the CFileMan class, scanning directory trees -using the CDirScan class, and tracking the progress of -these operations using the MFileManObserver class.

      See -also File management -and searching

    • -

    Like most other servers, the client API allows you to make file requests -synchronously or asynchronously.

    See also client-server.

    -
    Security issues

    Security -considerations restrict the parts of a handset's directory structure that -an application is allowed to access. The concept is referred to as data -caging.

    There are a number of principles involved:

      -
    • The fundamental principle -is the separation of executable code from data. Executable code can only reside -in the /sys/bin/ directory. Executables cannot be loaded -from any location other than /sys/bin/. Unless an application -has the appropriate system capabilities, the /sys/ directory -is not visible to that application. System capabilities are a discrete set -of 'permissions' that give access to various sensitive system services, and -which can only be granted to applications, if justified, through the Symbian Signed scheme.

    • -
    • Applications have their -own private directory, under which they are free to create further directory -structures and files, and to write to those files. This is the directory structure /private/<app_SID>/. <app_SID> is known as a secure identifier and, in general, is used when verifying -an executable's rights of access to system resources. Here, it is used to -form the path name for the executable's private directory. The secure identifier -is a UID which is allocated to a developer through the Symbian Signed scheme, and is guaranteed to be unique -within the handset on which the application is installed. The UID is coded -into the mmp file(s) that define the application's source -files, link requirements, and general characteristics.

      Other applications -have no right of access to an application's private directory.

    • -
    • There is a directory /resource/ to -which all applications have read access, but no write access. The purpose -of this directory is to conatin common read-only files.

    • -
    • All other directories -are accessible for both reading and writing. This allows the use of standard -file system hierarchies that may be available on removable media.

    • -
    • The above principles -apply regardless of the drive.

    • -

    It is possible to pass an open file to another process, or between -a client and server, so that the target can access the file without knowing -the full path name. The only information that is passed to the target is the -filename and extension.

    -
    File systems -and mounting a drive

    The varying characteristics of media types -can mean that different media types require different formats. A common format -is VFAT, and typically, this is used for removable media to maintain compatibility -with other systems. This also means that long file names are supported.

    In -Symbian platform, format schemes are implemented by what are called file systems; -they are constructed as plugins to the file server. This means that the file -server itself is independent of the format scheme, and also means that a phone -manufacturer is free to add new file systems to a handset. The ROM is an exception -- it has its own file system built into the main file server code.

    A -file system must be associated with a drive before the drive can be used. -This is known as mounting the drive, and is typically done at system boot -time.

    In practice, an application does not need to concern itself -with the format scheme.

    + + + + + +File services in Symbian platformThis topic describes the common concepts of file systems +and files used by Symbian platform. +

    Like other software systems, Symbian platform can store data so +that it is kept when a handset is powered down.

    +

    On PCs, a file is kept on magnetic disk or optical media such as +CD or DVD. On older generations of personal organisers, a file was +often kept in RAM, needing a permanent power supply, and a backup +battery to guarantee this. On the most recent telephone handsets, +files are normally stored in flash memory, either NOR flash or NAND +flash, and also on removable devices such as MultiMediaCard (MMC), +Secure Digital card (SD card), Memory Stick or Compact flash (CF).

    +

    There are more sophisticated services for persisting data such +as streams, stores, central repository etc. that applications can +use, but they all rely, either directly or indirectly, on the commonly +understood idea of the file.

    +

    The ROM on a typical handset is located in non-volatile flash memory, +allowing it to be upgraded by the handset manufacturer after initial +production. The location for user data is almost always flash memory +(NAND or NOR), on the grounds of cost, although rotating media devices +capable of holding large amounts of data are likely in future handsets.

    +
      +
    • Basic concepts

    • +
    • Accessing file services

    • +
    • Security issues

    • +
    • File systems and mounting a drive

    • +
    +
    Basic +concepts

    Symbian platform uses a number of file concepts +that are common to most operating systems, for example, drives and +directories.

    Drives

    Symbian platform uses the concept of the drive. This idea is similar to that in other operating systems, +i.e. it corresponds to a logical device. A media device such as a +MultiMediaCard can be logically split into partitions, and each partition +is treated as a separate drive. Symbian platform adopts a DOS-like +convention where each drive is identified by a single letter. This +means that there can be up to 26 drives on a handset, identified by +the letters A: through to Z:. In practice, there are far fewer than this, and the number depends +on the individual manufacturer's handset

    Internally, Symbian +platform uses the idea of a drive number instead of a letter, and +some legacy API items take a drive number as input, or return a drive +number as output. However, there are functions that can translate +drive numbers to and from drive letters: RFs::DriveToChar() and RFs::CharToDrive().

    The main ROM +on a handset is always identified as the Z: drive. +Other drives may be in use: sixteen of the drives C: to R: are usually reserved as local drives, +i.e. for media devices located within the handset. A common convention +is to adopt C: as the main user data drive. and +to designate D: or E: as +drives for removable media. Be aware, however, that this is +a convention that some handset manufacturers may not follow, so you +are always advised to check the full SDK that applies to a specific +handset for guidance. Indeed, as a matter of principle, you should +always use the system drive for user data.

    Volume

    The concept of the volume applies to removable +media. As users insert and remove individual devices, so different +volumes are said to be mounted and demounted. For media types that +can be split into partitions, each partition corresponds to a separate +volume.

    File names and directory structures

    Files have names, +and Symbian platform uses a hierarchical directory structure in which +to organize them; this is similar to schemes adopted by other operating +systems. For example:

    C:\AAA\BBB\CCC\DDD.EXT

    There are four main parts to the structure:

      +
    • the drive; this is always at the top of the hierarchy, and is represented +by a drive letter and a colon.

    • +
    • the path; this is a list of names, each name representing a level in the +hierarchy. Each directory name is separated by a back slash character, +and the last directory name is always terminated by a back slash character.

    • +
    • the filename; this is everything after the final backslash, and before the dot +if there is a file extension. Symbian platform supports long file +filenames.

    • +
    • the extension, everything after the final dot. There is no restriction on the +length of the extension; limits on length apply to the whole structure, +not to any single part of it.

    • +

    You will find that the whole structure is sometimes referred +to as the full file name or the full path name. The maximum length +of a full file name is limited to 256 characters. Symbian platform +does not use the extension to identify the software or application +that can access the data. Instead, files have UIDs embedded within +them, and the mapping of files to applications is done through these +UIDs. For more information, see Symbian^3 Tools Guide > Building.

    The case of full path names is always preserved, but operations +on names are case insensitive. This means that two files that have +the same name but differ only in case are considered to refer to the +same file.

    Full file names are normally manipulated programmatically. +Extracting drive names, filenames, file extensions, and changing the +names of a directory structure are typical activities. Symbian platform +provides you with the TParse, TParsePtr, and TParsePtrC classes to help you do this manipulation.

    See parsing +paths and filenames .

    +
    Accessing +file services

    On Symbian platform, file services are a +common resource. Like other common or shared resources on Symbian +platform, file services are handled by a server - the file server. +Applications and other software that require access to files, directories +and drives are clients of the file server, and send file-related requests +using the file +server client-side API.

    The file server is multithreaded, +which allows each logical drive to be accessed concurrently. More +than one request can be issued for the same drive, but these requests +are handled sequentially. For example, a request to read or write +data to a MultiMediaCard can be handled at the same time as a request +to read or write data to the main user drive.

    The file server +has a main thread that initially handles all requests. Short requests, +such as those that require access to the ROM drive, and those that +do not require access to any media, run in the file server.

    The services provided by the file server can be divided into two +types:

      +
    • those that give +you access to individual files, directories and drives using the RFile, RDir and RFormat classes.

      See also How to use sessions, +files, and directories.

    • +
    • those that allow +you to do higher level longer running operations such as moving, copying +and deleting files, using the CFileMan class, scanning +directory trees using the CDirScan class, and tracking +the progress of these operations using the MFileManObserver class.

      See also File management and +searching.

    • +

    Like most other servers, the client API allows you to make +file requests synchronously or asynchronously.

    See also client-server.

    +
    Security +issues

    Security considerations restrict the parts of a +handset's directory structure that an application is allowed to access. +The concept is referred to as data caging.

    There are +a number of principles involved:

      +
    • The fundamental +principle is the separation of executable code from data. Executable +code can only reside in the /sys/bin/ directory. +Executables cannot be loaded from any location other than /sys/bin/. Unless an application has the appropriate system +capabilities, the /sys/ directory is not visible +to that application. System capabilities are a discrete set of 'permissions' +that give access to various sensitive system services, and which can +only be granted to applications, if justified, through the Symbian +Signed scheme.

    • +
    • Applications +have their own private directory, under which they are free to create +further directory structures and files, and to write to those files. +This is the directory structure /private/<app_SID>/. <app_SID> is known as a secure identifier and, in general, +is used when verifying an executable's rights of access to system +resources. Here, it is used to form the path name for the executable's +private directory. The secure identifier is a UID which is allocated +to a developer through the Symbian +Signed scheme, and is guaranteed to be unique within the handset +on which the application is installed. The UID is coded into the mmp file(s) that define the application's source files, +link requirements, and general characteristics.

      Other applications +have no right of access to an application's private directory.

    • +
    • There is a directory /resource/ to which all applications have read access, +but no write access. The purpose of this directory is to conatin common +read-only files.

    • +
    • All other directories +are accessible for both reading and writing. This allows the use of +standard file system hierarchies that may be available on removable +media.

    • +
    • The above principles +apply regardless of the drive.

    • +

    It is possible to pass an open file to another process, or +between a client and server, so that the target can access the file +without knowing the full path name. The only information that is passed +to the target is the filename and extension.

    +
    File +systems and mounting a drive

    The varying characteristics +of media types can mean that different media types require different +formats. A common format is VFAT, and typically, this is used for +removable media to maintain compatibility with other systems. This +also means that long file names are supported.

    In Symbian +platform, format schemes are implemented by what are called file systems; +they are constructed as plugins to the file server. This means that +the file server itself is independent of the format scheme, and also +means that a phone manufacturer is free to add new file systems to +a handset. The ROM is an exception - it has its own file system built +into the main file server code.

    A file system must be associated +with a drive before the drive can be used. This is known as mounting +the drive, and is typically done at system boot time.

    In practice, +an application does not need to concern itself with the format scheme.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-314A8784-604E-509A-839E-38CEE280B67F_d0e231544_href.png Binary file Symbian3/PDK/Source/GUID-314A8784-604E-509A-839E-38CEE280B67F_d0e231544_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-314A8784-604E-509A-839E-38CEE280B67F_d0e237539_href.png Binary file Symbian3/PDK/Source/GUID-314A8784-604E-509A-839E-38CEE280B67F_d0e237539_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-314B1556-5CB5-4BCC-93C0-B22DB849D2D5.dita --- a/Symbian3/PDK/Source/GUID-314B1556-5CB5-4BCC-93C0-B22DB849D2D5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-314B1556-5CB5-4BCC-93C0-B22DB849D2D5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,7 +21,7 @@ Universal indicator pane. Indicators are placed side by side at the top (above the clock in the image on the right). - +

    The universal indicator pane is not accessible to applications.

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-314FAEB5-946C-4090-B6AA-1BEEC9BE8EFB.dita --- a/Symbian3/PDK/Source/GUID-314FAEB5-946C-4090-B6AA-1BEEC9BE8EFB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-314FAEB5-946C-4090-B6AA-1BEEC9BE8EFB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -311,10 +311,10 @@
  • The active scheduler is nested.

  • One or more high priority active objects are started (probably several times), which all make requests on a server.

  • -
  • The high priority active object(s) are serviced and immediately +

  • The high priority active object(s) are serviced and immediately restarted. This continues until there is no more work for the high priority active object(s) to do.

  • -
  • The low priority active object runs and un-nests the active +

  • The low priority active object runs and un-nests the active scheduler.

  • In a single core environment, the server always processes the client requests before the client can run any other code (because the server runs @@ -442,10 +442,10 @@ to ensure all kernel memory has been cleaned up.

    There are three possibilities to fix this problem:

    1. Recreate the thread with a different name.

    2. -
    3. Wait a "little bit" before recreating the thread (or performing +

    4. Wait a "little bit" before recreating the thread (or performing the heap check).

      This is almost always a bad idea as there is no way of knowing how long to wait and this may be different on any future system.

    5. -
    6. Wait for the object concerned to be completely destroyed.

    7. +
    8. Wait for the object concerned to be completely destroyed.

    In general, option 1 is preferred. For code that is likely to encounter the problem in practice, APIs should be provided to aid with creating objects with a unique name. For example, the TDynamicDfcQue and Kern::DynamicDfcQCreate APIs diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-31640F5C-ABF0-5BA5-BA77-4FCC63359E38.dita --- a/Symbian3/PDK/Source/GUID-31640F5C-ABF0-5BA5-BA77-4FCC63359E38.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-31640F5C-ABF0-5BA5-BA77-4FCC63359E38.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,7 +14,7 @@ used by several graphics components and their clients. The Graphics Utilities collection - + Graphics diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-316D7B85-F827-4479-B5EE-81F210614236_d0e13138_href.png Binary file Symbian3/PDK/Source/GUID-316D7B85-F827-4479-B5EE-81F210614236_d0e13138_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-316D7B85-F827-4479-B5EE-81F210614236_d0e13237_href.png Binary file Symbian3/PDK/Source/GUID-316D7B85-F827-4479-B5EE-81F210614236_d0e13237_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-316ED912-04F7-5613-942E-516C3AB01C49.dita --- a/Symbian3/PDK/Source/GUID-316ED912-04F7-5613-942E-516C3AB01C49.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-316ED912-04F7-5613-942E-516C3AB01C49.dita Fri Jul 16 17:23:46 2010 +0100 @@ -40,7 +40,7 @@ reverse order, starting with the parent domains and proceeding down the tree to the child domains.

    - +

    Domains are identified by a domain Id. This is an 8-bit wide number and is defined as being of type TDmDomainId. The Symbian platform diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3170E641-E3A9-58D5-82B9-391A2F5AC140.dita --- a/Symbian3/PDK/Source/GUID-3170E641-E3A9-58D5-82B9-391A2F5AC140.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3170E641-E3A9-58D5-82B9-391A2F5AC140.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,6 +12,6 @@ Privacy Data Types

    Purpose

    This document describes the classes and types of the Privacy Data Types that are used by the LBS Privacy Q&N Notifiers.

    Contents
    • Introduction

    • API description

      • CPosRequestor

      • CPosServiceRequestor

      • CPosContactRequestor

      • RPosRequestorStack

      • TPosRequestSource

      • TPosRequestDecision

      • TPosNotificationReason

      • TPosVerifyCancelReason

    • See also

    Introduction

    Figure 1 shows the Privacy Data Types within the Full LBS configuration. The Privacy Data Types are used to pass privacy request data and privacy response data between the LBS subsystem and licensee Privacy Q&N Notifier classes.

    For a privacy request passed from the LBS subsystem to a Privacy Q&N Notifier, the Privacy Data Types specify the agent that is making the request (the requester) and the type of the request. For a privacy response, the Privacy Data Types specify why a privacy request was accepted, rejected or cancelled by a user.

    Note that the Privacy Data Types are used only by the Privacy Q&N Notifiers API and are not used by the standard LBS Privacy Notifiers or the Privacy Controller, which are also shown in figure 1.

    Note also that although figure 1 shows a (partial) Full LBS Mode configuration, the Privacy Q&N Notifiers and their associated Privacy Data Types can also be included in the Standalone Privacy Mode configuration.

    See Privacy Q&N Notifiers for examples of how the Privacy Data Types are used.

    Figure 1. The Privacy Data Types and related LBS subsystem components. -
    API description

    Privacy Data Types class diagram

    Figure 2 shows the classes and types of the Privacy Data Types.

    +
    API description

    Privacy Data Types class diagram

    Figure 2 shows the classes and types of the Privacy Data Types.

    Figure 2. Classes and types of the Privacy Data Types. -

    List of Privacy Data Types classes and types

    The following table lists the main classes and types of the Privacy Data Types. Further details can be found by following the links to other sections of this document and to Symbian Developer Library reference documentation.

    The Privacy Data Types have publishedPartner interface access.

    Class name Description Header file

    RPosRequestorStack

    An array of CPosRequestor objects.

    EPos_RPosRequestorStack.h

    CPosRequestor

    The base class that represents an agent (such as a contact or service) involved in a privacy request. Derived classes are CPosServiceRequestor and CPosContactRequestor. A privacy requester is identified by a string which represents a contact number, URL, email address etc.

    EPos_CPosRequestor.h

    CPosServiceRequestor

    The derived class that represents a service privacy requester (such as a network service).

    EPos_CPosServiceRequestor.h

    CPosContactRequestor

    The derived class that represents a contact privacy requester (such as a phone number or email address).

    EPos_CPosContactRequestor.h

    TPosRequestSource

    Specifies the source of the privacy request.

    EPos_Privacy.h

    TPosRequestDecision

    Specifies if a privacy request was accepted or rejected by a Privacy Q&N notifier.

    EPos_Privacy.h

    TPosNotificationReason

    Specifies the reason why a privacy notification was sent into LBS.

    EPos_Privacy.h

    TPosVerifyCancelReason

    Specifies the reason why a privacy request was cancelled.

    EPos_Privacy.h

    Libraries

    The Privacy Data Types are packaged in eposprvtyp.dll. A client (a Privacy Q&N Notifier) links to eposprvtyp.lib.

    Capabilities

    Use of the Privacy Data Types requires no capabilities.

    CPosRequestor

    Purpose

    CPosRequestor is the base class that represents the agent (known as the requester) that is making a privacy request. Requesters are classified as either service or contact and these are represented by the derived classes CPosServiceRequestor and CPosContactRequestor.

    CPosRequestor has the following attributes:

    • The requester type

      CPosRequestor::TRequestorType specifies the type of requester: a service or contact.

    • The ID descriptor

      A descriptor variable specifies the ID of the requester.

    • The ID format

      CPosRequestor::TRequestorIdFormat specifies the type of data that the ID string contains, such as a name, a contact number or an email address.

    • The network type

      CPosRequestor::_TNetworkType specifies whether a request is received over a GSM network or SUPL.

    • The request type

      CPosRequestor::_TRequestType specifies if a request is single shot, periodic or an area event.

      Note that this property is not currently used within the LBS subsystem, but is defined for future use.

    Usage

    To send a privacy request to a Privacy Q&N Notifier the LBS subsystem instantiates one of the derived classes CPosServiceRequestor (for a request from a service) or CPosContactRequestor (for a request from a contact), setting the attributes listed above.

    Note that not all information about a privacy request that may be required by the notifier is passed to it in the CPosRequestor object. The enumerations TPosNotificationReason, TPosRequestSource and TPosRequestDecision shown in figure 1 also describe request data. These are set directly by the LBS subsystem on the Privacy Q&N notifier (derived from CPosPrivacyNotifier) when it is started. See Privacy Q&N Notifiers for more information.

    The LBS subsystem starts a Privacy Q&N Notifier plug-in to display the privacy request information to the user. The notifier extracts request information by calling:

    • CPosRequestor::RequestorType() to get the type of requester: a service or contact

    • CPosRequestor::RequestorIdString() to get the requester ID descriptor

    • CPosRequestor::RequestorIdFormat() to get the format of the requester ID contained in CPosRequestor::RequestorIdString()

    • CPosRequestor::NetworkType() to get the network type

    • CPosRequestor::RequestType() to get the type of request

    Information about the reason the notification was sent, the request source and the request timeout strategy is obtained directly from the CPosPrivacyNotifier derived notifier by calling:

    • CPosPrivacyNotifier::NotificationReason() to get the reason the notification request was sent

    • CPosPrivacyNotifier::RequestSource() to get the source of the request

    • CPosPrivacyNotifier::QueryTimeoutStrategy() to get the timeout strategy that was supplied as part of the privacy request. The strategy specifies whether a request should be accepted or rejected if the notifier times out.

    See Privacy Q&N Notifiers for more information about CPosPrivacyNotifier.

    CPosServiceRequestor

    Purpose

    CPosServiceRequestor is the derived class that represents a service privacy requester (such as a network service).

    Usage

    The LBS subsystem creates an instance of this class to pass information about a privacy request received from a service to a Privacy Q&N Notifier.

    The class adds the static constructors CPosServiceRequestor::NewL() and CPosServiceRequestor::NewLC() to the base class CPosRequestor.

    CPosContactRequestor

    Purpose

    CPosContactRequestor is the derived class that represents a contact privacy requester (such as a phone number or email address).

    Usage

    The LBS subsystem creates an instance of this class to pass information about a privacy request received from a contact (such as a telephone number or email address) to a Privacy Q&N Notifier.

    The class adds the static constructors CPosContactRequestor::NewL() and CPosContactRequestor::NewLC() to the base class CPosRequestor.

    RPosRequestorStack

    Purpose

    RPosRequestorStack is an array of CPosRequestor objects.

    Usage

    The LBS subsystem creates an RPosRequestorStack instance populated with CPosRequestor derived objects when a privacy request is received. This stack object is passed to a Privacy Q&N Notifier. See Privacy Q&N Notifiers for more information about the use of RPosRequestorStack.

    TPosRequestSource

    Purpose

    TPosRequestSource specifies the source of a privacy request. This enumeration defines two values for a network source and for an unknown source.

    Usage

    Set by the LBS subsystem on a Privacy Q&N notifier plug-in when it is started to specify the source of the request. CPosPrivacyNotifier::RequestSource() gets the value.

    TPosRequestDecision

    Purpose

    TPosRequestDecision specifies if a privacy request was accepted or rejected by a Privacy Q&N notifier.

    Usage

    • Set by the LBS subsystem to specify the privacy response that should be made if a Privacy Q&N notifier times out. CPosPrivacyNotifier::QueryTimeoutStrategy() gets the value which can be to either accept or reject the request.

    • Set by a Privacy Q&N Notifier to specify the privacy response. CPosPrivacyNotifier::LocationRequestDecision() gets the value set by the notifier.

    TPosNotificationReason

    Purpose

    TPosNotificationReason specifies the reason why a notification message was received from the network:

    A notification can be received for the following reasons:

    • A privacy verification (sent previously) has timed out and the user needs to be notified of this fact.

    • A location request was either accepted or rejected by the request source.

    • For an unknown reason.

    Usage

    Set by the LBS subsystem on a Privacy Q&N Notifier to specify why a privacy notification was received. The value is obtained from the notifier by calling CPosPrivacyNotifier::NotificationReason().

    TPosVerifyCancelReason

    Purpose

    TPosVerifyCancelReason specifies the reason why a privacy verification request was cancelled.

    Usage

    Set by the LBS subsystem on a Privacy Q&N Notifier to specify why a privacy verification request was cancelled. The value is obtained from the notifier by calling CPosPrivacyNotifier::CancelReason().

    \ No newline at end of file +

    List of Privacy Data Types classes and types

    The following table lists the main classes and types of the Privacy Data Types. Further details can be found by following the links to other sections of this document and to Symbian Developer Library reference documentation.

    The Privacy Data Types have publishedPartner interface access.

    Class name Description Header file

    RPosRequestorStack

    An array of CPosRequestor objects.

    EPos_RPosRequestorStack.h

    CPosRequestor

    The base class that represents an agent (such as a contact or service) involved in a privacy request. Derived classes are CPosServiceRequestor and CPosContactRequestor. A privacy requester is identified by a string which represents a contact number, URL, email address etc.

    EPos_CPosRequestor.h

    CPosServiceRequestor

    The derived class that represents a service privacy requester (such as a network service).

    EPos_CPosServiceRequestor.h

    CPosContactRequestor

    The derived class that represents a contact privacy requester (such as a phone number or email address).

    EPos_CPosContactRequestor.h

    TPosRequestSource

    Specifies the source of the privacy request.

    EPos_Privacy.h

    TPosRequestDecision

    Specifies if a privacy request was accepted or rejected by a Privacy Q&N notifier.

    EPos_Privacy.h

    TPosNotificationReason

    Specifies the reason why a privacy notification was sent into LBS.

    EPos_Privacy.h

    TPosVerifyCancelReason

    Specifies the reason why a privacy request was cancelled.

    EPos_Privacy.h

    Libraries

    The Privacy Data Types are packaged in eposprvtyp.dll. A client (a Privacy Q&N Notifier) links to eposprvtyp.lib.

    Capabilities

    Use of the Privacy Data Types requires no capabilities.

    CPosRequestor

    Purpose

    CPosRequestor is the base class that represents the agent (known as the requester) that is making a privacy request. Requesters are classified as either service or contact and these are represented by the derived classes CPosServiceRequestor and CPosContactRequestor.

    CPosRequestor has the following attributes:

    • The requester type

      CPosRequestor::TRequestorType specifies the type of requester: a service or contact.

    • The ID descriptor

      A descriptor variable specifies the ID of the requester.

    • The ID format

      CPosRequestor::TRequestorIdFormat specifies the type of data that the ID string contains, such as a name, a contact number or an email address.

    • The network type

      CPosRequestor::_TNetworkType specifies whether a request is received over a GSM network or SUPL.

    • The request type

      CPosRequestor::_TRequestType specifies if a request is single shot, periodic or an area event.

      Note that this property is not currently used within the LBS subsystem, but is defined for future use.

    Usage

    To send a privacy request to a Privacy Q&N Notifier the LBS subsystem instantiates one of the derived classes CPosServiceRequestor (for a request from a service) or CPosContactRequestor (for a request from a contact), setting the attributes listed above.

    Note that not all information about a privacy request that may be required by the notifier is passed to it in the CPosRequestor object. The enumerations TPosNotificationReason, TPosRequestSource and TPosRequestDecision shown in figure 1 also describe request data. These are set directly by the LBS subsystem on the Privacy Q&N notifier (derived from CPosPrivacyNotifier) when it is started. See Privacy Q&N Notifiers for more information.

    The LBS subsystem starts a Privacy Q&N Notifier plug-in to display the privacy request information to the user. The notifier extracts request information by calling:

    • CPosRequestor::RequestorType() to get the type of requester: a service or contact

    • CPosRequestor::RequestorIdString() to get the requester ID descriptor

    • CPosRequestor::RequestorIdFormat() to get the format of the requester ID contained in CPosRequestor::RequestorIdString()

    • CPosRequestor::NetworkType() to get the network type

    • CPosRequestor::RequestType() to get the type of request

    Information about the reason the notification was sent, the request source and the request timeout strategy is obtained directly from the CPosPrivacyNotifier derived notifier by calling:

    • CPosPrivacyNotifier::NotificationReason() to get the reason the notification request was sent

    • CPosPrivacyNotifier::RequestSource() to get the source of the request

    • CPosPrivacyNotifier::QueryTimeoutStrategy() to get the timeout strategy that was supplied as part of the privacy request. The strategy specifies whether a request should be accepted or rejected if the notifier times out.

    See Privacy Q&N Notifiers for more information about CPosPrivacyNotifier.

    CPosServiceRequestor

    Purpose

    CPosServiceRequestor is the derived class that represents a service privacy requester (such as a network service).

    Usage

    The LBS subsystem creates an instance of this class to pass information about a privacy request received from a service to a Privacy Q&N Notifier.

    The class adds the static constructors CPosServiceRequestor::NewL() and CPosServiceRequestor::NewLC() to the base class CPosRequestor.

    CPosContactRequestor

    Purpose

    CPosContactRequestor is the derived class that represents a contact privacy requester (such as a phone number or email address).

    Usage

    The LBS subsystem creates an instance of this class to pass information about a privacy request received from a contact (such as a telephone number or email address) to a Privacy Q&N Notifier.

    The class adds the static constructors CPosContactRequestor::NewL() and CPosContactRequestor::NewLC() to the base class CPosRequestor.

    RPosRequestorStack

    Purpose

    RPosRequestorStack is an array of CPosRequestor objects.

    Usage

    The LBS subsystem creates an RPosRequestorStack instance populated with CPosRequestor derived objects when a privacy request is received. This stack object is passed to a Privacy Q&N Notifier. See Privacy Q&N Notifiers for more information about the use of RPosRequestorStack.

    TPosRequestSource

    Purpose

    TPosRequestSource specifies the source of a privacy request. This enumeration defines two values for a network source and for an unknown source.

    Usage

    Set by the LBS subsystem on a Privacy Q&N notifier plug-in when it is started to specify the source of the request. CPosPrivacyNotifier::RequestSource() gets the value.

    TPosRequestDecision

    Purpose

    TPosRequestDecision specifies if a privacy request was accepted or rejected by a Privacy Q&N notifier.

    Usage

    • Set by the LBS subsystem to specify the privacy response that should be made if a Privacy Q&N notifier times out. CPosPrivacyNotifier::QueryTimeoutStrategy() gets the value which can be to either accept or reject the request.

    • Set by a Privacy Q&N Notifier to specify the privacy response. CPosPrivacyNotifier::LocationRequestDecision() gets the value set by the notifier.

    TPosNotificationReason

    Purpose

    TPosNotificationReason specifies the reason why a notification message was received from the network:

    A notification can be received for the following reasons:

    • A privacy verification (sent previously) has timed out and the user needs to be notified of this fact.

    • A location request was either accepted or rejected by the request source.

    • For an unknown reason.

    Usage

    Set by the LBS subsystem on a Privacy Q&N Notifier to specify why a privacy notification was received. The value is obtained from the notifier by calling CPosPrivacyNotifier::NotificationReason().

    TPosVerifyCancelReason

    Purpose

    TPosVerifyCancelReason specifies the reason why a privacy verification request was cancelled.

    Usage

    Set by the LBS subsystem on a Privacy Q&N Notifier to specify why a privacy verification request was cancelled. The value is obtained from the notifier by calling CPosPrivacyNotifier::CancelReason().

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-31A6FA69-418D-5F8D-A0FB-6A99AA8CC4E1_d0e107105_href.png Binary file Symbian3/PDK/Source/GUID-31A6FA69-418D-5F8D-A0FB-6A99AA8CC4E1_d0e107105_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-31A6FA69-418D-5F8D-A0FB-6A99AA8CC4E1_d0e109548_href.png Binary file Symbian3/PDK/Source/GUID-31A6FA69-418D-5F8D-A0FB-6A99AA8CC4E1_d0e109548_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-31CE66F2-B36C-56ED-A399-BA9EFA179DED_d0e302614_href.png Binary file Symbian3/PDK/Source/GUID-31CE66F2-B36C-56ED-A399-BA9EFA179DED_d0e302614_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-31CE66F2-B36C-56ED-A399-BA9EFA179DED_d0e308606_href.png Binary file Symbian3/PDK/Source/GUID-31CE66F2-B36C-56ED-A399-BA9EFA179DED_d0e308606_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3239641A-2D13-56D7-B18D-6E65B6B24886_d0e489632_href.png Binary file Symbian3/PDK/Source/GUID-3239641A-2D13-56D7-B18D-6E65B6B24886_d0e489632_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3239641A-2D13-56D7-B18D-6E65B6B24886_d0e495453_href.png Binary file Symbian3/PDK/Source/GUID-3239641A-2D13-56D7-B18D-6E65B6B24886_d0e495453_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-323A76FE-3147-5E54-9282-B80D30246D8F_d0e449908_href.png Binary file Symbian3/PDK/Source/GUID-323A76FE-3147-5E54-9282-B80D30246D8F_d0e449908_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-323A76FE-3147-5E54-9282-B80D30246D8F_d0e455753_href.png Binary file Symbian3/PDK/Source/GUID-323A76FE-3147-5E54-9282-B80D30246D8F_d0e455753_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3248A2B1-54D0-56E3-B770-DC595B01EA04_d0e243585_href.png Binary file Symbian3/PDK/Source/GUID-3248A2B1-54D0-56E3-B770-DC595B01EA04_d0e243585_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3248A2B1-54D0-56E3-B770-DC595B01EA04_d0e249596_href.png Binary file Symbian3/PDK/Source/GUID-3248A2B1-54D0-56E3-B770-DC595B01EA04_d0e249596_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-329833DA-CB6E-4715-A8E6-AD838DD5A909_d0e1505_href.png Binary file Symbian3/PDK/Source/GUID-329833DA-CB6E-4715-A8E6-AD838DD5A909_d0e1505_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-329833DA-CB6E-4715-A8E6-AD838DD5A909_d0e1509_href.png Binary file Symbian3/PDK/Source/GUID-329833DA-CB6E-4715-A8E6-AD838DD5A909_d0e1509_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-32A0AE67-0AC4-534F-B978-6D82A205EA48_d0e594252_href.jpg Binary file Symbian3/PDK/Source/GUID-32A0AE67-0AC4-534F-B978-6D82A205EA48_d0e594252_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-32A0AE67-0AC4-534F-B978-6D82A205EA48_d0e622146_href.jpg Binary file Symbian3/PDK/Source/GUID-32A0AE67-0AC4-534F-B978-6D82A205EA48_d0e622146_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C.dita --- a/Symbian3/PDK/Source/GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-32C1FC8B-F7D2-5275-BDF2-0D662551294C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -114,7 +114,7 @@ searching and sorting messages:

    High level class diagram of new search-sort API - +
    • CMsvSearchSortOperation

      The CMsvSearchSortOperation class is used in the client application for enhanced search-sort operations on the message store.

      This class can be used for the following:

        diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-32C58139-E341-5A15-B20C-D3EA4117AC6E_d0e373296_href.png Binary file Symbian3/PDK/Source/GUID-32C58139-E341-5A15-B20C-D3EA4117AC6E_d0e373296_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-32C58139-E341-5A15-B20C-D3EA4117AC6E_d0e379144_href.png Binary file Symbian3/PDK/Source/GUID-32C58139-E341-5A15-B20C-D3EA4117AC6E_d0e379144_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-32D39AB1-D1B0-5F44-8226-0777B8010C7D_d0e137721_href.png Binary file Symbian3/PDK/Source/GUID-32D39AB1-D1B0-5F44-8226-0777B8010C7D_d0e137721_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-32D39AB1-D1B0-5F44-8226-0777B8010C7D_d0e139970_href.png Binary file Symbian3/PDK/Source/GUID-32D39AB1-D1B0-5F44-8226-0777B8010C7D_d0e139970_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-32E29020-1956-461A-B79A-1492E06049E7.dita --- a/Symbian3/PDK/Source/GUID-32E29020-1956-461A-B79A-1492E06049E7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-32E29020-1956-461A-B79A-1492E06049E7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,60 +11,24 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Symbian GuideThe Symbian Guide describes the architecture and functionality of the platform, and provides guides on using its APIs. -

        Application Framework Guide

        -

        Application -Installation Guide

        -

        Cellular -Baseband Services Guide

        -

        Classic -UI Guide

        -

        Common Email -Guide

        -

        Communications -Framework Guide

        -

        Device Services -Guide

        -

        Digital -rights management

        -

        Generic -Application Support Guide

        -

        Generic -OS Services Guide

        -

        Graphics -Guide

        -

        High Level -Internet Protocols Guide

        -

        IP Connection -Management

        -

        Kernel and -Hardware Services Guide

        -

        Location -Based Services (LBS) Guide

        -

        Messaging -Application Guide

        -

        Messaging -Middleware Guide

        -

        Multimedia -Guide

        -

        Multimedia -Protocols Guide

        -

        Networking -Services Guide

        -

        Persistent -Data Services Guide

        -

        PIM Application -Engines and Services Guide

        -

        Remote Connectivity -Guide

        -

        OS Security -Guide

        -

        Security -Services Guide

        -

        Short Link -Services Guide

        -

        Text and -Localization Guide

        -

        Web Guide

        -

        XML Services -Guide

        + + +

        Application Framework +Guide

        Application Installation Guide

        Cellular Baseband +Services Guide

        Classic UI Guide

        Common +Email Guide

        Communications Framework +Guide

        Contacts Guide

        Device Services Guide

        Digital +rights management

        Generic Application +Support Guide

        Generic OS Services +Guide

        Graphics Guide

        High Level Internet +Protocols Guide

        IP Connection Management

        Kernel +and Hardware Services Guide

        Location Based Services +(LBS) Guide

        Messaging Application +Guide

        Messaging Middleware Guide

        Multimedia Guide

        Multimedia +Protocols Guide

        Networking Services +Guide

        Organizer Guide

        OS Security Guide

        Persistent +Data Services Guide

        Remote Connectivity +Guide

        Security Services Guide

        Short Link Services +Guide

        Text and Localization Guide

        Web Guide

        XML Services +Guide

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-32F00078-6084-5288-9D3F-9F8D70514799.dita --- a/Symbian3/PDK/Source/GUID-32F00078-6084-5288-9D3F-9F8D70514799.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ - - - - - -RESOURCE -statement -<resource-statement> -resource-statement ::= -RESOURCE <struct-name> [ <resource-name> ] { <resource-initialiser-list> } -

        The RESOURCE statement is used to generate a resource -in the resource file. The statement specifies three things:

        -
          -
        • a struct-name which -denotes the structure that will be used for the resource

          It must have -been defined in a previous STRUCT statement and must be in -upper case.

        • -
        • an optional resource-name which -identifies the resource

          The resource-name must be -in lower case.

          The resource-name causes a symbolic -constant to be generated in the resource compiler’s output header file, so -that a resource

          RESOURCE TEST my_test { /* etc */ }

          will -result in a definition of the form

          #define MY_TEST 1

          in -the generated header file.

          The default ID for the first resource defined -in the file is one with subsequent resources’ IDs generated in ascending sequence. -See Resource file definition for -more information on how resource IDs are generated.

          If no resource -name is specified then the resource is generated in the object file and assigned -a resource ID as usual, but will not be published in the header file. Anonymous -resources are used mainly for playback scripts where the resources are read -in sequentially by default, so that assigning names to them would be superfluous.

          The resource-name may -also be used by the resource compiler for LINK and LLINK members -— see Resource identifiers -for LINKs and LLINKs.

        • -
        • initialisation for members -of the resource struct, where their default values are not appropriate

        • -
        -

        As an example, given the struct definition

        STRUCT NCEDIT - { - WORD current; - WORD low; - WORD high=65535; - }

        you could define a resource:

        RESOURCE NCEDIT memory_size - { - low=640; - high=1024; - }

        Thus, in the resource file, current has -the value compiler default value of 0, low has the value -640 (specified in the resource definition) and high has the -value 1024 (specified in the resource definition, overriding the default for -the struct type).

        -
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-33108CC9-3FF7-4076-A512-FB6F2F0BCC0D.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-33108CC9-3FF7-4076-A512-FB6F2F0BCC0D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,65 @@ + + + + + +Retrieving application information using filtersThis tutorial describes how application information can +be retrieved from the SCR using filters. +

        The Client +applications must link against scrclient.dll.

        + +Connect +to the SCR server. +#include <usif/scr/scr.h> +Usif::RSoftwareComponentRegistry scrSession; +scrSession.Connect(); + + +Create an +object of RApplicationInfoView. +RApplicationInfoView subSession; + +Create a +filter object of CAppInfoFilter. +CAppInfoFilter* infoFilter; +infoFilter = CAppInfoFilter::NewL(); + + +Set the +filter object properties. +// embeddability filter (the extent to which the application can be embedded) +// and screen mode (size of the screen) +// The filter used below is used to list applications filtered by whether they are +// embeddable and have a screen mode value of zero +Usif::TEmbeddableFilter embedibilityFilter; +embedibilityFilter.AddEmbeddability(EEmbeddable) +infoFilter->SetEmbeddabilityFilterWithScreenMode(embedibilityFilter,0); + + +Open a RApplicationInfoView subsession with the filter. +subSession.OpenViewL(scrSession,infoFilter); + + +Retrieve +the information using RApplicationInfoView::GetNextAppInfoL(). +// GetNextAppInfoL() takes two parameters. The number of entries to be fetched +// in a single call and an output parameter of type RPointerArray +// for returning the array. +TInt noOfEntries = 5; +RPointerArray<TAppRegInfo> infoSet; +do { + ..... + ..... + infoSet.ResetAndDestroy(); + subSession.GetNextAppInfoL(noOfEntries, infoSet); + }while(0 != infoSet.Count()); + + + +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3314123F-205D-5E05-9041-DB9836B7812B.dita --- a/Symbian3/PDK/Source/GUID-3314123F-205D-5E05-9041-DB9836B7812B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3314123F-205D-5E05-9041-DB9836B7812B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -39,8 +39,7 @@ security capabilities.

    Related APIs

    mkdir(const char *,mode_t)

    fopen(const char *, const char *)

    -
    Build

    The Symbian -build process describes how to build this example application.

    The example builds an executable called fileaccessexample.exe in the standard locations.

    To run the example, start fileaccessexample.exe from the file system or from your +

    Build

    The example builds an executable called fileaccessexample.exe in the standard locations.

    To run the example, start fileaccessexample.exe from the file system or from your IDE. After launching the executable, depending on the emulator you are using, you may need to navigate away from the application launcher or shell screen to view the console.

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-331655D7-2D5F-55F9-99A4-5FFA40877C26_d0e229785_href.png Binary file Symbian3/PDK/Source/GUID-331655D7-2D5F-55F9-99A4-5FFA40877C26_d0e229785_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-331655D7-2D5F-55F9-99A4-5FFA40877C26_d0e235780_href.png Binary file Symbian3/PDK/Source/GUID-331655D7-2D5F-55F9-99A4-5FFA40877C26_d0e235780_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3319E01A-F500-5F5C-9798-351C6F3EC583.dita --- a/Symbian3/PDK/Source/GUID-3319E01A-F500-5F5C-9798-351C6F3EC583.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3319E01A-F500-5F5C-9798-351C6F3EC583.dita Fri Jul 16 17:23:46 2010 +0100 @@ -22,7 +22,7 @@ Module are stored:

    • The GPS/A-GPS PSY registers itself as a PSY with the LBS subsystem using a Central Repository initialisation -file with keys defined by the Positioning +file with keys defined by the Positioning Plug-in Information API. The GPS PSY and the A-GPS PSY have separate initialisation files.

    • The A-GPS Location Manager @@ -88,7 +88,7 @@ 0xf string "\\resource\\lbsagpspsy_name.rsc" 0 cap_rd=alwayspass cap_wr=alwaysfail 0x10000000 int 2000000 0 cap_rd=alwayspass cap_wr=alwaysfail -For a full description of the meanings of these keys, see Positioning +For a full description of the meanings of these keys, see Positioning Plug-in Information API. The important keys for this task are as shown in the following table: diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-331DB770-D699-58CB-9BA6-1AE6F08D7050_d0e449317_href.png Binary file Symbian3/PDK/Source/GUID-331DB770-D699-58CB-9BA6-1AE6F08D7050_d0e449317_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-331DB770-D699-58CB-9BA6-1AE6F08D7050_d0e455162_href.png Binary file Symbian3/PDK/Source/GUID-331DB770-D699-58CB-9BA6-1AE6F08D7050_d0e455162_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-33241691-7362-5FA1-A3B0-C3FA550E5E09.dita --- a/Symbian3/PDK/Source/GUID-33241691-7362-5FA1-A3B0-C3FA550E5E09.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-33241691-7362-5FA1-A3B0-C3FA550E5E09.dita Fri Jul 16 17:23:46 2010 +0100 @@ -68,7 +68,7 @@ and embedded applications to handle their data storage through stores.

      Stores are also the basis of the relational database provided by DBMS.

      Store inheritance diagram - +
      APIs
      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-33716081-180C-5DDB-A5D2-0EC61357250D.dita --- a/Symbian3/PDK/Source/GUID-33716081-180C-5DDB-A5D2-0EC61357250D.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ - - - - - -How -to use the post-linker (elf2e32) -

      The post-linker is a Symbian-specific build tool. Its principal function -is to create executables (DLLs and EXEs) in the particular format required -by Symbian platform, known as the E32Image format. Commercial compiler -and linkers, such as ARM's RVCT and GNU GCC, cannot directly generate that -format. Such compilers do however support a standard output format called -the Executable and Linking Format (ELF) (defined at http://www.caldera.com/developers/gabi/). A tool is -therefore needed to convert from the ELF format into the E32Image format, -and this is the key role of the post-linker. The tool also contains the functionality -to maintain and create the DEF files used for freezing the exports of libraries.

      -

      In ordinary use, the post-linker is not used directly by users. It is called -from the makefiles generated by abld on the command line, -or from the build commands of an IDE.

      -

      The tool can also be used to output -a description of an existing E32Image file for analysis.

      -

      This section contains the following topics:

      -
        -
      • Post Linker Overview
      • -
      • How to create executables
      • -
      • How to create a -DSO library file from a DEF file
      • -
      • How to dump an -E32Image file
      • -
      -
      -elf2e32 command -syntax -Troubleshooting -post-linker (elf2e32) errors -
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-337FA49D-DE53-5568-9A5C-D6AE3F25E0A6_d0e106720_href.png Binary file Symbian3/PDK/Source/GUID-337FA49D-DE53-5568-9A5C-D6AE3F25E0A6_d0e106720_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-337FA49D-DE53-5568-9A5C-D6AE3F25E0A6_d0e109163_href.png Binary file Symbian3/PDK/Source/GUID-337FA49D-DE53-5568-9A5C-D6AE3F25E0A6_d0e109163_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e100308_href.png Binary file Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e100308_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e101270_href.png Binary file Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e101270_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e64164_href.png Binary file Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e64164_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e68387_href.png Binary file Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e68387_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e79254_href.png Binary file Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e79254_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e79656_href.png Binary file Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e79656_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e83452_href.png Binary file Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e83452_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e83854_href.png Binary file Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e83854_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e96189_href.png Binary file Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e96189_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e97191_href.png Binary file Symbian3/PDK/Source/GUID-3382507E-1B21-418C-A908-DD3F688C0672_d0e97191_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3385079E-84F4-534F-B937-BD3A568D71BC-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-3-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-3385079E-84F4-534F-B937-BD3A568D71BC-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-3-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,110 @@ + + + + + +Password +Based Encryption (PBE) example code +

      This example covers:

      +
        +
      • Encrypting some data with a password and writing it to a file

      • +
      • Reading the data back from the file and decrypting it with the same password.

      • +
      +

      This example code is for reference only - it would be better to use:

      +
        +
      • Secure +stream example code

      • +
      • Secure +store example code

      • +
      +
      Encrypting +data with a password and writing it to a file
        +
      • Supporting +code for this example

      • +
      +void CPBEExample::WriteEncryptedDataL(const TDesC8& aInput, const TDesC& aFilename, const TDesC& aPassword) + { + // Open a stream to the output file + RFileWriteStream writeStream; + User::LeaveIfError(writeStream.Replace(iFs, aFilename, EFileShareExclusive | EFileWrite)); + CleanupClosePushL(writeStream); + + // Create a CPBEncryptElement object, passing details of the encryption we + // are using and the user's password + CPBEncryptElement* encryption = CPBEncryptElement::NewLC(aPassword, ECipherDES_CBC); + + // This is used to create a CPBEncryptor object + CPBEncryptor* encryptor = encryption->NewEncryptLC(); + + // Create a buffer of appropriate size to hold the ciphertext + HBufC8* ciphertextTemp = HBufC8::NewLC(encryptor->MaxFinalOutputLength(aInput.Length())); + TPtr8 ciphertext = ciphertextTemp->Des(); + + // Encrypt the input data into the ciphertext buffer + encryptor->ProcessFinalL(aInput, ciphertext); + + // Store encryption data. This contains details of the encryption used (e.g., + // cipher, key size) as well as things like the salt. This must be stored + // along with the encrypted data, otherwise it is not possible to decrypt it + // again! + writeStream << encryption->EncryptionData(); + + // Store the ciphertext + writeStream << ciphertext; + + // Commit the stream + writeStream.CommitL(); + + // Free memory (writeStream, encryption, encryptor, ciphertextTemp) + CleanupStack::PopAndDestroy(4, &writeStream); + } +
      +
      Reading data +from a file and decrypting it
        +
      • Supporting +code for this example

      • +
      +HBufC8* CPBEExample::ReadEncryptedDataLC(const TDesC& aFilename, const TDesC& aPassword) + { + // Open a stream to the input file + RFileReadStream readStream; + User::LeaveIfError(readStream.Open(iFs, aFilename, EFileRead)); + CleanupClosePushL(readStream); + + // Read the encryption data from the file + CPBEncryptionData* encryptionData = CPBEncryptionData::NewLC(readStream); + + // Recreate the CPBEncryptElement object, using the encryption data from the + // file and the user's password. This will leave with KErrBadPassphrase if + // the password is wrong. + CPBEncryptElement* encryption = CPBEncryptElement::NewLC(*encryptionData, aPassword); + + // This is used to create a CPBDecryptor object + CPBDecryptor* decryptor = encryption->NewDecryptLC(); + + // Read the ciphertext + HBufC8* ciphertext = HBufC8::NewLC(readStream, KMaxTInt); + + // Allocate a buffer for the plaintext (this will be returned to the caller) + HBufC8* plaintextBuf = HBufC8::NewLC(decryptor->MaxFinalOutputLength(ciphertext->Length())); + TPtr8 plaintext = plaintextBuf->Des(); + + // Decrypt the data + decryptor->ProcessFinalL(*ciphertext, plaintext); + + // Free memory (readStream, encryptionData, encryption, decryptor, ciphertext, plaintext) + CleanupStack::Pop(plaintextBuf); // don't free this + CleanupStack::PopAndDestroy(5, &readStream); + CleanupStack::PushL(plaintextBuf); + + // Return plaintext to the caller + return plaintextBuf; + } +
      +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3385079E-84F4-534F-B937-BD3A568D71BC-GENID-1-12-1-26-1-1-9-1-12-1-3-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-3385079E-84F4-534F-B937-BD3A568D71BC-GENID-1-12-1-26-1-1-9-1-12-1-3-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,110 @@ + + + + + +Password +Based Encryption (PBE) example code +

      This example covers:

      +
        +
      • Encrypting some data with a password and writing it to a file

      • +
      • Reading the data back from the file and decrypting it with the same password.

      • +
      +

      This example code is for reference only - it would be better to use:

      +
        +
      • Secure +stream example code

      • +
      • Secure +store example code

      • +
      +
      Encrypting +data with a password and writing it to a file
        +
      • Supporting +code for this example

      • +
      +void CPBEExample::WriteEncryptedDataL(const TDesC8& aInput, const TDesC& aFilename, const TDesC& aPassword) + { + // Open a stream to the output file + RFileWriteStream writeStream; + User::LeaveIfError(writeStream.Replace(iFs, aFilename, EFileShareExclusive | EFileWrite)); + CleanupClosePushL(writeStream); + + // Create a CPBEncryptElement object, passing details of the encryption we + // are using and the user's password + CPBEncryptElement* encryption = CPBEncryptElement::NewLC(aPassword, ECipherDES_CBC); + + // This is used to create a CPBEncryptor object + CPBEncryptor* encryptor = encryption->NewEncryptLC(); + + // Create a buffer of appropriate size to hold the ciphertext + HBufC8* ciphertextTemp = HBufC8::NewLC(encryptor->MaxFinalOutputLength(aInput.Length())); + TPtr8 ciphertext = ciphertextTemp->Des(); + + // Encrypt the input data into the ciphertext buffer + encryptor->ProcessFinalL(aInput, ciphertext); + + // Store encryption data. This contains details of the encryption used (e.g., + // cipher, key size) as well as things like the salt. This must be stored + // along with the encrypted data, otherwise it is not possible to decrypt it + // again! + writeStream << encryption->EncryptionData(); + + // Store the ciphertext + writeStream << ciphertext; + + // Commit the stream + writeStream.CommitL(); + + // Free memory (writeStream, encryption, encryptor, ciphertextTemp) + CleanupStack::PopAndDestroy(4, &writeStream); + } +
      +
      Reading data +from a file and decrypting it
        +
      • Supporting +code for this example

      • +
      +HBufC8* CPBEExample::ReadEncryptedDataLC(const TDesC& aFilename, const TDesC& aPassword) + { + // Open a stream to the input file + RFileReadStream readStream; + User::LeaveIfError(readStream.Open(iFs, aFilename, EFileRead)); + CleanupClosePushL(readStream); + + // Read the encryption data from the file + CPBEncryptionData* encryptionData = CPBEncryptionData::NewLC(readStream); + + // Recreate the CPBEncryptElement object, using the encryption data from the + // file and the user's password. This will leave with KErrBadPassphrase if + // the password is wrong. + CPBEncryptElement* encryption = CPBEncryptElement::NewLC(*encryptionData, aPassword); + + // This is used to create a CPBDecryptor object + CPBDecryptor* decryptor = encryption->NewDecryptLC(); + + // Read the ciphertext + HBufC8* ciphertext = HBufC8::NewLC(readStream, KMaxTInt); + + // Allocate a buffer for the plaintext (this will be returned to the caller) + HBufC8* plaintextBuf = HBufC8::NewLC(decryptor->MaxFinalOutputLength(ciphertext->Length())); + TPtr8 plaintext = plaintextBuf->Des(); + + // Decrypt the data + decryptor->ProcessFinalL(*ciphertext, plaintext); + + // Free memory (readStream, encryptionData, encryption, decryptor, ciphertext, plaintext) + CleanupStack::Pop(plaintextBuf); // don't free this + CleanupStack::PopAndDestroy(5, &readStream); + CleanupStack::PushL(plaintextBuf); + + // Return plaintext to the caller + return plaintextBuf; + } +
      +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3385079E-84F4-534F-B937-BD3A568D71BC.dita --- a/Symbian3/PDK/Source/GUID-3385079E-84F4-534F-B937-BD3A568D71BC.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ - - - - - -Password -Based Encryption (PBE) example code -

      This example covers:

      -
        -
      • Encrypting some data with a password and writing it to a file

      • -
      • Reading the data back from the file and decrypting it with the same password.

      • -
      -

      This example code is for reference only - it would be better to use:

      -
        -
      • Secure -stream example code

      • -
      • Secure -store example code

      • -
      -
      Encrypting -data with a password and writing it to a file
        -
      • Supporting -code for this example

      • -
      -void CPBEExample::WriteEncryptedDataL(const TDesC8& aInput, const TDesC& aFilename, const TDesC& aPassword) - { - // Open a stream to the output file - RFileWriteStream writeStream; - User::LeaveIfError(writeStream.Replace(iFs, aFilename, EFileShareExclusive | EFileWrite)); - CleanupClosePushL(writeStream); - - // Create a CPBEncryptElement object, passing details of the encryption we - // are using and the user's password - CPBEncryptElement* encryption = CPBEncryptElement::NewLC(aPassword, ECipherDES_CBC); - - // This is used to create a CPBEncryptor object - CPBEncryptor* encryptor = encryption->NewEncryptLC(); - - // Create a buffer of appropriate size to hold the ciphertext - HBufC8* ciphertextTemp = HBufC8::NewLC(encryptor->MaxFinalOutputLength(aInput.Length())); - TPtr8 ciphertext = ciphertextTemp->Des(); - - // Encrypt the input data into the ciphertext buffer - encryptor->ProcessFinalL(aInput, ciphertext); - - // Store encryption data. This contains details of the encryption used (e.g., - // cipher, key size) as well as things like the salt. This must be stored - // along with the encrypted data, otherwise it is not possible to decrypt it - // again! - writeStream << encryption->EncryptionData(); - - // Store the ciphertext - writeStream << ciphertext; - - // Commit the stream - writeStream.CommitL(); - - // Free memory (writeStream, encryption, encryptor, ciphertextTemp) - CleanupStack::PopAndDestroy(4, &writeStream); - } -
      -
      Reading data -from a file and decrypting it
        -
      • Supporting -code for this example

      • -
      -HBufC8* CPBEExample::ReadEncryptedDataLC(const TDesC& aFilename, const TDesC& aPassword) - { - // Open a stream to the input file - RFileReadStream readStream; - User::LeaveIfError(readStream.Open(iFs, aFilename, EFileRead)); - CleanupClosePushL(readStream); - - // Read the encryption data from the file - CPBEncryptionData* encryptionData = CPBEncryptionData::NewLC(readStream); - - // Recreate the CPBEncryptElement object, using the encryption data from the - // file and the user's password. This will leave with KErrBadPassphrase if - // the password is wrong. - CPBEncryptElement* encryption = CPBEncryptElement::NewLC(*encryptionData, aPassword); - - // This is used to create a CPBDecryptor object - CPBDecryptor* decryptor = encryption->NewDecryptLC(); - - // Read the ciphertext - HBufC8* ciphertext = HBufC8::NewLC(readStream, KMaxTInt); - - // Allocate a buffer for the plaintext (this will be returned to the caller) - HBufC8* plaintextBuf = HBufC8::NewLC(decryptor->MaxFinalOutputLength(ciphertext->Length())); - TPtr8 plaintext = plaintextBuf->Des(); - - // Decrypt the data - decryptor->ProcessFinalL(*ciphertext, plaintext); - - // Free memory (readStream, encryptionData, encryption, decryptor, ciphertext, plaintext) - CleanupStack::Pop(plaintextBuf); // don't free this - CleanupStack::PopAndDestroy(5, &readStream); - CleanupStack::PushL(plaintextBuf); - - // Return plaintext to the caller - return plaintextBuf; - } -
      -
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-33BACB23-5BEB-5A1A-85B2-71E6AA7730C4.dita --- a/Symbian3/PDK/Source/GUID-33BACB23-5BEB-5A1A-85B2-71E6AA7730C4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-33BACB23-5BEB-5A1A-85B2-71E6AA7730C4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Sending Location to a Remote Party - OverviewLBS allows a user to send their location to a remote party over a network.
      Purpose

      This document describes the Transmit Location API, which allows client applications to send location data to remote parties.

      Key concepts

      Transmit position server

      The LBS Symbian server that sends position data to a remote location server in the network. Multiple applications can use the server simultaneously as transmit location requests are queued and prioritised. The Transmit Location API is the client application view of the transmit position server.

      Remote party

      The remote destination to which the location is sent. This may be identified by a phone number, email address or web service URL.

      Remote location server

      The network server that receives the location data sent from the handset. It is the first stage in routing the location data message to the destination remote party.

      X3P request

      Transmit to third party request. The request made by a client application to calculate the mobile device location and to send it to a remote party (the 'third party'). More formally known as MO-LR (transfer to third party).

      API summary

      The Transmit Location API consists of three classes:

      • RLbsTransmitPositionServer

        Client applications use this class to create a session with the transmit position server.

      • RLbsTransmitPosition

        Applications use this class to create a subsession with the transmit position server. Applications use the subsession to make requests to send location data to a remote location server.

      • TLbsTransmitPositionOptions is used to set a timeout on sending the location. If location data cannot be sent before the timeout expires then the send request is cancelled.

      Figure 1 shows the three classes.

      Figure 1. Classes used to send location to a remote server -

      To send location, an application must have the WriteDeviceData and NetworkServices capabilities.

      The three classes of the Transmit Location API are defined in the file LbsX3P.h. Client applications link against Lbsx3p.lib.

      Sending location data

      Applications call RLbsTransmitPosition::TransmitPosition() to send location data to a remote location server. TransmitPosition() makes an asynchronous service request and calling applications pass a TRequestStatus parameter to be notified of completion.

      To calculate the device location, LBS may obtain position data from the network and/or from GPS hardware. The exact sequence of events is dependent upon which positioning modules are installed in the device and the quality profile that is configured for use with X3P requests. See LBS administration and LBS integration and configuration for more information about configuring LBS and quality profiles.

      TransmitPosition()

      There are two TransmitPosition() methods. To send the device location, an application calls one of them:

      • void TransmitPosition(const TDesC& aDestinationID,TUint +

        To send location, an application must have the WriteDeviceData and NetworkServices capabilities.

        The three classes of the Transmit Location API are defined in the file LbsX3P.h. Client applications link against Lbsx3p.lib.

        Sending location data

        Applications call RLbsTransmitPosition::TransmitPosition() to send location data to a remote location server. TransmitPosition() makes an asynchronous service request and calling applications pass a TRequestStatus parameter to be notified of completion.

        To calculate the device location, LBS may obtain position data from the network and/or from GPS hardware. The exact sequence of events is dependent upon which positioning modules are installed in the device and the quality profile that is configured for use with X3P requests. See LBS administration and LBS integration and configuration for more information about configuring LBS and quality profiles.

        TransmitPosition()

        There are two TransmitPosition() methods. To send the device location, an application calls one of them:

        • void TransmitPosition(const TDesC& aDestinationID,TUint aTransmitPriority, TRequestStatus& aTransmittedPosStatus, TPositionInfo& aTransmittedPosInfo)

          This method takes four parameters:

          • aDestinationID is the phone number, email address or URL to which the device location is to be sent.

          • aTransmitPriority is the priority of the request.

          • aTransmittedPosStatus is a TRequestStatus variable from the calling object. This variable is used to notify when the location data is sent (or a failure or timeout occurs).

          • aTransmittedPosInfo is used to access the location data that is sent to the remote party.

          The calling application receives only one notification of completion (through aTransmittedPosStatus) when the calculated location is sent to the network (or there is a failure or timeout). An application calls this TransmitPosition() method when it requires only notification of the final state of its send location request.

        • void TransmitPosition(const TDesC& aDestinationID,TUint aTransmitPriority, TRequestStatus& aRefPosStatus, TPositionInfo& diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-33D50AB9-AFA8-521F-8A85-031C24EA7D25.dita --- a/Symbian3/PDK/Source/GUID-33D50AB9-AFA8-521F-8A85-031C24EA7D25.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-33D50AB9-AFA8-521F-8A85-031C24EA7D25.dita Fri Jul 16 17:23:46 2010 +0100 @@ -23,7 +23,7 @@ Framework and the XML DOM Engine.

          Package diagram for the libxml2 component - +

          The libxml2 sub-component provides direct access to the C API of the standard libxml2 library.

          The Utilities sub-component provides object-oriented access to the C functions: it also implements the resource diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3457B9BC-2F8F-55C1-9B5F-FA210D3439C6_d0e167942_href.png Binary file Symbian3/PDK/Source/GUID-3457B9BC-2F8F-55C1-9B5F-FA210D3439C6_d0e167942_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3457B9BC-2F8F-55C1-9B5F-FA210D3439C6_d0e174035_href.png Binary file Symbian3/PDK/Source/GUID-3457B9BC-2F8F-55C1-9B5F-FA210D3439C6_d0e174035_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-34614E31-45F1-5BD8-963D-9526AAD31734.dita --- a/Symbian3/PDK/Source/GUID-34614E31-45F1-5BD8-963D-9526AAD31734.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-34614E31-45F1-5BD8-963D-9526AAD31734.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,88 +1,85 @@ - - - - - -resourcemanager: -Power Resource Manager Framework exampleThis example demonstrates the Power Resource Manager user side -APIs. -

          Purpose

          The example shows how to use the Power Resource Manager user -side APIs provided by the RBusDevResManUs class.

          The -use cases demonstrated are:
            -
          • How to get information about power resources.

          • -
          • How to get information about other clients registered with the Power -Resource Manager.

          • -
          • How to change the state of a resource.

          • -
          • How to get notification when a resource changes state.

          • -
          -
          Class summary
            -
          1. RBusDevResManUs

          2. -
          3. TResourceInfo

          4. -
          5. TClientInfo

          6. -
          -
          Download

          Click on the following link to download -the example: resourcemanager.zip.

          Click: browse to view the example code.

          -
          Design and implementation

          This example builds a -console application called resourcemanager.exe. It requests -user input, and prints information to the console.

          The following menu -options are presented to the user:

            -
          • Get Power Resource information.

          • -
          • Change the state of -a resource.

          • -
          • Notify a change of resource -state.

          • -

          Get Power Resource information

          This option gets and -displays information about the clients of the Power Resource Manager framework -and about the available resources.

          The following sub-menu options -are presented:

            -
          • 1. Get the number of -available resources.

          • -
          • 2. Get information about -a particular resource.

          • -
          • 3. Get information about -all the available resources.

          • -
          • 4. Get the state of -a particular resource.

          • -
          • 5. Get the number of -clients using a particular resource.

          • -
          • 6. Get the number of -resources used by a particular client.

          • -
          • 7. Get information about -all the resources in use by a particular client.

          • -
          • 8. Get information on -all clients using a particular resource.

          • -
          • 9. Get the names of -all clients.

          • -

          Change the state of a resource

          This option allows -the user to change the state of a resource.

          Notify any change of -resource state

          This option changes the state of a resource and -notifies the user about the change.

          -
          Building and configuring

          To build the example:

            -
          • You can build the example -from your IDE or the command line.

            If you use an IDE, import the bld.inf file -of the example into your IDE, and use the build command of the IDE.

            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:

            bldmake -bldfiles

            abld build

            How to use bldmake and How to use abld describe -how to use the SBSv1 build tools.

          • -
          • For the emulator, the -example builds an executable called resourcemanager.exe in -the epoc32\release\winscw\<udeb or urel>\ folder.

          • -
          -
          Running the example

          To run the example, launch -the executable resourcemanager.exe, then choose from -the menu options. Press Esc to quit.

          Note: -this example requires an LDD, a PDD and a PSL (platform specific layer). If -these are not provided on the platform you are using, the example will not -run.

          - -Power Resource -Manager Architecture Overview + + + + + +resourcemanager: Power Resource Manager Framework exampleThis example demonstrates the Power Resource Manager user +side APIs. +
          Purpose

          The example shows how to use the Power Resource Manager +user side APIs provided by the RBusDevResManUs class.

          The use cases demonstrated are:
            +
          • How to get information about power resources.

          • +
          • How to get information about other clients registered with +the Power Resource Manager.

          • +
          • How to change the state of a resource.

          • +
          • How to get notification when a resource changes state.

          • +
          +
          Class summary
            +
          1. RBusDevResManUs

          2. +
          3. TResourceInfo

          4. +
          5. TClientInfo

          6. +
          +
          Download

          Click on the following link to +download the example: resourcemanager.zip.

          Click: browse to view the example code.

          +
          Design and implementation

          This example +builds a console application called resourcemanager.exe. It requests user input, and prints information to the console.

          The following menu options are presented to the user:

            +
          • Get Power Resource +information.

          • +
          • Change the state +of a resource.

          • +
          • Notify a change +of resource state.

          • +

          Get Power Resource information

          This option +gets and displays information about the clients of the Power Resource +Manager framework and about the available resources.

          The following +sub-menu options are presented:

            +
          • 1. Get the number +of available resources.

          • +
          • 2. Get information +about a particular resource.

          • +
          • 3. Get information +about all the available resources.

          • +
          • 4. Get the state +of a particular resource.

          • +
          • 5. Get the number +of clients using a particular resource.

          • +
          • 6. Get the number +of resources used by a particular client.

          • +
          • 7. Get information +about all the resources in use by a particular client.

          • +
          • 8. Get information +on all clients using a particular resource.

          • +
          • 9. Get the names +of all clients.

          • +

          Change the state of a resource

          This option +allows the user to change the state of a resource.

          Notify +any change of resource state

          This option changes the state +of a resource and notifies the user about the change.

          +
          Building and configuring

          To build the example:

            +
          • You can build +the example from your IDE or the command line.

            If you use +an IDE, import the bld.inf file of the example +into your IDE, and use the build command of the IDE.

            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:

            bldmake bldfiles

            abld +build

          • +
          • For the emulator, +the example builds an executable called resourcemanager.exe in the epoc32\release\winscw\<udeb or + urel>\ folder.

          • +
          +
          Running the example

          To run the example, +launch the executable resourcemanager.exe, then +choose from the menu options. Press Esc to +quit.

          Note: this example requires an LDD, a PDD and a PSL +(platform specific layer). If these are not provided on the platform +you are using, the example will not run.

          +
          +Power +Resource Manager Architecture Overview
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3472798D-CEC5-5BA9-A3A7-D4245661DEDB.dita --- a/Symbian3/PDK/Source/GUID-3472798D-CEC5-5BA9-A3A7-D4245661DEDB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3472798D-CEC5-5BA9-A3A7-D4245661DEDB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,78 +1,67 @@ - - - - - -pubsub: -Using the Publish and Subscribe IPC MechanismThis example demonstrates the Publish and Subscribe IPC mechanisms -using the RProperty class. -
          Download

          Click -on the following link to download the example: pubsub.zip.

          Click: browse to view the example code.

          -
          Description

          This -example demonstrates three types of usage pattern for Publish and Subscribe:

            -
          • Standard State Publishing

              -
            • Publisher: The -publisher defines a byte-array property and pre-allocates memory to it. It -interactively updates and re-publishes the value of the property.

            • -
            • Subscriber: The -subscriber gets the value of the property defined by the publisher by subscribing -to it. It displays an error and stops running if it fails to get the value -of the property.

            • -
          • -
          • Pure Event Distribution

              -
            • Publisher: The -publisher defines an integer property and publishes a random integer value -periodically. This value has no significance to the subscriber.

            • -
            • Subscriber: The -subscriber gets a notification when the publisher publishes a value. It exits -when the property is deleted by the publisher.

            • -
          • -
          • Speculative Publishing

              -
            • Publisher: The -publisher does not define the property. It ignores the KErrNotFound error -when it publishes the value of the property.

            • -
            • Subscriber: The -subscriber defines and subscribes to the property. It ignores the KErrAlreadyExists error.

            • -
          • -
          -
          Class summary
            -
          • RProperty - User side interface to Publish & -Subscribe.

          • -
          • CActive - The core class of the active object abstraction.

          • -
          -
          Build

          The Symbian build process describes -how to build this example.

          This example builds the following binaries -in the standard location (\epoc32\release\winscw\<build_variant>) -for Carbide.c++:

            -
          • publishstd.exe: -The publisher process for the Standard State pattern.

          • -
          • subscribestd.exe: -The subscriber process for the Standard State pattern.

          • -
          • publishpe.exe: -The publisher process for the Pure Event Distribution pattern.

          • -
          • subscribepe.exe: -The subscriber process for the Pure Event Distribution pattern.

          • -
          • publishspec.exe: -The publisher process for the Speculative Publishing pattern.

          • -
          • subscribespec.exe: -The subscriber process for the Speculative Publishing pattern.

          • -
          -
          Running the -example

          To run the example, perform the following steps on each -usage pattern:

            -
          1. Open two eshells.

          2. -
          3. Run the publisher executable -file in one eshell.

          4. -
          5. Run the subscriber executable -file in another eshell.

          6. -

          Note: Switch between eshells by pressing CTRL+ALT+SHIFT+T.

          -
          See also

          For -more information, see Publish -and Subscribe in Using User Library (E32).

          + + + + + +pubsub: Using the Publish and Subscribe IPC MechanismThis example demonstrates the Publish and Subscribe IPC +mechanisms using the RProperty class. +
          Download

          Click on the following link to download the example: pubsub.zip.

          Click: browse to view the example code.

          +
          Description

          This example demonstrates three types of usage pattern for Publish +and Subscribe:

            +
          • Standard State +Publishing

              +
            • Publisher: The publisher defines a byte-array property and pre-allocates memory +to it. It interactively updates and re-publishes the value of the +property.

            • +
            • Subscriber: The subscriber gets the value of the property defined by the publisher +by subscribing to it. It displays an error and stops running if it +fails to get the value of the property.

            • +
          • +
          • Pure Event Distribution

              +
            • Publisher: The publisher defines an integer property and publishes a random +integer value periodically. This value has no significance to the +subscriber.

            • +
            • Subscriber: The subscriber gets a notification when the publisher publishes +a value. It exits when the property is deleted by the publisher.

            • +
          • +
          • Speculative +Publishing

              +
            • Publisher: The publisher does not define the property. It ignores the KErrNotFound error when it publishes the value of the property.

            • +
            • Subscriber: The subscriber defines and subscribes to the property. It ignores +the KErrAlreadyExists error.

            • +
          • +
          +
          Class +summary
            +
          • RProperty - User side interface to Publish +& Subscribe.

          • +
          • CActive - The core class of the active object +abstraction.

          • +
          +
          Build

          The Symbian build process describes how to build this example.

          This example builds the following binaries in +the standard location (\epoc32\release\winscw\<build_variant>) for Carbide.c++:

            +
          • publishstd.exe: The publisher process for the Standard State pattern.

          • +
          • subscribestd.exe: The subscriber process for the Standard State pattern.

          • +
          • publishpe.exe: The publisher process for the Pure Event Distribution pattern.

          • +
          • subscribepe.exe: The subscriber process for the Pure Event Distribution pattern.

          • +
          • publishspec.exe: The publisher process for the Speculative Publishing pattern.

          • +
          • subscribespec.exe: The subscriber process for the Speculative Publishing pattern.

          • +
          +
          Running +the example

          To run the example, perform the following steps +on each usage pattern:

            +
          1. Open two eshells.

          2. +
          3. Run the publisher +executable file in one eshell.

          4. +
          5. Run the subscriber +executable file in another eshell.

          6. +

          Note: Switch between eshells by pressing CTRL+ALT+SHIFT+T.

          +
          See +also

          For more information, see Publish and Subscribe in Using User Library (E32).

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-347ACB44-5D07-5EA6-8751-E424A118859D_d0e171193_href.jpg Binary file Symbian3/PDK/Source/GUID-347ACB44-5D07-5EA6-8751-E424A118859D_d0e171193_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-347ACB44-5D07-5EA6-8751-E424A118859D_d0e177261_href.jpg Binary file Symbian3/PDK/Source/GUID-347ACB44-5D07-5EA6-8751-E424A118859D_d0e177261_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3483E654-38CC-538B-8B66-9D7A0C0B4025.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-3483E654-38CC-538B-8B66-9D7A0C0B4025.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,14 @@ + + + + + +Supported Audio CodecsThis document provides a list of codecs supported by Multimedia audio components. Each codec is listed with its unique four character (FourCC) code identifier and equivalent Hexadecimal ASCII value.
      Codec FourCC Code Hexadecimal ASCII Value

      8-bit PCM

      P8

      Note: The first two characters in this FourCC code are spaces.

      0x38502020

      8-bit unsigned PCM

      PU8

      Note: The first character in this FourCC code is a space.

      0x38555020

      16-bit PCM

      P16

      Note: The first character in this FourCC code is a space.

      0x36315020

      16-bit unsigned PCM

      PU16

      0x36315550

      Advanced Audio Codec (AAC) or Moving Picture Experts Group 4 (MPEG-4) Audio Layer 3

      AAC

      Note: The first character in this FourCC code is a space.

      0x43414120

      Advanced Audio Codec Audio Data Transport Stream (AAC ADTS)

      ADTS

      0x53544441

      A-Law

      ALAW

      0x57414c41

      AMR

      AMR

      Note: The first character in this FourCC code is a space.

      0x524d4120

      AMR Wideband

      AMRW

      0x57524d41

      ATRAC3

      ATR3

      0x33525441

      Dolby Digital (DD) or Audio Coding 3 (AC-3)

      AC3

      Note: The first character in this FourCC code is a space.

      0x33434120

      Dolby Digital Plus (DD+) or Enhanced Audio Coding 3 (E-AC-3)

      EAC3

      0x33434145

      GSM 6.10

      GSM6

      0x364d5347

      IMA ADPCM

      IMAD

      0x44414d49

      IMA stereo ADPCM

      IMAS

      0x53414d49

      Most-significant byte first (big-endian) 16-bit PCM

      P16B

      0x42363150

      Most-significant byte first (big-endian) 16-bit unsigned PCM

      PU6B

      0x42365550

      MPEG-1 Audio Layer 3

      MP3

      Note: The first character in this FourCC code is a space.

      0x33504d20

      Mu-law or µ-law

      ULAW

      0x57414c75

      Null

      NULL

      Note: Use this FourCC code if the actual FourCC is not known or not applicable.

      0x4c4c554e

      SBC

      SBC

      Note: The first character in this FourCC code is a space.

      0x43425320

      Wideband AMR

      AWB

      Note: The first character in this FourCC code is a space.

      0x42574120

      Windows Media Audio (WMA)

      WMA

      Note: The first character in this FourCC code is a space.

      0x414d5720

      Writing a Codec Plug-in Writing a Controller + Plug-in Audio Output + Stream Library DevSound Library \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3490A064-8421-4ABB-9E93-99A5565CF4D7.dita --- a/Symbian3/PDK/Source/GUID-3490A064-8421-4ABB-9E93-99A5565CF4D7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3490A064-8421-4ABB-9E93-99A5565CF4D7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -19,7 +19,7 @@ Preferences API are listed below. One or more of the preferences can be set based on connection establishment requirements. For more details on the restrictions regarding the preferences that can be used jointly, refer TExtendedConnPref .

      - + Define Bearer Filtering

      Extended Connection Preferences API allows the application to limit diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-34BEF44B-EFBE-41EB-941D-0410FCB6782E.dita --- a/Symbian3/PDK/Source/GUID-34BEF44B-EFBE-41EB-941D-0410FCB6782E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-34BEF44B-EFBE-41EB-941D-0410FCB6782E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -42,7 +42,7 @@

    Architectural Relationships Class Relationships for TExtendedConnPref - +
    Typical Uses

    The API provides the following key services:

      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-34D1D0BF-20DE-5677-A067-8FF9DD72E703.dita --- a/Symbian3/PDK/Source/GUID-34D1D0BF-20DE-5677-A067-8FF9DD72E703.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-34D1D0BF-20DE-5677-A067-8FF9DD72E703.dita Fri Jul 16 17:23:46 2010 +0100 @@ -151,7 +151,7 @@ It also calls Power::RequestWakeupEventNotification() so that it can be informed of a wake-up event. If it is notified of a wake-up event, it can halt, and reverse the user side response to the power transition.

      - +

      Before calling DPowerController::EnableWakeupEvents(), the power manager sets the iTargetState member of DPowerController to the applicable TPowerState. This means that you can enable diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-34DB27CB-9010-5B7F-A51E-0CA794147CAE.dita --- a/Symbian3/PDK/Source/GUID-34DB27CB-9010-5B7F-A51E-0CA794147CAE.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -macro

      macro macro-list

      Where, macro-list =macro_name_1 macro_name_2=value_2...macro_name_n

      Use the macro statement to specify #defines for the preprocessing of source code. You can specify multiple macros separated by a space. if required, you can also assign values to those macros.

      Note: It is not mandatory that all the macros listed must have a value.

      Each macro specified is passed to the complier using the option -d for preprocessing the C++ source code in your project.

      Example MACRO _MACRO1 _MACRO2=value2

      To check whether these macros are passed to the compiler or not, use the -verbose abld option.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-34EF6527-14D0-5C8B-9E20-A3A3B3320054.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-34EF6527-14D0-5C8B-9E20-A3A3B3320054.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,144 @@ + + + + + +SIF Overview +
      Purpose

      SIF provides uniform interfaces for installation of software +and management of software Symbian platform devices regardless of +the type of a package. The uniform interfaces provided by SIF enable:

        +
      • Installation +of software, for example SIS or JAR files.

      • +
      • Management of +software, for example removing an existing software component installed +on a device.

      • +
      • Extracting package +information.

      • +
      +
      Architecture

      The following diagram illustrates the SIF interaction with SWI, +AppArc and other components of the Universal Software Installation +Framework :

      +SIF interaction diagram + + + +

      SIF Transport Library

      This is a client-server +framework used to send and receive SIF requests across a process boundary. +It significantly reduces the time needed to implement an installer +client and a server for sending and receiving SIF requests. The SIF +Transport Library consists of a SIF Transport Client and a Server.

      The SIF Transport Client sends software management requests (for +example, installation, uninstallation, activation, deactivation and +so on) across the process boundary to a specified SIF Transport Server. +The SIF Transport Server processes the requests from the SIF Transport +Client by instantiating a SIF Transport session object and hands over +further processing to it.

      SIF Utility library

      This library provides an API for uninstalling a software component +from the system and is for simple installers. It removes the component +from the System Component Registry (SCR) and deletes its files from +the file system.

      SIF Launcher

      SIF Launcher +is a SIF component that handles installation requests from the AppArc +APIs. Installation requests are issued by generic clients, such as +file or web browsers. When the user clicks on a file or link, a browser +may use RApaLsSession::StartDocument() to start +the SIF Launcher automatically.

      Notifier Framework

      There is a need to receive progress notifications during package +management operations, such as installation, upgradation and uninstallion. +The native and non-native installers follow legacy mechanisms to publish +the installation context. If each installer provides a different +publication mechanism, the observers of the events need to make additional +changes relevant to the installer. To overcome this redundancy, SIF +provides a unified notification mechanism that makes receiving progress +notifications simpler.

      The Notifier framework delivers the +start, progress and completion status of SIF operation (install or +uninstall) to registered clients in a unified mechanism. The Publish +and Subscribe Keys defined by the Universal Software Install Framework +(USIF) can be used by all installers to publish the progress +of operations. The clients must subscribe to receive +the progress notifications.

      A utility library is provided +with APIs that set and publish the SIF operation progress. Installers +and client applications can use these APIs to publish and subscribe +for install, upgrade and uninstall status notifications.

      +
      Key +Classes

      The following table summarizes the key classes +of SIF:

      + + + +Class Name +Description + + + + +

      RSoftwareInstall

      +

      Provides an asynchronous interface to SIF. This class wraps +all the details of client-server communication with the SIF server +residing in a separate process.

      +
      + +

      CSifPlugin

      +

      Is an abstract SIF plug-in +interface. Derived classes must implement the functions of the interface +for each particular software type.

      +
      + +

      RSifTransportClient

      +

      Is a client side of the SIF Transport. This class sends +software management requests across the process boundary to a specified +Transport Server.

      +
      + +

      CSifTransportTask

      +

      Defines an abstract interface for SIF Transport tasks. It +is the core class of the SIF Transport library. Transport tasks are +instantiated and run to handle incoming software management requests.

      +
      + +

      CSifOperationStartData

      +

      Contains basic information +about packages to be installed or uninstalled.

      +
      + +

      CSifOperationEndData

      +

      Contains the error status +information after an installation or uninstallation.

      +
      + +

      CSifOperationProgressData

      +

      Provides the progress +status.

      +
      + +

      CPublishSifOperationInfo

      +

      Is used by installers +to publish a single install, uninstall or update operation information.

      +
      + +

      MSifOperationsHandler

      +

      Is an interface class +required to be implemented by the client class to receive notifications. +This class has functions that notify about the SIF operation start, +end and progress updates.

      +
      + +

      CSifOperationsNotifier

      +

      An object of the class +is created for carrying out subscription to notification.

      +
      + + +
      +
      Typical +uses

      You can use the APIs provided by SIF to create an installer . When you use SIF with SCR you can perform application management +functions such as listing software components on a device and +extracting package information about a software component.

      +
      +SIF +Tutorial +Configuring +the SIF Launcher +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3527AAEE-210F-524B-A655-A65F1CE86C80.dita --- a/Symbian3/PDK/Source/GUID-3527AAEE-210F-524B-A655-A65F1CE86C80.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ - - - - - -How -to build a resource file -

      Resource building is performed by the epocrc tool. -It is a three-stage process:

      -
        -
      • pre-processing

      • -
      • localised string merging

      • -
      • compilation to binary -format

      • -
      -

      The sections below describe each stage in turn.

      -
      Pre-processing

      Resource files can use the familiar -pre-processor directives. In particular, #include is used -to include header files; #define is used to define macros -such as numeric constants; and #if and related directives -can be used to perform conditional compilation. Pre-processor arguments for -include file paths and macro definitions can be passed to the pre-processor -through epocrc.

      The source file is pre-processed, -using the cpp pre-processor, and an output file produced -with an extension .rpp.

      -
      Merging localised strings

      Strings that should be -localised should not be defined in the resource file itself, but in separate -files with an .rls extension. The .rpp files -are processed by epocrc to merge in the localisable strings.

      A -flag can also be specified to epocrc that causes it to -copy the .rpp files into a epoc32\localisation\ directory, -from where they can form input into a localisation kit.

      -
      Compilation to binary format

      The final -stage is to convert the intermediary .rpp files into -the final compiled format. This is done by the rcomp tool. -The resource compiler also produces a header file that contains a symbolic -identifier for each resource.

      The names of the output files are specified -as parameters to epocrc. Note though that:

        -
      • resource files as built -by the project build tools (abld) have the default extension .rsc. -The additional naming conventions used when you need to supply multiple resource -files, each for a different locale, are discussed in How -to localise resources

      • -
      • by convention, the -header file has an extension .rsg

      • -

      The identifiers in the header file provide symbolic names for index -positions in the resource file, so that your source code can be independent -of the number and order of resources within the file. For a named resource -such as:

      RESOURCE TBUF r_eik_bafl_error_offset { buf="Wrong format resource file"; }

      the generated header file will have a #define such as:

      #define R_EIK_BAFL_ERROR_OFFSET 0xf3b045

      where -the number is a resource ID which encodes the resource index, and is suitable -for passing to the C++ function RResourceFile::AllocReadLC().

      In -the course of project development, changes to the resource file may not always -result in changes to the set of #define statements generated. -If there is no change, the rsg file is not rebuilt, thereby -avoiding unnecessary re-compilation and linking.

      -
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3542A39C-8D0F-53A0-A5A2-81F381D3BA7B_d0e522848_href.png Binary file Symbian3/PDK/Source/GUID-3542A39C-8D0F-53A0-A5A2-81F381D3BA7B_d0e522848_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3542A39C-8D0F-53A0-A5A2-81F381D3BA7B_d0e530308_href.png Binary file Symbian3/PDK/Source/GUID-3542A39C-8D0F-53A0-A5A2-81F381D3BA7B_d0e530308_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-35521A99-3F1F-5EE1-8078-FFD8A298C0BD_d0e239685_href.png Binary file Symbian3/PDK/Source/GUID-35521A99-3F1F-5EE1-8078-FFD8A298C0BD_d0e239685_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-35521A99-3F1F-5EE1-8078-FFD8A298C0BD_d0e245695_href.png Binary file Symbian3/PDK/Source/GUID-35521A99-3F1F-5EE1-8078-FFD8A298C0BD_d0e245695_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-35532303-1316-58CA-90C8-FAB56EE3C1F5.dita --- a/Symbian3/PDK/Source/GUID-35532303-1316-58CA-90C8-FAB56EE3C1F5.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,44 +0,0 @@ - - - - - -version -

      version major.minor [explicit]

      -

      The version keyword allows a version number to be set -for a project. The optional keyword, explicit is used to -append the specified version number to the .exe or .dll output -file.

      -

      EKA1 will only allow one version of an executable to exist in a Symbian -platform phone. However, EKA2 supports version numbering. Version numbering -associates a version number with each executable enabling new and old versions -of the same executable to be on the device simultaneously.

      -

      The version keyword takes a major and a minor value separated -by a full stop. This value is defined as 32 bit, anything exceeding this will -produce a warning. Failing to enter a value will result in a warning and a -default value of 10.0 being supplied for binaries built with an EABI compliant -compiler. Omitting the version keyword altogether will also result in a default -of 10.0 being applied. The version number can be found at Hexadecimal offset -70 within the header of the executable file in ROM.

      -

      Usage of the version keyword is optional. One use is to aid eclipsing. -In order to eclipse a file on ROM successfully the version of the new file -can be set to a higher value than the version of the file to eclipse. This -tells the loader that the new file is preferred over the old one.

      -

      See the Important -Considerations section for more information.

      -

      The loader will show preference to versions that have a major number that -is equal to the one requested, and of these the minor numbers -that are higher are preferred. The loader can assume by the version number -that the API is compatible, while also being the most up to date version available.

      -

      If the above is not available the loader will look for DLLs with a higher -major version number than the one requested. Of these it will select the one -with the lowest major number and the highest minor number. If the executable -requests exports that no longer exist in this DLL, then the loader cannot -use it.

      -
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3560E862-CB68-584F-B9B6-FCD9F0D202DC_d0e355800_href.png Binary file Symbian3/PDK/Source/GUID-3560E862-CB68-584F-B9B6-FCD9F0D202DC_d0e355800_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3560E862-CB68-584F-B9B6-FCD9F0D202DC_d0e361702_href.png Binary file Symbian3/PDK/Source/GUID-3560E862-CB68-584F-B9B6-FCD9F0D202DC_d0e361702_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-356B54BB-E389-5562-A2D9-80A472EAC9A3_d0e8880_href.png Binary file Symbian3/PDK/Source/GUID-356B54BB-E389-5562-A2D9-80A472EAC9A3_d0e8880_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-356B54BB-E389-5562-A2D9-80A472EAC9A3_d0e9002_href.png Binary file Symbian3/PDK/Source/GUID-356B54BB-E389-5562-A2D9-80A472EAC9A3_d0e9002_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-358412B8-8B98-419F-99E6-28A01ED99B79_d0e2014_href.png Binary file Symbian3/PDK/Source/GUID-358412B8-8B98-419F-99E6-28A01ED99B79_d0e2014_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-358412B8-8B98-419F-99E6-28A01ED99B79_d0e2022_href.png Binary file Symbian3/PDK/Source/GUID-358412B8-8B98-419F-99E6-28A01ED99B79_d0e2022_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-358634A7-8757-5D4C-B967-8040B7F39102_d0e434370_href.png Binary file Symbian3/PDK/Source/GUID-358634A7-8757-5D4C-B967-8040B7F39102_d0e434370_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-358634A7-8757-5D4C-B967-8040B7F39102_d0e440215_href.png Binary file Symbian3/PDK/Source/GUID-358634A7-8757-5D4C-B967-8040B7F39102_d0e440215_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3596A468-DC46-51B1-BD88-B7665CB69E0E.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-3596A468-DC46-51B1-BD88-B7665CB69E0E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +CryptoSPI \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-35D49549-1F4D-583F-A45D-9B557A207DD2.dita --- a/Symbian3/PDK/Source/GUID-35D49549-1F4D-583F-A45D-9B557A207DD2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-35D49549-1F4D-583F-A45D-9B557A207DD2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,55 +1,44 @@ - - - - - -GlassTerm: -glass teletype terminal -
      Download

      Click on the following link to download -the example: GlassTerm.zip

      Download some additional files required -by the example: CommonFiles

      Click: browse to view the example code.

      View the additional -files: browse.
      -
      Description

      GlassTerm is a terminal application -with configurable handshaking that illustrates the use of the Serial Communications -API.

      -
      Class Summary

      RComm: serial port

      RCommServ: -Comms server

      TCommCaps: serial port capabilities -(in package buffer)

      TCommConfig: serial port configuration -(in package buffer)

      TRequestStatus: asynchronous -request status

      TSerialInfo: serial protocol information

      -
      Build

      The source code for this example application -can be found in the directory:

      examples\SerialComms\ServerClientSide\GlassTerm

      The -source code may be in the directory in which you installed the Symbian platform, -or it may be in src\common\developerlibrary\. The source -code includes the two project files needed for building the example: bld.inf and -the .mmp file.

      The -Symbian build process describes how to build this application, which -results in an executable called \epoc32\release\<target>\<urel -or udeb>\GLASSTERM.EXE.

      -
      Usage
        -
      1. Run the executable GLASSTERM.EXE.

        Executables -for the emulator targets wins and winscw can -be run on your PC. Executables for ARM targets must be copied to your target -platform before being run.

      2. -
      3. Once running, the glass -teletype application performs two simple functions:

          -
        • Read any key presses -and send the characters to the serial port.

        • -
        • Receive any incoming -characters from the serial port and display them on screen.

        • -

        It sends and receives at 19200 baud, 8 data bits, no parity, 1 stop -bit.

      4. -

      In order to see the application working, you must make a suitable -serial port connection. A simple way is to connect a PC and a Symbian device, -and run the application on both machines simultaneously. (Before doing this, -make sure to close down any other applications using the serial port on the -PC, and set the device's Link To Desktop option -to Off). Characters typed on one machine are -then echoed to the application on the other.

      + + + + + +GlassTerm: glass teletype terminal +
      Download

      Click on the following link to download the example: GlassTerm.zip

      Download some additional +files required by the example: CommonFiles

      Click: browse to view the example code.

      View the +additional files: browse.
      +
      Description

      GlassTerm is a terminal application with configurable handshaking +that illustrates the use of the Serial Communications API.

      +
      Class +Summary

      RComm: serial port

      RCommServ: Comms server

      TCommCaps: serial port capabilities (in package buffer)

      TCommConfig: serial port configuration (in package buffer)

      TRequestStatus: asynchronous request status

      TSerialInfo: serial protocol information

      +
      Build

      The source code for this example application can be found in +the directory:

      examples\SerialComms\ServerClientSide\GlassTerm

      The source code may be in the directory in which you installed +the Symbian platform, or it may be in src\common\developerlibrary\. The source code includes the two project files needed for building +the example: bld.inf and the .mmp file.

      The Symbian build process describes how to build this +application, which results in an executable called \epoc32\release\<target>\<urel +or udeb>\GLASSTERM.EXE.

      +
      Usage
        +
      1. Run the executable GLASSTERM.EXE.

        Executables for the emulator targets wins and winscw can be run on your +PC. Executables for ARM targets must be copied to your target platform +before being run.

      2. +
      3. Once running, +the glass teletype application performs two simple functions:

          +
        • Read any key +presses and send the characters to the serial port.

        • +
        • Receive any +incoming characters from the serial port and display them on screen.

        • +

        It sends and receives at 19200 baud, 8 data bits, no parity, +1 stop bit.

      4. +

      In order to see the application working, you must make a +suitable serial port connection. A simple way is to connect a PC and +a Symbian device, and run the application on both machines simultaneously. +(Before doing this, make sure to close down any other applications +using the serial port on the PC, and set the device's Link To Desktop option to Off). Characters typed on one machine are then echoed to the application +on the other.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-35DF14C7-62B6-51C0-8F4C-EF1B4A1173DD.dita --- a/Symbian3/PDK/Source/GUID-35DF14C7-62B6-51C0-8F4C-EF1B4A1173DD.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,223 +0,0 @@ - - - - - -evalid -Command Syntax -
      Purpose

      evalid compares two files, or two trees -of files, ignoring insignificant differences in some types of files. You can -use it to check if the behaviour and compatibility of a build has changed, -without having to run complex BC (Binary Compatibility) checking tools or -regression tests.

      Typically, evalid is useful when you make changes -in the source code or in the build environment, which do not affect the built -files. Such source changes include adding comments, or configured code that -should not be built in the configuration that you are testing. You can use -evalid to compare new and old builds, and check for differences.

      Standard -diff tools would typically flag environment information, such as time stamps, -as differences, whereas evalid has better comparison rules that allows it -to ignore insignificant differences.

      You can use evalid in two ways: -to directly compare files, or to generate a hash (using the MD5 algorithm) -of files, and then later compare the hashes. The second method can be more -convenient, as it does not require both builds to be available when the comparison -is done.

      -
      Usage

      evalid -is a command-line tool, delivered in the epoc32\tools directory -of the Symbian platform kit. You can invoke it with various options, depending -on the task you want to perform. This section describes these options.

      The -results from running the tool are written by default to a log file evalid.lis. -You can change the log file, or choose to log to screen, using the Log options flags. The meanings of the log messages are described -in the Log -messages section. The tool terminates with an error message if the -files or directories specified as input arguments do not exist.

      Directly -compare two files

      evalid [log-options] file1 file2

      This compares file1 against file2.

      Recursively -compare two directory trees

      evalid [log-options] directory1 directory2

      This compares each file in the directory tree directory1 against -the corresponding file in the directory tree directory2.

      Recursively -create MD5 hashes for a directory tree

      evalid [log-options] -g [-x - regular-expression] [-I regular-expression] directory1 file1

      Option -g creates an MD5 hash for -each file in directory1, and stores this data in the file file1.

      You -can then compare two directories by passing their hash data files to evalid -using the -m option, described below.

      You can limit -the files that are processed using these filter options:

      - - - -

      -x regular-expression

      -

      Exclude files with names that match the specified Perl regular expression. -Syntax for Perl regular expressions can be found at http://www.perl.com.

      -
      - -

      -I regular-expression

      -

      Include only files with names that match the specified Perl regular -expression.

      -
      - - -

      Inclusions take precedence over exclusions if both expressions -match.

      Create MD5 hashes of specified files

      evalid [log-options] -f [-x regular-expression] [-I - regular-expression] listfile directory1 file1

      Option -f creates an MD5 hash for each file listed in the file listfile, -and stores this data in the file file1.

      The listfile must -contain a list of files, one per line. File paths should be specified relative -to directory1, and must not start with a directory separator -(\).

      You can limit the files that are processed -using the -x and -I options, as described -above for the -g option.

      Compare two MD5 hash -data files

      evalid [log-options] -m file1 file2

      Option -m compares the MD5 hashes -in file1 (created using option -g or -f) -against those in file2.

      Compare two MD5 hash -data files, and update directory

      evalid [log-options] -u file1 file2

      Option -u is -an alternative to -m. It creates batch files that you can -run to change the files defined by file1 to be the same -as the files defined by file2.

      The output batch -file del_<file1>_to_<file2>.bat deletes files that -are defined in file1 but not in file2.

      The -output batch file zip_<file1>_to_<file2>.bat creates -a zip of the files that are defined in file2 but not in file1, -and of files that are defined in both, but are different.

      Create -a dump of descriptive information required for analysis

      As part -of MD5 generation, the tool extracts descriptive information about the files -being compared, and uses it in its comparisons. Creating a dump file of this -descriptive information, helps in the detailed analysis of significant differences -between the two files. It also helps in troubleshooting, if the tool fails -to list all the significant differences between the two files. The following -is the syntax to creating a dump file of the descriptive information:

      evalid [log-options] -f -| -g [-x regular-expression] -[-I regular-expression] [-d - dump-directory] listfile directory1 file1

      Where, -the -d option creates a dump file for each of those files -listed in listfile or directory1 using -the -f or -g MD5 generation options. The -dump files are placed in the dump directory with -the directory structure that is similar to the input directory structure.

      For -example, consider the following DLLs which are two different builds of the -same DLL, but are significantly different in content:

      D:\epoc32\release\armv5\urel\mycomponent.dll

      E:\epoc32\release\armv5\urel\mycomponent.dll

      Using the -following commands to dump files and generate MD5 hash for both the DLLs:

      evalid --d \buildone -g epoc32 buildone.md5

      evalid --d \buildtwo -g epoc32 buildtwo.md5

      Apart from generating -the two .md5 files, the commands listed above also generate -the following dump files with the directory structure:

      D:\buildone\epoc32\release\armv5\urel\mycomponent.dll

      E:\buildtwo\epoc32\release\armv5\urel\mycomponent.dll

      Both -the files listed above are text files containing descriptive information about -the two different builds of mycomponent.dll. A text compare -between these two dump files would list differences between the two builds -of mycomponent.dll that evalid views as significant. -In the case of comparing two directory trees, a recursive comparison between -the two dump directories (buildone and buildtwo) -using Beyond Compare would list the differences between the directories.

      Note: If -the evalid tool decides to examine an input file without any further processing, -then the generated MD5 hash is based directly on the input file. Using -d option -in such situations, copies the input file as it is to the dump directory. -Comparing the two dump directories containing a copy of the input files, is -similar to comparing the MD5 files based on the input files, using evalid.

      Log options

      The log-options options -control how the tool outputs its results:

      - - - -

      -v

      -

      Provide verbose information about failed comparisons.

      This -has no effect on MD5 operations.

      -
      - -

      -c

      -

      Print results to standard out (i.e. the screen).

      -
      - -

      -l <logfile>

      -

      Append results to specified file.

      This has no effect when -used with -u.

      -
      - - -

      By default, output is written to the file evalid.lis.

      File -and directory argument shorthand

      Note that you can use the following -shorthand in file and directory arguments:

      evalid file1 dir2 is -equivalent to evalid file1 dir2\file1.

      evalid -dir1 file1 is equivalent to evalid dir1\file1 -file1.

      -
      Log messages

      evalid -reports the result of each file comparison that it performs.

      For example, -in a direct comparison, the meaning of these messages are as follows:

      - - - -

      Message type

      -

      Explanation

      -
      - -

      OK: ... (identical)

      -

      Files are exactly the same. For example:

      OK: epoc32\release\armv5\urel\XMLDOM.DLL and epoc32_master\release\armv5\urel\XMLDOM.DLL (identical)
      -
      - -

      OK: ... (<type>)

      -

      The files are different, but the comparison rules for the file type -indicate that the difference is not significant. For example:

      OK: epoc32\release\armv5\urel\cprov.exe and epoc32_master\release\armv5\urel\cprov.exe (E32 EXE)
      -
      - -

      MISSING:...

      -

      A file that is present in the first tree is not present in the second. -For example:

      MISSING: epoc32_master\release\armv5\urel\alink.dll

      Note -that evalid does not check to see if files in the second tree are present -in the first.

      -
      - -

      FAILED:...

      -

      There is a significant difference between the files. If evalid does -not know the type of the files being compared, it does a binary comparison, -so any time stamp differences cause it to report a failure.

      For example:

      FAILED: epoc32\release\armv5\urel\ASN1.DLL and epoc32_master\release\armv5\urel\ASN1.DLL (Compressed E32 DLL)
      -
      - - -

      For an MD5 comparison, the meaning of these messages is as follows:

      - - - -

      Message type

      -

      Explanation

      -
      - -

      Passed

      -

      Files have no significant differences.

      -
      - -

      Failed

      -

      There is a significant difference between the files.

      -
      - -

      Missing Left

      -

      A file listed in the first MD5 file is not present in the second.

      -
      - -

      Missing Right

      -

      A file listed in the second MD5 file is not present in the first.

      -
      - - -
      -
      Recognized -file types

      These are the types of files for which evalid has special -support for finding and ignoring insignificant differences:

        -
      • ELF format

      • -
      • E32 Image (Symbian platform -executables)

      • -
      • EPOC Permanent File -Store

      • -
      • MAP files from the GNU -Linker, CodeWarrior and RVCT

      • -
      • Microsoft Compiled HTML -Help

      • -
      • Microsoft PE COFF (Windows/MS-DOS -executables, object files, and import and static libraries)

        Note that -comparisons of such files requires that Microsoft's DUMPBIN tool from Microsoft -Visual Studio v6 is installed.

      • -
      • Pre-processor (cpp.exe) -output

      • -
      • SGML (including XML -and HTML)

      • -
      • ZIP

      • -
      -
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-35E9F104-95F7-511F-B0C5-AB64BCA972D0-GENID-1-12-1-26-1-1-11-1-1-5-1-5-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-35E9F104-95F7-511F-B0C5-AB64BCA972D0-GENID-1-12-1-26-1-1-11-1-1-5-1-5-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,167 @@ + + + + + +Asymmetric +ciphers -- guide +
        +
      • What is asymmetric cryptography?

      • +
      • Types of asymmetric algorithms supported

      • +
      • Base classes and their derived classes

      • +
      +
      What is asymmetric +cryptography?

      Asymmetric ciphers, unlike symmetric ciphers, are +algorithms that involve the use of two keys: a private key and a public key. +The private key is kept secret, while the public key is made publicly available. +For schemes which are thought to be secure, it is believed that deriving the +private key from the public key, or any transformation resulting from the +public key, is computationally infeasible.

      This type of algorithm generates +the keys as key pairs. This means that if one key in the pair is used to encrypt +some data, only the other key can decrypt it, and vice versa.

      +The diagram above shows the encryption and decryption process using: +an asymmetric algorithm; a plaintext message, M; a private key, K1, and a +public key, K2 (or vice versa); and the ciphertext, K1(M). + +

      Although it varies depending on the specific algorithm, the generation +of asymmetric keys is much slower than symmetric key generation.

      There +are four basic primitives in asymmetric cryptography: encryption and decryption, +and signing and verification.

      Encryption +schemes

      In order to encrypt a message with an asymmetric scheme, +one performs a well-known transformation on the message using the public key +of the intended recipient. Upon receipt, the receiver can decrypt this message +using the inverse transformation and the associated private key. Provided +that only the intended recipient knows the associated private key, it is believed +that message secrecy between the sender and receiver is achieved.

      Signature schemes

      Conversely, +in order to digitally sign a message with an asymmetric scheme, one performs +another well-known transformation on the message using one's own private key. +Both the original message and the resulting transformation are sent to the +intended recipient. Upon receipt, the receiver can verify that the message +was signed by the associated private key by performing the inverse operation +with the public key as input, and then comparing the received message with +the message obtained from the transformation of the signature.

      +
      Types of asymmetric +algorithms supported

      The following asymmetric algorithms are supported:

      + + + +

      Asymmetric algorithm

      +

      What it's used for

      +

      Specified in:

      +
      + + + +

      RSA

      +

      both encryption and digital signatures

      +

      PKCS#1 v1.5

      +
      + +

      DSA (Digital Signature Algorithm)

      +

      signing data

      +

      FIPS 186-2 CR1

      +
      + +

      DH (Diffie-Hellman)

      +

      secure exchange of keys between two parties

      +

      PKCS#3

      +
      + + +

      RSA

      The +Cryptography library allows support for RSA as specified in PKCS#1 v1.5. The library does not, in and of itself, +fulfil all the requirements of PKCS#1 v1.5. This is because the Cryptography +library’s modular design allows applications utilizing it to provide their +own mechanisms of certain operations. At minimum, signature input data (be +prepared in compliance with PKCS#1 v1.5) must be provided by applications +in order to support PKCS#1 v1.5.

        +
      • Private Key Encryption and Decryption

        RSA private keys +provide functionality for encrypting and decrypting data with the private +key. Encrypting with the private key is typically used in signature generation +while decrypting would be used for key exchange or confidentiality of other +small amounts of data.

        The basic mathematics involved in the encryption +and decryption is identical, the differences lay with the handling of padding; +encryption adds padding while decryption removes and checks it.

      • +
      • Padding

        For padding the existing PKCS#1 padding mechanism +is used. However, this interface allows the use of any defined padding mechanism.

      • +
      • Key Generation

        Before any private keys can be used they +need to be generated. They can be generated on the device or generated elsewhere.

        An +RSA modulus takes the form of the product of a pair of large prime numbers, +which will be generated randomly and considered prime if they pass a probabilistic +primality test (where the chance of claiming a non-prime is prime is less +than 1 in 230). This generation process can be rather long-winded, +even for relatively small keys.

        While there is no actually limit on +RSA modulus sizes, for most applications they range from 512 bits to 4096 +bits.

      • +

      DSA

      The +Cryptography library allows support for NIST Digital Signature Standard (DSS) +as specified in FIPS 186-2 change request 1. The standard specifies +DSA as the algorithm for digital signatures and SHA-1 for hashing. At minimum, +the following items must be provided by applications using the library in +order to be fully compliant:

        +
      • Signature input data +must be hashed with SHA-1 as specified in FIPS 180-1.

        or should it be

        Signature +input data must be hashed with SHA-1 as specified in FIPS 180-2.

      • +
      • A FIPS-186-2 CR 1 compliant +random number generator must be supplied. The library provides a mechanism +for using such a random number generator if required.

      • +
      • For backwards compatibility +reasons, the Cryptography library continues to allow prime moduli of less +than 1024 bits to be used. If an application wanted to be fully compliant +with the FIPS 186-2 CR1, it should refuse to submit requests to the Cryptography +library to sign data with a prime modulus of less than 1024 bits.

      • +

      The following are some important features of DSA:

        +
      • Key Generation

        DSA keys have an associated set of parameters, +these parameters are generally public and used across a community of users. +If some parameters are supplied the key generation will use those parameters +or it will generate a set if there are none supplied.

      • +
      • Parameter Generation

        Parameter generation for DSA keys +is implemented as specified in FIPS-186.

      • +

      Diffie-Hellman (DH)

      The Cryptography library +supports Diffie-Hellman as specified in PKCS#3. Note that due to security concerns and a serious +lack of interoperable implementations, the library does not support DH parameter +generation. It is up to the application using the DH implementation to ensure +that they trust the source of the parameters they intend to use for a DH key +exchange.

      +
      Base classes +and their derived classes

      The asymmetric cipher API is used by +the certman (certitificate management) component for WTLS and X.509 certificate +support and by appinst for SIS file signature verification. It is also used +by Networking (TLS/IPSec).

      CRSAParameters, CDSAParameters, +and CDHParameters are the base classes that allow a client +to use the supported asymmetric algorithms listed above. The classes hold +the domain parameters used by the public key algorithms. They are used by +some of the asymmetric algorithms to define some common mathematical structures +used by the encryption or signature processes.

      The diagrams below +show the main classes used in asymmetric cipher framework. Blue dotted arrows +indicate that a class is contained or used by another class. The arrows are +labelled with the variable(s) through which the pointed class is accessible. +The color of the boxes indicates the type of Symbian class, i.e., M, C, R or T class. For detailed information on each component see the Cryptography API +Reference material.

      RSA, padding and associated classes

      +The inheritance diagram above shows the <codeph>RInteger</codeph> and <codeph>CRSAParameters</codeph> classes, +and also the <codeph>CEncryptor</codeph>, <codeph>CDecryptor</codeph> and <codeph>CPadding</codeph> abstract +classes. Also shown are the following classes from the Cryptography API: <codeph>TInteger</codeph>, <codeph>MCryptoSystem</codeph>, <codeph>CRSAPKCS1v15Decryptor</codeph>, <codeph>CRSAPKCS1v15Encryptor</codeph>, <codeph>CRSAPrivateKey</codeph>, <codeph>CRSAPublicKey</codeph>, <codeph>CRSAPrivateKeyStandard</codeph>, <codeph>CRSAPrivateKeyCRT</codeph>, <codeph>CRSAKeyPair</codeph>, <codeph>CPaddingPKCS7</codeph>, <codeph>CPaddingPKCS1Encryption</codeph>, <codeph>CPaddingNone</codeph>, <codeph>CPaddingPKCS1Signature</codeph>, and <codeph>CPaddingSSLv3</codeph>. + + + +The inheritance diagram above shows the <codeph>CRSASigner</codeph> and <codeph>CRSAVerifier</codeph> classes. +Also shown are the following classes from the Cryptography API: <codeph>MSignatureSystem</codeph>, <codeph>CSigner</codeph>, <codeph>CRSAPKCS1v15Signer</codeph>, <codeph>CRSAParameters</codeph>, <codeph>CRSAPrivateKey</codeph>, <codeph>CRSAPublicKey</codeph>, <codeph>CPadding</codeph>, <codeph>CPaddingPKCS1Signature</codeph>, <codeph>CVerifier</codeph>, and <codeph>CRSAPKCS1v15Verifier</codeph>. + + +

      DSA and associated classes

      +The inheritance diagram above shows the <codeph>CDSAParameters</codeph> class. +Also shown are the following classes from the Cryptography API: <codeph>MSignatureSystem</codeph>, <codeph>TInteger</codeph>, <codeph>RInteger</codeph>, <codeph>CSigner</codeph>, <codeph>CDSASigner</codeph>, <codeph>CDSASignature</codeph>, <codeph>CDSAPrimeCertificate</codeph>, <codeph>CDSAKeyPair</codeph>, <codeph>CDSAPrivateKey</codeph>, <codeph>CDSAPublicKey</codeph>, <codeph>CVerifier</codeph>, +and <codeph>CDSAVerifier</codeph>. + +

      DH and associated classes

      + The inheritance diagram above shows the <codeph>CDHParameters</codeph> class. +Also shown are the following classes from the Cryptography API: <codeph>TInteger</codeph>, <codeph>RInteger</codeph>, <codeph>CDHPrivateKey</codeph>, <codeph>CDHPublicKey</codeph>, <codeph>CDH</codeph>, and <codeph>CDHKeyPair</codeph>. + +
      +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-35E9F104-95F7-511F-B0C5-AB64BCA972D0-GENID-1-12-1-26-1-1-9-1-4-1-6-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-35E9F104-95F7-511F-B0C5-AB64BCA972D0-GENID-1-12-1-26-1-1-9-1-4-1-6-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,167 @@ + + + + + +Asymmetric +ciphers -- guide +
        +
      • What is asymmetric cryptography?

      • +
      • Types of asymmetric algorithms supported

      • +
      • Base classes and their derived classes

      • +
      +
      What is asymmetric +cryptography?

      Asymmetric ciphers, unlike symmetric ciphers, are +algorithms that involve the use of two keys: a private key and a public key. +The private key is kept secret, while the public key is made publicly available. +For schemes which are thought to be secure, it is believed that deriving the +private key from the public key, or any transformation resulting from the +public key, is computationally infeasible.

      This type of algorithm generates +the keys as key pairs. This means that if one key in the pair is used to encrypt +some data, only the other key can decrypt it, and vice versa.

      +The diagram above shows the encryption and decryption process using: +an asymmetric algorithm; a plaintext message, M; a private key, K1, and a +public key, K2 (or vice versa); and the ciphertext, K1(M). + +

      Although it varies depending on the specific algorithm, the generation +of asymmetric keys is much slower than symmetric key generation.

      There +are four basic primitives in asymmetric cryptography: encryption and decryption, +and signing and verification.

      Encryption +schemes

      In order to encrypt a message with an asymmetric scheme, +one performs a well-known transformation on the message using the public key +of the intended recipient. Upon receipt, the receiver can decrypt this message +using the inverse transformation and the associated private key. Provided +that only the intended recipient knows the associated private key, it is believed +that message secrecy between the sender and receiver is achieved.

      Signature schemes

      Conversely, +in order to digitally sign a message with an asymmetric scheme, one performs +another well-known transformation on the message using one's own private key. +Both the original message and the resulting transformation are sent to the +intended recipient. Upon receipt, the receiver can verify that the message +was signed by the associated private key by performing the inverse operation +with the public key as input, and then comparing the received message with +the message obtained from the transformation of the signature.

      +
      Types of asymmetric +algorithms supported

      The following asymmetric algorithms are supported:

      + + + +

      Asymmetric algorithm

      +

      What it's used for

      +

      Specified in:

      +
      + + + +

      RSA

      +

      both encryption and digital signatures

      +

      PKCS#1 v1.5

      +
      + +

      DSA (Digital Signature Algorithm)

      +

      signing data

      +

      FIPS 186-2 CR1

      +
      + +

      DH (Diffie-Hellman)

      +

      secure exchange of keys between two parties

      +

      PKCS#3

      +
      + + +

      RSA

      The +Cryptography library allows support for RSA as specified in PKCS#1 v1.5. The library does not, in and of itself, +fulfil all the requirements of PKCS#1 v1.5. This is because the Cryptography +library’s modular design allows applications utilizing it to provide their +own mechanisms of certain operations. At minimum, signature input data (be +prepared in compliance with PKCS#1 v1.5) must be provided by applications +in order to support PKCS#1 v1.5.

        +
      • Private Key Encryption and Decryption

        RSA private keys +provide functionality for encrypting and decrypting data with the private +key. Encrypting with the private key is typically used in signature generation +while decrypting would be used for key exchange or confidentiality of other +small amounts of data.

        The basic mathematics involved in the encryption +and decryption is identical, the differences lay with the handling of padding; +encryption adds padding while decryption removes and checks it.

      • +
      • Padding

        For padding the existing PKCS#1 padding mechanism +is used. However, this interface allows the use of any defined padding mechanism.

      • +
      • Key Generation

        Before any private keys can be used they +need to be generated. They can be generated on the device or generated elsewhere.

        An +RSA modulus takes the form of the product of a pair of large prime numbers, +which will be generated randomly and considered prime if they pass a probabilistic +primality test (where the chance of claiming a non-prime is prime is less +than 1 in 230). This generation process can be rather long-winded, +even for relatively small keys.

        While there is no actually limit on +RSA modulus sizes, for most applications they range from 512 bits to 4096 +bits.

      • +

      DSA

      The +Cryptography library allows support for NIST Digital Signature Standard (DSS) +as specified in FIPS 186-2 change request 1. The standard specifies +DSA as the algorithm for digital signatures and SHA-1 for hashing. At minimum, +the following items must be provided by applications using the library in +order to be fully compliant:

        +
      • Signature input data +must be hashed with SHA-1 as specified in FIPS 180-1.

        or should it be

        Signature +input data must be hashed with SHA-1 as specified in FIPS 180-2.

      • +
      • A FIPS-186-2 CR 1 compliant +random number generator must be supplied. The library provides a mechanism +for using such a random number generator if required.

      • +
      • For backwards compatibility +reasons, the Cryptography library continues to allow prime moduli of less +than 1024 bits to be used. If an application wanted to be fully compliant +with the FIPS 186-2 CR1, it should refuse to submit requests to the Cryptography +library to sign data with a prime modulus of less than 1024 bits.

      • +

      The following are some important features of DSA:

        +
      • Key Generation

        DSA keys have an associated set of parameters, +these parameters are generally public and used across a community of users. +If some parameters are supplied the key generation will use those parameters +or it will generate a set if there are none supplied.

      • +
      • Parameter Generation

        Parameter generation for DSA keys +is implemented as specified in FIPS-186.

      • +

      Diffie-Hellman (DH)

      The Cryptography library +supports Diffie-Hellman as specified in PKCS#3. Note that due to security concerns and a serious +lack of interoperable implementations, the library does not support DH parameter +generation. It is up to the application using the DH implementation to ensure +that they trust the source of the parameters they intend to use for a DH key +exchange.

      +
      Base classes +and their derived classes

      The asymmetric cipher API is used by +the certman (certitificate management) component for WTLS and X.509 certificate +support and by appinst for SIS file signature verification. It is also used +by Networking (TLS/IPSec).

      CRSAParameters, CDSAParameters, +and CDHParameters are the base classes that allow a client +to use the supported asymmetric algorithms listed above. The classes hold +the domain parameters used by the public key algorithms. They are used by +some of the asymmetric algorithms to define some common mathematical structures +used by the encryption or signature processes.

      The diagrams below +show the main classes used in asymmetric cipher framework. Blue dotted arrows +indicate that a class is contained or used by another class. The arrows are +labelled with the variable(s) through which the pointed class is accessible. +The color of the boxes indicates the type of Symbian class, i.e., M, C, R or T class. For detailed information on each component see the Cryptography API +Reference material.

      RSA, padding and associated classes

      +The inheritance diagram above shows the <codeph>RInteger</codeph> and <codeph>CRSAParameters</codeph> classes, +and also the <codeph>CEncryptor</codeph>, <codeph>CDecryptor</codeph> and <codeph>CPadding</codeph> abstract +classes. Also shown are the following classes from the Cryptography API: <codeph>TInteger</codeph>, <codeph>MCryptoSystem</codeph>, <codeph>CRSAPKCS1v15Decryptor</codeph>, <codeph>CRSAPKCS1v15Encryptor</codeph>, <codeph>CRSAPrivateKey</codeph>, <codeph>CRSAPublicKey</codeph>, <codeph>CRSAPrivateKeyStandard</codeph>, <codeph>CRSAPrivateKeyCRT</codeph>, <codeph>CRSAKeyPair</codeph>, <codeph>CPaddingPKCS7</codeph>, <codeph>CPaddingPKCS1Encryption</codeph>, <codeph>CPaddingNone</codeph>, <codeph>CPaddingPKCS1Signature</codeph>, and <codeph>CPaddingSSLv3</codeph>. + + + +The inheritance diagram above shows the <codeph>CRSASigner</codeph> and <codeph>CRSAVerifier</codeph> classes. +Also shown are the following classes from the Cryptography API: <codeph>MSignatureSystem</codeph>, <codeph>CSigner</codeph>, <codeph>CRSAPKCS1v15Signer</codeph>, <codeph>CRSAParameters</codeph>, <codeph>CRSAPrivateKey</codeph>, <codeph>CRSAPublicKey</codeph>, <codeph>CPadding</codeph>, <codeph>CPaddingPKCS1Signature</codeph>, <codeph>CVerifier</codeph>, and <codeph>CRSAPKCS1v15Verifier</codeph>. + + +

      DSA and associated classes

      +The inheritance diagram above shows the <codeph>CDSAParameters</codeph> class. +Also shown are the following classes from the Cryptography API: <codeph>MSignatureSystem</codeph>, <codeph>TInteger</codeph>, <codeph>RInteger</codeph>, <codeph>CSigner</codeph>, <codeph>CDSASigner</codeph>, <codeph>CDSASignature</codeph>, <codeph>CDSAPrimeCertificate</codeph>, <codeph>CDSAKeyPair</codeph>, <codeph>CDSAPrivateKey</codeph>, <codeph>CDSAPublicKey</codeph>, <codeph>CVerifier</codeph>, +and <codeph>CDSAVerifier</codeph>. + +

      DH and associated classes

      + The inheritance diagram above shows the <codeph>CDHParameters</codeph> class. +Also shown are the following classes from the Cryptography API: <codeph>TInteger</codeph>, <codeph>RInteger</codeph>, <codeph>CDHPrivateKey</codeph>, <codeph>CDHPublicKey</codeph>, <codeph>CDH</codeph>, and <codeph>CDHKeyPair</codeph>. + +
      +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-35E9F104-95F7-511F-B0C5-AB64BCA972D0.dita --- a/Symbian3/PDK/Source/GUID-35E9F104-95F7-511F-B0C5-AB64BCA972D0.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,167 +0,0 @@ - - - - - -Asymmetric -ciphers -- guide -
        -
      • What is asymmetric cryptography?

      • -
      • Types of asymmetric algorithms supported

      • -
      • Base classes and their derived classes

      • -
      -
      What is asymmetric -cryptography?

      Asymmetric ciphers, unlike symmetric ciphers, are -algorithms that involve the use of two keys: a private key and a public key. -The private key is kept secret, while the public key is made publicly available. -For schemes which are thought to be secure, it is believed that deriving the -private key from the public key, or any transformation resulting from the -public key, is computationally infeasible.

      This type of algorithm generates -the keys as key pairs. This means that if one key in the pair is used to encrypt -some data, only the other key can decrypt it, and vice versa.

      -The diagram above shows the encryption and decryption process using: -an asymmetric algorithm; a plaintext message, M; a private key, K1, and a -public key, K2 (or vice versa); and the ciphertext, K1(M). - -

      Although it varies depending on the specific algorithm, the generation -of asymmetric keys is much slower than symmetric key generation.

      There -are four basic primitives in asymmetric cryptography: encryption and decryption, -and signing and verification.

      Encryption -schemes

      In order to encrypt a message with an asymmetric scheme, -one performs a well-known transformation on the message using the public key -of the intended recipient. Upon receipt, the receiver can decrypt this message -using the inverse transformation and the associated private key. Provided -that only the intended recipient knows the associated private key, it is believed -that message secrecy between the sender and receiver is achieved.

      Signature schemes

      Conversely, -in order to digitally sign a message with an asymmetric scheme, one performs -another well-known transformation on the message using one's own private key. -Both the original message and the resulting transformation are sent to the -intended recipient. Upon receipt, the receiver can verify that the message -was signed by the associated private key by performing the inverse operation -with the public key as input, and then comparing the received message with -the message obtained from the transformation of the signature.

      -
      Types of asymmetric -algorithms supported

      The following asymmetric algorithms are supported:

      - - - -

      Asymmetric algorithm

      -

      What it's used for

      -

      Specified in:

      -
      - - - -

      RSA

      -

      both encryption and digital signatures

      -

      PKCS#1 v1.5

      -
      - -

      DSA (Digital Signature Algorithm)

      -

      signing data

      -

      FIPS 186-2 CR1

      -
      - -

      DH (Diffie-Hellman)

      -

      secure exchange of keys between two parties

      -

      PKCS#3

      -
      - - -

      RSA

      The -Cryptography library allows support for RSA as specified in PKCS#1 v1.5. The library does not, in and of itself, -fulfil all the requirements of PKCS#1 v1.5. This is because the Cryptography -library’s modular design allows applications utilizing it to provide their -own mechanisms of certain operations. At minimum, signature input data (be -prepared in compliance with PKCS#1 v1.5) must be provided by applications -in order to support PKCS#1 v1.5.

        -
      • Private Key Encryption and Decryption

        RSA private keys -provide functionality for encrypting and decrypting data with the private -key. Encrypting with the private key is typically used in signature generation -while decrypting would be used for key exchange or confidentiality of other -small amounts of data.

        The basic mathematics involved in the encryption -and decryption is identical, the differences lay with the handling of padding; -encryption adds padding while decryption removes and checks it.

      • -
      • Padding

        For padding the existing PKCS#1 padding mechanism -is used. However, this interface allows the use of any defined padding mechanism.

      • -
      • Key Generation

        Before any private keys can be used they -need to be generated. They can be generated on the device or generated elsewhere.

        An -RSA modulus takes the form of the product of a pair of large prime numbers, -which will be generated randomly and considered prime if they pass a probabilistic -primality test (where the chance of claiming a non-prime is prime is less -than 1 in 230). This generation process can be rather long-winded, -even for relatively small keys.

        While there is no actually limit on -RSA modulus sizes, for most applications they range from 512 bits to 4096 -bits.

      • -

      DSA

      The -Cryptography library allows support for NIST Digital Signature Standard (DSS) -as specified in FIPS 186-2 change request 1. The standard specifies -DSA as the algorithm for digital signatures and SHA-1 for hashing. At minimum, -the following items must be provided by applications using the library in -order to be fully compliant:

        -
      • Signature input data -must be hashed with SHA-1 as specified in FIPS 180-1.

        or should it be

        Signature -input data must be hashed with SHA-1 as specified in FIPS 180-2.

      • -
      • A FIPS-186-2 CR 1 compliant -random number generator must be supplied. The library provides a mechanism -for using such a random number generator if required.

      • -
      • For backwards compatibility -reasons, the Cryptography library continues to allow prime moduli of less -than 1024 bits to be used. If an application wanted to be fully compliant -with the FIPS 186-2 CR1, it should refuse to submit requests to the Cryptography -library to sign data with a prime modulus of less than 1024 bits.

      • -

      The following are some important features of DSA:

        -
      • Key Generation

        DSA keys have an associated set of parameters, -these parameters are generally public and used across a community of users. -If some parameters are supplied the key generation will use those parameters -or it will generate a set if there are none supplied.

      • -
      • Parameter Generation

        Parameter generation for DSA keys -is implemented as specified in FIPS-186.

      • -

      Diffie-Hellman (DH)

      The Cryptography library -supports Diffie-Hellman as specified in PKCS#3. Note that due to security concerns and a serious -lack of interoperable implementations, the library does not support DH parameter -generation. It is up to the application using the DH implementation to ensure -that they trust the source of the parameters they intend to use for a DH key -exchange.

      -
      Base classes -and their derived classes

      The asymmetric cipher API is used by -the certman (certitificate management) component for WTLS and X.509 certificate -support and by appinst for SIS file signature verification. It is also used -by Networking (TLS/IPSec).

      CRSAParameters, CDSAParameters, -and CDHParameters are the base classes that allow a client -to use the supported asymmetric algorithms listed above. The classes hold -the domain parameters used by the public key algorithms. They are used by -some of the asymmetric algorithms to define some common mathematical structures -used by the encryption or signature processes.

      The diagrams below -show the main classes used in asymmetric cipher framework. Blue dotted arrows -indicate that a class is contained or used by another class. The arrows are -labelled with the variable(s) through which the pointed class is accessible. -The color of the boxes indicates the type of Symbian class, i.e., M, C, R or T class. For detailed information on each component see the Cryptography API -Reference material.

      RSA, padding and associated classes

      -The inheritance diagram above shows the <codeph>RInteger</codeph> and <codeph>CRSAParameters</codeph> classes, -and also the <codeph>CEncryptor</codeph>, <codeph>CDecryptor</codeph> and <codeph>CPadding</codeph> abstract -classes. Also shown are the following classes from the Cryptography API: <codeph>TInteger</codeph>, <codeph>MCryptoSystem</codeph>, <codeph>CRSAPKCS1v15Decryptor</codeph>, <codeph>CRSAPKCS1v15Encryptor</codeph>, <codeph>CRSAPrivateKey</codeph>, <codeph>CRSAPublicKey</codeph>, <codeph>CRSAPrivateKeyStandard</codeph>, <codeph>CRSAPrivateKeyCRT</codeph>, <codeph>CRSAKeyPair</codeph>, <codeph>CPaddingPKCS7</codeph>, <codeph>CPaddingPKCS1Encryption</codeph>, <codeph>CPaddingNone</codeph>, <codeph>CPaddingPKCS1Signature</codeph>, and <codeph>CPaddingSSLv3</codeph>. - - - -The inheritance diagram above shows the <codeph>CRSASigner</codeph> and <codeph>CRSAVerifier</codeph> classes. -Also shown are the following classes from the Cryptography API: <codeph>MSignatureSystem</codeph>, <codeph>CSigner</codeph>, <codeph>CRSAPKCS1v15Signer</codeph>, <codeph>CRSAParameters</codeph>, <codeph>CRSAPrivateKey</codeph>, <codeph>CRSAPublicKey</codeph>, <codeph>CPadding</codeph>, <codeph>CPaddingPKCS1Signature</codeph>, <codeph>CVerifier</codeph>, and <codeph>CRSAPKCS1v15Verifier</codeph>. - - -

      DSA and associated classes

      -The inheritance diagram above shows the <codeph>CDSAParameters</codeph> class. -Also shown are the following classes from the Cryptography API: <codeph>MSignatureSystem</codeph>, <codeph>TInteger</codeph>, <codeph>RInteger</codeph>, <codeph>CSigner</codeph>, <codeph>CDSASigner</codeph>, <codeph>CDSASignature</codeph>, <codeph>CDSAPrimeCertificate</codeph>, <codeph>CDSAKeyPair</codeph>, <codeph>CDSAPrivateKey</codeph>, <codeph>CDSAPublicKey</codeph>, <codeph>CVerifier</codeph>, -and <codeph>CDSAVerifier</codeph>. - -

      DH and associated classes

      - The inheritance diagram above shows the <codeph>CDHParameters</codeph> class. -Also shown are the following classes from the Cryptography API: <codeph>TInteger</codeph>, <codeph>RInteger</codeph>, <codeph>CDHPrivateKey</codeph>, <codeph>CDHPublicKey</codeph>, <codeph>CDH</codeph>, and <codeph>CDHKeyPair</codeph>. - -
      -
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3603126B-661E-509B-8CCF-04A99F9ACE07.dita --- a/Symbian3/PDK/Source/GUID-3603126B-661E-509B-8CCF-04A99F9ACE07.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3603126B-661E-509B-8CCF-04A99F9ACE07.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,38 +1,33 @@ - - - - - -HelloWorld: -writes “Hello World!” to the console -
      Description

      HelloWorld is a very -simple piece of code showing how text is written to the console. All other -examples in Basics and System use -the same technique.

      The file CommonFramework.h contains -the entry point and all code necessary to support the example itself, including -the construction of the console and the cleanup stack. Putting code into a .h file -may not be conventional practice, but it is useful to do so here.

      -
      Download

      Click on the following link to download -the example: HelloWorld.zip

      Download some additional files -required by the example: CommonFramework.zip.

      Click browse to view the example code.

      Click browse to view the additional file.

      -
      Build

      The example includes the two project files -needed for building: bld.inf and the .mmp file.

      The Symbian platform build -process describes how to build this application, which results in an -executable called:

      \epoc32\release\<target>\<urel -or udeb>\HELLOWORLD.EXE.

      -
      Usage

      Run the executable HELLOWORLD.EXE.

      Executables -for the emulator targets wins and winscw can -be run on your PC. Executables for ARM targets must be copied to your target -platform before being run.

      -
      Classes used

      The example shows the use of the _LIT macro -which is used throughout all of the examples. The macro generates a:

      const static TLitC<TInt>

      object -and is an efficient and convenient way of generating constant literal text.

      As -this is a wide (Unicode) build, TLItC<TInt> is a typedef -for TLitC16<TInt>.

      + + + + + +HelloWorld: writes “Hello World!” to the console +
      Description

      HelloWorld is a very simple piece of code showing how text is written to the +console. All other examples in Basics and System use the same technique.

      The file CommonFramework.h contains the entry point and all code +necessary to support the example itself, including the construction +of the console and the cleanup stack. Putting code into a .h file may not be conventional practice, but it is useful +to do so here.

      +
      Download

      Click on the following link to +download the example: HelloWorld.zip

      Download some additional +files required by the example: CommonFramework.zip.

      Click browse to view the example code.

      Click browse to view the additional file.

      +
      Build

      The example includes the two project +files needed for building: bld.inf and the .mmp file.

      The Symbian platform build process +describes how to build this application, which results in an executable +called:

      \epoc32\release\<target>\<urel +or udeb>\HELLOWORLD.EXE.

      +
      Usage

      Run the executable HELLOWORLD.EXE.

      Executables for the emulator targets wins and winscw can be run on your PC. Executables +for ARM targets must be copied to your target platform before being +run.

      +
      Classes used

      The example shows the use +of the _LIT macro which is used throughout all of +the examples. The macro generates a:

      const static TLitC<TInt>

      object and is an efficient and convenient way of generating constant +literal text.

      As this is a wide (Unicode) build, TLItC<TInt> is a typedef for TLitC16<TInt>.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3618ECE9-C22B-5AE2-837E-FEBC55D42330.dita --- a/Symbian3/PDK/Source/GUID-3618ECE9-C22B-5AE2-837E-FEBC55D42330.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3618ECE9-C22B-5AE2-837E-FEBC55D42330.dita Fri Jul 16 17:23:46 2010 +0100 @@ -13,7 +13,7 @@ Figure 1. LBS Subsystem with the Privacy Protocol Module. Location Server Framework is on the left, with Standalone Privacy Mode components on the right. -
    Integration and configuration tasks

    This section lists the tasks that may be required to build and configure a working LBS subsystem. Tasks are categorised as required or optional.

    • [Required] Create a Standalone Privacy Mode client process.

    • [Required] Create a Privacy Handler (either a Privacy Controller or Privacy Notifiers).

      A privacy handler is required to inform the user when privacy requests are received from the network.

    • [Required] Modify the LBS Default Administration Settings File 1028224B.cre.

      It is necessary to configure LBS settings to load the Privacy Protocol Module on startup.

    • [Required] Modify the LBS Root Process File 10282266.cre to start only those LBS processes necessary for this configuration and to add the Privacy Controller application (if one is used). In this subsystem configuration Privacy Controller startup is managed by the LBS Root process.

    • [Optional] Create a Positioning Plug-in (PSY) to interface with integrated positioning hardware.

      You can use the Positioning Plug-in (PSY) API to develop plug-ins that integrate directly with positioning hardware, possibly using proprietary interfaces and protocols.

      Note: When the Privacy Protocol Module (PPM) is installed it is not possible to use A-GPS or cell-based positioning via Symbian platform components because the PPM is not a fully functional Network Protocol Module.

      If you want to use both the Privacy Protocol Module and A-GPS or cell-based positioning you must implement your own PSY(s) to obtain A-GPS assistance data and cell position data from the device domestic OS.

    • [Optional] Create an LBS Settings Application.

      Creating a settings application is only necessary if you want to give end users the ability to modify LBS settings at runtime. LBS provides the LBS Administration API and the Location Settings API to modify LBS settings at runtime.

    • [Optional] Create applications to use the Location Acquisition API.

      The Location Acquisition API can be used to create applications that use location data, such as navigation and location stamping applications. This API can be used by device creators and by third party application developers.

    • Build a ROM

    The following documents give additional information about LBS configuration:

    • Configuration Files for Standalone Privacy Mode gives a list of the LBS configuration files that you can modify.

    Integration +
    Integration and configuration tasks

    This section lists the tasks that may be required to build and configure a working LBS subsystem. Tasks are categorised as required or optional.

    • [Required] Create a Standalone Privacy Mode client process.

    • [Required] Create a Privacy Handler (either a Privacy Controller or Privacy Notifiers).

      A privacy handler is required to inform the user when privacy requests are received from the network.

    • [Required] Modify the LBS Default Administration Settings File 1028224B.cre.

      It is necessary to configure LBS settings to load the Privacy Protocol Module on startup.

    • [Required] Modify the LBS Root Process File 10282266.cre to start only those LBS processes necessary for this configuration and to add the Privacy Controller application (if one is used). In this subsystem configuration Privacy Controller startup is managed by the LBS Root process.

    • [Optional] Create a Positioning Plug-in (PSY) to interface with integrated positioning hardware.

      You can use the Positioning Plug-in (PSY) API to develop plug-ins that integrate directly with positioning hardware, possibly using proprietary interfaces and protocols.

      Note: When the Privacy Protocol Module (PPM) is installed it is not possible to use A-GPS or cell-based positioning via Symbian platform components because the PPM is not a fully functional Network Protocol Module.

      If you want to use both the Privacy Protocol Module and A-GPS or cell-based positioning you must implement your own PSY(s) to obtain A-GPS assistance data and cell position data from the device domestic OS.

    • [Optional] Create an LBS Settings Application.

      Creating a settings application is only necessary if you want to give end users the ability to modify LBS settings at runtime. LBS provides the LBS Administration API and the Location Settings API to modify LBS settings at runtime.

    • [Optional] Create applications to use the Location Acquisition API.

      The Location Acquisition API can be used to create applications that use location data, such as navigation and location stamping applications. This API can be used by device creators and by third party application developers.

    • Build a ROM

    The following documents give additional information about LBS configuration:

    • Configuration Files for Standalone Privacy Mode gives a list of the LBS configuration files that you can modify.

    Integration and Configuration Guide Overview LBS Architecture Overview Network Privacy API Privacy Request API
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-36221068-4E6D-4E03-AF9A-AD9465F1C6B6_d0e91751_href.png Binary file Symbian3/PDK/Source/GUID-36221068-4E6D-4E03-AF9A-AD9465F1C6B6_d0e91751_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-36221068-4E6D-4E03-AF9A-AD9465F1C6B6_d0e95949_href.png Binary file Symbian3/PDK/Source/GUID-36221068-4E6D-4E03-AF9A-AD9465F1C6B6_d0e95949_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-36743EC8-5A64-5FF5-8632-56CBBD04EC12.dita --- a/Symbian3/PDK/Source/GUID-36743EC8-5A64-5FF5-8632-56CBBD04EC12.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ - - - - - -How -to initialise simple RESOURCE members -<simple-initialiser> -simple-initialiser ::= - <number> | <string> | <resource-identifier> -
      -
    • A BYTE, WORD, LONG or DOUBLE member must be initialised with a number. The number can be the result of -simple expressions such as 3+1 or NUM1+NUM2 where NUM1 and NUM2 have -been #defined earlier on in the file.

    • -
    • A TEXT, LTEXT or BUF member -must be initialised with a string. If a length-limit has -been declared for that member in the STRUCT definition then -an error will be generated if the string is longer than -the limit. You cannot override this maximum length.

    • -
    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-36751DD3-448E-5B94-B6BC-76EF6DE97C75.dita --- a/Symbian3/PDK/Source/GUID-36751DD3-448E-5B94-B6BC-76EF6DE97C75.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-36751DD3-448E-5B94-B6BC-76EF6DE97C75.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,36 +1,30 @@ - - - - - -EmbApp: -An Embedded Application -
    Download

    Click on the following link to download -the example: embedded.zip

    Click: browse to view the example code.

    -
    Description

    This example comprises an embedded -application (embedded.dll) and the stub (embedded.exe). -The stub is essentially an empty executable that launches the embedded application, -which is wrapped up as an ECOM plug-in. Embedded.dll builds -on the minimal UI -application.

    The application is defined in the registration file (embedded_reg.rss) -as an embedded and/or a stand-alone application:

    embeddability=KAppEmbeddable;

    and KAppEmbeddable is defined in appinfo.rh.

    -
    Class Summary

    CEikApplication

    CEikDocument

    CEikAppUi

    CCoeControl

    -
    Launching an application

    EikStart::RunApplication(KAppEmbeddableUid) launches -the ECOM plugin using KAppEmbeddableUid.

    - -
    Build

    The Symbian -build process describes how to build an application. Using ECom plug-ins -as a mechanism for delivering embeddable applications is discussed in How to port guide: apps to -exes.

    The EmbApp example builds a plugin -called embedded.dll and an executable called embedded.exe in -the standard location (\epoc32\release\winscw\ <build_variant> for -CodeWarrior). Either launch the executable itself, or launch the emulator -and then select the embedded application from the Emulator's -extras bar.

    + + + + + +EmbApp: An Embedded Application +
    Download

    Click on the following link to +download the example: embedded.zip

    Click: browse to view the example code.

    +
    Description

    This example comprises an embedded +application (embedded.dll) and the stub (embedded.exe). The stub is essentially an empty executable +that launches the embedded application, which is wrapped up as an +ECOM plug-in. Embedded.dll builds on the minimal UI +application.

    The application is defined in the registration +file (embedded_reg.rss) as an embedded and/or +a stand-alone application:

    embeddability=KAppEmbeddable;

    and KAppEmbeddable is defined in appinfo.rh.

    +
    Class Summary

    CEikApplication

    CEikDocument

    CEikAppUi

    CCoeControl

    +
    Launching an application

    EikStart::RunApplication(KAppEmbeddableUid) launches the ECOM plugin using KAppEmbeddableUid.

    +
    Build

    The Symbian build process describes +how to build an application. Using ECom plug-ins as a mechanism for +delivering applications that can be embedded is discussed in How to port guide: +apps to exes.

    The EmbApp example builds a plugin called embedded.dll and an executable called embedded.exe in the +standard location (\epoc32\release\winscw\ <build_variant> for CodeWarrior). Either launch the executable +itself, or launch the emulator and then select the embedded application from the Emulator's extras bar.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-36AA53D2-A117-5D80-A5B4-67EF865DC40E.dita --- a/Symbian3/PDK/Source/GUID-36AA53D2-A117-5D80-A5B4-67EF865DC40E.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -library

    library filename-list

    Use the library statement to specify import libraries.

    The library statement may specify any number of files, and there may be many library statements. Specify the entire filename, e.g. euser.lib or euser.dso for ARMv5 target builds.

    Note: When you are building for Symbian OS v9.4 and beyond, you may change the library file extension from .lib to .dso in the MMP file. The ABIv2 toolchain will still allow you to link for ARM builds. However, it fails to link when you build for WINSCW target. Therefore, to make it work on both, the ARM and WINSCW build targets, it is recommended that the library file names with .lib extension be used.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-36BB14BD-34B3-4F5D-A670-707710E57585_d0e64105_href.png Binary file Symbian3/PDK/Source/GUID-36BB14BD-34B3-4F5D-A670-707710E57585_d0e64105_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-36BB14BD-34B3-4F5D-A670-707710E57585_d0e68328_href.png Binary file Symbian3/PDK/Source/GUID-36BB14BD-34B3-4F5D-A670-707710E57585_d0e68328_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-36BCDD1F-3713-5DF0-8D8A-CF093694B636-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-7-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-36BCDD1F-3713-5DF0-8D8A-CF093694B636-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-7-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,136 @@ + + + + + +Secure store encryption example code

    This example covers:

    • Creating and opening a new secure store protected by the supplied password

    • Opening an existing secure store

    • Writing some data to a new stream in the currently opened store, and returning the ID of the stream

    • Reading the data in a given stream from the currently opened store

    • Closing the currently opened store

    • Changing the password for the currently opened store.

    Also, see:

    • PBE example code

    • Secure stream example code

    Creating and opening a new secure store protected by the supplied password
    • Supporting code for this example

    +void CSecureStoreExample::CreateNewStoreL(const TDesC& aPassword) + { + // Check store is not already open + ASSERT(!iEncryptSet && !iSecureStore && !iFileStore); + + // Create a standard file store + iFileStore = CPermanentFileStore::ReplaceL(iFs, iFilename, EFileRead | EFileWrite | EFileShareExclusive); + iFileStore->SetTypeL(KPermanentFileStoreLayoutUid); + + // Create a CPBEncryptSet object (because a store is comprised of multiple + // independent objects) + TPBPassword password(aPassword); + iEncryptSet = CPBEncryptSet::NewL(password, ECipherDES_CBC); + + // Write encryption data and encrypted master key to the root stream of the + // store. We need to store both of these pieces of information to be able + // to access the secure store at a later time. + RStoreWriteStream writeStream; + TStreamId rootId = writeStream.CreateLC(*iFileStore); + writeStream << iEncryptSet->EncryptionData(); + writeStream << iEncryptSet->EncryptedMasterKey(); + writeStream.CommitL(); + CleanupStack::PopAndDestroy(&writeStream); + iFileStore->SetRootL(rootId); + iFileStore->CommitL(); + + // Create the secure store - this wraps the file store providing transparent + // encryption/decryption of streams. + iSecureStore = CSecureStore::NewL(*iFileStore, *iEncryptSet); + } +
    Opening an existing secure store
    • Supporting code for this example

    +// Leaves with KErrBadPassphrase if the password is +// not the same as the one used when creating the store. +void CSecureStoreExample::OpenExistingStoreL(const TDesC& aPassword) + { + // Check store is not already open + ASSERT(!iEncryptSet && !iSecureStore && !iFileStore); + + // Open a standard file store + iFileStore = CPermanentFileStore::OpenL(iFs, iFilename, EFileRead | EFileWrite | EFileShareExclusive); + + // Read the encryption data and encrypted master key from the root stream + TStreamId rootId = iFileStore->Root(); + RStoreReadStream readStream; + readStream.OpenLC(*iFileStore, rootId); + CPBEncryptionData* encryptionData = CPBEncryptionData::NewLC(readStream); + HBufC8* encryptedMasterKey = HBufC8::NewLC(readStream, KMaxTInt); + + // Use these to recreate the CPBEncryptSet object (this leaves if + // aPassword is wrong) + iEncryptSet = CPBEncryptSet::NewL(*encryptionData, *encryptedMasterKey, aPassword); + + // Create the secure store + iSecureStore = CSecureStore::NewL(*iFileStore, *iEncryptSet); + + // Free memory + CleanupStack::PopAndDestroy(3, &readStream); + } +
    Writing some data to a new stream in the currently opened store, and returning the ID of the stream
    • Supporting code for this example

    +TStreamId CSecureStoreExample::WriteEncryptedDataL(const TDesC8& aInput) + { + // Check store is open + ASSERT(iEncryptSet && iSecureStore && iFileStore); + + // Create a new stream in the store + RStoreWriteStream writeStream; + TStreamId newStreamId = writeStream.CreateLC(*iSecureStore); + + // Write data - this is automatically encrypted + writeStream << aInput; + writeStream.CommitL(); + iSecureStore->CommitL(); + + CleanupStack::PopAndDestroy(&writeStream); + return newStreamId; + } +
    Reading the data in a given stream from the currently opened store
    • Supporting code for this example

    +HBufC8* CSecureStoreExample::ReadEncryptedDataLC(TStreamId aStreamId) + { + // Check store is open + ASSERT(iEncryptSet && iSecureStore && iFileStore); + + // Open an existing stream in the store + RStoreReadStream readStream; + readStream.OpenLC(*iSecureStore, aStreamId); + + // Read data - this is automatically decrypted + HBufC8* output = HBufC8::NewL(readStream, KMaxTInt); + + CleanupStack::PopAndDestroy(&readStream); + CleanupStack::PushL(output); + return output; + } +
    Closing the currently opened store
    • Supporting code for this example

    +void CSecureStoreExample::CloseStore() + { + delete iSecureStore; + iSecureStore = NULL; + delete iEncryptSet; + iEncryptSet = NULL; + delete iFileStore; + iFileStore = NULL; + } +
    Changing the password for the currently opened store
    • Supporting code for this example

    +void CSecureStoreExample::ChangePasswordL(const TDesC& aNewPassword) + { + // Check store is open + ASSERT(iEncryptSet && iSecureStore && iFileStore); + + // Change password on encrypt set object + iEncryptSet->ChangePasswordL(aNewPassword); + + // Must now rewrite data in root stream + TStreamId rootId = iFileStore->Root(); + RStoreWriteStream writeStream; + writeStream.ReplaceLC(*iFileStore, rootId); + writeStream << iEncryptSet->EncryptionData(); + writeStream << iEncryptSet->EncryptedMasterKey(); + writeStream.CommitL(); + iFileStore->CommitL(); + + CleanupStack::PopAndDestroy(&writeStream); + } +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-36BCDD1F-3713-5DF0-8D8A-CF093694B636-GENID-1-12-1-26-1-1-9-1-12-1-7-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-36BCDD1F-3713-5DF0-8D8A-CF093694B636-GENID-1-12-1-26-1-1-9-1-12-1-7-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,136 @@ + + + + + +Secure store encryption example code

    This example covers:

    • Creating and opening a new secure store protected by the supplied password

    • Opening an existing secure store

    • Writing some data to a new stream in the currently opened store, and returning the ID of the stream

    • Reading the data in a given stream from the currently opened store

    • Closing the currently opened store

    • Changing the password for the currently opened store.

    Also, see:

    • PBE example code

    • Secure stream example code

    Creating and opening a new secure store protected by the supplied password
    • Supporting code for this example

    +void CSecureStoreExample::CreateNewStoreL(const TDesC& aPassword) + { + // Check store is not already open + ASSERT(!iEncryptSet && !iSecureStore && !iFileStore); + + // Create a standard file store + iFileStore = CPermanentFileStore::ReplaceL(iFs, iFilename, EFileRead | EFileWrite | EFileShareExclusive); + iFileStore->SetTypeL(KPermanentFileStoreLayoutUid); + + // Create a CPBEncryptSet object (because a store is comprised of multiple + // independent objects) + TPBPassword password(aPassword); + iEncryptSet = CPBEncryptSet::NewL(password, ECipherDES_CBC); + + // Write encryption data and encrypted master key to the root stream of the + // store. We need to store both of these pieces of information to be able + // to access the secure store at a later time. + RStoreWriteStream writeStream; + TStreamId rootId = writeStream.CreateLC(*iFileStore); + writeStream << iEncryptSet->EncryptionData(); + writeStream << iEncryptSet->EncryptedMasterKey(); + writeStream.CommitL(); + CleanupStack::PopAndDestroy(&writeStream); + iFileStore->SetRootL(rootId); + iFileStore->CommitL(); + + // Create the secure store - this wraps the file store providing transparent + // encryption/decryption of streams. + iSecureStore = CSecureStore::NewL(*iFileStore, *iEncryptSet); + } +
    Opening an existing secure store
    • Supporting code for this example

    +// Leaves with KErrBadPassphrase if the password is +// not the same as the one used when creating the store. +void CSecureStoreExample::OpenExistingStoreL(const TDesC& aPassword) + { + // Check store is not already open + ASSERT(!iEncryptSet && !iSecureStore && !iFileStore); + + // Open a standard file store + iFileStore = CPermanentFileStore::OpenL(iFs, iFilename, EFileRead | EFileWrite | EFileShareExclusive); + + // Read the encryption data and encrypted master key from the root stream + TStreamId rootId = iFileStore->Root(); + RStoreReadStream readStream; + readStream.OpenLC(*iFileStore, rootId); + CPBEncryptionData* encryptionData = CPBEncryptionData::NewLC(readStream); + HBufC8* encryptedMasterKey = HBufC8::NewLC(readStream, KMaxTInt); + + // Use these to recreate the CPBEncryptSet object (this leaves if + // aPassword is wrong) + iEncryptSet = CPBEncryptSet::NewL(*encryptionData, *encryptedMasterKey, aPassword); + + // Create the secure store + iSecureStore = CSecureStore::NewL(*iFileStore, *iEncryptSet); + + // Free memory + CleanupStack::PopAndDestroy(3, &readStream); + } +
    Writing some data to a new stream in the currently opened store, and returning the ID of the stream
    • Supporting code for this example

    +TStreamId CSecureStoreExample::WriteEncryptedDataL(const TDesC8& aInput) + { + // Check store is open + ASSERT(iEncryptSet && iSecureStore && iFileStore); + + // Create a new stream in the store + RStoreWriteStream writeStream; + TStreamId newStreamId = writeStream.CreateLC(*iSecureStore); + + // Write data - this is automatically encrypted + writeStream << aInput; + writeStream.CommitL(); + iSecureStore->CommitL(); + + CleanupStack::PopAndDestroy(&writeStream); + return newStreamId; + } +
    Reading the data in a given stream from the currently opened store
    • Supporting code for this example

    +HBufC8* CSecureStoreExample::ReadEncryptedDataLC(TStreamId aStreamId) + { + // Check store is open + ASSERT(iEncryptSet && iSecureStore && iFileStore); + + // Open an existing stream in the store + RStoreReadStream readStream; + readStream.OpenLC(*iSecureStore, aStreamId); + + // Read data - this is automatically decrypted + HBufC8* output = HBufC8::NewL(readStream, KMaxTInt); + + CleanupStack::PopAndDestroy(&readStream); + CleanupStack::PushL(output); + return output; + } +
    Closing the currently opened store
    • Supporting code for this example

    +void CSecureStoreExample::CloseStore() + { + delete iSecureStore; + iSecureStore = NULL; + delete iEncryptSet; + iEncryptSet = NULL; + delete iFileStore; + iFileStore = NULL; + } +
    Changing the password for the currently opened store
    • Supporting code for this example

    +void CSecureStoreExample::ChangePasswordL(const TDesC& aNewPassword) + { + // Check store is open + ASSERT(iEncryptSet && iSecureStore && iFileStore); + + // Change password on encrypt set object + iEncryptSet->ChangePasswordL(aNewPassword); + + // Must now rewrite data in root stream + TStreamId rootId = iFileStore->Root(); + RStoreWriteStream writeStream; + writeStream.ReplaceLC(*iFileStore, rootId); + writeStream << iEncryptSet->EncryptionData(); + writeStream << iEncryptSet->EncryptedMasterKey(); + writeStream.CommitL(); + iFileStore->CommitL(); + + CleanupStack::PopAndDestroy(&writeStream); + } +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-36BCDD1F-3713-5DF0-8D8A-CF093694B636.dita --- a/Symbian3/PDK/Source/GUID-36BCDD1F-3713-5DF0-8D8A-CF093694B636.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,136 +0,0 @@ - - - - - -Secure store encryption example code

    This example covers:

    • Creating and opening a new secure store protected by the supplied password

    • Opening an existing secure store

    • Writing some data to a new stream in the currently opened store, and returning the ID of the stream

    • Reading the data in a given stream from the currently opened store

    • Closing the currently opened store

    • Changing the password for the currently opened store.

    Also, see:

    • PBE example code

    • Secure stream example code

    Creating and opening a new secure store protected by the supplied password
    • Supporting code for this example

    -void CSecureStoreExample::CreateNewStoreL(const TDesC& aPassword) - { - // Check store is not already open - ASSERT(!iEncryptSet && !iSecureStore && !iFileStore); - - // Create a standard file store - iFileStore = CPermanentFileStore::ReplaceL(iFs, iFilename, EFileRead | EFileWrite | EFileShareExclusive); - iFileStore->SetTypeL(KPermanentFileStoreLayoutUid); - - // Create a CPBEncryptSet object (because a store is comprised of multiple - // independent objects) - TPBPassword password(aPassword); - iEncryptSet = CPBEncryptSet::NewL(password, ECipherDES_CBC); - - // Write encryption data and encrypted master key to the root stream of the - // store. We need to store both of these pieces of information to be able - // to access the secure store at a later time. - RStoreWriteStream writeStream; - TStreamId rootId = writeStream.CreateLC(*iFileStore); - writeStream << iEncryptSet->EncryptionData(); - writeStream << iEncryptSet->EncryptedMasterKey(); - writeStream.CommitL(); - CleanupStack::PopAndDestroy(&writeStream); - iFileStore->SetRootL(rootId); - iFileStore->CommitL(); - - // Create the secure store - this wraps the file store providing transparent - // encryption/decryption of streams. - iSecureStore = CSecureStore::NewL(*iFileStore, *iEncryptSet); - } -
    Opening an existing secure store
    • Supporting code for this example

    -// Leaves with KErrBadPassphrase if the password is -// not the same as the one used when creating the store. -void CSecureStoreExample::OpenExistingStoreL(const TDesC& aPassword) - { - // Check store is not already open - ASSERT(!iEncryptSet && !iSecureStore && !iFileStore); - - // Open a standard file store - iFileStore = CPermanentFileStore::OpenL(iFs, iFilename, EFileRead | EFileWrite | EFileShareExclusive); - - // Read the encryption data and encrypted master key from the root stream - TStreamId rootId = iFileStore->Root(); - RStoreReadStream readStream; - readStream.OpenLC(*iFileStore, rootId); - CPBEncryptionData* encryptionData = CPBEncryptionData::NewLC(readStream); - HBufC8* encryptedMasterKey = HBufC8::NewLC(readStream, KMaxTInt); - - // Use these to recreate the CPBEncryptSet object (this leaves if - // aPassword is wrong) - iEncryptSet = CPBEncryptSet::NewL(*encryptionData, *encryptedMasterKey, aPassword); - - // Create the secure store - iSecureStore = CSecureStore::NewL(*iFileStore, *iEncryptSet); - - // Free memory - CleanupStack::PopAndDestroy(3, &readStream); - } -
    Writing some data to a new stream in the currently opened store, and returning the ID of the stream
    • Supporting code for this example

    -TStreamId CSecureStoreExample::WriteEncryptedDataL(const TDesC8& aInput) - { - // Check store is open - ASSERT(iEncryptSet && iSecureStore && iFileStore); - - // Create a new stream in the store - RStoreWriteStream writeStream; - TStreamId newStreamId = writeStream.CreateLC(*iSecureStore); - - // Write data - this is automatically encrypted - writeStream << aInput; - writeStream.CommitL(); - iSecureStore->CommitL(); - - CleanupStack::PopAndDestroy(&writeStream); - return newStreamId; - } -
    Reading the data in a given stream from the currently opened store
    • Supporting code for this example

    -HBufC8* CSecureStoreExample::ReadEncryptedDataLC(TStreamId aStreamId) - { - // Check store is open - ASSERT(iEncryptSet && iSecureStore && iFileStore); - - // Open an existing stream in the store - RStoreReadStream readStream; - readStream.OpenLC(*iSecureStore, aStreamId); - - // Read data - this is automatically decrypted - HBufC8* output = HBufC8::NewL(readStream, KMaxTInt); - - CleanupStack::PopAndDestroy(&readStream); - CleanupStack::PushL(output); - return output; - } -
    Closing the currently opened store
    • Supporting code for this example

    -void CSecureStoreExample::CloseStore() - { - delete iSecureStore; - iSecureStore = NULL; - delete iEncryptSet; - iEncryptSet = NULL; - delete iFileStore; - iFileStore = NULL; - } -
    Changing the password for the currently opened store
    • Supporting code for this example

    -void CSecureStoreExample::ChangePasswordL(const TDesC& aNewPassword) - { - // Check store is open - ASSERT(iEncryptSet && iSecureStore && iFileStore); - - // Change password on encrypt set object - iEncryptSet->ChangePasswordL(aNewPassword); - - // Must now rewrite data in root stream - TStreamId rootId = iFileStore->Root(); - RStoreWriteStream writeStream; - writeStream.ReplaceLC(*iFileStore, rootId); - writeStream << iEncryptSet->EncryptionData(); - writeStream << iEncryptSet->EncryptedMasterKey(); - writeStream.CommitL(); - iFileStore->CommitL(); - - CleanupStack::PopAndDestroy(&writeStream); - } -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-36F18DC4-7BD0-59C6-95E9-8FD945B86D7E_d0e335147_href.png Binary file Symbian3/PDK/Source/GUID-36F18DC4-7BD0-59C6-95E9-8FD945B86D7E_d0e335147_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-36F18DC4-7BD0-59C6-95E9-8FD945B86D7E_d0e341119_href.png Binary file Symbian3/PDK/Source/GUID-36F18DC4-7BD0-59C6-95E9-8FD945B86D7E_d0e341119_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-36FD1F9A-FA1C-5822-A95F-720600E8F418.dita --- a/Symbian3/PDK/Source/GUID-36FD1F9A-FA1C-5822-A95F-720600E8F418.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-36FD1F9A-FA1C-5822-A95F-720600E8F418.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Contact Items Management

    A Contact Item is an element in a Contact Database. Contact Items can be added, read, edited and removed from the database. As the diagram below shows, a Contact Item can be:

    • a contact card - either generic cards (CContactCard) or the device owner's card (CContactOwnCard)

    • a template card (CContactTemplate) - a card that sets the initial fields for other Contact Items

    • a collection of Contact Items (CContactItemPlusGroup) - a group that holds a set of associated Contact Item IDs

    • a contact which maps to the device's ICC (CContactICCEntry) or SIM (CContactCard).

    Each Contact Item is uniquely identified in the database by a Contact Item ID (TContactItemId). More than one Contact Item ID is referred to using a Contact Item ID array (CContactIdArray).

    CONTACT ITEM HIERARCHY -

    Contact Items have an access count and attributes ('hidden', for example). The access count is a record of the number of objects referencing a Contact Item. A Contact Item cannot be fully deleted until its access count is zero.

    Note: Fields in a Contact Item also have attributes. Attribute values specified in the Contact Item override those in the contained fields.

    Contact Items are accessed through the CContactDatabase class. Opening a Contact Item (using CContactDatabase::OpenContactL()) locks it so that it cannot be edited by another client. Closing the Contact Item (using CContactDatabase::CloseContactL()) releases the lock on the item without saving any changes made to it. Committing the Contact Item (using CContactDatabase::CommitContactL()) releases the lock and saves any changes made to it.

    Contact Item Fields

    Each Contact Item contains a number of fields (CContactItemFieldSet). Each field (CContactItemField) in CContactItemFieldSet has a content type, (CContentType), and a storage type, (TStorageType) and the field data (CContactTextField, CContactStoreField, CContactAgentField or CContactDateField).

    A content type contains at least one UID, using TFieldType. A storage type identifies the type of data (text, binary, contact agent ID, date/time) stored in a Contact Item field. As numeric field data is not supported all numbers are stored as text.

    Each field can also have a label which identifies the field to a user, for example, first name, last name. Fields can have attributes assigned to them such as hidden, disabled, synchronised, read only, user added, template and speed dial.

    Contact Groups

    A Contact Group (CContactGroup class) is a Contact Item which holds a set of associated Contact Item IDs. The members of the group may be contact cards, own cards, or even other groups. The group has a label which identifies the group such as 'family', or 'colleagues' to users. The type of a Contact Group is KUidContactGroup, as returned by CContactGroup::Type().

    It is possible to construct a group using CContactGroup::CreateContactGroupL(). These functions create the group, optionally with a label, add it to the database, and return a pointer to it. To create an association between a card and a group, use CContactDatabase::AddContactToGroupL(). To remove the association, use CContactDatabase::RemoveContactFromGroupL(). To find out which groups a card belongs to, use CContactCard::GroupsJoinedLC() or CContactOwnCard::GroupsJoinedLC().

    \ No newline at end of file +

    Contact Items have an access count and attributes ('hidden', for example). The access count is a record of the number of objects referencing a Contact Item. A Contact Item cannot be fully deleted until its access count is zero.

    Note: Fields in a Contact Item also have attributes. Attribute values specified in the Contact Item override those in the contained fields.

    Contact Items are accessed through the CContactDatabase class. Opening a Contact Item (using CContactDatabase::OpenContactL()) locks it so that it cannot be edited by another client. Closing the Contact Item (using CContactDatabase::CloseContactL()) releases the lock on the item without saving any changes made to it. Committing the Contact Item (using CContactDatabase::CommitContactL()) releases the lock and saves any changes made to it.

    Contact Item Fields

    Each Contact Item contains a number of fields (CContactItemFieldSet). Each field (CContactItemField) in CContactItemFieldSet has a content type, (CContentType), and a storage type, (TStorageType) and the field data (CContactTextField, CContactStoreField, CContactAgentField or CContactDateField).

    A content type contains at least one UID, using TFieldType. A storage type identifies the type of data (text, binary, contact agent ID, date/time) stored in a Contact Item field. As numeric field data is not supported all numbers are stored as text.

    Each field can also have a label which identifies the field to a user, for example, first name, last name. Fields can have attributes assigned to them such as hidden, disabled, synchronised, read only, user added, template and speed dial.

    Contact Groups

    A Contact Group (CContactGroup class) is a Contact Item which holds a set of associated Contact Item IDs. The members of the group may be contact cards, own cards, or even other groups. The group has a label which identifies the group such as 'family', or 'colleagues' to users. The type of a Contact Group is KUidContactGroup, as returned by CContactGroup::Type().

    It is possible to construct a group using CContactGroup::CreateContactGroupL(). These functions create the group, optionally with a label, add it to the database, and return a pointer to it. To create an association between a card and a group, use CContactDatabase::AddContactToGroupL(). To remove the association, use CContactDatabase::RemoveContactFromGroupL(). To find out which groups a card belongs to, use CContactCard::GroupsJoinedLC() or CContactOwnCard::GroupsJoinedLC().

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-37042E73-123B-437B-8EC4-8FC6C3AD6D47_d0e1496_href.png Binary file Symbian3/PDK/Source/GUID-37042E73-123B-437B-8EC4-8FC6C3AD6D47_d0e1496_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-37042E73-123B-437B-8EC4-8FC6C3AD6D47_d0e1500_href.png Binary file Symbian3/PDK/Source/GUID-37042E73-123B-437B-8EC4-8FC6C3AD6D47_d0e1500_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-37057FD5-7ED0-5B18-9C28-39F6816D7627.dita --- a/Symbian3/PDK/Source/GUID-37057FD5-7ED0-5B18-9C28-39F6816D7627.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ - - - - - -Arrays -within structs -

    A declaration of a struct member may either be a simple type-name member-name, -or it may be an array of values of identical type.

    -

    Arrays are always indicated by square brackets:

    -STRUCT HAS_ARRAY - { - STRUCT elements[]; - } -

    In the example above, the HAS_ARRAY struct has one array -member, elements. Each member of elements is -of STRUCT type.

    -

    Array size

    -

    If you specify the array size, inside the square brackets, then the generated -resource will contain no count of the number of elements. So this resource:

    -STRUCT FIXED_ARRAY - { - WORD elements[3]; - } - -RESOURCE FIXED_ARRAY example1 - { - elements={9,8,7}; - } -

    will generate the output

    -0x09 0x00 0x08 0x00 0x07 0x00 -

    For variable length arrays, a count of the number of elements precedes -the resource. The default for this is a word, but by prefixing the struct -definition with LEN BYTE it will be a byte count. So the -following resource:

    -STRUCT VAR_ARRAY - { - WORD elements []; - } - -RESOURCE VAR_ARRAY example2 - { - elements={9,8,7}; - } -

    will generate the output

    -0x03 0x00 0x09 0x00 0x08 0x00 0x07 0x00 -

    whereas this resource:

    -STRUCT VAR_ARRAY2 - { - LEN BYTE WORD elements[]; - } - -RESOURCE VAR_ARRAY2 example3 - { - elements={9,8,7}; - } -

    will generate this output

    -0x03 0x09 0x00 0x08 0x00 0x07 0x00 -

    The compiler allows you to prefix LEN BYTE or LEN -WORD even for fixed length arrays, but it has no effect. Fixed length -arrays do not generate an element count.

    -
    -How to initialise -array RESOURCE members -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-377B04D8-4E8B-54C7-AE7F-8BD47CB81758_d0e11038_href.png Binary file Symbian3/PDK/Source/GUID-377B04D8-4E8B-54C7-AE7F-8BD47CB81758_d0e11038_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-377B04D8-4E8B-54C7-AE7F-8BD47CB81758_d0e11154_href.png Binary file Symbian3/PDK/Source/GUID-377B04D8-4E8B-54C7-AE7F-8BD47CB81758_d0e11154_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-37888891-DFB2-5A93-9547-3B22410906BF_d0e507126_href.png Binary file Symbian3/PDK/Source/GUID-37888891-DFB2-5A93-9547-3B22410906BF_d0e507126_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-37888891-DFB2-5A93-9547-3B22410906BF_d0e514588_href.png Binary file Symbian3/PDK/Source/GUID-37888891-DFB2-5A93-9547-3B22410906BF_d0e514588_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-379D9401-04A2-4A32-A3BF-C6F127E8F074_d0e1724_href.png Binary file Symbian3/PDK/Source/GUID-379D9401-04A2-4A32-A3BF-C6F127E8F074_d0e1724_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-379D9401-04A2-4A32-A3BF-C6F127E8F074_d0e1729_href.png Binary file Symbian3/PDK/Source/GUID-379D9401-04A2-4A32-A3BF-C6F127E8F074_d0e1729_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-37C193CD-3D8A-56A5-B78C-0A6FE7163EC2_d0e537961_href.png Binary file Symbian3/PDK/Source/GUID-37C193CD-3D8A-56A5-B78C-0A6FE7163EC2_d0e537961_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-37C193CD-3D8A-56A5-B78C-0A6FE7163EC2_d0e545421_href.png Binary file Symbian3/PDK/Source/GUID-37C193CD-3D8A-56A5-B78C-0A6FE7163EC2_d0e545421_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-37D2EFAE-FB55-5015-90CE-1361144C411E_d0e322595_href.png Binary file Symbian3/PDK/Source/GUID-37D2EFAE-FB55-5015-90CE-1361144C411E_d0e322595_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-37D2EFAE-FB55-5015-90CE-1361144C411E_d0e328581_href.png Binary file Symbian3/PDK/Source/GUID-37D2EFAE-FB55-5015-90CE-1361144C411E_d0e328581_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-37DCD20D-E123-5B62-976D-F91AD99A765D_d0e536039_href.jpg Binary file Symbian3/PDK/Source/GUID-37DCD20D-E123-5B62-976D-F91AD99A765D_d0e536039_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-37DCD20D-E123-5B62-976D-F91AD99A765D_d0e543499_href.jpg Binary file Symbian3/PDK/Source/GUID-37DCD20D-E123-5B62-976D-F91AD99A765D_d0e543499_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-37E8A48E-09B8-5958-9263-B33EDAE3F7C6.dita --- a/Symbian3/PDK/Source/GUID-37E8A48E-09B8-5958-9263-B33EDAE3F7C6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-37E8A48E-09B8-5958-9263-B33EDAE3F7C6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -19,7 +19,7 @@ own controls and indirectly through derived classes provided by UIKON and AVKON.

    Cone architectural relationships - +
    Description

    Controls

    A control is a rectangular area of a window that may respond to user input. @@ -34,7 +34,7 @@ when its container control is redrawn.

    The following diagram shows simple controls in orange and container controls in grey.

    Simple and compound controls - +

    Controls and Windows

    A window may be considered as a transparent layer. Windows are managed by the Window Server and described elsewhere. A control provides a means of access to a window - it can be drawn onto the window and diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-38089CC3-D969-5501-9FDA-BB0369D5D6A9_d0e481505_href.png Binary file Symbian3/PDK/Source/GUID-38089CC3-D969-5501-9FDA-BB0369D5D6A9_d0e481505_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-38089CC3-D969-5501-9FDA-BB0369D5D6A9_d0e487334_href.png Binary file Symbian3/PDK/Source/GUID-38089CC3-D969-5501-9FDA-BB0369D5D6A9_d0e487334_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-380A8C4F-3EB6-5E1C-BCFB-ED5B866136D9.dita --- a/Symbian3/PDK/Source/GUID-380A8C4F-3EB6-5E1C-BCFB-ED5B866136D9.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,157 +0,0 @@ - - - - - -How -to use UIDs -

    A UID is a globally unique identifier consisting of a 32-bit number.

    -

    In Symbian platform, objects are identified by a compound identifier, known -as the UID type, which is constructed from three 32 bit -identifiers. The individual UIDs making up the UID type are referred to as UID1, UID2 and UID3.

    -

    Symbian platform makes widespread use of UIDs:

    -
      -
    • UIDs are used to identify -the types of objects at runtime and loadtime, for example identifying executables, -DLLs, filestores.

    • -
    • UIDs are used to verify -that objects present compatible and expected interfaces at runtime and loadtime, -for example verifying that DLLs or filestores are of the expected type.

    • -
    • UIDs are fundamental -to the association of applications with documents. For example, associating -a document with an application allows the system to launch the application -when the document is opened.

    • -
    -

    A file's three UIDs are stored in the first 12 bytes of the file.

    -

    To program successfully, Symbian developers need to understand why and -how to use UIDs in their programs.

    -
    What UIDs are for

    From a user's point of view, -conventional file names are preferable to UIDs for file identification. Symbian -platform therefore supports a flexible, long filename, file naming scheme.

    However -from a system point of view, guaranteed unique, 32-bit numbers provide for -much safer, systematic, and more lightweight identification.

    UID1, -UID2 and UID3 have the following general characteristics:

      -
    • UID1 indicates -the structure of the file, for example, whether it is an executable, a DLL -or a file store.

    • -
    • The meaning of UID2 depends -on the type of object it applies to. For polymorphic interface (plug-in framework) -DLLs, UID2 identifies the interface that the DLL implements. For static interface -(shared library) DLLs that others link to, the UID2 value is always the same. -For executables the UID value has to be set to KUidApp or NULL.

    • -
    • UID3 distinguishes -between objects with the same UID2 and can be thought of as a project identifier. -For example, for an application, the same UID3 is shared by the executable, -registration file (which defines the application's icon, caption, and some -capability information), and all documents.

      The SECUREID need -not be explicitly specified in the .mmp file, but if it is omitted, then the -value of the UID3, specified elsewhere in the .mmp file, is used. If the UID3 -is not specified, then the secureid will take the value KNullUID. -This has several consequences, including lack of privacy for data used by -that application.

    • -

    The UID type is a TUidType object and is constructed -from a combination of all or some of the three possible UIDs. The UID type -can be queried to return its component UID1, UID2 and UID3 values.

    If -no UIDs are attached to an object, then all three component UIDs are returned -as KUidNull.

    -
    UID1, UID2, UID3, and the no UIDs case

    An object -in Symbian platform and more particularly files in Symbian platform may have -all, some, or none of the three possible UIDs defined.

    Symbian platform -predefines all possible UID1 values and the UID2 values used for GUI applications -and static interface DLLs at system level. Symbian developers refer to them -by their constant names, although in project (.mmp) files, -hexadecimal numbers are used.

      -
    • UID1: examples include KExecutableImageUid, KDynamicLibraryUid and KDirectFileStoreLayoutUid

    • -
    • UID2: examples include KSharedLibraryUid (0x1000008d) -for a static interface DLL and KUidApp (0x100039CE) or NULL -for a GUI application. Note: Both KUidApp and NULL -are acceptable values for UID2 when the application is an EXE, although at -the present time these values are ignored. At a later stage UID2 may be used -for other purposes, so setting UID2 to values outside of these values is not -recommended.

    • -
    • Symbian developers are -responsible for ensuring that where UID3 values are required, they are properly -allocated. See the Symbian -Signed web site for information on how to allocate UIDs (free registration -is required to see the FAQ).

    • -

    Note that in project (.mmp) files, UID2 and -UID3 values can be specified, but UID1 values cannot; the UID1 value is implied -by the project's target type.

    -
    EXE targets and UIDs

    All executable targets have -a UID1 of KExecutableImageUid. This is defined by Symbian -platform and is automatically built into any executable target based on the exe target -type declared in the project file.

    A UID2 value should be specified -by GUI applications (.EXE) and the application architecture expects this to -be KUidApp (0x100039CE) or NULL. Console applications (also -.EXE), which are often used for testing and as example code, do not need to -specify a UID2, and if they do, it is ignored.

    -
    DLLs and UIDs

    All DLLs, whether they have static -or polymorphic interfaces, have a UID1 of KDynamicLibraryUid. -This is defined by Symbian platform and is automatically built into any DLL -target based on the dll target type declared in the project -file.

    For static interface DLLs, the UID2 is KSharedLibraryUid. The -UID3, which is used to identify the interface to the library, must be allocated -by Symbian Signed.

    For polymorphic DLLs (for instance ECom plugins, -device drivers and front end processors), UID2 identifies the interface that -the DLL implements. UID3 (which, if required, must be allocated by Symbian -Signed) may be used to identify a specific implementation of that interface.

    -
    Documents and UIDs

    In Symbian platform, documents -are really file-stores: stores which can be closed and re-opened. There are -two different kinds of file store, direct file stores which -are write-once-read-many, and permanent file stores which -are write-many-read-many.

    A document's UID1 will therefore be one -of KDirectFileStoreLayoutUid or KPermanentFileStoreLayoutUid. -The UID2 and/or UID3 will be application dependent.

    Every native document -must have an appropriate UID1 which should be set by the application which -creates the document. Typically documents may have a UID2 of KUidAppDllDoc and -a UID3 shared with the creating application. More precisely, a document’s -UID3 should match that of the application which will open it.

    Only -the UID1 is required, but in most cases Symbian developers will want to specify -second and third UIDs for the documents their applications create and use. -These UIDs are used by the application architecture framework to manage associations -between applications and their documents. This allows an application to be -found and launched when a file is opened, and it also allows an application -icon to be associated with documents in system shell displays. Conversely, -it allows an application, when opening files, to select only applicable files.

    Symbian -platform also allows default file associations with the implication that in -some cases users may want to select a different application to open a file. -Applications which support this must therefore be able to open documents whose -third UID differs from their own.

    Applications may also want to open -non-native documents which have no UIDs, and may wish to be specified as default -applications for these documents.

    -
    UIDs in package files

    Package (.PKG) files are -used in Symbian platform to provide the information required to create Symbian -installation (.SIS) files. Each SIS file contains a UID, which is defined -in the package file's package -header. This UID should be allocated in the same way -as other UIDs, through Symbian Signed.

    -
    Uniqueness -and allocation

    Because UIDs are fundamental to Symbian platform, -it is important that they are used correctly when developing programs. To -ensure uniqueness, it is essential that UIDs are properly allocated.

    Uniqueness -is guaranteed by managing allocation centrally from a single database. All -UIDs must therefore be assigned to users by a central allocating authority.

    UIDs -are also split into protected and unprotected ranges. Any UID values falling -below 0x7FFFFFFF are classed as "protected" and are only intended for use -with signed applications (or those pre-installed in ROM). The software installer -will refuse to install an unsigned application if it uses a package UID in -the protected range.

    Symbian developers can request UIDs through https://www.symbiansigned.com. -For more information, see the Symbian Signed FAQ (free registration required). -Note that from version 9 of Symbian platform, UIDs are no longer requested -from uid@symbiandevnet.com.

    -
    Reserved UID range for development only

    During development, -or for test code, temporary UIDs may be chosen from the unprotected test range -0xExxxxxxx. These UIDs can be used during development for unsigned applications -but must not be used in released software. Note that such applications may -not be installable via a SIS file. See the Symbian Signed website for more -information.

    Care must still be taken to avoid clashes within development -teams and between multiple projects, including old projects which may still -be installed on a Symbian emulator or native platforms. UID clashes may stop -a program from loading correctly, typically leading to Not Found errors.

    - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3829BD20-3DCB-5489-8FC4-07F954E391BF.dita --- a/Symbian3/PDK/Source/GUID-3829BD20-3DCB-5489-8FC4-07F954E391BF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3829BD20-3DCB-5489-8FC4-07F954E391BF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -30,7 +30,7 @@ use a TFindHandleBase derived class to locate a global Kernel object. The following diagram shows the general idea.

    - +

    See also:

      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-382B8A9D-9D10-54CD-91A6-B9E7A2477662.dita --- a/Symbian3/PDK/Source/GUID-382B8A9D-9D10-54CD-91A6-B9E7A2477662.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-382B8A9D-9D10-54CD-91A6-B9E7A2477662.dita Fri Jul 16 17:23:46 2010 +0100 @@ -73,10 +73,10 @@
    • CMsvOperationWait

    • RSendAsMessage

    -
    Build

    The Symbian -build process describes how to build an application.

    The SendAs example builds an executable called SendAs2Example.exe in the standard location (\epoc32\release\winscw\ <build_variant> for CodeWarrior). After launching the -executable, depending on the emulator you are using, you may need -to task away from the app launcher/shell screen to view the console.

    +
    Build

    The Symbian build process describes how to build an application.

    The SendAs example builds an executable called SendAs2Example.exe in the standard location (\epoc32\release\winscw\ <build_variant> for +CodeWarrior). After launching the executable, depending on the emulator +you are using, you may need to task away from the app launcher/shell +screen to view the console.

    See also

    To create advanced applications using the SendAs API refer to the complete SendAs API diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-383A617C-474B-509D-BA37-3515BCC5F1D1.dita --- a/Symbian3/PDK/Source/GUID-383A617C-474B-509D-BA37-3515BCC5F1D1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ - - - - - -CHARACTER_SET -statement -<character_set-statement> -character_set-statement ::= -CHARACTER_SET <character_set-name> -

    Use a CHARACTER_SET statement to define the character -set to be used. The permitted values for character_set-name are -defined as:

    -<character_set-name> -character_set-name ::= -CP1252 | UTF8 - -

    If the CHARACTER_SET statement is omitted from a resource -file, character set CP1252 is taken as default.

    -CHARACTER_SET UTF8 - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-383A96FD-99C3-593C-B7A2-58153F4050DE_d0e597643_href.png Binary file Symbian3/PDK/Source/GUID-383A96FD-99C3-593C-B7A2-58153F4050DE_d0e597643_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-383A96FD-99C3-593C-B7A2-58153F4050DE_d0e616484_href.png Binary file Symbian3/PDK/Source/GUID-383A96FD-99C3-593C-B7A2-58153F4050DE_d0e616484_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-383A96FD-99C3-593C-B7A2-58153F4050DE_d0e625537_href.png Binary file Symbian3/PDK/Source/GUID-383A96FD-99C3-593C-B7A2-58153F4050DE_d0e625537_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3853600F-A096-53A6-8E68-4815ED85FD05_d0e218773_href.png Binary file Symbian3/PDK/Source/GUID-3853600F-A096-53A6-8E68-4815ED85FD05_d0e218773_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3853600F-A096-53A6-8E68-4815ED85FD05_d0e224793_href.png Binary file Symbian3/PDK/Source/GUID-3853600F-A096-53A6-8E68-4815ED85FD05_d0e224793_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-387E98B0-568D-4DBB-9A9E-616E41E96B58.dita --- a/Symbian3/PDK/Source/GUID-387E98B0-568D-4DBB-9A9E-616E41E96B58.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-387E98B0-568D-4DBB-9A9E-616E41E96B58.dita Fri Jul 16 17:23:46 2010 +0100 @@ -35,7 +35,7 @@ CPU cores. The Simplified Architecture of an SMP Platform Executing on the Symbian Platform. - +

    The figure shows a simplified block diagram of an SMP system, where 4 CPUs are connected through their own cache to shared RAM and peripherals. The Cache Coherency Control block is responsible for ensuring that each CPU diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-38A84B6A-BA49-55ED-A4D7-9B4436D00A42.dita --- a/Symbian3/PDK/Source/GUID-38A84B6A-BA49-55ED-A4D7-9B4436D00A42.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-38A84B6A-BA49-55ED-A4D7-9B4436D00A42.dita Fri Jul 16 17:23:46 2010 +0100 @@ -43,8 +43,8 @@ #endif #endif // __LBS_BTPSY_IBY__ - The file 101fe999.cre is the binary Central Repository initialisation file that defines values for the keys specified by the Positioning Plug-in Information API to register the Bluetooth GPS PSY with the LBS subsystem. To change values in this file, modify the source text version of the initialisation file 101fe999.txt as described in Modifying the Bluetooth GPS PSY Central Repository Initialisation File, then build a binary version of it. To build a binary version of the file you can use the makefile createlbsbtgpsconfigstore.mk, which is included with the source distribution of the Bluetooth GPS PSY. The library lbsbtgpsconfig.dll contains the Bluetooth GPS PSY Configuration API which is also copied into the target ROM. Bluetooth + The file 101fe999.cre is the binary Central Repository initialisation file that defines values for the keys specified by the Positioning Plug-in Information API to register the Bluetooth GPS PSY with the LBS subsystem. To change values in this file, modify the source text version of the initialisation file 101fe999.txt as described in Modifying the Bluetooth GPS PSY Central Repository Initialisation File, then build a binary version of it. To build a binary version of the file you can use the makefile createlbsbtgpsconfigstore.mk, which is included with the source distribution of the Bluetooth GPS PSY. The library lbsbtgpsconfig.dll contains the Bluetooth GPS PSY Configuration API which is also copied into the target ROM. Bluetooth GPS PSY Overview Modifying the Bluetooth GPS - PSY Central Repository Initialisation File Positioning Plug-in Information API LBS ROM + PSY Central Repository Initialisation File Positioning Plug-in Information API LBS ROM macros LBS Integration and Configuration guide \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-38C8F8B0-C259-5B03-A13E-10DBED4071F2-GENID-1-12-1-26-1-1-11-1-1-3-1-4-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-38C8F8B0-C259-5B03-A13E-10DBED4071F2-GENID-1-12-1-26-1-1-11-1-1-3-1-4-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,131 @@ + + + + + +Signing +and verification +

    The following example demonstrates signing and verifying with DSA keys. +It generates a DSA key pair from the factory, signs some randomly generated +data using the private key and then verifies the signature using the public +key.

    +#include <legacyselector.h> +#include <cryptosignatureapi.h> +#include <cryptokeypairgeneratorapi.h> +#include <random.h> +#include <keypair.h> + +using namespace CryptoSpi; + +//Get a DSA key pair generator +CKeyPairGenerator* keyPairGeneratorImpl = NULL; + +TRAPD(err,CKeyPairGeneratorFactory::CreateKeyPairGeneratorL + (keyPairGeneratorImpl, + KDSAKeyPairGeneratorAlgorithmUid, + NULL)); + +if(keyPairGeneratorImpl && (err == KErrNone)) + { + CleanupStack::PushL(keyPairGeneratorImpl); + CCryptoParams* keyParameters = CCryptoParams::NewLC(); + + //Create a DSA key pair + CKeyPair* keyPair = NULL; + + //Hardcode the keybit to 512 + TRAP(err,keyPairGeneratorImpl->GenerateKeyPairL + (512, + *keyParameters, + keyPair)); + + if(keyPair && (err == KErrNone)) + { + CleanupStack::PushL(keyPair); + + //Create a pointer for the signing implementation object + CSigner* signerImpl = NULL; + + //Create a signer implementation object using the private key + const CKey& privateKey = keyPair->PrivateKey(); + TRAP(err,CSignatureFactory::CreateSignerL( + signerImpl, + KDsaSignerUid, + privateKey, + KPaddingModeNoneUid, + NULL)); + + if(!signerImpl || (err != KErrNone)) + { + User::Panic(_L("Signer/Verifier"),err); + } + else + { + CleanupStack::PushL(signerImpl); + + //Create the object to hold the signature + CCryptoParams* signature = CCryptoParams::NewLC(); + + //Generate random data; 128 bytes max length and 128 bytes long + TBuf8<128> message(128); + TRandom::RandomL(message); + + //Sign the random data + //On return, second parameter contains the signature + TRAP(err,signerImpl->SignL(message, *signature)); + + if(err != KErrNone) + { + User::Panic(_L("Signature using private key"),err); + } + + //Now verify the signature using the public key + CVerifier* verifierImpl = NULL; + + const CKey& publicKey = keyPair->PublicKey(); + + // Create a verification object from the factory + TRAP(err,CSignatureFactory::CreateVerifierL(verifierImpl, + KDsaVerifierUid, + publicKey, + KPaddingModeNoneUid, + NULL)); + + if (!verifierImpl || (err != KErrNone)) + { + User::Panic(_L("Signer/Verifier"),err); + } + else + { + CleanupStack::PushL(verifierImpl); + + TBool verifyResult = EFalse; + + //Verify the signature using the public key + verifierImpl->VerifyL(message, *signature, verifyResult); + + if (verifyResult == EFalse) + { + User::Panic(_L("Signer/Verifier"),err); + } + + CleanupStack::PopAndDestroy(verifierImpl); + } + + CleanupStack::PopAndDestroy(signature); + CleanupStack::PopAndDestroy(signerImpl); + } + + CleanupStack::PopAndDestroy(keyPair); + } + + CleanupStack::PopAndDestroy(keyParameters); + CleanupStack::PopAndDestroy(keyPairGeneratorImpl); + } + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-38C8F8B0-C259-5B03-A13E-10DBED4071F2-GENID-1-12-1-26-1-1-9-1-6-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-38C8F8B0-C259-5B03-A13E-10DBED4071F2-GENID-1-12-1-26-1-1-9-1-6-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,131 @@ + + + + + +Signing +and verification +

    The following example demonstrates signing and verifying with DSA keys. +It generates a DSA key pair from the factory, signs some randomly generated +data using the private key and then verifies the signature using the public +key.

    +#include <legacyselector.h> +#include <cryptosignatureapi.h> +#include <cryptokeypairgeneratorapi.h> +#include <random.h> +#include <keypair.h> + +using namespace CryptoSpi; + +//Get a DSA key pair generator +CKeyPairGenerator* keyPairGeneratorImpl = NULL; + +TRAPD(err,CKeyPairGeneratorFactory::CreateKeyPairGeneratorL + (keyPairGeneratorImpl, + KDSAKeyPairGeneratorAlgorithmUid, + NULL)); + +if(keyPairGeneratorImpl && (err == KErrNone)) + { + CleanupStack::PushL(keyPairGeneratorImpl); + CCryptoParams* keyParameters = CCryptoParams::NewLC(); + + //Create a DSA key pair + CKeyPair* keyPair = NULL; + + //Hardcode the keybit to 512 + TRAP(err,keyPairGeneratorImpl->GenerateKeyPairL + (512, + *keyParameters, + keyPair)); + + if(keyPair && (err == KErrNone)) + { + CleanupStack::PushL(keyPair); + + //Create a pointer for the signing implementation object + CSigner* signerImpl = NULL; + + //Create a signer implementation object using the private key + const CKey& privateKey = keyPair->PrivateKey(); + TRAP(err,CSignatureFactory::CreateSignerL( + signerImpl, + KDsaSignerUid, + privateKey, + KPaddingModeNoneUid, + NULL)); + + if(!signerImpl || (err != KErrNone)) + { + User::Panic(_L("Signer/Verifier"),err); + } + else + { + CleanupStack::PushL(signerImpl); + + //Create the object to hold the signature + CCryptoParams* signature = CCryptoParams::NewLC(); + + //Generate random data; 128 bytes max length and 128 bytes long + TBuf8<128> message(128); + TRandom::RandomL(message); + + //Sign the random data + //On return, second parameter contains the signature + TRAP(err,signerImpl->SignL(message, *signature)); + + if(err != KErrNone) + { + User::Panic(_L("Signature using private key"),err); + } + + //Now verify the signature using the public key + CVerifier* verifierImpl = NULL; + + const CKey& publicKey = keyPair->PublicKey(); + + // Create a verification object from the factory + TRAP(err,CSignatureFactory::CreateVerifierL(verifierImpl, + KDsaVerifierUid, + publicKey, + KPaddingModeNoneUid, + NULL)); + + if (!verifierImpl || (err != KErrNone)) + { + User::Panic(_L("Signer/Verifier"),err); + } + else + { + CleanupStack::PushL(verifierImpl); + + TBool verifyResult = EFalse; + + //Verify the signature using the public key + verifierImpl->VerifyL(message, *signature, verifyResult); + + if (verifyResult == EFalse) + { + User::Panic(_L("Signer/Verifier"),err); + } + + CleanupStack::PopAndDestroy(verifierImpl); + } + + CleanupStack::PopAndDestroy(signature); + CleanupStack::PopAndDestroy(signerImpl); + } + + CleanupStack::PopAndDestroy(keyPair); + } + + CleanupStack::PopAndDestroy(keyParameters); + CleanupStack::PopAndDestroy(keyPairGeneratorImpl); + } +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-38C8F8B0-C259-5B03-A13E-10DBED4071F2.dita --- a/Symbian3/PDK/Source/GUID-38C8F8B0-C259-5B03-A13E-10DBED4071F2.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,131 +0,0 @@ - - - - - -Signing -and verification -

    The following example demonstrates signing and verifying with DSA keys. -It generates a DSA key pair from the factory, signs some randomly generated -data using the private key and then verifies the signature using the public -key.

    -#include <legacyselector.h> -#include <cryptosignatureapi.h> -#include <cryptokeypairgeneratorapi.h> -#include <random.h> -#include <keypair.h> - -using namespace CryptoSpi; - -//Get a DSA key pair generator -CKeyPairGenerator* keyPairGeneratorImpl = NULL; - -TRAPD(err,CKeyPairGeneratorFactory::CreateKeyPairGeneratorL - (keyPairGeneratorImpl, - KDSAKeyPairGeneratorAlgorithmUid, - NULL)); - -if(keyPairGeneratorImpl && (err == KErrNone)) - { - CleanupStack::PushL(keyPairGeneratorImpl); - CCryptoParams* keyParameters = CCryptoParams::NewLC(); - - //Create a DSA key pair - CKeyPair* keyPair = NULL; - - //Hardcode the keybit to 512 - TRAP(err,keyPairGeneratorImpl->GenerateKeyPairL - (512, - *keyParameters, - keyPair)); - - if(keyPair && (err == KErrNone)) - { - CleanupStack::PushL(keyPair); - - //Create a pointer for the signing implementation object - CSigner* signerImpl = NULL; - - //Create a signer implementation object using the private key - const CKey& privateKey = keyPair->PrivateKey(); - TRAP(err,CSignatureFactory::CreateSignerL( - signerImpl, - KDsaSignerUid, - privateKey, - KPaddingModeNoneUid, - NULL)); - - if(!signerImpl || (err != KErrNone)) - { - User::Panic(_L("Signer/Verifier"),err); - } - else - { - CleanupStack::PushL(signerImpl); - - //Create the object to hold the signature - CCryptoParams* signature = CCryptoParams::NewLC(); - - //Generate random data; 128 bytes max length and 128 bytes long - TBuf8<128> message(128); - TRandom::RandomL(message); - - //Sign the random data - //On return, second parameter contains the signature - TRAP(err,signerImpl->SignL(message, *signature)); - - if(err != KErrNone) - { - User::Panic(_L("Signature using private key"),err); - } - - //Now verify the signature using the public key - CVerifier* verifierImpl = NULL; - - const CKey& publicKey = keyPair->PublicKey(); - - // Create a verification object from the factory - TRAP(err,CSignatureFactory::CreateVerifierL(verifierImpl, - KDsaVerifierUid, - publicKey, - KPaddingModeNoneUid, - NULL)); - - if (!verifierImpl || (err != KErrNone)) - { - User::Panic(_L("Signer/Verifier"),err); - } - else - { - CleanupStack::PushL(verifierImpl); - - TBool verifyResult = EFalse; - - //Verify the signature using the public key - verifierImpl->VerifyL(message, *signature, verifyResult); - - if (verifyResult == EFalse) - { - User::Panic(_L("Signer/Verifier"),err); - } - - CleanupStack::PopAndDestroy(verifierImpl); - } - - CleanupStack::PopAndDestroy(signature); - CleanupStack::PopAndDestroy(signerImpl); - } - - CleanupStack::PopAndDestroy(keyPair); - } - - CleanupStack::PopAndDestroy(keyParameters); - CleanupStack::PopAndDestroy(keyPairGeneratorImpl); - } -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-38FF81FD-0C23-586D-AFAE-9F0761A36BAD_d0e315497_href.png Binary file Symbian3/PDK/Source/GUID-38FF81FD-0C23-586D-AFAE-9F0761A36BAD_d0e315497_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-38FF81FD-0C23-586D-AFAE-9F0761A36BAD_d0e321487_href.png Binary file Symbian3/PDK/Source/GUID-38FF81FD-0C23-586D-AFAE-9F0761A36BAD_d0e321487_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-39186342-960A-46A4-BC35-851F53665FA8.dita --- a/Symbian3/PDK/Source/GUID-39186342-960A-46A4-BC35-851F53665FA8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-39186342-960A-46A4-BC35-851F53665FA8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,8 +12,8 @@ Writing the Version 3 Registration Resource FileThe version 3 registration resource file is an evolution of the version 2 . This version is evolved to accommodate extended interfaces. - -Set Info_format + +Set Info_format to the type of info record that is, IMPLEMENTATION_INFO or BINARY_IMPLEMENTATION_INFO. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-395C240D-6487-5832-B5F6-FC92991001FE_d0e584074_href.png Binary file Symbian3/PDK/Source/GUID-395C240D-6487-5832-B5F6-FC92991001FE_d0e584074_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-395C240D-6487-5832-B5F6-FC92991001FE_d0e611968_href.png Binary file Symbian3/PDK/Source/GUID-395C240D-6487-5832-B5F6-FC92991001FE_d0e611968_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-398483AD-C341-5777-AD23-381A067F9180_d0e454195_href.png Binary file Symbian3/PDK/Source/GUID-398483AD-C341-5777-AD23-381A067F9180_d0e454195_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-398483AD-C341-5777-AD23-381A067F9180_d0e460040_href.png Binary file Symbian3/PDK/Source/GUID-398483AD-C341-5777-AD23-381A067F9180_d0e460040_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-399F7F7D-3E8E-58BB-9925-9F34C561C39A_d0e507156_href.png Binary file Symbian3/PDK/Source/GUID-399F7F7D-3E8E-58BB-9925-9F34C561C39A_d0e507156_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-399F7F7D-3E8E-58BB-9925-9F34C561C39A_d0e514618_href.png Binary file Symbian3/PDK/Source/GUID-399F7F7D-3E8E-58BB-9925-9F34C561C39A_d0e514618_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-39A8FBC9-5FD6-4F92-B71E-5C5438ECFD46.dita --- a/Symbian3/PDK/Source/GUID-39A8FBC9-5FD6-4F92-B71E-5C5438ECFD46.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-39A8FBC9-5FD6-4F92-B71E-5C5438ECFD46.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,14 +12,14 @@ OOM Monitor OverviewThis section provides an overview of the functionality and the architecture of the OOM Monitor component. -
    Purpose

    The +

    Purpose

    The OOM Monitor Client API monitors the memory situations and handles out of memory situations. OOM monitor is responsible to maintain good memory level in the device. In case of low memory situation, OOM Monitor releases memory by closing applications based on the priority defined. For information on priority, refer to OOM Monitor Priority.

    -
    Key concepts
    +
    Key concepts
    LOW_RAM_THRESHOLD

    It is the minimum amount of free RAM that is specified for the device. @@ -39,19 +39,19 @@

    For information on OOM Monitor Priority and Optional RAM allocation, refer to OOM Monitor Concepts

    -
    Architecture

    The +

    Architecture

    The basic function of the OOM Monitor is to monitor the amount of free RAM in the mobile device. Whenever the amount of free RAM decreases below a defined LOW_RAM_THRESHOLD threshold value, the OOM Monitor is triggered. The OOM Monitor then releases RAM by closing applications running on background in order to raise the amount of free RAM above the defined GOOD_RAM_THRESHOLD value.

    - + - +
    -
    APIs

    The +

    APIs

    The OOM Monitor Client API consists of ROomMonitorSession class. -The main functions of this class are:

    +The main functions of this class are:

    @@ -74,7 +74,7 @@

    The OOM Monitor Client API also consists of COomMonitorPlugin class. -The main functions of this plug-in class are:

    +The main functions of this plug-in class are:

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-39A995DC-F047-4B41-A60D-27063CE329BE.dita --- a/Symbian3/PDK/Source/GUID-39A995DC-F047-4B41-A60D-27063CE329BE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-39A995DC-F047-4B41-A60D-27063CE329BE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -38,7 +38,7 @@ steps until the necessary level of protection is achieved.

    -Security development process +Security development process

    The security development process is guided by cost, efficiency, and usability. If security is too tight, this may be expensive and affect both performance and the user's experience of the system or software. On the other hand, if diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-39AAB0D3-6D4D-5DE3-B894-F5E763D3E19B_d0e346160_href.png Binary file Symbian3/PDK/Source/GUID-39AAB0D3-6D4D-5DE3-B894-F5E763D3E19B_d0e346160_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-39AAB0D3-6D4D-5DE3-B894-F5E763D3E19B_d0e352111_href.png Binary file Symbian3/PDK/Source/GUID-39AAB0D3-6D4D-5DE3-B894-F5E763D3E19B_d0e352111_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-39B5850D-EAAD-56BC-B75A-2104033814E6.dita --- a/Symbian3/PDK/Source/GUID-39B5850D-EAAD-56BC-B75A-2104033814E6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-39B5850D-EAAD-56BC-B75A-2104033814E6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -34,7 +34,7 @@ one or more audio streams can be grouped into a logical unit called a context. The following diagram shows a context which contains two audio streams:

    Audio streams in a context - +

    Using a context means that, for the purposes of pre-emption, all audio streams in the context can be controlled as a single unit. For example, if an audio stream needs to be stopped because it uses a resource that is diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-39CFE2E2-9776-54EE-8E3B-8B85AFF1697A.dita --- a/Symbian3/PDK/Source/GUID-39CFE2E2-9776-54EE-8E3B-8B85AFF1697A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-39CFE2E2-9776-54EE-8E3B-8B85AFF1697A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Window Server Plug-in Framework in the Non-ScreenPlay VariantThis topic provides an introduction to the Window Server plug-in framework in the non-ScreenPlay variant. This framework was introduced in a project to improve the Window Server.

    Variant: Non-ScreenPlay. Target audience: Device creators.

    Purpose

    The Window Server (WSERV) performance improvements introduce several new APIs and Service Provider Interfaces (SPIs). An SPI differs from an API in that an API describes functionality that a developer expects to use, whereas an SPI defines an interface that a developer is expected to implement.

    The SPI part consists primarily of abstract interfaces for plug-ins, faders and render stages. Developers are expected to provide concrete implementations of these interfaces. The API part consists of new object provider interfaces that can be used by plug-ins (including the existing Content Rendering Plug-ins (CRP)).

    This document provides an overview for the new WSERV performance improvements.

    Library details

    There is one library affected by the WSERV performance improvements changes.

    Library Name Short Description

    wsgraphicdrawer.lib

    Server-side base-classes for graphic drawer plug-ins

    Architectural relationship

    New additions

    In the past, Window Server (WSERV) has supported a number of plug-in interfaces, for example:

    • Anim dlls

    • Content rendering plug-ins

    In general, these plug-ins enable UI platform providers to have code running in the WSERV process for specific purposes, without having to modify WSERV. This mechanism can be used to extend or customize WSERV functionality. However, in the past, new plug-in types were added in a fairly ad hoc way, with each new implementer going about things in a different way.

    In order to improve performance, there have been changes made to this previous method. These changes are a generic plug-in framework, two new types of plug-in and some new extension interfaces.

    A generic plug-in framework

    The generic plug-in framework provides a standard mechanism for adding new types of plug-ins, based on the support provided by the Symbian ECOM component. This amounts to a fairly thin wrapper around ECOM, with WSERV specific features such as the ability to specify which plug-ins to load at boot time, using the WSINI.INI file. The intention is that when new types of plug-in are introduced in future they should use this generic plug-in framework rather than an ad hoc mechanism, leading to reduced implementation time.

    Two new types of plug-in

    The WSERV performance improvements make use of the new framework to add two new types of plug-in:

    • Fader plug-ins, which enable customizable fading

    • Render stage plug-ins, which enable modification of the tail end of the rendering pipeline, at the point where WSERV outputs draw operations for a screen target.

    New extension interfaces

    The WSERV performance improvements also provide a number of new extension interfaces giving plug-ins a more detailed picture than previously of WSERV’s internal workings. This applies not only to plug-ins using the new framework, but also to the existing CRP plug-ins.

    APIs and SPIs

    To understand the new SPIs, it is necessary to show how they would fit into a configuration in which concrete implementations have been supplied by plug-ins. The following diagram shows the default configuration, in which the concrete classes are supplied by the WSERV reference plug-ins:

    Default configuration of WSERV plug-ins -

    The diagram has three layers, going down:

    1. The top layer is the MWsObjectProvider interface, which is an existing class in WSERV. This provides a framework for extensible interfaces.

    2. In the middle layer, there are four new interfaces introduced by the WSERV performance improvements: CWsPlugin, MWsFader, MWsRenderStageFactory and CWsRenderStage.

    3. In the bottom layer, there are the concrete implementations of the new interfaces.

    The classes in the above diagram are as follows:

    • CWsPlugin is the base class from which the top level objects presented by plug-ins should derive.

    • MWsFader is the interface that the plug-in object in a fader plug-in should present. Thus the concrete implementation of a fader should derive from CWsPlugin and MWsFader.

    • MWsRenderStageFactory is the interface that the plug-in object in a render stage plug-in should present. Thus concrete implementations of render stage factories should derive from CWsPlugin and MWsRenderStageFactory.

    • CWsRenderStage is the abstract base class for render stages. Concrete implementations should derive from this. (Note that CWsRenderStage is *not* a subclass of CWsPlugin. The plug-in provides only a render stage factory. Render stages must then be obtained from the factory.)

    Why do render stages have factories, but faders do not? The idea here is that faders are not expected to have any internal state, and therefore a single fader instance can be shared across multiple screens. Therefore there is no need for a factory. On the other hand, render stages could have internal state (such as stored draw commands or offscreen bitmaps), and therefore each screen needs its own instance. Therefore we need a factory to create the instances as required.

    Note that in addition, we may want multiple render stages (of different types) per screen, if they are chained. Therefore we will typically have multiple render stage factories. For example, in the default configuration, there are two render stage factory plug-ins, producing flicker buffer and standard render stages respectively.

    New object provider extensions

    In addition to the above, the WSERV performance improvements provide some minor extensions to existing object provider interfaces, together with the following new object provider extension interfaces:

    • MWsWindow – an interface through which windows can be examined

    • MWsScreenRedraw – an extension of the existing MWsScreen interface for handling the animation aspects of the redraw sequence

    • MWsScreenRedrawObserver – an interface for receiving notifications of screen updates

    • MWsMemoryRelease – an interface which enables plug-ins to cooperate with WSERV by releasing memory when requested (for example caches)

    • MWsGcClipRect – an extension interface that can be requested from an MWsGc, providing some functionality to do with clipping rectangles which was omitted from the original MWsGc implementation

    • MWsPluginManager – enables plug-ins to request services from other plug-ins

    • MWsIniFile – enables plug-ins to read the WSINI.INI file

    Each of these new interfaces inherits from the existing MWsObjectProvider interface, and they are made available through the object provider mechanism. In other words, each interface has an associated “type id”, and the interface is obtained by calling MWsObjectProvider::ResolveObjectInterface(<type id>) on an appropriate object provider. In the case where a plug-in wants to request the interface, the object provider will be WSERV’s MWsGraphicDrawerEnvironment, which is passed to plug-ins during construction.

    Fader plug-ins

    Fader plug-ins enable WSERV to delegate the implementation of window fading. This means that when RWindowTreeNode::SetFaded() or RWindowBase::FadeBehind() is called on the client side, WSERV calls the fader plug-in to do the fading. Note that fader plug-ins are not involved in CWindowGc fading. Calls to CWindowGc::SetFaded() do not result in calls to fader plug-ins – WSERV passes them straight through to the rendering backend as GDI calls.

    In principle, fader plug-ins enable the implementation of custom fading algorithms. However, one potential limitation at the moment is that the existing client-side APIs dictate the form that parameters to control fading must take - therefore RWsSession::SetDefaultFadingParameters(TUint8 +

    The diagram has three layers, going down:

    1. The top layer is the MWsObjectProvider interface, which is an existing class in WSERV. This provides a framework for extensible interfaces.

    2. In the middle layer, there are four new interfaces introduced by the WSERV performance improvements: CWsPlugin, MWsFader, MWsRenderStageFactory and CWsRenderStage.

    3. In the bottom layer, there are the concrete implementations of the new interfaces.

    The classes in the above diagram are as follows:

    • CWsPlugin is the base class from which the top level objects presented by plug-ins should derive.

    • MWsFader is the interface that the plug-in object in a fader plug-in should present. Thus the concrete implementation of a fader should derive from CWsPlugin and MWsFader.

    • MWsRenderStageFactory is the interface that the plug-in object in a render stage plug-in should present. Thus concrete implementations of render stage factories should derive from CWsPlugin and MWsRenderStageFactory.

    • CWsRenderStage is the abstract base class for render stages. Concrete implementations should derive from this. (Note that CWsRenderStage is *not* a subclass of CWsPlugin. The plug-in provides only a render stage factory. Render stages must then be obtained from the factory.)

    Why do render stages have factories, but faders do not? The idea here is that faders are not expected to have any internal state, and therefore a single fader instance can be shared across multiple screens. Therefore there is no need for a factory. On the other hand, render stages could have internal state (such as stored draw commands or offscreen bitmaps), and therefore each screen needs its own instance. Therefore we need a factory to create the instances as required.

    Note that in addition, we may want multiple render stages (of different types) per screen, if they are chained. Therefore we will typically have multiple render stage factories. For example, in the default configuration, there are two render stage factory plug-ins, producing flicker buffer and standard render stages respectively.

    New object provider extensions

    In addition to the above, the WSERV performance improvements provide some minor extensions to existing object provider interfaces, together with the following new object provider extension interfaces:

    • MWsWindow – an interface through which windows can be examined

    • MWsScreenRedraw – an extension of the existing MWsScreen interface for handling the animation aspects of the redraw sequence

    • MWsScreenRedrawObserver – an interface for receiving notifications of screen updates

    • MWsMemoryRelease – an interface which enables plug-ins to cooperate with WSERV by releasing memory when requested (for example caches)

    • MWsGcClipRect – an extension interface that can be requested from an MWsGc, providing some functionality to do with clipping rectangles which was omitted from the original MWsGc implementation

    • MWsPluginManager – enables plug-ins to request services from other plug-ins

    • MWsIniFile – enables plug-ins to read the WSINI.INI file

    Each of these new interfaces inherits from the existing MWsObjectProvider interface, and they are made available through the object provider mechanism. In other words, each interface has an associated “type id”, and the interface is obtained by calling MWsObjectProvider::ResolveObjectInterface(<type id>) on an appropriate object provider. In the case where a plug-in wants to request the interface, the object provider will be WSERV’s MWsGraphicDrawerEnvironment, which is passed to plug-ins during construction.

    Fader plug-ins

    Fader plug-ins enable WSERV to delegate the implementation of window fading. This means that when RWindowTreeNode::SetFaded() or RWindowBase::FadeBehind() is called on the client side, WSERV calls the fader plug-in to do the fading. Note that fader plug-ins are not involved in CWindowGc fading. Calls to CWindowGc::SetFaded() do not result in calls to fader plug-ins – WSERV passes them straight through to the rendering backend as GDI calls.

    In principle, fader plug-ins enable the implementation of custom fading algorithms. However, one potential limitation at the moment is that the existing client-side APIs dictate the form that parameters to control fading must take - therefore RWsSession::SetDefaultFadingParameters(TUint8 aBlackMap,TUint8 aWhiteMap) has to be used. In addition, RWindowTreeNode::SetFaded() has a variant in which these parameters can be passed in. The API that fader plug-ins present to WSERV has been designed so that fading parameters can be passed as opaque binary data. However, as it stands this data will always take the form of two TUint8 s.

    Note: In ScreenPlay, fading effects can be created using render stages. See Window Server Plugins Component for more information.

    Render stage plug-ins

    Render stage plug-ins are designed to allow the customizations of the final stages of the rendering pipeline. The idea is that, to WSERV, a render stage looks pretty much like the graphics context that it is expecting to use to draw to a screen. WSERV carries on with its usual tasks, tracking dirty rectangles and so on, and issuing draw operations when it believes that it needs to repaint some region of the screen. However, instead of these draw operations being used immediately to repaint the screen, they are passed to a render stage. The simplest render stage implementation would indeed use the draw operations to repaint the screen. However, the render stage may do other things with the draw operations, such as capturing some of them for later use in a transition effect or redirecting them to another target and so on.

    The render stage API is such that every time WSERV wants to do a redraw, it must call CWsRenderStage::Begin() in order to get hold of the graphics context with which to do the drawing. When it is finished, it must call CWsRenderStage::End(), and release its pointer to the graphics context. This means in particular that render stages understand that draw operations come in blocks corresponding to a single redraw.

    Render stages can be chained, so that the output of the first render stage (in the form of draw operations), passes not to the screen but to a second render stage. In the default implementation supplied with WSERV, two render stages are used to achieve flicker-free drawing. The first render stage takes the draw operations that are passed in, and draws them to an offscreen bitmap. When CWsRenderStage::End() is called, it then blits the updated region to the second render stage. The second render stage draws to the screen. This setup therefore eliminates flicker within individual redraws.

    For information about render stages in ScreenPlay, see ScreenPlay Render Stages.

    Key classes

    All classes belong to wsgraphicdrawer.lib.

    Class name Description

    CWsPlugin

    This is the base class that all top-level plug-in objects must derive from. Note that it is an abstract class – in particular it does not provide an implementation of ResolveObjectInterface() (inherited from MWsObjectProvider) – subclasses are expected to do so for themselves.

    MWsFader

    This is the interface that fader plug-ins are required to implement.

    MWsRenderStageFactory

    This is the interface that render stage factory plug-ins are required to implement.

    MWsWindow

    This interface represents a window, and provides plug-ins with information about some attributes of windows. Currently, the only way to get hold of an MWsWindow is from the new TWsCREvent EWindowClosing event. The intended use is for transition engines to discover information about a window that is closing.

    MWsPluginManager

    An interface enabling plug-ins to get pointers to other plug-ins, enabling them to use the services of other plug-ins. An example use would be that a platform provider could write a plug-in providing a new interface MWsBitmapCache. They could modify the WSINI.INI file to ensure that this plug-in was loaded. Then other plug-ins could request the MWsPluginManager interface from the MWsGraphicDrawerEnvironment, and then request the MWsBitmapCache interface from MWsPluginManager. Thus the purpose of this interface is to enable the use case where one writes plug-ins providing services for the benefit of other plug-ins.

    MWsMemoryRelease

    This is an SPI that enables plug-in objects to assist WSERV in memory management, by freeing memory when requested to do so.

    MWsIniFile

    An interface enabling plug-ins to read the WSINI.INI file.

    New functions in MWsAnimationScheduler

    WSERV has an animation scheduler which was previously used to schedule CRP animations, and is now also used to schedule deferred redraws. The default scheduler can be replaced by a plug-in, via the call MWsGraphicDrawerEnvironment::SetCustomAnimationScheduler(MWsAnimationScheduler*). The class MWsAnimationScheduler already contained functions relevant to CRP animation, but the WSERV performance improvements add new functions relevant to deferred redraw.

    New functions in MWsGraphicDrawerEnvironment

    MWsGraphicDrawerEnvironment is an existing class. It is an interface provided to all plug-ins, which makes available some generic services. The new functions are primarily for registration/unregistration of event handlers and memory releasers.

    New functions in TWsCREvent

    TWsCREvent is an existing class. It provides event reporting of some WSERV internals to Content Rendering Plug-ins (and now other plug-ins too). It is typically used by transition effects plug-ins, to provide them with additional information about what is happening inside WSERV. The new functionality is a new event to notify that a window is closing.

    Fader Plug-ins Render Stage Plug-ins Miscellaneous Plug-in Interfaces Window Server Plugins Component Render Stages Content Rendering Plug-ins (CRPs) \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3A05CD69-0AB6-5549-B18A-842F49C06874.dita --- a/Symbian3/PDK/Source/GUID-3A05CD69-0AB6-5549-B18A-842F49C06874.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -prj_exports

    prj_exports

    source_file_1 [destination_file]

    source_file_n [destination_file]

    :zip zip_file [destination_path]

    In the prj_exports section, list any files to be copied from the source directories to the releasables’ directories during the building of a component. It is intended mainly for specifying C++ header files to be copied to the directory epoc32\include\.

    Specify each file on a separate line.

    Note that:

    • If a source file is listed with a relative path, the path will be considered relative to the directory containing the bld.inf file.

    • If a destination file is not specified, the source file will be copied to epoc32\include\.

    • If a destination file is specified with the relative path, the path will be considered relative to directory epoc32\include\.

    • If a destination begins with a drive letter, then the file is copied to epoc32\data\<drive_letter>\<path>. For example,

      mydata.dat e:\appdata\mydata.dat

      copies mydata.dat to epoc32\data\e\appdata\mydata.dat.

      You can use any driveletter between A and Z.

    • A line can start with the preface :zip. This instructs the build tools to unzip the specified zip file to the specified destination path. If a destination path is not specified, the source file will be unzipped in the root directory.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3A07445A-1CD4-5556-BE65-553A4A251789_d0e577842_href.png Binary file Symbian3/PDK/Source/GUID-3A07445A-1CD4-5556-BE65-553A4A251789_d0e577842_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3A07445A-1CD4-5556-BE65-553A4A251789_d0e627130_href.png Binary file Symbian3/PDK/Source/GUID-3A07445A-1CD4-5556-BE65-553A4A251789_d0e627130_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3A41040A-7F0C-50A8-B623-FED7F82A5E62.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-3A41040A-7F0C-50A8-B623-FED7F82A5E62.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Dependency diagram for cryptography.dll on Symbian OS v8.1

    The diagram below shows the inter-dependencies between cryptography.dll (shaded) and its clients. Cryptography.dll imports hash.dll, random.dll, and also euser.dll from the base/e32 component. The DLL's exports are not used statically by other executables.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3A506E2A-2999-458B-BBA2-DCC4D2EA5492_d0e68691_href.png Binary file Symbian3/PDK/Source/GUID-3A506E2A-2999-458B-BBA2-DCC4D2EA5492_d0e68691_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3A506E2A-2999-458B-BBA2-DCC4D2EA5492_d0e72904_href.png Binary file Symbian3/PDK/Source/GUID-3A506E2A-2999-458B-BBA2-DCC4D2EA5492_d0e72904_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3A6BEF56-ADBF-543E-B70A-52195DE3E92A.dita --- a/Symbian3/PDK/Source/GUID-3A6BEF56-ADBF-543E-B70A-52195DE3E92A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3A6BEF56-ADBF-543E-B70A-52195DE3E92A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -29,7 +29,7 @@ on behalf of all clients.

    Calendar's implementation of import and export behaviour is done using the AgnVersit2 plug-in.

    Calendar dependencies - +
    Description

    This document describes the following key areas:

    The Calendar Server

    The diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3A8755A9-139E-4845-9B52-13AEECF9EBBD_d0e80619_href.png Binary file Symbian3/PDK/Source/GUID-3A8755A9-139E-4845-9B52-13AEECF9EBBD_d0e80619_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3A8755A9-139E-4845-9B52-13AEECF9EBBD_d0e84817_href.png Binary file Symbian3/PDK/Source/GUID-3A8755A9-139E-4845-9B52-13AEECF9EBBD_d0e84817_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e101235_href.png Binary file Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e101235_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e101314_href.png Binary file Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e101314_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e79632_href.png Binary file Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e79632_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e79713_href.png Binary file Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e79713_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e83830_href.png Binary file Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e83830_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e83911_href.png Binary file Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e83911_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e85695_href.png Binary file Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e85695_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e86403_href.png Binary file Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e86403_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e89893_href.png Binary file Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e89893_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e90601_href.png Binary file Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e90601_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e97156_href.png Binary file Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e97156_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e97235_href.png Binary file Symbian3/PDK/Source/GUID-3AA34D0C-539D-4D4E-9337-EB5B83AEF4C1_d0e97235_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3ABE5DA5-F6FD-5439-ADED-CBF0B2554D94_d0e274231_href.png Binary file Symbian3/PDK/Source/GUID-3ABE5DA5-F6FD-5439-ADED-CBF0B2554D94_d0e274231_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3ABE5DA5-F6FD-5439-ADED-CBF0B2554D94_d0e280231_href.png Binary file Symbian3/PDK/Source/GUID-3ABE5DA5-F6FD-5439-ADED-CBF0B2554D94_d0e280231_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3AF1F492-3D7D-5F8C-B1AE-16FBD8224775.dita --- a/Symbian3/PDK/Source/GUID-3AF1F492-3D7D-5F8C-B1AE-16FBD8224775.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3AF1F492-3D7D-5F8C-B1AE-16FBD8224775.dita Fri Jul 16 17:23:46 2010 +0100 @@ -66,7 +66,7 @@ used by text strings.

    Resource File Interface

    Resource files contain data in numbered resources. A resource file has the following format:

    - +

    A resource file is generated from text input using the resource compiler. The index can be used to efficiently find a resource given its numeric ID. There can be 1 to 4095 resources in a resource file. Each resource contains @@ -86,7 +86,7 @@ in resource file usage

    The file types involved in resource file usage are defined in the following diagram:

    File types - +

    These files work together as follows:

    • the C++ compiler and linker, together, take .cpp source files and produce .exe output diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3AFA877F-41DE-5343-8BC2-C0FB894A062C.dita --- a/Symbian3/PDK/Source/GUID-3AFA877F-41DE-5343-8BC2-C0FB894A062C.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Application registration information \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3AFE0D8B-FB9B-5355-A63B-FB71DD13E7D0_d0e300993_href.png Binary file Symbian3/PDK/Source/GUID-3AFE0D8B-FB9B-5355-A63B-FB71DD13E7D0_d0e300993_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3AFE0D8B-FB9B-5355-A63B-FB71DD13E7D0_d0e306985_href.png Binary file Symbian3/PDK/Source/GUID-3AFE0D8B-FB9B-5355-A63B-FB71DD13E7D0_d0e306985_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3B0602F1-4294-43C4-9E7A-B1A33291C22F.dita --- a/Symbian3/PDK/Source/GUID-3B0602F1-4294-43C4-9E7A-B1A33291C22F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3B0602F1-4294-43C4-9E7A-B1A33291C22F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -28,8 +28,8 @@ Monitor Server API) and avoid polling and keep-alives. If the application protocol mandates the use of timers, they should be tuned so that the control data over the air is minimized.

      - -Defining + +Defining Connection Management Items Prompting diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3B2957D0-4D1A-5289-BE2A-AC8CD34A54E6_d0e434972_href.png Binary file Symbian3/PDK/Source/GUID-3B2957D0-4D1A-5289-BE2A-AC8CD34A54E6_d0e434972_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3B2957D0-4D1A-5289-BE2A-AC8CD34A54E6_d0e440817_href.png Binary file Symbian3/PDK/Source/GUID-3B2957D0-4D1A-5289-BE2A-AC8CD34A54E6_d0e440817_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3B6544CD-FA6E-5AB2-AA63-61186F52167D.dita --- a/Symbian3/PDK/Source/GUID-3B6544CD-FA6E-5AB2-AA63-61186F52167D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3B6544CD-FA6E-5AB2-AA63-61186F52167D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -24,7 +24,7 @@ might be arranged:

      Example power resource arrangement - +

      There is no default support or default implementation for controllable power resources in the generic layers of Symbian platform. They must be managed @@ -160,7 +160,7 @@ block diagram above (see the beginning of this section at Controllable Power Resources):

      Base port software architecture - +
    Multi-level, composite and asynchronous power resources

    Some power resources diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3B6E25F7-C1A8-461F-97F7-421DB559BC98.dita --- a/Symbian3/PDK/Source/GUID-3B6E25F7-C1A8-461F-97F7-421DB559BC98.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3B6E25F7-C1A8-461F-97F7-421DB559BC98.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,81 +1,81 @@ - - - - - -Process -identification -

    Sometimes it is useful for security reasons to obtain more information -about server or application processes, and identify an application and even -its vendor uniquely.

    -
      -
    • To verify an application's identity, use RApaLsSession to retrieve the application's name and Unique Identifier UID, -and compare them against known information.

      For more information, -see UID.

      -
    • -
    • Use the TApaTaskList class -to get a list of currently running applications.

      In the platform -security architecture there are two different identifiers for applications: -Secure Identifier (SID) and Vendor Identifier (VID).

    • -
    -

    Secure Identifier -(SID)

    -

    Every executable has its own Secure Identifier (SID), which is -used to identify the running process launched from the executable. It can -also be used to determine which private directory a process can access. SID -is stored in the executable binary, so it has the same security as any executable -code. The SID value is not relevant for dll.

    -

    SID values are requested from the Symbian -Signed web site. The Software -Installer ensures that no two applications have the same SID value -on a particular target device.

    -

    To retrieve the SID of a process, use the RProcess::SecureId() method . During inter process communication, use the TSecurityPolicy class to specify a security policy consisting of both capability and -SID checks.

    -

    For information on how to define the SID in the mmp file, -see secureid. -If SID is not specified in the mmp file, the value of UID3 -is used as the SID.

    -

    Vendor Identifier -(VID)

    -

    In addition to SID, signed applications have a Vendor Identifier (VID) -which can be used to identify the source of the application. Applications -from one vendor usually share a common VID, but the vendor may have different -VIDs for different product families. VIDs can also be used to group servers -and clients into logical groups providing services to each other.

    -

    Note that the VID cannot be reused for any other entity. For example, -the Nokia VID (0x101FB657) is property of Nokia.

    -

    For information on how to define the VID in the mmp file, -see vendorid.

    -
    Secure inter -process communication -

    Authentication can be done in different ways. The server can decide -to request (or not to request) capabilities from the client. The client's -options are more limited, the server is usually authenticated by name. The ProtServ capability allows -the server to insert an "!" in front of its name, indicating that the server -can be trusted. Nameless servers are also possible, but no client can connect -to them without a handle to the server. The server can also authenticate the -client with SID and VID.

    -

    Every server should define the following security policies:

    -
      -
    • Which capabilities are required by the calling application

      -
    • -
    • Which SID and VID are required by the calling application

      -
    • -
    • What actions are possible or must be done with the information -provided:

      -
        -
      • Can input data be trusted?

      • -
      • Is user acceptance needed for this operation?

      • -
      • Can this server act as a proxy towards other components?

        -
      • -
      -
    • -
    -
    + + + + + +Process identification +

    Sometimes it is useful for security reasons to obtain more information +about server or application processes, and identify an application +and even its vendor uniquely.

    +
      +
    • To verify an application's identity, use RApaLsSession to retrieve the application's +name and Unique Identifier UID, and compare them against known +information.

      For more information, see UID.

      +
    • +
    • Use the TApaTaskList class to get a list of currently +running applications.

      In the platform security architecture +there are two different identifiers for applications: Secure Identifier +(SID) and Vendor Identifier (VID).

    • +
    +

    Secure Identifier +(SID)

    +

    Every executable has its own Secure Identifier (SID), +which is used to identify the running process launched from the executable. +It can also be used to determine which private directory a process +can access. SID is stored in the executable binary, so it has the +same security as any executable code. The SID value is not relevant +for dll.

    +

    SID values are requested from the Symbian Signed web site. +The Software +Installer ensures that no two applications have the same SID +value on a particular target device.

    +

    To retrieve the SID of a process, use the RProcess::SecureId() method . During inter +process communication, use the TSecurityPolicy class to specify a security +policy consisting of both capability and SID checks.

    +

    For information on how to define the SID in the mmp file, see secureid. If SID is not specified in +the mmp file, the value of UID3 is used as the SID.

    +

    Vendor Identifier +(VID)

    +

    In addition to SID, signed applications have a Vendor Identifier (VID) which can be used to identify the source of the application. +Applications from one vendor usually share a common VID, but the vendor +may have different VIDs for different product families. VIDs can also +be used to group servers and clients into logical groups providing +services to each other.

    +

    Note that the VID cannot be reused for any other entity. For +example, the Nokia VID (0x101FB657) is property of +Nokia.

    +

    For information on how to define the VID in the mmp file, see vendorid.

    +
    Secure +inter process communication +

    Authentication can be done in different ways. The server can +decide to request (or not to request) capabilities from the client. +The client's options are more limited, the server is usually authenticated +by name. The ProtServ capability allows the server to insert an "!" in front of its name, indicating +that the server can be trusted. Nameless servers are also possible, +but no client can connect to them without a handle to the server. +The server can also authenticate the client with SID and VID.

    +

    Every server should define the following security policies:

    +
      +
    • Which capabilities are required by the calling application

      +
    • +
    • Which SID and VID are required by the calling application

      +
    • +
    • What actions are possible or must be done with the +information provided:

      +
        +
      • Can input data be trusted?

      • +
      • Is user acceptance needed for this operation?

        +
      • +
      • Can this server act as a proxy towards other components?

        +
      • +
      +
    • +
    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3B9AC7E9-3133-505F-9C1E-EB4BB4969838.dita --- a/Symbian3/PDK/Source/GUID-3B9AC7E9-3133-505F-9C1E-EB4BB4969838.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3B9AC7E9-3133-505F-9C1E-EB4BB4969838.dita Fri Jul 16 17:23:46 2010 +0100 @@ -57,7 +57,7 @@ platform.

    OpenWF-C and related Symbian platform components - +
    • Window Server. The Symbian window management and rendering component.

    • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3BA7EB01-D967-44B2-B817-91722C59F2DE_d0e94094_href.png Binary file Symbian3/PDK/Source/GUID-3BA7EB01-D967-44B2-B817-91722C59F2DE_d0e94094_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3BA7EB01-D967-44B2-B817-91722C59F2DE_d0e98292_href.png Binary file Symbian3/PDK/Source/GUID-3BA7EB01-D967-44B2-B817-91722C59F2DE_d0e98292_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3BB539EF-E1DE-4EB4-A9F0-BB31430DD64A_d0e91837_href.png Binary file Symbian3/PDK/Source/GUID-3BB539EF-E1DE-4EB4-A9F0-BB31430DD64A_d0e91837_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3BB539EF-E1DE-4EB4-A9F0-BB31430DD64A_d0e96035_href.png Binary file Symbian3/PDK/Source/GUID-3BB539EF-E1DE-4EB4-A9F0-BB31430DD64A_d0e96035_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3BB6E558-017D-584A-BCB7-AB1DD80C5A90.dita --- a/Symbian3/PDK/Source/GUID-3BB6E558-017D-584A-BCB7-AB1DD80C5A90.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ - - - - - -deffile

      deffile filename

      Use the deffile statement to override the default linker definition file for the project.

      A .def file specifies associations between exported function names and their ordinal export number. It is used by the linker when constructing a DLL and (where applicable) when constructing its associated import library.

      The assignment of ordinals must be controlled by a .def file in two situations:

      • A polymorphic interface DLL must export a particular function as ordinal 1. In this case, the .def file is used to specify this association, while other exported functions may have a random order.

      • A re-released DLL must be used by clients built against the old version. In this case, the .def file is used to ensure that all functions exported by the old version of the DLL are exported with the same ordinal by the new version.

      For many polymorphic DLL s, a special target type is provided so that the build tools can ensure that the correct function is exported as ordinal 1. Where a special target type is provided, the .def file can be dispensed with.

      .def files are sometimes colloquially referred to as freeze files, because they freeze the association between name and ordinal, for exported functions.

      The RVCT and Microsoft tool chains use different schemes for mangling the names of exported functions. This means that .def files of the same name must be differentiated by storing them in separate directories.

      Conventionally,

      ..\eabi\ is used for ARM .def files,

      while

      ..\bwins\ is used for WINSCW .def files.

      By default, the frozen .def file takes its basename from the basename of the target for the project.

      Where the default frozen .def file is overridden by the deffile statement, a path to the file can be specified as part of the filename.

      If no path is specified, the .def files are expected to be in:

      • directory ..\bwins\ for platforms WINSCW, CW_IDE, VS6 and VS2003

      • directory ..\eabi\ for the ARM platform.

      If a path is specified, place the deffile statement within #if defined( identifier ) so that the same file will not be used during both ARM and non-ARM builds.

      For example:

      #if defined(WINS) -deffile-stmt -#else if defined(MARM) -deffile-stmt -#endif

      Note that the platform name macros used with #if - defined( identifier ) must be in upper-case.

      In most cases, the functions exported from a DLL depend on the build variant. This is common because descriptor class names depend on whether the build is wide or narrow. For such DLLs, different .def files—differentiated by the -u suffix—are used. Although narrow builds are no longer supported, the -u suffix is still in use to maintain backward compatibility with previous versions of the build tools. This suffix behaviour can be removed by using nostrictdef.

      Note too that under WINSCW, when using an exedll target type, the first export is the one which will be called when the DLL is loaded, so you should use a .def file for the WINSCW variant.

      Makefiles create the import library associated with an executable (where applicable) directly from the frozen .def file, so only frozen exported functions will appear in the import library and only these exported functions can be linked against by other components.

      For ARM platforms, import libraries for compatible ABIs are also created.

      For example:

      • if a project is built for ARMv5, then ARMv5_ABIv1 import libraries will be created.

      • if a project is built for ARMv5_ABIv2, then ARMv5_ABIv2 import libraries will be created.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3BCA55F8-3867-579B-8D81-C540A32A8462.dita --- a/Symbian3/PDK/Source/GUID-3BCA55F8-3867-579B-8D81-C540A32A8462.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - - build

      abld [ test ] build ( ( [-c] | [-w] ) | ( [-s] [-k] [-v] ) ) [ platform ] [ build [ program ] ]

      This command combines the effects of several abld commands in one, and will probably be all you’ll need to invoke to build your component.

      The abld commands that this command combines are export, makefile, library, resource, target and final, which are carried out in turn.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3C042957-E7C7-53EC-9397-E5650D2D61AA.dita --- a/Symbian3/PDK/Source/GUID-3C042957-E7C7-53EC-9397-E5650D2D61AA.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -CapSearch Guide \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3C16A9DC-E4E6-4892-B0E5-E3AF2F950F03_d0e86813_href.png Binary file Symbian3/PDK/Source/GUID-3C16A9DC-E4E6-4892-B0E5-E3AF2F950F03_d0e86813_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3C16A9DC-E4E6-4892-B0E5-E3AF2F950F03_d0e87403_href.png Binary file Symbian3/PDK/Source/GUID-3C16A9DC-E4E6-4892-B0E5-E3AF2F950F03_d0e87403_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3C16A9DC-E4E6-4892-B0E5-E3AF2F950F03_d0e91011_href.png Binary file Symbian3/PDK/Source/GUID-3C16A9DC-E4E6-4892-B0E5-E3AF2F950F03_d0e91011_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3C16A9DC-E4E6-4892-B0E5-E3AF2F950F03_d0e91601_href.png Binary file Symbian3/PDK/Source/GUID-3C16A9DC-E4E6-4892-B0E5-E3AF2F950F03_d0e91601_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3C34724F-B476-5329-B0B1-6D5A34294979.dita --- a/Symbian3/PDK/Source/GUID-3C34724F-B476-5329-B0B1-6D5A34294979.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3C34724F-B476-5329-B0B1-6D5A34294979.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,22 +1,21 @@ - - - - - -Interrupt Dispatcher -TutorialDescribes how to implement the Interrupt Dispatcher part of the -ASSP/Variant. -Interrupt -Dispatcher -Interrupt -Service Routines (ISRs) - -Symbian OS Internals - Chapter 6 Interrupts and Exceptions - + + + + + +Interrupt +Dispatcher TutorialDescribes how to implement the Interrupt Dispatcher part +of the ASSP/Variant. +Interrupt +Dispatcher +Interrupt +Service Routines (ISRs) +Symbian OS Internals - Chapter 6 Interrupts +and Exceptions \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3C61E57D-BBBB-4E52-8C99-F359CB83D1BC_d0e86858_href.png Binary file Symbian3/PDK/Source/GUID-3C61E57D-BBBB-4E52-8C99-F359CB83D1BC_d0e86858_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3C61E57D-BBBB-4E52-8C99-F359CB83D1BC_d0e87786_href.png Binary file Symbian3/PDK/Source/GUID-3C61E57D-BBBB-4E52-8C99-F359CB83D1BC_d0e87786_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3C61E57D-BBBB-4E52-8C99-F359CB83D1BC_d0e91056_href.png Binary file Symbian3/PDK/Source/GUID-3C61E57D-BBBB-4E52-8C99-F359CB83D1BC_d0e91056_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3C61E57D-BBBB-4E52-8C99-F359CB83D1BC_d0e91984_href.png Binary file Symbian3/PDK/Source/GUID-3C61E57D-BBBB-4E52-8C99-F359CB83D1BC_d0e91984_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3C6935E1-66C9-5115-901E-D3B1D0C2E783.dita --- a/Symbian3/PDK/Source/GUID-3C6935E1-66C9-5115-901E-D3B1D0C2E783.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3C6935E1-66C9-5115-901E-D3B1D0C2E783.dita Fri Jul 16 17:23:46 2010 +0100 @@ -131,7 +131,7 @@

      For the last four parameters (mask, gateway and the DNS servers) you can normally use the same values that Windows on your PC uses. To show Window's configuration, type the following from a command prompt: ipconfig -/all

      You will get a screen similar to:

      +/all

      You will get a screen similar to:

      You must not use the same IP address as Windows, though.

    • Search for the text <Name>ConnectionPreferencesTable2</Name> and set the accompanying <IAPRef> tag to:

      <IAPRef>IAP.Ethernet No Daemon Static IP</IAPRef>
    • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3C86C6E4-43E3-5D0C-B08A-3130FE3426CD_d0e450772_href.png Binary file Symbian3/PDK/Source/GUID-3C86C6E4-43E3-5D0C-B08A-3130FE3426CD_d0e450772_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3C86C6E4-43E3-5D0C-B08A-3130FE3426CD_d0e456617_href.png Binary file Symbian3/PDK/Source/GUID-3C86C6E4-43E3-5D0C-B08A-3130FE3426CD_d0e456617_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3C8FD050-1CD4-5AFB-ACB7-4264536BB300_d0e534768_href.png Binary file Symbian3/PDK/Source/GUID-3C8FD050-1CD4-5AFB-ACB7-4264536BB300_d0e534768_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3C8FD050-1CD4-5AFB-ACB7-4264536BB300_d0e542228_href.png Binary file Symbian3/PDK/Source/GUID-3C8FD050-1CD4-5AFB-ACB7-4264536BB300_d0e542228_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3CA473CB-E79C-5B32-8B5B-F222B3DDEF3B.dita --- a/Symbian3/PDK/Source/GUID-3CA473CB-E79C-5B32-8B5B-F222B3DDEF3B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3CA473CB-E79C-5B32-8B5B-F222B3DDEF3B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Speech Recognition Controller Overview

      This document provides an overview of the Speech Recognition Controller (SRC) component.

      Purpose

      The Speech Recognition Controller component provides speech recognition services for clients requiring speech recognition functionality. The SRC component comprises a client utility, a data handler and a custom commands library.

      Required background

      Automatic Speech Recognition (ASR) is a technology that enables users to use speech to interact with devices. ASR works by converting speech into a machine-readable form. Voice activated dialling is an example of an ASR application.

      Architectural relationships

      The ASR Client Utility is dependent on the Multimedia Framework. The MMF acts as the interface between the ASR Client Utility and the low level DevASR. A Speech Recognition Services (SRS) controller plugin is responsible for transporting speech recognition requests from the MMF to the DevASR. For playback, the DevASR implementation uses DevSound to play the recorded speech.

      The relationship between the SRC component and other multimedia components is shown below.

      SRC component architectural relationship -
      API summary

      The SRC component includes the following APIs:

      API Description

      Automatic Speech Recognition Client Utility

      Client side interface for ASR.

      For more information, see Automatic Speech Recognition Client Utility Overview.

      Automatic Speech Recognition Custom Commands

      Custom commands for ASR.

      For more information, see Automatic Speech Recognition Custom Commands Overview.

      Automatic Speech Recognition Data Handling

      Recognition data handling for ASR.

      For more information, see Automatic Speech Recognition Data Handling Overview.

      Typical uses

      The SRC component is used for the following:

      • Recognising spoken input.

      • Training a new model.

      • Manipulating grammars, lexicons and models.

      See also

      DevSound Overview

      \ No newline at end of file +
    API summary

    The SRC component includes the following APIs:

    API Description

    Automatic Speech Recognition Client Utility

    Client side interface for ASR.

    For more information, see Automatic Speech Recognition Client Utility Overview.

    Automatic Speech Recognition Custom Commands

    Custom commands for ASR.

    For more information, see Automatic Speech Recognition Custom Commands Overview.

    Automatic Speech Recognition Data Handling

    Recognition data handling for ASR.

    For more information, see Automatic Speech Recognition Data Handling Overview.

    Typical uses

    The SRC component is used for the following:

    • Recognising spoken input.

    • Training a new model.

    • Manipulating grammars, lexicons and models.

    See also

    DevSound Overview

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3D110AD3-C5C7-533C-8E57-C4E3D032A229_d0e247915_href.png Binary file Symbian3/PDK/Source/GUID-3D110AD3-C5C7-533C-8E57-C4E3D032A229_d0e247915_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3D110AD3-C5C7-533C-8E57-C4E3D032A229_d0e253926_href.png Binary file Symbian3/PDK/Source/GUID-3D110AD3-C5C7-533C-8E57-C4E3D032A229_d0e253926_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3D20F136-4526-502D-A708-1F26550FC61A-GENID-1-12-1-24-1-1-8-1-4-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-3D20F136-4526-502D-A708-1F26550FC61A-GENID-1-12-1-24-1-1-8-1-4-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,16 @@ + + + + + +Secure SocketsThe Secure Sockets allow a user to transport data over the network +by enabling the users to authenticate and encrypt the data. +

    This section provides the summary of concepts and tutorials related to +the Secure Sockets.

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3D20F136-4526-502D-A708-1F26550FC61A-GENID-1-12-1-24-1-1-8-1-5-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-3D20F136-4526-502D-A708-1F26550FC61A-GENID-1-12-1-24-1-1-8-1-5-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,16 @@ + + + + + +Secure SocketsThe Secure Sockets allow a user to transport data over the network +by enabling the users to authenticate and encrypt the data. +

    This section provides the summary of concepts and tutorials related to +the Secure Sockets.

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3D20F136-4526-502D-A708-1F26550FC61A-GENID-1-12-1-24-1-1-9-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-3D20F136-4526-502D-A708-1F26550FC61A-GENID-1-12-1-24-1-1-9-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,16 @@ + + + + + +Secure SocketsThe Secure Sockets allow a user to transport data over the network +by enabling the users to authenticate and encrypt the data. +

    This section provides the summary of concepts and tutorials related to +the Secure Sockets.

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3D4D96AB-4A77-5EC1-9C2F-9BADF76209D1_d0e594707_href.jpg Binary file Symbian3/PDK/Source/GUID-3D4D96AB-4A77-5EC1-9C2F-9BADF76209D1_d0e594707_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3D4D96AB-4A77-5EC1-9C2F-9BADF76209D1_d0e622601_href.jpg Binary file Symbian3/PDK/Source/GUID-3D4D96AB-4A77-5EC1-9C2F-9BADF76209D1_d0e622601_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3D5974E9-0F6C-4BBE-AD41-C405DC286C09.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-3D5974E9-0F6C-4BBE-AD41-C405DC286C09.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,110 @@ + + + + + +Crazy SchedulerThis document describes the crazy scheduler tool. +
    Introduction

    The adding of new functionality to the kernel has meant that Inter-Process +Communication (IPC) is no longer deterministic. The crazy scheduler +is a tool that is designed to simulate the effect of IPC calls occurring +at any time. With this tool, developers can check that their code +will still work with the latest version of the kernel.

    Crazy +scheduler has two modes of operation:

      +
    • Crazy delays

    • +
    • Crazy priorities

    • +

    Both modes of operation should not be enabled simultaneously +since this could cause the system to deadlock.

    Ideally, +the test cases should be run twice (once with each mode of the crazy +scheduler).

    +
    Crazy +delay mode

    This mode is used to test the effect of a delay +in threads moving between states.

    +
    Crazy +priority mode

    This mode is used to test the effect of no +longer being able to rely on thread priority to synchronize IPC calls. +In this mode, an IPC call can occur at any time.

    +
    Prerequisites

    Your build should have the crazy scheduler present. It is present +in the udeb version of a build and is disabled by default.

    +
    Limitations

    Crazy scheduler will only work on the udeb version of a build. +Crazy scheduler in crazy priority mode does not impact the system +as heavily as the crazy scheduler in crazy delay mode. Crazy Priority +mode can only be enabled at ROM time or boot time (for the emulator). +Do not expect this tool to find all the issues associated with IPC +and synchronization. The crazy delay mode will slow the system down.

    When a build is booting with the crazy scheduler in crazy +delay mode enabled, the booting process can take a long time. In fact +it can appear that it has hung. To reduce the boot time, it is advisable +to do the following:

      +
    • Format the user NAND (C:) partition using a regular ROM image +before booting the build with the crazy scheduler enabled.

    • +
    It is advisable to execute the crazy scheduling tests on both +the emulator and on hardware.

    +
    How +to enable the crazy scheduler

    The Crazy scheduler can be +used on both the emulator and hardware builds.

    +
    Enabling +for hardware

    If the crazy scheduler is to be executed on +hardware, then there are two ways to enable it:

      +
    • Add the parameters -DCRAZYSCHEDDELAY (for the crazy delay) +or -DCRAZYSCHEDPRIO (for crazy priority) to the buildrom arguments. +Do not enable both parameters at the same time.

    • +

    There are other ways of enabling the two modes of the crazy +scheduler:

      +
    • To enable the crazy priorities mode, include the following +line into the relevant iby/oby file:

      CRAZYSCHEDULING(on)

    • +
    • To enable the crazy delay mode , include the following line +into the relevant iby/oby file:

      kerneltrace 0x80000000 0 0x20 +0 0 0 0 0

    • +
    +
    Enabling +for the emulator

    If the crazy scheduler is to run on the +emulator, then:

      +
    • To enable crazy delays, add the following line to the \epoc\data\epoc.ini +file:

      debugmask2 0x20

    • +
    • To enable crazy priorities, add the following line to the \epoc32\data\epoc.ini +file:

      crazyscheduling on

    • +

    Do not enable both crazy delays and crazy priorities +on at once.

    +
    Runtime +enabling

    The crazy delays can be toggled on or off at runtime.

    To do this, EShell must be running. The following commands can +be used from within EShell:

    + + + +

    Command

    +

    Description

    +
    + +

    trace on 69

    +

    Enable crazy delays

    +
    + +

    trace off 69

    +

    Disable crazy delays

    +
    + + +

    Crazy priority cannot be toggled on or off at runtime.

    +
    State +of the crazy scheduler

    The state of the crazy scheduler +can be obtained by executing the following in EShell:

      +
    • sysinfo

    • +

    The output will tell you which of the crazy scheduler modes +are enabled or disabled.

    +
    How +to obtain the output from the crazy scheduler

    The crazy +scheduler does not produce output as such, instead it is expected +to work in conjunction with other test tools. The only output from +this tool is whether an application will still work or not.

    +
    How +to interpret the output from the crazy scheduler

    As for +above.

    +
    +SMP +Tools Overview +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3D8B134E-3C2F-5BAF-82AB-0AB786A5D22D.dita --- a/Symbian3/PDK/Source/GUID-3D8B134E-3C2F-5BAF-82AB-0AB786A5D22D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3D8B134E-3C2F-5BAF-82AB-0AB786A5D22D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,7 +12,7 @@ Directory Cache TutorialDescribes how to configure the directory cache in a FAT file system enabled drive. -

    Before you start, +

    Before you start, you must:

    • have the knowledge of the FAT file system

    • @@ -23,7 +23,7 @@ the global cache manager.

    -

    The developers +

    The developers can configure the directory cache memory with a dynamic range. The memory allocation for directory cache on a drive depends on the available global cache memory. The global cache manager allocates memory to various cache memory diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3D8FE2A7-E544-51B9-9572-492A3B61377C_d0e106639_href.png Binary file Symbian3/PDK/Source/GUID-3D8FE2A7-E544-51B9-9572-492A3B61377C_d0e106639_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3D8FE2A7-E544-51B9-9572-492A3B61377C_d0e109082_href.png Binary file Symbian3/PDK/Source/GUID-3D8FE2A7-E544-51B9-9572-492A3B61377C_d0e109082_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita --- a/Symbian3/PDK/Source/GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3D9C4B45-EEA0-581C-A9E5-8B2535014930.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Image Conversion Library Overview

    This document introduces you to the Image Conversion functionality.

    Purpose

    Image Conversion functionality supports many features like encoding, decoding, scaling, rotating, producing mirror image, flipping and cropping images.

    Image Conversion Library Details

    To use Image Conversion, you must obtain necessary binaries in the form of DLL file to implement the image encoding and the image decoding functions.

    DLL LIB Short Description

    imageconversion.dll

    imageconversion.lib

    These files are used for implementing image conversion operation.

    Architectural Relationship

    Image Conversion is primarily used for Image Encoding and Image Decoding. The following diagram shows how the Image Encoding and the Image Decoding interacts with other components.

    Image Conversion system diagram -
    Description

    The Image conversion provides several features to enable the conversion and basic manipulation of images. Conversions can be made from images stored in files or descriptors to CFbsBitmap objects, or from CFbsBitmap and CFrameImageData objects to files or descriptors. Features of the image conversion function include:

    • Standard decoders that can decode single or multiframe images, images with bitmasks, images with in-image or in-frame comments.

    • Support for progressive decoding.

    • Functions to decode images stored in files or descriptors.

    • Standard encoder that can encode single frame images and images with in image comments.

    • Functions to manipulate image properties such as scale, rotation, dithering and progressive decoding.

    • Advanced thread control for encoder and decoders.

    Key Image Conversion Classes

    The key classes are

    Image Encoding

    Image encoding is the process of taking a bitmap stored in a CFbsBitmap, converting it to a specified format and writing the output to a file or descriptor. Typical sources of bitmap data are cameras and paint applications. The CImageEncoder object is created specifying the source image and encoder plugin as parameters. The CImageEncoder::Convert() function then encodes the image using the methods provided by the plugin. The results of the conversion are then saved to a file or descriptor.

    Image Decoding

    Image decoding is the process of taking an image stored in a file or descriptor, converting it from a specified format and writing the output to a CFbsBitmap. The CImageDecoder object is created specifying the source image and decoder plugin as parameters. The CImageDecoder::Convert() function then decodes the image using the methods provided by the plugin. The results of the conversion are then saved to a CFbsBitmap.

    Image Processor

    Image Processor is an interface to process the decoded image using the CImageProcessor class.

    Using Image Conversion

    The Image Conversion functionality is used for the following:

    • Rotate, crop, mirror and flip an image frame during decode operation.

    • Scaling with reduction factor of an image during decode operation.

    • Decode an image by requesting pixel data block by block.

    • Decode an image from a descriptor or a file.

    • Decode an image using a mask for the image with transparency.

    • Decode an image using separate thread.

    • Decode a JPEG image thumbnail.

    • Decode a GIF multi-frame image.

    • Decode an image that supports YUV format into an image frame.

    • Turning OFF and ON dithering during decode operation of the image.

    • Encode a bitmap or an image frame into a descriptor or a file.

    • Encode an image frame by passing pixel data block by block.

    • Rotate, mirror and flip an image during encode functionality.

    • Rotate a bitmap image.

    • Scaling a bitmap image with or without a mask.

    Imaging Frameworks Overview Image Conversion Overview Image Encoding Tutorial Image Decoding Tutorial Guide to Symbian supplied Codecs \ No newline at end of file +
    Description

    The Image conversion provides several features to enable the conversion and basic manipulation of images. Conversions can be made from images stored in files or descriptors to CFbsBitmap objects, or from CFbsBitmap and CFrameImageData objects to files or descriptors. Features of the image conversion function include:

    • Standard decoders that can decode single or multiframe images, images with bitmasks, images with in-image or in-frame comments.

    • Support for progressive decoding.

    • Functions to decode images stored in files or descriptors.

    • Standard encoder that can encode single frame images and images with in image comments.

    • Functions to manipulate image properties such as scale, rotation, dithering and progressive decoding.

    • Advanced thread control for encoder and decoders.

    Key Image Conversion Classes

    The key classes are

    Image Encoding

    Image encoding is the process of taking a bitmap stored in a CFbsBitmap, converting it to a specified format and writing the output to a file or descriptor. Typical sources of bitmap data are cameras and paint applications. The CImageEncoder object is created specifying the source image and encoder plugin as parameters. The CImageEncoder::Convert() function then encodes the image using the methods provided by the plugin. The results of the conversion are then saved to a file or descriptor.

    Image Decoding

    Image decoding is the process of taking an image stored in a file or descriptor, converting it from a specified format and writing the output to a CFbsBitmap. The CImageDecoder object is created specifying the source image and decoder plugin as parameters. The CImageDecoder::Convert() function then decodes the image using the methods provided by the plugin. The results of the conversion are then saved to a CFbsBitmap.

    Image Processor

    Image Processor is an interface to process the decoded image using the CImageProcessor class.

    Using Image Conversion

    The Image Conversion functionality is used for the following:

    • Rotate, crop, mirror and flip an image frame during decode operation.

    • Scaling with reduction factor of an image during decode operation.

    • Decode an image by requesting pixel data block by block.

    • Decode an image from a descriptor or a file.

    • Decode an image using a mask for the image with transparency.

    • Decode an image using separate thread.

    • Decode a JPEG image thumbnail.

    • Decode a GIF multi-frame image.

    • Decode an image that supports YUV format into an image frame.

    • Turning OFF and ON dithering during decode operation of the image.

    • Encode a bitmap or an image frame into a descriptor or a file.

    • Encode an image frame by passing pixel data block by block.

    • Rotate, mirror and flip an image during encode functionality.

    • Rotate a bitmap image.

    • Scaling a bitmap image with or without a mask.

    Imaging Frameworks Overview Image Conversion Overview Image Encoding Tutorial Image Decoding Tutorial Guide to Symbian supplied Codecs \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3DD37A41-E822-5CB6-A59E-0B309B5627D9_d0e227813_href.png Binary file Symbian3/PDK/Source/GUID-3DD37A41-E822-5CB6-A59E-0B309B5627D9_d0e227813_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3DD37A41-E822-5CB6-A59E-0B309B5627D9_d0e233812_href.png Binary file Symbian3/PDK/Source/GUID-3DD37A41-E822-5CB6-A59E-0B309B5627D9_d0e233812_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3DE276E8-D2C7-5297-AF3B-40B0B8733572.dita --- a/Symbian3/PDK/Source/GUID-3DE276E8-D2C7-5297-AF3B-40B0B8733572.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3DE276E8-D2C7-5297-AF3B-40B0B8733572.dita Fri Jul 16 17:23:46 2010 +0100 @@ -32,7 +32,7 @@ the WriteL() function. The following diagram illustrates this:

    - +

    The source or target location in the other thread is identified by pointer. The pointer only has meaning within the context of that thread; diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3E0E2E54-CD8A-5BAF-A87B-BF51FD8890D6_d0e684100_href.png Binary file Symbian3/PDK/Source/GUID-3E0E2E54-CD8A-5BAF-A87B-BF51FD8890D6_d0e684100_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3E0E2E54-CD8A-5BAF-A87B-BF51FD8890D6_d0e696927_href.png Binary file Symbian3/PDK/Source/GUID-3E0E2E54-CD8A-5BAF-A87B-BF51FD8890D6_d0e696927_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3E1199E4-4F19-58BB-B1EC-8975A04B68FF_d0e315529_href.png Binary file Symbian3/PDK/Source/GUID-3E1199E4-4F19-58BB-B1EC-8975A04B68FF_d0e315529_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3E1199E4-4F19-58BB-B1EC-8975A04B68FF_d0e321519_href.png Binary file Symbian3/PDK/Source/GUID-3E1199E4-4F19-58BB-B1EC-8975A04B68FF_d0e321519_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3E23788D-4D67-5E9B-961F-B67D7471BB71_d0e173143_href.png Binary file Symbian3/PDK/Source/GUID-3E23788D-4D67-5E9B-961F-B67D7471BB71_d0e173143_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3E23788D-4D67-5E9B-961F-B67D7471BB71_d0e179211_href.png Binary file Symbian3/PDK/Source/GUID-3E23788D-4D67-5E9B-961F-B67D7471BB71_d0e179211_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3E2E0C91-14B3-53AC-B797-DEE349688477_d0e263997_href.png Binary file Symbian3/PDK/Source/GUID-3E2E0C91-14B3-53AC-B797-DEE349688477_d0e263997_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3E2E0C91-14B3-53AC-B797-DEE349688477_d0e269997_href.png Binary file Symbian3/PDK/Source/GUID-3E2E0C91-14B3-53AC-B797-DEE349688477_d0e269997_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3E7A9A92-F217-4BD1-82CE-227931CFB8ED.dita --- a/Symbian3/PDK/Source/GUID-3E7A9A92-F217-4BD1-82CE-227931CFB8ED.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3E7A9A92-F217-4BD1-82CE-227931CFB8ED.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,25 +1,21 @@ - - - - -Suppo<?Pub Caret?>rt for Multiple Pointers in the Emulator -This section introduces support for multiple pointers in -the emulator which uses multiple mice to simulate human fingers. The -multiple pointer environment in the emulator allows application developers -to test multiple pointer UI features when hardware devices are not -available. - - - - -

    Variant: ScreenPlay. Target audience: Application developers.

    - - -Advanced Pointers - - - + + + + + +Support for Multiple Pointers in the EmulatorThis section introduces support for multiple pointers in +the emulator which uses multiple mice to simulate human fingers. The +multiple pointer environment in the emulator allows application developers +to test multiple pointer UI features when hardware devices +are not available. +

    Variant: ScreenPlay. Target audience: Application developers.

    +
    +Advanced +Pointers +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3E7FBDE5-B580-4C2D-9815-83E04B7D71E1.dita --- a/Symbian3/PDK/Source/GUID-3E7FBDE5-B580-4C2D-9815-83E04B7D71E1.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3E7FBDE5-B580-4C2D-9815-83E04B7D71E1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -24,7 +24,7 @@ is not usually advised.

    With AGPS terminal-assisted positioning the client application therefore requests a position from the network using an AGPS Terminal. The steps below describe the process.

    - + The client must open a connection to the server by calling RPositionServer::Connect(). @@ -32,18 +32,18 @@ then open RPositioner by calling RPositioner::Open() and specify the UID of the Network Proxy PSY. -The client application +The client application sends a location request to the Location subsystem by calling RPositioner::NotifyPositionUpdate(). -The Location subsystem +The Location subsystem forwards the location request to the SUPL Protocol module by calling CLbsNetworkProtocolBase::RequestNetworkLocation(). (In the default configuration SUPL is used for cell-based positioning). -The SUPL protocol +The SUPL protocol module communicates with an external SUPL server, which decides to use terminal-assisted GPS positioning instead of cell-based positioning. -The SUPL Protocol +The SUPL Protocol Module requests a measurement update from the Location subsystem by calling MLbsNetworkProtocolObserver::ProcessLocationRequest(). The Location subsystem @@ -58,7 +58,7 @@ The measurement is sent to the SUPL server, which calculates and returns the position. -The SUPL Protocol +The SUPL Protocol module returns the cell-based position by calling MLbsNetworkProtocolObserver::ProcessLocationUpdate(). The Location subsystem diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3E80A006-F8D8-45C5-9773-7CC239AE86D9_d0e241170_href.png Binary file Symbian3/PDK/Source/GUID-3E80A006-F8D8-45C5-9773-7CC239AE86D9_d0e241170_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3E80A006-F8D8-45C5-9773-7CC239AE86D9_d0e247182_href.png Binary file Symbian3/PDK/Source/GUID-3E80A006-F8D8-45C5-9773-7CC239AE86D9_d0e247182_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3EF88A1D-CCB6-5DE5-9CA6-F6E785A6898A.dita --- a/Symbian3/PDK/Source/GUID-3EF88A1D-CCB6-5DE5-9CA6-F6E785A6898A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3EF88A1D-CCB6-5DE5-9CA6-F6E785A6898A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -56,7 +56,7 @@ Communications Server.

    The following diagram outlines the Communication Framework collections and the components associated with each collection.

    - +
    Technologies

    The Comms Framework defines the structure and operations of the communications protocol stack in Symbian platform, diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3F0053A7-6EE2-5B59-81C2-27EC3CC7820A_d0e380122_href.png Binary file Symbian3/PDK/Source/GUID-3F0053A7-6EE2-5B59-81C2-27EC3CC7820A_d0e380122_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3F0053A7-6EE2-5B59-81C2-27EC3CC7820A_d0e385975_href.png Binary file Symbian3/PDK/Source/GUID-3F0053A7-6EE2-5B59-81C2-27EC3CC7820A_d0e385975_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3F0789DE-8455-5BA6-850C-45C60C581F18_d0e155655_href.png Binary file Symbian3/PDK/Source/GUID-3F0789DE-8455-5BA6-850C-45C60C581F18_d0e155655_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3F0789DE-8455-5BA6-850C-45C60C581F18_d0e161756_href.png Binary file Symbian3/PDK/Source/GUID-3F0789DE-8455-5BA6-850C-45C60C581F18_d0e161756_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3F0FCBB5-98D2-4355-96E3-2DA938DE1C16.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-3F0FCBB5-98D2-4355-96E3-2DA938DE1C16.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,92 @@ + + + + + +DSA Migration GuideThis migration guide explains the guidelines that applications +that use direct screen access (DSA) must follow in order to run on +ScreenPlay (NGA) devices. +

    Introduced in an earlier version of the Symbian platform, DSA enables +applications that require high frame rates (such as video and games) +to bypass the Window Server and write to the screen directly. On +ScreenPlay, Symbian recommends the use of EGL window surfaces in preference +to DSA.

    +

    Support for DSA is maintained for backward compatibility reasons. + However, whereas on some earlier devices, applications might work +without fully conforming to the rules of DSA, these rules are now +necessarily enforced. Applications that follow the following guidelines +should run correctly on a ScreenPlay device.

    +
    Always +use a DSA session when using DSA

    The main classes +of the DSA framework are CDirectScreenAccess, RDirectScreenAccess and MDirectScreenAccess. Before drawing to the screen, the DSA application must create a +DSA session; for example, by instantiating CDirectScreenAccess and calling CDirectScreenAccess::StartL(). This +rule applies regardless of whether the application accesses the DSA +framebuffer using CFbsBitGc, CFbsScreenDevice or gains a pointer directly through HAL.

    Applications that +fail to create a DSA session will not work. Applications that draw +outside of an active period of DSA will not work. This is because +all DSA rendering is directed into a virtual framebuffer and the Operating +System uses the DSA session to determine when that framebuffer should +be made visible.

    The following example demonstrates requesting +direct screen access:

    voidCMyDSAEngine::StartDrawingL() + { + // Initialize DSA. + TRAPD(dsaError,iDSA->StartL()); + if (dsaError==KErrNone) + { + // Get the graphics context for drawing. + iGc=iDSA->Gc(); + + // Get the region to draw to. + iRegion=iDSA->DrawingRegion(); + + // Set the clipping region to this region. + iGc->SetClippingRegion(iRegion); + + // Start generating timer events (the drawing is done in a timer callback). + iPeriodicTimer=CPeriodic::NewL(CActive::EPriorityStandard); + iPeriodicTimer->Start(0,KInterval,TCallBack(DrawNextFrame, this)); + iDrawing=ETrue; + } + } +
    +
    Inform +the Operating System after updating the DSA buffer

    Applications +can access the screen by writing to the video hardware framebuffer +or by using CFbsScreenDevice. Regardless which +of these methods you use, the application must inform the OS that +the framebuffer has been updated in order for the DSA drawing to be +pushed to the display.

    Applications that fail to declare modifications +to the framebuffer will not see their content correctly appear on-screen. + This is because the OS uses event-driven updating to copy the contents +of the DSA framebuffer into the display.

    When writing to the +video hardware frame buffer, force a screen update by creating a redraw +event like this:

    TRawEventredraw; +redraw.Set(TRawEvent::ERedraw); +UserSvr::AddEvent(redraw);

    When using CFbsScreenDevice, force a screen update by calling one of the following:

    void CFbsScreenDevice::Update(); +void CFbsScreenDevice::Update(constTRegion &aRegion); +
    +
    Do +not mix DSA and non-DSA rendering

    The application must not +issue CWindowGc rendering to a window when DSA +is active on that window. If both types of rendering are required, +the application must ensure that they only happen in distinct periods +demarcated by the DSA session.

    Applications that interleave +periods of DSA rendering with periods of standard indirect (CWindowGc) rendering, expecting to see each painted on +top of the previous, will not work. This is because the OS now uses +two separate framebuffers; one for DSA rendering and one for indirect +rendering. Previous versions of the OS use a single +framebuffer for both types of rendering.

    Applications must be +written to render the entire contents of their window using either +DSA or indirect rendering at any one point of time.

    + +The +ScreenPlay Graphics Architecture +Graphics +and Drawing + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3F172A97-8B96-5E1B-854C-F198D1334D2A_d0e361991_href.png Binary file Symbian3/PDK/Source/GUID-3F172A97-8B96-5E1B-854C-F198D1334D2A_d0e361991_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3F172A97-8B96-5E1B-854C-F198D1334D2A_d0e367839_href.png Binary file Symbian3/PDK/Source/GUID-3F172A97-8B96-5E1B-854C-F198D1334D2A_d0e367839_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3F1FF06E-4190-5AC7-86C6-6732B632BA1A.dita --- a/Symbian3/PDK/Source/GUID-3F1FF06E-4190-5AC7-86C6-6732B632BA1A.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ - - - - - -reallyclean

    abld [ test ] reallyclean ( ( [-c] | [-w] ) | ( [-k] [-v] ) ) [ platform ] [ build [ program ] ]

    This command does what abld clean does, and also removes files exported by abld - export and the makefiles generated by abld - makefile.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3F2E04BF-5A72-5540-9D6E-C2F3A47E0570_d0e272210_href.png Binary file Symbian3/PDK/Source/GUID-3F2E04BF-5A72-5540-9D6E-C2F3A47E0570_d0e272210_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3F2E04BF-5A72-5540-9D6E-C2F3A47E0570_d0e278210_href.png Binary file Symbian3/PDK/Source/GUID-3F2E04BF-5A72-5540-9D6E-C2F3A47E0570_d0e278210_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3F3E8851-3770-5B58-A31E-B5FFCBDE7E55_d0e276826_href.png Binary file Symbian3/PDK/Source/GUID-3F3E8851-3770-5B58-A31E-B5FFCBDE7E55_d0e276826_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3F3E8851-3770-5B58-A31E-B5FFCBDE7E55_d0e282826_href.png Binary file Symbian3/PDK/Source/GUID-3F3E8851-3770-5B58-A31E-B5FFCBDE7E55_d0e282826_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3F40DB93-6C60-56E2-8728-00370DF9AFB8.dita --- a/Symbian3/PDK/Source/GUID-3F40DB93-6C60-56E2-8728-00370DF9AFB8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3F40DB93-6C60-56E2-8728-00370DF9AFB8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Media Transfer Protocol and Symbian Implementation

    This section introduces the Media Transfer Protocol (MTP) and describes the basic interfaces of the Symbian MTP implementation.

    Media Transport Protocol

    The Media Transfer Protocol (MTP) is based upon, and is compatible with, the Picture Transfer Protocol (PTP) which is commonly used by digital imaging devices and printers for the exchange of pictures. PTP supports only the transfer of pictures. MTP allows the transfer of most types of media and is aimed at intelligent multifunction storage devices, such as digital cameras, portable media players and mobile phones.

    Key aspects of MTP

    • It is intended for transient connectivity between devices which normally function unconnected.

    • It is optimised for very large data stores.

    • A device may act as either a data producer or a data consumer. This refers to the direction in which data is transferred. For example image files may be uploaded from a Symbian device acting as a producer and music files downloaded to the same Symbian device acting as a consumer.

    • A device may act as either an Initiator or a Responder. Typically the Initiator is the 'more responsible' of the two devices.

    • Besides enabling data transfer MTP enables some command and control of the connected device (the responder)

    • Data is transferred as an atomic binary object so the data types that can be transferred are not restricted.

    For a more complete description of MTP, and to download the MTP Porting Kit, please visit the Microsoft website

    Symbian Implementation

    Support for MTP means that Symbian devices are able to interact with Microsoft Windows without the need to install any additional software on either device. The degree of interaction (the range and sophistication of features available) depends upon the software built into both the PC and the Symbian device.

    The basic Symbian MTP implementation provides access to the public file system on the device over a USB connection. The PC user is able to view the file system using applications such as Windows Explorer and the Windows Media Player.

    Basic MTP over USB -

    Within the Symbian platform MTP is implemented as a framework which allows the use of a variety of transports (e.g. USB, TCP/IP...), a variety of modes (MTP, PTP & PictBridge) and a variety of Data Providers (e.g. specific media and data type providers).

    +

    Within the Symbian platform MTP is implemented as a framework which allows the use of a variety of transports (e.g. USB, TCP/IP...), a variety of modes (MTP, PTP & PictBridge) and a variety of Data Providers (e.g. specific media and data type providers).

    MTP Framework Interfaces -

    The Symbian MTP implementation is compatible with Microsoft's MTP Enhanced specification v0.95. Symbian devices conform to the Windows Portable Device (WPD) architecture. Compatible versions of Microsoft Windows are:

    • Windows XP with Windows Media Player version 11 or higher

    • Windows Vista

    A Symbian device can take only the Responder role.

    \ No newline at end of file +

    The Symbian MTP implementation is compatible with Microsoft's MTP Enhanced specification v0.95. Symbian devices conform to the Windows Portable Device (WPD) architecture. Compatible versions of Microsoft Windows are:

    • Windows XP with Windows Media Player version 11 or higher

    • Windows Vista

    A Symbian device can take only the Responder role.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3F4604B8-9154-4C98-BB6A-D3633C639F2B_d0e165692_href.png Binary file Symbian3/PDK/Source/GUID-3F4604B8-9154-4C98-BB6A-D3633C639F2B_d0e165692_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3F4604B8-9154-4C98-BB6A-D3633C639F2B_d0e171785_href.png Binary file Symbian3/PDK/Source/GUID-3F4604B8-9154-4C98-BB6A-D3633C639F2B_d0e171785_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3F7DA54D-28D5-4099-B4EF-728489DCEF2C.dita --- a/Symbian3/PDK/Source/GUID-3F7DA54D-28D5-4099-B4EF-728489DCEF2C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3F7DA54D-28D5-4099-B4EF-728489DCEF2C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -18,6 +18,6 @@ selection grid.

    Example of color selection grid - + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3F880EFC-E891-5C71-8360-1BBB54367AFA.dita --- a/Symbian3/PDK/Source/GUID-3F880EFC-E891-5C71-8360-1BBB54367AFA.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Localisable icon/caption definition files

    These files define the following information required by the application launcher or system shell:

    • the application’s caption. This is often displayed beside the icon in the application launcher, and is usually the application’s name,

    • an optional short version of the caption. This is used by some UIs in situations where screen space is limited,

    • the name of the icon file,

    • for view-based applications, optional information about the views, including view-specific captions and icons. This feature may not be supported by all UIs.

    • an optional application group name. This may also be defined in the registration file. If it is defined in both files, the localisable version takes precedence.

    This information is defined using a LOCALISABLE_APP_INFO resource struct, see AppInfo.rh. This resource can either be defined in a icon/caption definition resource file, or in the application's UI resource file, if it has one.

    This choice of two methods is provided to give flexibility. For instance:

    • applications without any UI resources but which require icons/captions might need to use an icon/caption definition file,

    • applications with UI resources that do not need to be localised, but which require multiple captions, would use a single UI resource file, but several language-dependent icon/caption definition files,

    • for applications with localisable UI resources and different captions for different languages, it may be more convenient to define the caption/icon information in the UI resource files instead of using icon/caption definition files.

    Localisable information is optional. A set of default icons are provided by the GUI, and the default caption is the application name.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3F938A76-3F27-56ED-BB3D-0E7EC4ACFB9C.dita --- a/Symbian3/PDK/Source/GUID-3F938A76-3F27-56ED-BB3D-0E7EC4ACFB9C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3F938A76-3F27-56ED-BB3D-0E7EC4ACFB9C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -47,7 +47,7 @@ is zero (0) which indicates the non-iterative method. You must set it to 1 to get specify the iterative method. New search-sort request process - +
    Simple search
    1. Create a search-sort diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3FB773BA-C648-5C0A-9022-3F9882C6724A.dita --- a/Symbian3/PDK/Source/GUID-3FB773BA-C648-5C0A-9022-3F9882C6724A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3FB773BA-C648-5C0A-9022-3F9882C6724A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Feature Manager Client Overview

      Provides the APIs required to communicate with the feature management server.

      Purpose

      Provides the complete set of functionality required for feature management.

      Required background

      A familiarity with the client/server framework is necessary because feature management uses the standard client/server architecture; the feature manager server actually does the work, the feature manager library provides the APIs to implement a client to that server.

      Architecture

      The relationship between the parts of the feature management system is :

      Architecture of the feature management system -
      APIs

      This component provides one set of APIs that can be used to communicate with the feature management server.

      This dll file holds the APIs that are @publishedPartner.

      API Description

      RFeatMgrClient

      Base class of the client-side communication with the feature manager server.

      RFeatureControl

      Contains the full functionality of the feature manager.

      MFeatureObserver

      Provides a callback interface for handling feature change notifications.

      CFeatureNotifier

      This is the active object for obtaining the notification of changes in features.

      Typical uses
      • Connect to the feature management server.

      • Produce a list of the features that are present.

      • Check to see if a feature is supported.

      • Delete a feature.

      Feature Manager Overview Feature Discovery Overview Feature Manager Server Guide \ No newline at end of file +
    APIs

    This component provides one set of APIs that can be used to communicate with the feature management server.

    This dll file holds the APIs that are @publishedPartner.

    API Description

    RFeatMgrClient

    Base class of the client-side communication with the feature manager server.

    RFeatureControl

    Contains the full functionality of the feature manager.

    MFeatureObserver

    Provides a callback interface for handling feature change notifications.

    CFeatureNotifier

    This is the active object for obtaining the notification of changes in features.

    Typical uses
    • Connect to the feature management server.

    • Produce a list of the features that are present.

    • Check to see if a feature is supported.

    • Delete a feature.

    Feature Manager Overview Feature Discovery Overview Feature Manager Server Guide
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3FC6342D-D09C-5C7F-8E03-3DA7B29D2CC8.dita --- a/Symbian3/PDK/Source/GUID-3FC6342D-D09C-5C7F-8E03-3DA7B29D2CC8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3FC6342D-D09C-5C7F-8E03-3DA7B29D2CC8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -Recording AudioThis tutorial describes how to start, pause and resume, stop and retrieve the audio samples for audio recording.

    Before you start, you must:

    • Understand the A3F DevSound Component to which the DevSound library belongs.

    • Understand the architectural relationship of the DevSound. For information see DevSound Overview.

    You can perform various functionality in DevSound audio recording that are listed in the below section.

    Starting Audio Record Pausing and Resuming Audio Record Stopping Audio Record Retrieving Audio Record Samples
    Playing Audio
    \ No newline at end of file +Recording AudioThis tutorial describes how to start, pause and resume, stop and retrieve the audio samples for audio recording.

    Before you start, you must:

    • Understand the A3F DevSound Component to which the DevSound library belongs.

    • Understand the architectural relationship of the DevSound. For information see DevSound Overview.

    You can perform various functionality in DevSound audio recording that are listed in the below section.

    Starting Audio Record Pausing and Resuming Audio Record Stopping Audio Record Retrieving Audio Record Samples
    Playing Audio
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3FE9C184-1880-51E1-B045-3C2EA4BE204A_d0e310011_href.png Binary file Symbian3/PDK/Source/GUID-3FE9C184-1880-51E1-B045-3C2EA4BE204A_d0e310011_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3FE9C184-1880-51E1-B045-3C2EA4BE204A_d0e316002_href.png Binary file Symbian3/PDK/Source/GUID-3FE9C184-1880-51E1-B045-3C2EA4BE204A_d0e316002_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3FEA5BE8-C306-587F-8CCC-E4619DE7183A_d0e590723_href.png Binary file Symbian3/PDK/Source/GUID-3FEA5BE8-C306-587F-8CCC-E4619DE7183A_d0e590723_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3FEA5BE8-C306-587F-8CCC-E4619DE7183A_d0e618617_href.png Binary file Symbian3/PDK/Source/GUID-3FEA5BE8-C306-587F-8CCC-E4619DE7183A_d0e618617_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3FF0F248-EDF0-5348-BC43-869CE1B5B415.dita --- a/Symbian3/PDK/Source/GUID-3FF0F248-EDF0-5348-BC43-869CE1B5B415.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-3FF0F248-EDF0-5348-BC43-869CE1B5B415.dita Fri Jul 16 17:23:46 2010 +0100 @@ -55,7 +55,7 @@ the request to the user binary, the user implementation must call RDevUsbcClient::SetDeviceControl(). Device-directed requests from the PC are all then routed to this instance of RDevUsbcClient.

    - +
  • Provide an OS feature descriptor handler.

    Once a valid OS string descriptor is returned, diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3FFF726B-D158-4EDF-B950-4B58467F210B_d0e1785_href.png Binary file Symbian3/PDK/Source/GUID-3FFF726B-D158-4EDF-B950-4B58467F210B_d0e1785_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-3FFF726B-D158-4EDF-B950-4B58467F210B_d0e1791_href.png Binary file Symbian3/PDK/Source/GUID-3FFF726B-D158-4EDF-B950-4B58467F210B_d0e1791_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4028CDCF-D2E8-5668-A751-A7CFA86CED46_d0e584453_href.png Binary file Symbian3/PDK/Source/GUID-4028CDCF-D2E8-5668-A751-A7CFA86CED46_d0e584453_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4028CDCF-D2E8-5668-A751-A7CFA86CED46_d0e633741_href.png Binary file Symbian3/PDK/Source/GUID-4028CDCF-D2E8-5668-A751-A7CFA86CED46_d0e633741_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-40437D9A-7503-5087-851A-D1269F0AF9A9_d0e248069_href.png Binary file Symbian3/PDK/Source/GUID-40437D9A-7503-5087-851A-D1269F0AF9A9_d0e248069_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-40437D9A-7503-5087-851A-D1269F0AF9A9_d0e254080_href.png Binary file Symbian3/PDK/Source/GUID-40437D9A-7503-5087-851A-D1269F0AF9A9_d0e254080_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-405F7AB8-0F0E-4171-95E6-3524D76917DE.dita --- a/Symbian3/PDK/Source/GUID-405F7AB8-0F0E-4171-95E6-3524D76917DE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-405F7AB8-0F0E-4171-95E6-3524D76917DE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,36 +9,19 @@ --> -Handling stylus pop-up menu events and commands -

    At the construction phase, CAknStylusPopUpMenu is given a MEikMenuObserver object, which is usually -a pointer to the application’s UI (CAknAppUi) or -another class that implements the interface. The stylus pop up menu -will grab the stylus event when one of its items is tapped on and -it will then report the item’s command ID to the menu observer. It -is then up to the application to handle the command in the implementation -of MEikMenuObserver::HandleCommandL().

    -

    When an item is tapped, the menu calls its observer's (iMenuObserver) ProcessCommandL() using:void ProcessCommandL(TInt aCommandId); where, aCommandID parameter is the command number recorded in -the resource file. You can also add it using AddMenuItemL() function as shown in the following code snippet:void AddMenuItemL( const TDesC& aItem, const TInt aCommandId );

    -

    The following code snippet illustrates how to handle the command:switch( aCommandId ) - { - case StylusMenuCommand1: - break; - case StylusMenuCommand2: - break; - case StylusMenuCommand3: - break; - case StylusMenuCommand4: - break; - case KErrCancel: - break; - default: - break; - } -

    -

    Typically the observer is application's AppUi. It is then the observer's -responsibility to handle the command appropriately. The observer is -informed with KErrCancel if the menu is closed without -making a selection.

    -

    Use the CAknStylusPopUpMenu::HandleControlEventL() method to handle events that occur when user selects a menu item.

    - +Handling +stylus pop-up menu events and commands +

    At the construction phase, CAknStylusPopUpMenu is given +a MEikMenuObserver object, which is usually a pointer to +the application’s UI (CAknAppUi) +or another class that implements the interface. The stylus pop up menu will +grab the stylus event when one of its items is tapped on and it will then +report the item’s command ID to the menu observer. It is then up to the application +to handle the command in the implementation of MEikMenuObserver::HandleCommandL().

    +

    When an item is tapped, the menu calls its observer's (iMenuObserver) +ProcessCommandL. Typically the observer is application's AppUi. It is then +the observer's responsibility to handle the command appropriately. The observer +is informed with KErrCancel if the menu is closed without making a selection.

    +

    Add sample code on event and command +handling here.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-40619192-8C2F-4267-BFCA-F53E10BF5A31_d0e14149_href.png Binary file Symbian3/PDK/Source/GUID-40619192-8C2F-4267-BFCA-F53E10BF5A31_d0e14149_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-40619192-8C2F-4267-BFCA-F53E10BF5A31_d0e14249_href.png Binary file Symbian3/PDK/Source/GUID-40619192-8C2F-4267-BFCA-F53E10BF5A31_d0e14249_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4067B0E6-9431-4325-95F7-78B143EED326.dita --- a/Symbian3/PDK/Source/GUID-4067B0E6-9431-4325-95F7-78B143EED326.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ - - - - - -Softkeys -and basic softkey configuration -

    The Symbian platform supports two softkeys and labels the Selection key -in the middle of the Control pane. This, in effect, looks like a "middle softkey". -Touch UI does not have the middle softkey label visible, refer to Touch -support for common UI components. The softkey labels are placed in -the control pane (the bottom area of the screen). The left and right softkeys -always have textual labels, but the Selection key can also have two icons -in certain situations.

    -

    The three softkey configurations supported in the Symbian UI style are -the following:

    -
      -
    • Basic Symbian portrait-oriented UI with softkeys immediately below -the screen (the middle softkey label is visible).

    • -
    • Symbian UI with side softkeys in landscape (both left and right rotation -possible, middle softkey label not possible).

    • -
    • Symbian UI with bottom softkeys in landscape (middle softkey label -not possible). Not available for Touch UI.

    • -
    -

    For more details on the functions assigned to softkeys, see Where -the Symbian user interface belongs and Typical -functions of the standard keys.

    -
    Using -softkeys in applications

    The API to use for softkeys is the Buttons API. For implementation information, see Using the Buttons API.

    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-40A3938E-366E-5318-A7FA-146F9E5E23B1_d0e236301_href.png Binary file Symbian3/PDK/Source/GUID-40A3938E-366E-5318-A7FA-146F9E5E23B1_d0e236301_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-40A3938E-366E-5318-A7FA-146F9E5E23B1_d0e242274_href.png Binary file Symbian3/PDK/Source/GUID-40A3938E-366E-5318-A7FA-146F9E5E23B1_d0e242274_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-40A9EAE3-F0AA-52FF-B3E8-455E820AA410.dita --- a/Symbian3/PDK/Source/GUID-40A9EAE3-F0AA-52FF-B3E8-455E820AA410.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-40A9EAE3-F0AA-52FF-B3E8-455E820AA410.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,7 +17,7 @@ Extended Light API - Architectural Relationship - +

    See also

    Extended Light Tutorial

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-40B9136A-B91B-5FF4-A44D-CA6925F19B14.dita --- a/Symbian3/PDK/Source/GUID-40B9136A-B91B-5FF4-A44D-CA6925F19B14.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-40B9136A-B91B-5FF4-A44D-CA6925F19B14.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,5 +11,5 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Feature Discovery OverviewProvides a set of APIs that are used to initate a feature discovery operation.
    Purpose

    Feature discovery provides a set of APIs to discover if a feature or feature set is supported and available.

    Required background

    The feature management system uses the standard client server architecture that is the feature manager server does the work associated with the feature management functionality. Communication between the application and the server is undertaken by two dlls which contain the required API.

    Architecture

    The relationship between the parts of the feature management system is :

    Architecture of the feature management system -
    APIs

    This component provides one set of APIs that can be used to communicate with the feature management server.

    API Description

    TFeatureSet

    Used to determine if multiple features are supported.

    CFeatureDiscovery

    Used to determine if a feature is supported.

    Typical uses

    The APIs provided by this dll are for use by third parties

    • A third party app wants to find out if the device can execute it : there is no point installing an application needing a camera, if one is not present on the device.

    • For the above, they would use the API provided by featmgr.dll.

    • Would be used to check if the required feature (and assumed framework) is present.

    Use cases:

    • Query a single feature.

    • Query multiple features.

    Feature Manager Overview Feature Manager Client +
  • APIs

    This component provides one set of APIs that can be used to communicate with the feature management server.

    API Description

    TFeatureSet

    Used to determine if multiple features are supported.

    CFeatureDiscovery

    Used to determine if a feature is supported.

    Typical uses

    The APIs provided by this dll are for use by third parties

    • A third party app wants to find out if the device can execute it : there is no point installing an application needing a camera, if one is not present on the device.

    • For the above, they would use the API provided by featmgr.dll.

    • Would be used to check if the required feature (and assumed framework) is present.

    Use cases:

    • Query a single feature.

    • Query multiple features.

    Feature Manager Overview Feature Manager Client Overview Feature Manager Server Guide
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-40BE9805-6CEC-557F-BAAC-4D328E181AC3_d0e248013_href.png Binary file Symbian3/PDK/Source/GUID-40BE9805-6CEC-557F-BAAC-4D328E181AC3_d0e248013_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-40BE9805-6CEC-557F-BAAC-4D328E181AC3_d0e254024_href.png Binary file Symbian3/PDK/Source/GUID-40BE9805-6CEC-557F-BAAC-4D328E181AC3_d0e254024_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-40C995CA-9906-59D8-A5E7-08F592031AEE_d0e349498_href.png Binary file Symbian3/PDK/Source/GUID-40C995CA-9906-59D8-A5E7-08F592031AEE_d0e349498_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-40C995CA-9906-59D8-A5E7-08F592031AEE_d0e355441_href.png Binary file Symbian3/PDK/Source/GUID-40C995CA-9906-59D8-A5E7-08F592031AEE_d0e355441_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-40E64445-CBA3-59E4-A777-937609B311C9.dita --- a/Symbian3/PDK/Source/GUID-40E64445-CBA3-59E4-A777-937609B311C9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-40E64445-CBA3-59E4-A777-937609B311C9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -23,7 +23,7 @@ is primarily used by messaging, telephony, synchronisation and vCard viewer clients on a device.

    CONTACTS MODEL CLIENTS - +
    Description

    The CContactDatabase class allows clients access to the contact data stored on the device and has the diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-40ED6F39-F8E2-5292-ADA5-C2507F256AE0_d0e346267_href.png Binary file Symbian3/PDK/Source/GUID-40ED6F39-F8E2-5292-ADA5-C2507F256AE0_d0e346267_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-40ED6F39-F8E2-5292-ADA5-C2507F256AE0_d0e352218_href.png Binary file Symbian3/PDK/Source/GUID-40ED6F39-F8E2-5292-ADA5-C2507F256AE0_d0e352218_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-40F5B725-A5D7-487F-BF5D-A616F768F40D.dita --- a/Symbian3/PDK/Source/GUID-40F5B725-A5D7-487F-BF5D-A616F768F40D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-40F5B725-A5D7-487F-BF5D-A616F768F40D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -37,7 +37,7 @@ same as that of a note. The example in the figure below is an ungrouped soft notification.

    Soft notification indicating a new message - +
  • Grouped soft notification: Many different items of information can be combined into one soft notification where the items are displayed as @@ -46,7 +46,7 @@ a List query (see Queries).

    Grouped soft notification. The height of the window is dynamic and depends on the number of lines in the list. - +
  • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4119C4BD-ABBF-524B-B649-0F39EF58A7FB_d0e137619_href.png Binary file Symbian3/PDK/Source/GUID-4119C4BD-ABBF-524B-B649-0F39EF58A7FB_d0e137619_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4119C4BD-ABBF-524B-B649-0F39EF58A7FB_d0e139868_href.png Binary file Symbian3/PDK/Source/GUID-4119C4BD-ABBF-524B-B649-0F39EF58A7FB_d0e139868_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4120651F-E0B9-5927-96B9-2662C51F5A09.dita --- a/Symbian3/PDK/Source/GUID-4120651F-E0B9-5927-96B9-2662C51F5A09.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4120651F-E0B9-5927-96B9-2662C51F5A09.dita Fri Jul 16 17:23:46 2010 +0100 @@ -45,7 +45,7 @@ and RConnection constitute the SIPPARAMS.

    Interface of Connection and Sub Connection. - +

    The SIP high level API models the SIP with Connection and SubConnection providers and makes it stackable against the unified comms-infras architecture. This enables the future connection convergence.

    Initial setup

    A diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-414338AC-D256-54AF-A504-27DAEDE800D5_d0e459649_href.png Binary file Symbian3/PDK/Source/GUID-414338AC-D256-54AF-A504-27DAEDE800D5_d0e459649_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-414338AC-D256-54AF-A504-27DAEDE800D5_d0e465494_href.png Binary file Symbian3/PDK/Source/GUID-414338AC-D256-54AF-A504-27DAEDE800D5_d0e465494_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-414DD60D-C5C3-5A75-9DF7-8980F72CB485_d0e606318_href.jpg Binary file Symbian3/PDK/Source/GUID-414DD60D-C5C3-5A75-9DF7-8980F72CB485_d0e606318_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-414DD60D-C5C3-5A75-9DF7-8980F72CB485_d0e645480_href.jpg Binary file Symbian3/PDK/Source/GUID-414DD60D-C5C3-5A75-9DF7-8980F72CB485_d0e645480_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-416A3756-B5D5-5BCD-830E-2371C5F6B502.dita --- a/Symbian3/PDK/Source/GUID-416A3756-B5D5-5BCD-830E-2371C5F6B502.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-416A3756-B5D5-5BCD-830E-2371C5F6B502.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Font Store Component OverviewThe Font Store contains all of the fonts and typefaces on a phone. It is encapsulated by the Font and Bitmap server which provides a client-side class that applications use to find which fonts are available and to find fonts to match their requirements.

    The Font Store component is sometimes called the Open Font System or Open Font Framework.

    Required background
    • You require no background knowledge or experience use the Font Store using the Font and Bitmap Server interfaces.

    • You require no background knowledge or experience to add new font files to the Font Store. You must simply copy the files to the appropriate location.

    • To create a font file or a font rasterizer, you require an in-depth knowledge of fonts and Symbian programming.

    Key concepts and terms

    See Concepts and Terms in the Font and Text Services Collection Overview.

    Architectural relationships

    The Font Store can contain three types of font: bitmap fonts, which are stored as fixed-size pixel definitions; open fonts, which may be stored in any format; and linked fonts, which use characters from two or more other fonts. Open fonts must be converted into bitmaps (rasterized) before they can be used so the Font Store must also contain a font rasterizer for each format of open font.

    Fonts are stored on Symbian phones as files. The Font Store maintains a list of font files along with specifications for each font that the file contains. When an application requests a font the Font Store searches its list for the best match. If the font is a bitmap font the Font Store loads it into the Font and Bitmap Server's shared heap (unless the font is in eXecute In Place (XIP) ROM, in which case it is accessed directly from ROM). If the font is an open font the Font Store uses the associated open font rasterizer to rasterize glyphs into the heap as they are required. Font rasterizers are ECOM plugins.

    Font Store relationships -
    Font Store API summary

    The Font Store contains APIs for specifying and selecting fonts and for rasterizing open fonts.

    API Description

    CBitmapFont

    Bitmap-based font object

    CFontStore

    Central font storage class

    CLinkedTypefaceGroup

    Linked fonts typeface group

    CLinkedTypefaceSpecification

    Linked font creation

    CLinkedTypefaceElementSpec

    Linked font typeface element spec

    COpenFont

    Generic outline font object

    COpenFontFile

    Open font file

    COpenFontRasterizer

    Open font rasterizer

    COpenFontRasterizerContext

    Open font rasterizer context

    TAlgStyle

    Algorithmic style attributes

    TCharacterMetrics

    Character information

    TLinkedTypeface

    Linked fonts

    TOpenFontAttachment

    Diacritic attachment point information

    TOpenFontCharMetrics

    Open font character metrics

    TOpenFontFaceAttrib

    Open font typeface information

    TOpenFontFaceAttribBase

    Basic open font typeface information

    TOpenFontGlyphData

    Open font glyph information

    TOpenFontMetrics

    Open font information

    TOpenFontSpec

    Open font specification

    Font Store tasks

    The following functionality is provided by the fntstore subsystem component:

    • Font loading

      Font file loading using plug-in font rasterizers if required.

    • Font request matching

      Closest-fit matching of font requests.

    • Font linking

      The creation and use of Linked Fonts – virtual fonts that are made out of one or (usually) more physical fonts. These can be used to:

      • Combine multiple character ranges from individual fonts into a single font.

      • Allow an existing font containing a particular script to be customized to use regional variant characters.

      • Allow a comprehensive range of scripts to be built into a device ROM and multiple possible subsets to be defined and used by software configuration.

      Linked fonts are primarily used for system fonts. The fact that a font is a linked font is invisible to the user.

    Platform security information

    Font data files are installed in the read-only folder \resource\fonts.

    Font and Text Services Collection +
    Font Store API summary

    The Font Store contains APIs for specifying and selecting fonts and for rasterizing open fonts.

    API Description

    CBitmapFont

    Bitmap-based font object

    CFontStore

    Central font storage class

    CLinkedTypefaceGroup

    Linked fonts typeface group

    CLinkedTypefaceSpecification

    Linked font creation

    CLinkedTypefaceElementSpec

    Linked font typeface element spec

    COpenFont

    Generic outline font object

    COpenFontFile

    Open font file

    COpenFontRasterizer

    Open font rasterizer

    COpenFontRasterizerContext

    Open font rasterizer context

    TAlgStyle

    Algorithmic style attributes

    TCharacterMetrics

    Character information

    TLinkedTypeface

    Linked fonts

    TOpenFontAttachment

    Diacritic attachment point information

    TOpenFontCharMetrics

    Open font character metrics

    TOpenFontFaceAttrib

    Open font typeface information

    TOpenFontFaceAttribBase

    Basic open font typeface information

    TOpenFontGlyphData

    Open font glyph information

    TOpenFontMetrics

    Open font information

    TOpenFontSpec

    Open font specification

    Font Store tasks

    The following functionality is provided by the fntstore subsystem component:

    • Font loading

      Font file loading using plug-in font rasterizers if required.

    • Font request matching

      Closest-fit matching of font requests.

    • Font linking

      The creation and use of Linked Fonts – virtual fonts that are made out of one or (usually) more physical fonts. These can be used to:

      • Combine multiple character ranges from individual fonts into a single font.

      • Allow an existing font containing a particular script to be customized to use regional variant characters.

      • Allow a comprehensive range of scripts to be built into a device ROM and multiple possible subsets to be defined and used by software configuration.

      Linked fonts are primarily used for system fonts. The fact that a font is a linked font is invisible to the user.

    Platform security information

    Font data files are installed in the read-only folder \resource\fonts.

    Font and Text Services Collection Overview Font and Bitmap Server Component Overview \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-41802B91-26B3-5F3C-AE04-B6954F3804B7.dita --- a/Symbian3/PDK/Source/GUID-41802B91-26B3-5F3C-AE04-B6954F3804B7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-41802B91-26B3-5F3C-AE04-B6954F3804B7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -27,7 +27,7 @@ is owned by the video renderer.

    The elements in a video telephony use case - +

    A similar principle applies when a game is running on the phone. The semi-transparent UI surface would overlay the element containing the EGL-owned surface. When @@ -36,7 +36,7 @@ to blend with the background element.

    Fast path mode - +

    The z-order of an element is determined by its position in the list of @@ -47,7 +47,7 @@ the position and size of the element itself.

    Element terminology - +

    The source rectangle corresponds to the viewport in the Window Server documentation and the destination rectangle corresponds to the extent.

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4195F4EE-5A61-515D-A6EF-2E16E00E4AFF.dita --- a/Symbian3/PDK/Source/GUID-4195F4EE-5A61-515D-A6EF-2E16E00E4AFF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4195F4EE-5A61-515D-A6EF-2E16E00E4AFF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Recording media files

    You can use the MVS to record audio or video signals to media files. To record an audio signal, first connect a microphone; to record a video signal, connect a camera.

    To record a media file, choosing the plugin controller:

    1. In the File menu, click Open for Record. The Choose a plugin dialog box is displayed.

      Choosing a format when recording audio -

      Note: If you don't want to choose a plugin controller manually, click Cancel in the Choose a plugin dialog box: the Save as dialog box is displayed. In the Save as dialog box, enter the target file name including its extension; the controller appropriate to the extension is loaded automatically. If there is no appropriate controller, a Not Supported message is displayed.

    2. Select the Media Type to record by clicking either the Audio or Video option button.

    3. Select the Supported Format from the drop-down list. The corresponding plugin Controller is selected automatically.

      Note: To check which controllers are supported by the system:

      • In the File menu, click System Info. The controllers are listed:

    4. Click Next. The Save as dialog box is displayed.

    5. In the dialog box, enter the names of the disk drive and folder to contain the file, or select them from the lists.

    6. In the dialog box, enter the name of the file, without an extension, to contain the recorded audio or video.

    7. Click OK to save the file.

    The next steps depend on whether you are Recording an audio file or Recording a video file.

    Recording an audio file

    If you are recording an audio file, the Configure Audio Format dialog box is displayed.

    1. In the dialog box, select:

      • the codec

      • the bit rate

      • the number of channels (1 = mono, 2 = stereo)

      • the sample rate in bits per second.

    2. If required, click the Restore Settings check box to restore the previous settings or - if there are none - the default settings.

    3. Click OK to save the settings.

    4. To start recording, click the tool bar Record button, or in the Controls menu, click Record.

    Recording a video file

    If you are recording a video file, the Standard Video Record format dialog box is displayed.

    1. In the dialog box, select:

      • the video mime type

      • the video frame rate

      • the video frame size in pixels (width, height).

    2. To record audio with the video signal, click the Enable Audio check box.

    3. If required, click the Restore Settings check box to restore the previous settings or - if there are none - the default settings.

    4. Click OK to save the settings.

    5. To start recording, click the tool bar Record button, or in the Controls menu, click Record.

      • To pause recording, click the tool bar Pause button, or in the Controls menu, click Pause. To un-pause the file and resume recording, click the tool bar Record button, or in the Controls menu, click Record.

      • To stop recording, click the tool bar Stop button, or in the Controls menu, click Stop.

    See Also

    Introduction to the MVS

    MVS GUI layout

    Playing media files

    Editing media files

    Configuring and clearing files

    \ No newline at end of file +

    Note: If you don't want to choose a plugin controller manually, click Cancel in the Choose a plugin dialog box: the Save as dialog box is displayed. In the Save as dialog box, enter the target file name including its extension; the controller appropriate to the extension is loaded automatically. If there is no appropriate controller, a Not Supported message is displayed.

  • Select the Media Type to record by clicking either the Audio or Video option button.

  • Select the Supported Format from the drop-down list. The corresponding plugin Controller is selected automatically.

    Note: To check which controllers are supported by the system:

    • In the File menu, click System Info. The controllers are listed:

  • Click Next. The Save as dialog box is displayed.

  • In the dialog box, enter the names of the disk drive and folder to contain the file, or select them from the lists.

  • In the dialog box, enter the name of the file, without an extension, to contain the recorded audio or video.

  • Click OK to save the file.

  • The next steps depend on whether you are Recording an audio file or Recording a video file.

    Recording an audio file

    If you are recording an audio file, the Configure Audio Format dialog box is displayed.

    1. In the dialog box, select:

      • the codec

      • the bit rate

      • the number of channels (1 = mono, 2 = stereo)

      • the sample rate in bits per second.

    2. If required, click the Restore Settings check box to restore the previous settings or - if there are none - the default settings.

    3. Click OK to save the settings.

    4. To start recording, click the tool bar Record button, or in the Controls menu, click Record.

    Recording a video file

    If you are recording a video file, the Standard Video Record format dialog box is displayed.

    1. In the dialog box, select:

      • the video mime type

      • the video frame rate

      • the video frame size in pixels (width, height).

    2. To record audio with the video signal, click the Enable Audio check box.

    3. If required, click the Restore Settings check box to restore the previous settings or - if there are none - the default settings.

    4. Click OK to save the settings.

    5. To start recording, click the tool bar Record button, or in the Controls menu, click Record.

      • To pause recording, click the tool bar Pause button, or in the Controls menu, click Pause. To un-pause the file and resume recording, click the tool bar Record button, or in the Controls menu, click Record.

      • To stop recording, click the tool bar Stop button, or in the Controls menu, click Stop.

    See Also

    Introduction to the MVS

    MVS GUI layout

    Playing media files

    Editing media files

    Configuring and clearing files

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-41A53C1F-E9BF-420F-A967-83906299FE8B_d0e5129_href.png Binary file Symbian3/PDK/Source/GUID-41A53C1F-E9BF-420F-A967-83906299FE8B_d0e5129_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-41A53C1F-E9BF-420F-A967-83906299FE8B_d0e5138_href.png Binary file Symbian3/PDK/Source/GUID-41A53C1F-E9BF-420F-A967-83906299FE8B_d0e5138_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-41A70DFD-BADF-5B8F-8085-488F34F81561_d0e508793_href.png Binary file Symbian3/PDK/Source/GUID-41A70DFD-BADF-5B8F-8085-488F34F81561_d0e508793_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-41A70DFD-BADF-5B8F-8085-488F34F81561_d0e516255_href.png Binary file Symbian3/PDK/Source/GUID-41A70DFD-BADF-5B8F-8085-488F34F81561_d0e516255_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-41CE73A7-4820-417D-8AD7-92F9DB9C552A-master.jpg Binary file Symbian3/PDK/Source/GUID-41CE73A7-4820-417D-8AD7-92F9DB9C552A-master.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-41CE73A7-4820-417D-8AD7-92F9DB9C552A_d0e41296_href.jpg Binary file Symbian3/PDK/Source/GUID-41CE73A7-4820-417D-8AD7-92F9DB9C552A_d0e41296_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-41F5F258-5B2A-57E2-BEB4-EBDE1008C833_d0e62865_href.png Binary file Symbian3/PDK/Source/GUID-41F5F258-5B2A-57E2-BEB4-EBDE1008C833_d0e62865_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-41F5F258-5B2A-57E2-BEB4-EBDE1008C833_d0e67096_href.png Binary file Symbian3/PDK/Source/GUID-41F5F258-5B2A-57E2-BEB4-EBDE1008C833_d0e67096_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-422F37DF-F93F-443F-86EA-6A696A53E1E6.dita --- a/Symbian3/PDK/Source/GUID-422F37DF-F93F-443F-86EA-6A696A53E1E6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-422F37DF-F93F-443F-86EA-6A696A53E1E6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ you must also call the base class implementation of the function.

    Scrollbar - +

    For an implementation example, see below.

    void CMyContainerControl::HandleScrollEventL( CEikScrollBar* aScrollBar, TEikScrollEvent aEventType ) diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4257E768-F392-507C-81C2-23F0CE2DDEA2_d0e231038_href.png Binary file Symbian3/PDK/Source/GUID-4257E768-F392-507C-81C2-23F0CE2DDEA2_d0e231038_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4257E768-F392-507C-81C2-23F0CE2DDEA2_d0e237033_href.png Binary file Symbian3/PDK/Source/GUID-4257E768-F392-507C-81C2-23F0CE2DDEA2_d0e237033_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-42609A21-CEDC-58E8-864C-0CF8458F6798_d0e488909_href.png Binary file Symbian3/PDK/Source/GUID-42609A21-CEDC-58E8-864C-0CF8458F6798_d0e488909_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-42609A21-CEDC-58E8-864C-0CF8458F6798_d0e494730_href.png Binary file Symbian3/PDK/Source/GUID-42609A21-CEDC-58E8-864C-0CF8458F6798_d0e494730_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4261EFB2-C587-4E6A-8B3F-A8181177AF40_d0e251603_href.png Binary file Symbian3/PDK/Source/GUID-4261EFB2-C587-4E6A-8B3F-A8181177AF40_d0e251603_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4261EFB2-C587-4E6A-8B3F-A8181177AF40_d0e257614_href.png Binary file Symbian3/PDK/Source/GUID-4261EFB2-C587-4E6A-8B3F-A8181177AF40_d0e257614_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-42833109-F8C2-57FC-9995-0461698A19FF.dita --- a/Symbian3/PDK/Source/GUID-42833109-F8C2-57FC-9995-0461698A19FF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-42833109-F8C2-57FC-9995-0461698A19FF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -13,7 +13,7 @@ Concepts

    This section describes the Internet Message Access Protocol (IMAP4) and its implementation on the Symbian platform.

    -
    IMAP4 protocol

    IMAP4 +

    IMAP4 protocol

    IMAP4 is one of the most common Internet standard protocols for retrieving emails. It is an application layer Internet protocol operating on port 143 that allows a local client to access email on a remote server.

    The current version, diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-42984078-3DEB-41C7-AC76-C769F7CDB4D0.dita --- a/Symbian3/PDK/Source/GUID-42984078-3DEB-41C7-AC76-C769F7CDB4D0.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-42984078-3DEB-41C7-AC76-C769F7CDB4D0.dita Fri Jul 16 17:23:46 2010 +0100 @@ -65,7 +65,7 @@ The buffers in the typical approach to handling a window resize event - +

    Handling preserve buffers

    When the preserve buffer option is in use, a typical implementation promotes the current back @@ -79,7 +79,7 @@ to the front buffer and then immediately copies the contents of the newly promoted buffer to the new back buffer.

    Handling preserve buffers - +
    Handling a window resize event with the preserve buffer option

    If there is a window resize event when the preserve @@ -97,7 +97,7 @@

    The following diagram illustrates a typical implementation. There are more details below the diagram.

    Handling a window resize with the preserve buffer option - +

    The first eglSwapBuffers() call (marked X in the diagram above) does the following:

    1. Promotes the diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-42C21271-FDDD-5923-95A3-450FED07BEC4_d0e230152_href.png Binary file Symbian3/PDK/Source/GUID-42C21271-FDDD-5923-95A3-450FED07BEC4_d0e230152_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-42C21271-FDDD-5923-95A3-450FED07BEC4_d0e236147_href.png Binary file Symbian3/PDK/Source/GUID-42C21271-FDDD-5923-95A3-450FED07BEC4_d0e236147_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4303DBDB-3F67-54E6-AB24-5E1871053ED9_d0e73838_href.png Binary file Symbian3/PDK/Source/GUID-4303DBDB-3F67-54E6-AB24-5E1871053ED9_d0e73838_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4303DBDB-3F67-54E6-AB24-5E1871053ED9_d0e78051_href.png Binary file Symbian3/PDK/Source/GUID-4303DBDB-3F67-54E6-AB24-5E1871053ED9_d0e78051_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-431119D1-1B55-4503-905E-6E290FA241CE_d0e91636_href.png Binary file Symbian3/PDK/Source/GUID-431119D1-1B55-4503-905E-6E290FA241CE_d0e91636_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-431119D1-1B55-4503-905E-6E290FA241CE_d0e95834_href.png Binary file Symbian3/PDK/Source/GUID-431119D1-1B55-4503-905E-6E290FA241CE_d0e95834_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-431A08D4-46DD-5A9D-B2A4-3D58C9B1E9E7_d0e393550_href.png Binary file Symbian3/PDK/Source/GUID-431A08D4-46DD-5A9D-B2A4-3D58C9B1E9E7_d0e393550_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-431A08D4-46DD-5A9D-B2A4-3D58C9B1E9E7_d0e399403_href.png Binary file Symbian3/PDK/Source/GUID-431A08D4-46DD-5A9D-B2A4-3D58C9B1E9E7_d0e399403_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4324A05E-3243-50E1-A287-BBD2F07E2295_d0e230341_href.png Binary file Symbian3/PDK/Source/GUID-4324A05E-3243-50E1-A287-BBD2F07E2295_d0e230341_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4324A05E-3243-50E1-A287-BBD2F07E2295_d0e236336_href.png Binary file Symbian3/PDK/Source/GUID-4324A05E-3243-50E1-A287-BBD2F07E2295_d0e236336_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-432FF981-010F-540B-834F-FF924238AA2A.dita --- a/Symbian3/PDK/Source/GUID-432FF981-010F-540B-834F-FF924238AA2A.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -epocheapsize

      epocheapsize minimum maximum

      Use the epocheapsize statement to specify the minimum and maximum sizes of the initial heap for a process. The default sizes are 4KB minimum and 1MB maximum.This directive is applicable from Symbian OS v9.1, EKA2 releases. EKA2 supports multiple process creation and allows the heap size to be calibrated between the minimum and maximum limits.

      The minimum size specifies the RAM that is initially mapped for the heap's use. The process can then obtain more heap memory on demand until the maximum value is reached. For more information, see Memory Management concepts.

      The sizes can be specified in decimal or hexadecimal format. Memory is allocated in pages, so the minimum and maximum values are rounded up to a multiple of the page size (4K).

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-433698C1-C97D-5317-83C0-71A029E362E6_d0e511042_href.png Binary file Symbian3/PDK/Source/GUID-433698C1-C97D-5317-83C0-71A029E362E6_d0e511042_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-433698C1-C97D-5317-83C0-71A029E362E6_d0e518504_href.png Binary file Symbian3/PDK/Source/GUID-433698C1-C97D-5317-83C0-71A029E362E6_d0e518504_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-434F2412-59A1-4BCB-885D-5E708EAA6AB6.dita --- a/Symbian3/PDK/Source/GUID-434F2412-59A1-4BCB-885D-5E708EAA6AB6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-434F2412-59A1-4BCB-885D-5E708EAA6AB6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ query.

      Grid query - +
      Using grid queries in applications

      For implementation information, diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4352F2A7-2498-40AA-A335-4A8407497976.dita --- a/Symbian3/PDK/Source/GUID-4352F2A7-2498-40AA-A335-4A8407497976.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,27 +0,0 @@ - - - - - -Basic -interaction style -

      The basic interaction principles of the Symbian platform in the bottom -softkey style remain similar to the legacy Symbian UI style. This applies -to keypad functions, typical functions of the keys, navigation (both in terms -of hierarchies, and the scroll and select behavior), and so on.

      -

      As in the legacy UI style, the scrolling in the software follows the visual -direction of the respective scroll keys.

      -

      Similarly, other visual UI controls of scroll keys rotate together with -the UI. For example, this applies to the Volume Control component which is -vertical also in landscape mode.

      -

      In some product concepts, using the Numeric keys and some of the -navigation keys may be disabled while in the bottom softkey mode. This may -mean that some applications or features (such as editing) are not usable at -all in one of the modes.

      - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4381EA7F-BE75-5B43-BE97-C97D71D04377_d0e546710_href.png Binary file Symbian3/PDK/Source/GUID-4381EA7F-BE75-5B43-BE97-C97D71D04377_d0e546710_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4381EA7F-BE75-5B43-BE97-C97D71D04377_d0e554166_href.png Binary file Symbian3/PDK/Source/GUID-4381EA7F-BE75-5B43-BE97-C97D71D04377_d0e554166_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-43A701DC-24FF-44F7-850B-AA6A79235B56_d0e63716_href.png Binary file Symbian3/PDK/Source/GUID-43A701DC-24FF-44F7-850B-AA6A79235B56_d0e63716_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-43A701DC-24FF-44F7-850B-AA6A79235B56_d0e63768_href.png Binary file Symbian3/PDK/Source/GUID-43A701DC-24FF-44F7-850B-AA6A79235B56_d0e63768_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-43A701DC-24FF-44F7-850B-AA6A79235B56_d0e67938_href.png Binary file Symbian3/PDK/Source/GUID-43A701DC-24FF-44F7-850B-AA6A79235B56_d0e67938_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-43A701DC-24FF-44F7-850B-AA6A79235B56_d0e67990_href.png Binary file Symbian3/PDK/Source/GUID-43A701DC-24FF-44F7-850B-AA6A79235B56_d0e67990_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4406BDE0-8256-5F97-9FC5-BBFD11D9C4A3.dita --- a/Symbian3/PDK/Source/GUID-4406BDE0-8256-5F97-9FC5-BBFD11D9C4A3.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Resource file

      A resource file is available to an application at run-time, and usually has extension .rsc. It contains resources compiled from a source file, .rss.

      Each resource is a sequence of bytes. Resources within a file are identified by number at run-time, but may also be identified symbolically in the source file. The resource compiler rcomp compiles a .rss into a .rsc, and also emits a series of #define statements into a .rsg file, which the C++ program may #include, to allow resources lookup by symbolic name rather than by number.

      Resources are built automatically by abld or the compiler IDE if the project file specifies a resource file using the RESOURCE statement.

      Resource data is mapped by structs — in a similar way to C’s structs. Resource structs are defined using STRUCT statements which are understood only by the resource compiler. Symbian platform provides many struct types: occasionally, applications also add their own. STRUCT statements are included in headers, conventionally with a .rh extension. These are #include d into .rss files.

      Symbolic constants for various purposes must be available to both C++ programs and resource file definitions. These are defined using #define statements or enum statements, and included in .hrh files. These may be #include d into either C++ or resource scripts.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-442D216B-117E-538C-A51F-0775BF37673E_d0e345873_href.png Binary file Symbian3/PDK/Source/GUID-442D216B-117E-538C-A51F-0775BF37673E_d0e345873_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-442D216B-117E-538C-A51F-0775BF37673E_d0e351824_href.png Binary file Symbian3/PDK/Source/GUID-442D216B-117E-538C-A51F-0775BF37673E_d0e351824_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-44345B7F-77DE-5D00-BA0B-BFE40E664DA8.dita --- a/Symbian3/PDK/Source/GUID-44345B7F-77DE-5D00-BA0B-BFE40E664DA8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-44345B7F-77DE-5D00-BA0B-BFE40E664DA8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -32,7 +32,7 @@ used as a token. The UID does not have to be the application UID, but must be unique. It can be set through the standard UID allocation scheme.

      Symbian Certapps Implementation - +

      CCertificateAppInfoManager

      The Symbian implementation of file based certstore uses certapps store. CCertificateAppInfoManager provides functions to add, remove and list these UID/name pairs. An application can diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-44347376-702D-5648-8938-EB55AFA329EC_d0e658957_href.png Binary file Symbian3/PDK/Source/GUID-44347376-702D-5648-8938-EB55AFA329EC_d0e658957_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-44347376-702D-5648-8938-EB55AFA329EC_d0e671784_href.png Binary file Symbian3/PDK/Source/GUID-44347376-702D-5648-8938-EB55AFA329EC_d0e671784_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-44872DF6-AEA6-554F-A231-D8C6D5F22958_d0e450520_href.png Binary file Symbian3/PDK/Source/GUID-44872DF6-AEA6-554F-A231-D8C6D5F22958_d0e450520_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-44872DF6-AEA6-554F-A231-D8C6D5F22958_d0e456365_href.png Binary file Symbian3/PDK/Source/GUID-44872DF6-AEA6-554F-A231-D8C6D5F22958_d0e456365_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-44ADB485-69C2-5557-AB95-3B6D20870F73_d0e146068_href.png Binary file Symbian3/PDK/Source/GUID-44ADB485-69C2-5557-AB95-3B6D20870F73_d0e146068_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-44ADB485-69C2-5557-AB95-3B6D20870F73_d0e148309_href.png Binary file Symbian3/PDK/Source/GUID-44ADB485-69C2-5557-AB95-3B6D20870F73_d0e148309_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-44FDDA27-1A5D-42B5-8DE0-D9E88EB75C93.dita --- a/Symbian3/PDK/Source/GUID-44FDDA27-1A5D-42B5-8DE0-D9E88EB75C93.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-44FDDA27-1A5D-42B5-8DE0-D9E88EB75C93.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,7 +14,7 @@ a particular sensor type. Once you get the list of sensor channels that are active, you can perform any required operations such as configuring sensor channel properties, controlling sensor channels and so on. - + Create an instance of TSensrvChannelInfo and set the required channel type as the search criteria. For example, to query for all double tapping channels @@ -28,7 +28,7 @@ CSensrvChannelFinder* finder = CSensrvChannelFinder::NewL(); finder->FindChannelsL(channelList, searchParameters); -Create an instance +Create an instance of RSensrvChannelInfoList to store the list of sensor channels. RSensrvChannelInfoList channelInfoList; diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-450554F3-BA17-5C89-9E01-C0AFD4AC9638_d0e443260_href.png Binary file Symbian3/PDK/Source/GUID-450554F3-BA17-5C89-9E01-C0AFD4AC9638_d0e443260_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-450554F3-BA17-5C89-9E01-C0AFD4AC9638_d0e449105_href.png Binary file Symbian3/PDK/Source/GUID-450554F3-BA17-5C89-9E01-C0AFD4AC9638_d0e449105_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-454A850E-E7C4-5CB8-9245-E18BB2BAE993_d0e232464_href.png Binary file Symbian3/PDK/Source/GUID-454A850E-E7C4-5CB8-9245-E18BB2BAE993_d0e232464_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-454A850E-E7C4-5CB8-9245-E18BB2BAE993_d0e238459_href.png Binary file Symbian3/PDK/Source/GUID-454A850E-E7C4-5CB8-9245-E18BB2BAE993_d0e238459_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-45580F91-F1E2-5F6F-9449-5C7B5009EC44_d0e171901_href.png Binary file Symbian3/PDK/Source/GUID-45580F91-F1E2-5F6F-9449-5C7B5009EC44_d0e171901_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-45580F91-F1E2-5F6F-9449-5C7B5009EC44_d0e177969_href.png Binary file Symbian3/PDK/Source/GUID-45580F91-F1E2-5F6F-9449-5C7B5009EC44_d0e177969_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4592D493-A47C-5622-8C03-F24FABB4381C_d0e393982_href.png Binary file Symbian3/PDK/Source/GUID-4592D493-A47C-5622-8C03-F24FABB4381C_d0e393982_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4592D493-A47C-5622-8C03-F24FABB4381C_d0e399835_href.png Binary file Symbian3/PDK/Source/GUID-4592D493-A47C-5622-8C03-F24FABB4381C_d0e399835_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-45DD08DB-FCB3-5546-91B4-25868C8ABAE4_d0e146076_href.png Binary file Symbian3/PDK/Source/GUID-45DD08DB-FCB3-5546-91B4-25868C8ABAE4_d0e146076_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-45DD08DB-FCB3-5546-91B4-25868C8ABAE4_d0e148317_href.png Binary file Symbian3/PDK/Source/GUID-45DD08DB-FCB3-5546-91B4-25868C8ABAE4_d0e148317_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-45E418FA-47C0-58C6-B118-EBF8260BCC89_d0e231353_href.png Binary file Symbian3/PDK/Source/GUID-45E418FA-47C0-58C6-B118-EBF8260BCC89_d0e231353_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-45E418FA-47C0-58C6-B118-EBF8260BCC89_d0e237348_href.png Binary file Symbian3/PDK/Source/GUID-45E418FA-47C0-58C6-B118-EBF8260BCC89_d0e237348_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-45F9389E-F31B-59DA-A4FE-E254EAEB2213.dita --- a/Symbian3/PDK/Source/GUID-45F9389E-F31B-59DA-A4FE-E254EAEB2213.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-45F9389E-F31B-59DA-A4FE-E254EAEB2213.dita Fri Jul 16 17:23:46 2010 +0100 @@ -33,6 +33,6 @@ // ‘KSimulationFile’ is ready for use.

      Note: Capability WriteDeviceData is required to write the Central Repository settings.

      Code architecture Figure 1: Files needed by a Simulation PSY Settings client -

      The centralrepository.lib file contains information needed at link time by the client. The centralrepository.dll file contains the run-time information.

      Simulation +

      The centralrepository.lib file contains information needed at link time by the client. The centralrepository.dll file contains the run-time information.

    Simulation PSY Overview Simulation PSY User Guide \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-46040A24-92C3-4B0B-88CC-BDD8DDA8F27C_d0e68953_href.png Binary file Symbian3/PDK/Source/GUID-46040A24-92C3-4B0B-88CC-BDD8DDA8F27C_d0e68953_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-46040A24-92C3-4B0B-88CC-BDD8DDA8F27C_d0e73166_href.png Binary file Symbian3/PDK/Source/GUID-46040A24-92C3-4B0B-88CC-BDD8DDA8F27C_d0e73166_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-46121F24-AB53-5B44-A082-EF13A72EB7FF.dita --- a/Symbian3/PDK/Source/GUID-46121F24-AB53-5B44-A082-EF13A72EB7FF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-46121F24-AB53-5B44-A082-EF13A72EB7FF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -34,7 +34,7 @@ shows the key elements of the converter architecture, including an example client and an example converter DLL that provides two converters, myConverter1 and myConverter2.

    File Converter architecture - +
    Procedure
    1. Write diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4616CCC9-7BD3-5D91-873A-6027167329ED_d0e228104_href.png Binary file Symbian3/PDK/Source/GUID-4616CCC9-7BD3-5D91-873A-6027167329ED_d0e228104_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4616CCC9-7BD3-5D91-873A-6027167329ED_d0e234103_href.png Binary file Symbian3/PDK/Source/GUID-4616CCC9-7BD3-5D91-873A-6027167329ED_d0e234103_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-465D1450-B1EF-568B-B518-34ACE8C1697C_d0e380047_href.png Binary file Symbian3/PDK/Source/GUID-465D1450-B1EF-568B-B518-34ACE8C1697C_d0e380047_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-465D1450-B1EF-568B-B518-34ACE8C1697C_d0e385900_href.png Binary file Symbian3/PDK/Source/GUID-465D1450-B1EF-568B-B518-34ACE8C1697C_d0e385900_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4666DC80-EF7D-5761-9B6B-B2D14BDAB762_d0e608674_href.jpg Binary file Symbian3/PDK/Source/GUID-4666DC80-EF7D-5761-9B6B-B2D14BDAB762_d0e608674_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4666DC80-EF7D-5761-9B6B-B2D14BDAB762_d0e647836_href.jpg Binary file Symbian3/PDK/Source/GUID-4666DC80-EF7D-5761-9B6B-B2D14BDAB762_d0e647836_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-46673FC4-ADA9-59D1-A743-B4784425D240_d0e109693_href.png Binary file Symbian3/PDK/Source/GUID-46673FC4-ADA9-59D1-A743-B4784425D240_d0e109693_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-46673FC4-ADA9-59D1-A743-B4784425D240_d0e112116_href.png Binary file Symbian3/PDK/Source/GUID-46673FC4-ADA9-59D1-A743-B4784425D240_d0e112116_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-467EF3F5-754B-550A-A9C7-246D68C91F0A_d0e277109_href.png Binary file Symbian3/PDK/Source/GUID-467EF3F5-754B-550A-A9C7-246D68C91F0A_d0e277109_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-467EF3F5-754B-550A-A9C7-246D68C91F0A_d0e283109_href.png Binary file Symbian3/PDK/Source/GUID-467EF3F5-754B-550A-A9C7-246D68C91F0A_d0e283109_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4689CD4A-3835-5013-90F9-100C66F18E84_d0e264678_href.png Binary file Symbian3/PDK/Source/GUID-4689CD4A-3835-5013-90F9-100C66F18E84_d0e264678_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4689CD4A-3835-5013-90F9-100C66F18E84_d0e270678_href.png Binary file Symbian3/PDK/Source/GUID-4689CD4A-3835-5013-90F9-100C66F18E84_d0e270678_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-46A91D57-7864-53AD-903C-B978B0C61DAD_d0e550426_href.jpg Binary file Symbian3/PDK/Source/GUID-46A91D57-7864-53AD-903C-B978B0C61DAD_d0e550426_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-46A91D57-7864-53AD-903C-B978B0C61DAD_d0e557882_href.jpg Binary file Symbian3/PDK/Source/GUID-46A91D57-7864-53AD-903C-B978B0C61DAD_d0e557882_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-46B5E7B1-F0C2-5C1E-972A-C339E7515225.dita --- a/Symbian3/PDK/Source/GUID-46B5E7B1-F0C2-5C1E-972A-C339E7515225.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -compresstarget

      compresstarget

      Use the compresstarget statement to specify that the target executable should be compressed. In detail, the code and data sections of the executable are compressed with the Deflate, Huffman+LZ77 algorithm.

      Compression allows the stored executable to use less space on the file system. The executable loader decompresses the file when it is loaded.

      See also nocompresstarget.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-46BBABA1-D6C6-5532-8487-6FD744C108C4_d0e230079_href.png Binary file Symbian3/PDK/Source/GUID-46BBABA1-D6C6-5532-8487-6FD744C108C4_d0e230079_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-46BBABA1-D6C6-5532-8487-6FD744C108C4_d0e236074_href.png Binary file Symbian3/PDK/Source/GUID-46BBABA1-D6C6-5532-8487-6FD744C108C4_d0e236074_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-46CBF409-7A5E-511E-8ED7-1ED8FD04897E_d0e230469_href.png Binary file Symbian3/PDK/Source/GUID-46CBF409-7A5E-511E-8ED7-1ED8FD04897E_d0e230469_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-46CBF409-7A5E-511E-8ED7-1ED8FD04897E_d0e236464_href.png Binary file Symbian3/PDK/Source/GUID-46CBF409-7A5E-511E-8ED7-1ED8FD04897E_d0e236464_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-46E27DAF-B72D-5A86-91BB-1B3C0788C6A5_d0e561276_href.png Binary file Symbian3/PDK/Source/GUID-46E27DAF-B72D-5A86-91BB-1B3C0788C6A5_d0e561276_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-46E27DAF-B72D-5A86-91BB-1B3C0788C6A5_d0e569952_href.png Binary file Symbian3/PDK/Source/GUID-46E27DAF-B72D-5A86-91BB-1B3C0788C6A5_d0e569952_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-470FAFE8-2246-5E91-9F01-6CC95F975E54_d0e512079_href.jpg Binary file Symbian3/PDK/Source/GUID-470FAFE8-2246-5E91-9F01-6CC95F975E54_d0e512079_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-470FAFE8-2246-5E91-9F01-6CC95F975E54_d0e519541_href.jpg Binary file Symbian3/PDK/Source/GUID-470FAFE8-2246-5E91-9F01-6CC95F975E54_d0e519541_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4710494E-835F-50B8-B0B5-0482147C02D2_d0e373220_href.png Binary file Symbian3/PDK/Source/GUID-4710494E-835F-50B8-B0B5-0482147C02D2_d0e373220_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4710494E-835F-50B8-B0B5-0482147C02D2_d0e379068_href.png Binary file Symbian3/PDK/Source/GUID-4710494E-835F-50B8-B0B5-0482147C02D2_d0e379068_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-474654BE-D73E-5249-B7E3-7F2656DAB190_d0e456780_href.png Binary file Symbian3/PDK/Source/GUID-474654BE-D73E-5249-B7E3-7F2656DAB190_d0e456780_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-474654BE-D73E-5249-B7E3-7F2656DAB190_d0e462625_href.png Binary file Symbian3/PDK/Source/GUID-474654BE-D73E-5249-B7E3-7F2656DAB190_d0e462625_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-474A9F80-2B3E-5D11-8D2E-95E217BEB84A.dita --- a/Symbian3/PDK/Source/GUID-474A9F80-2B3E-5D11-8D2E-95E217BEB84A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-474A9F80-2B3E-5D11-8D2E-95E217BEB84A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ while upgrading, as explained in the following sections:

      Standard upgrade rules

      InterpretSIS supports the following upgrade types:

      - +

      * The base SA and associated upgrades are removed ** The base SA is removed prior to the installation of the SA upgrade.

      InterpretSIS returns an error if the rules are violated during an upgrade. It supports @@ -27,7 +27,7 @@ set (+nonremovablepkg). The general rule is that a removable package cannot be made non-removable, and a non-removable package cannot be made removable.

      - +

      ** The original PA is removed, including the private directory, before upgrading.

      Notes:

      • If the base package (SA) is removable then patch upgrade (SP) must diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-47511301-DFF9-52B0-9602-DD9D293D3044_d0e332343_href.png Binary file Symbian3/PDK/Source/GUID-47511301-DFF9-52B0-9602-DD9D293D3044_d0e332343_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-47511301-DFF9-52B0-9602-DD9D293D3044_d0e338315_href.png Binary file Symbian3/PDK/Source/GUID-47511301-DFF9-52B0-9602-DD9D293D3044_d0e338315_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-47587124-66D8-5128-BDBB-AF190E67CAF5_d0e260304_href.png Binary file Symbian3/PDK/Source/GUID-47587124-66D8-5128-BDBB-AF190E67CAF5_d0e260304_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-47587124-66D8-5128-BDBB-AF190E67CAF5_d0e266313_href.png Binary file Symbian3/PDK/Source/GUID-47587124-66D8-5128-BDBB-AF190E67CAF5_d0e266313_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-47701648-CEC1-564C-A6BF-CC42E78E701F.dita --- a/Symbian3/PDK/Source/GUID-47701648-CEC1-564C-A6BF-CC42E78E701F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-47701648-CEC1-564C-A6BF-CC42E78E701F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -103,12 +103,12 @@ 4:2:2 subsampling - +

        Contrast this to a subsampling scheme of 4:4:4. This has a horizontal subsample period of 1 for both the U and V components and a vertical subsample period of 1 for both the U and V components.

        4:4:4 subsampling - +

        This reduction results in almost no perceivable visual difference.

      YUV Pixel diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-479133EB-1154-554E-8CEA-C61EDA747B69_d0e106535_href.png Binary file Symbian3/PDK/Source/GUID-479133EB-1154-554E-8CEA-C61EDA747B69_d0e106535_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-479133EB-1154-554E-8CEA-C61EDA747B69_d0e108978_href.png Binary file Symbian3/PDK/Source/GUID-479133EB-1154-554E-8CEA-C61EDA747B69_d0e108978_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4797000B-B61D-5EF8-8C38-3159433C9C7B.dita --- a/Symbian3/PDK/Source/GUID-4797000B-B61D-5EF8-8C38-3159433C9C7B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4797000B-B61D-5EF8-8C38-3159433C9C7B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,7 +14,7 @@ adaptation services. The Graphics Hardware Drivers collection - + Graphics diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-47AA7F26-FF3F-4FEE-BBB4-F4E8A8E0E335_d0e103111_href.png Binary file Symbian3/PDK/Source/GUID-47AA7F26-FF3F-4FEE-BBB4-F4E8A8E0E335_d0e103111_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-47AA7F26-FF3F-4FEE-BBB4-F4E8A8E0E335_d0e99031_href.png Binary file Symbian3/PDK/Source/GUID-47AA7F26-FF3F-4FEE-BBB4-F4E8A8E0E335_d0e99031_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-47C04C71-3E77-55A7-BA95-4A03C7554975_d0e450876_href.png Binary file Symbian3/PDK/Source/GUID-47C04C71-3E77-55A7-BA95-4A03C7554975_d0e450876_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-47C04C71-3E77-55A7-BA95-4A03C7554975_d0e456721_href.png Binary file Symbian3/PDK/Source/GUID-47C04C71-3E77-55A7-BA95-4A03C7554975_d0e456721_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-47EF98E9-7833-5E94-ADFF-198401463A8C_d0e106650_href.png Binary file Symbian3/PDK/Source/GUID-47EF98E9-7833-5E94-ADFF-198401463A8C_d0e106650_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-47EF98E9-7833-5E94-ADFF-198401463A8C_d0e109093_href.png Binary file Symbian3/PDK/Source/GUID-47EF98E9-7833-5E94-ADFF-198401463A8C_d0e109093_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-48326B53-0814-57B9-A744-78AA219D3480.dita --- a/Symbian3/PDK/Source/GUID-48326B53-0814-57B9-A744-78AA219D3480.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -CapCheck report - file format

      The results of the comparison carried out between the capabilities in the actual ROM log file and the capabilities listed in the Expected Capability List are stored in an HTML report.

      The report first lists all the input files used, in other words, the ROM log file, the Expected Capability List and the Symbian Capability List, and then provides Summary and Details sections, as described below.

      Summary section

      This section provides the following:

      • Total number of binaries found in the ROM log file

      • Total number of unexpected binaries found in the ROM log file

      • Total number of binaries missing from the ROM log file

      • Total number of binaries found in the ROM log file with unexpected capabilities

      • Total number of binaries found in the ROM log file with missing capabilities .

      The file names of the binaries are then provided in the Details section.

      Details section

      The Details section of the report lists the binaries that are missing or unexpected, or to contain missing or unexpected capabilities, as shown below.

      • Unexpected binaries found in the ROM log

      • Binaries missing from the ROM log

      • Binaries in the ROM log with unexpected capabilities, followed by a list of capabilities found in addition to what is expected to be found according to the Expected Capability List.

      • Binaries in the ROM log with missing capabilities, followed by a list of capabilities that are missing when compared to capabilities listed in the Expected Capability List.

      How to use CapCheck CapSearch Guide CapImportCheck Guide
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-48363190-6FFB-4230-84B4-2E521EA51365.dita --- a/Symbian3/PDK/Source/GUID-48363190-6FFB-4230-84B4-2E521EA51365.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-48363190-6FFB-4230-84B4-2E521EA51365.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Using menu sections in menu bar resource statements -Menu sections in an Options menu +Menu sections in an Options menu

      The use of menu sections provides a means of combining menu bar resource declarations in Options menus. One example of how this could be used would be an application with two views. Three MENU_BAR resources diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4841AEDF-D22C-57D0-872D-7BD8B6A29CF5.dita --- a/Symbian3/PDK/Source/GUID-4841AEDF-D22C-57D0-872D-7BD8B6A29CF5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4841AEDF-D22C-57D0-872D-7BD8B6A29CF5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> What are Tiers?This topic describes the concepts of a Tier and a Tier Manager in the Communications Framework.

      A Tier is a group of Access Points (APs) related to one or more technologies sharing the same Selection and Availability monitoring logic. The Tier Manager provides the means for an application to connect to a communication service to send and receive data, or to check the current status of a communication service.

      When an application needs to contruct a stack either to request availability on a particular service or to establish a connection with a remote device or service, it will explicitly select a specific Tier Manager at the top of the stack to define the service. If the application does not explicitly select a specific Tier Manager, the default TM will be used. The selection process and connection preferences will define how the rest of the stack is constructed. Each Tier Manager is responsible for selecting the most appropriate AP from a range of alternatives and may also pass up availability information in some cases, depending on the Tier Manager.

      When a higher Layer wants to bind to a lower layer, it uses the supplied selection criteria to select a Tier and request a specific AP. Once the Tier has returned an AP and the stack has been bound together, the upper layer queries the availability to see if it is possible to connect at that moment.

      On a device there will be multiple Tier Managers, each responsible for a separate technology or group of technologies. Each Tier Manager will have distinct selection and availability logic and other technology specific algorithms.

      A single Tier Manager will be responsible for multiple instances of a layer, i.e. multiple APs of the same type. So the Wi-Fi Tier Manager would allow connection to multiple Wi-Fi Access Points, a Telephony Tier Manager will be responsible for connections to different APNs.

      Tier Managers (CTierManagerBase) are Comms Framework nodes created by their respective factories. Tier Managers respond to Node Messages sent across the Transport, in a similar way to Stack Nodes.

      The Tier Manager keeps track of the current Access Points that have been created through a query API, see Availability below. The Tier Manager responds to messages sent when an Access Point changes state. For example, when a Bearer stops being available, a message will be sent to the Tier Manager.

      In the diagram below, two Tier Managers are shown. The diagram shows that one Tier Manager can be responsible for more than one layer in a Stack.

      Communications Architecture showing Tier Managers -

      When a client application wants to start a connection it will request an AP by calling RConnection::Open() with a Tier Identifier (the iTag field in the Tier table). This will cause a stack of APs that meet the selection and availability criteria to be returned. When the RConnection:Start() occurs, a specific AP will be selected at the top layer and the matching CPRs, SCPRs and Data Flows in each of the layers for the connection will be started (unless the connection is already active and this new RConnection can share the open connection).

      Configuration

      The configuration for a Tier Manager is held in a number of Comms Database tables: most importantly the Tier table, and the Access Point table.

      The Tier Table contains the ECom ID of the loaded module that processes Tier Manager requests, and the Default Access Point. The Default Access Point is the one used if the client makes no special requests, see Explicit and Implicit Selection below.

      The Access Point Table contains the identifiers of the MCPR, CPR and SCPR for this layer, the selection policy, the protocol, the Tier ID and a protocol identifier.

      It is recommended that all connections should specify a Tier in the RConnection::Start(), but for backward compatability, RConnection::Start() without a Tier identifier will use the Default Tier which is stored in the GlobalSettings table. Important note: for legacy code to function correctly, the Default Tier must be the "Network " Tier. See Explicit and Implicit Selection below for more information.

      Usage

      Selection

      A Tier Manager uses selection to decide which Access Points can be used for a connection. A top-level Tier Manager responds to selection requests that originate from RConnection or RConnectionServ.

      Selection selects a stack of APs that may be used to provide a service. The result is a stack or inverted tree showing potential APs at each layer. Remember that a higher layer AP provides a service, but there may be several options at each lower layer for supporting that service (Wi-Fi, 3G telephony etc.). For example, when a client asks for a service to provide a data socket, the list returned will include all the available APs at each layer. The Tier Manager for each layer decides which AP to use.

      Explicit and Implicit Selection

      If Freeway/Mobility is required it is required that communications clients explicitly open an RConnection on an AP. and associate the RSocket with it. But to for legacy applications or connections that don't require mobility, Implicit Selection is supported which uses the Default Connection.

      Explicit Selection occurs when an application specifies the top-level Access Point when calling RConnection::Start() with a parameter bundle that specifies an AP. Explicit selection selects the top-level AP and joins this connection to the stack.

      Implicit selection occurs when a user calls RSocket::Open() on a socket that is not associated with any connection. Implicit selection will associate the socket with the Default Connection. Implicit selection also occurs when an RConnection::Start() is called without specifying an AP in the connection preferences.

      For Implicit Selection, only the top layer of the stack is created by the RSocket::Open(), the remainder of the layers are created when a Data Plane event occurs such as RSocket::Connect() or RSocket::Send().

      When the Data Plane activation event occurs:

      • if there is no bearer (no AP for the next layer in the stack), the Control Plane will finish the selection and start the selected connection.

      • if there is a bearer, the Data Plane states it has found a flow in the Layer below by protocol-specific means, for example IP routing table.

      Availability

      When a client application wants to monitor a technology or existing connection, it can call RConnectionServ::AccessPointStatusQuery() for an immediate status, or RConnectionServ::AccessPointNotification() to be informed of each status change. As the format of the query bundle is configurable by the MCPR, each technology can specify what information will be returned in a query or notification. For example, the query bundle could contain Wi-Fi hotspot availability, maximum data rate supported, costs etc.

      Layers Planes Nodes
      \ No newline at end of file +

      When a client application wants to start a connection it will request an AP by calling RConnection::Open() with a Tier Identifier (the iTag field in the Tier table). This will cause a stack of APs that meet the selection and availability criteria to be returned. When the RConnection:Start() occurs, a specific AP will be selected at the top layer and the matching CPRs, SCPRs and Data Flows in each of the layers for the connection will be started (unless the connection is already active and this new RConnection can share the open connection).

      Configuration

      The configuration for a Tier Manager is held in a number of Comms Database tables: most importantly the Tier table, and the Access Point table.

      The Tier Table contains the ECom ID of the loaded module that processes Tier Manager requests, and the Default Access Point. The Default Access Point is the one used if the client makes no special requests, see Explicit and Implicit Selection below.

      The Access Point Table contains the identifiers of the MCPR, CPR and SCPR for this layer, the selection policy, the protocol, the Tier ID and a protocol identifier.

      It is recommended that all connections should specify a Tier in the RConnection::Start(), but for backward compatability, RConnection::Start() without a Tier identifier will use the Default Tier which is stored in the GlobalSettings table. Important note: for legacy code to function correctly, the Default Tier must be the "Network " Tier. See Explicit and Implicit Selection below for more information.

      Usage

      Selection

      A Tier Manager uses selection to decide which Access Points can be used for a connection. A top-level Tier Manager responds to selection requests that originate from RConnection or RConnectionServ.

      Selection selects a stack of APs that may be used to provide a service. The result is a stack or inverted tree showing potential APs at each layer. Remember that a higher layer AP provides a service, but there may be several options at each lower layer for supporting that service (Wi-Fi, 3G telephony etc.). For example, when a client asks for a service to provide a data socket, the list returned will include all the available APs at each layer. The Tier Manager for each layer decides which AP to use.

      Explicit and Implicit Selection

      If Freeway/Mobility is required it is required that communications clients explicitly open an RConnection on an AP. and associate the RSocket with it. But to for legacy applications or connections that don't require mobility, Implicit Selection is supported which uses the Default Connection.

      Explicit Selection occurs when an application specifies the top-level Access Point when calling RConnection::Start() with a parameter bundle that specifies an AP. Explicit selection selects the top-level AP and joins this connection to the stack.

      Implicit selection occurs when a user calls RSocket::Open() on a socket that is not associated with any connection. Implicit selection will associate the socket with the Default Connection. Implicit selection also occurs when an RConnection::Start() is called without specifying an AP in the connection preferences.

      For Implicit Selection, only the top layer of the stack is created by the RSocket::Open(), the remainder of the layers are created when a Data Plane event occurs such as RSocket::Connect() or RSocket::Send().

      When the Data Plane activation event occurs:

      • if there is no bearer (no AP for the next layer in the stack), the Control Plane will finish the selection and start the selected connection.

      • if there is a bearer, the Data Plane states it has found a flow in the Layer below by protocol-specific means, for example IP routing table.

      Availability

      When a client application wants to monitor a technology or existing connection, it can call RConnectionServ::AccessPointStatusQuery() for an immediate status, or RConnectionServ::AccessPointNotification() to be informed of each status change. As the format of the query bundle is configurable by the MCPR, each technology can specify what information will be returned in a query or notification. For example, the query bundle could contain Wi-Fi hotspot availability, maximum data rate supported, costs etc.

      Layers Planes Nodes \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-48482288-B60B-477A-8E28-132F7CBE2C94.dita --- a/Symbian3/PDK/Source/GUID-48482288-B60B-477A-8E28-132F7CBE2C94.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-48482288-B60B-477A-8E28-132F7CBE2C94.dita Fri Jul 16 17:23:46 2010 +0100 @@ -26,7 +26,7 @@

      The Selection key always causes the same action as the left softkey.

      Confirmation query - +

      Guidelines for designing Confirmation queries:

        diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4862EA2E-6BFE-5E11-B527-7EBA94BB0EA2.dita --- a/Symbian3/PDK/Source/GUID-4862EA2E-6BFE-5E11-B527-7EBA94BB0EA2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4862EA2E-6BFE-5E11-B527-7EBA94BB0EA2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -111,6 +111,6 @@ // Now specify the files to be used file=ABI_DIR\DEBUG_DIR\MyLibrary.dll \sys\bin\MyLibrary.dll unpaged -

        The next -step is to Build the writable data paging ROM

        +

        The next step is to Build the writable +data paging ROM

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-488F24B1-DC9B-5A5B-8B0D-47A428B9AA3C_d0e535297_href.jpg Binary file Symbian3/PDK/Source/GUID-488F24B1-DC9B-5A5B-8B0D-47A428B9AA3C_d0e535297_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-488F24B1-DC9B-5A5B-8B0D-47A428B9AA3C_d0e542757_href.jpg Binary file Symbian3/PDK/Source/GUID-488F24B1-DC9B-5A5B-8B0D-47A428B9AA3C_d0e542757_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-48B61662-0A11-4356-9882-7523B04FFD96.dita --- a/Symbian3/PDK/Source/GUID-48B61662-0A11-4356-9882-7523B04FFD96.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-48B61662-0A11-4356-9882-7523B04FFD96.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,21 +12,21 @@ Changing PassphraseThis section explains how to change the passphrase.

        The following steps explain the process of changing the passphrase:

        - -Create a file system + +Create a file system session using an RFs object. - + Create an object of type CUnifiedKeyStore using CUnifiedKeyStore::NewL() or CUnifiedKeyStore::NewLC(). - + Initialize the member functions and keystore using the asynchronous function CUnifiedKeyStore::Initialize(). - + Obtain the authentication object of a key using the CCTKeyInfo::Protector() function. - + Invoke the ChangeReferenceData() function for the authentication object obtained. The keystore prompts the user to enter the old and new passphrases. @@ -34,8 +34,8 @@

        The passphrase is changed for the selected key, if the old passphrase is entered correctly.

        -Example

        The -following code snippet shows how to set use policy for a key.

        // Create a file system session object +Example

        The +following code snippet shows how to set use policy for a key.

        // Create a file system session object RFs iFs; CleanupClosePushL(&iFs); diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-48BD628F-F47F-535B-B148-7425A6704FC2.dita --- a/Symbian3/PDK/Source/GUID-48BD628F-F47F-535B-B148-7425A6704FC2.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -always_build_as_arm

        always_build_as_arm

        Use the always_build_as_arm statement to instruct an ARMV5 build to not build the project for the THUMB instruction set, but for the ARM instruction set.

        For details, see ARM/THUMB overrides.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-48C764A2-378F-57CC-B7F2-EC866AE8F830.dita --- a/Symbian3/PDK/Source/GUID-48C764A2-378F-57CC-B7F2-EC866AE8F830.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-48C764A2-378F-57CC-B7F2-EC866AE8F830.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -The reference counting object

        A reference counting object is one which uses reference counting to track concurrent references to itself and which arranges for automatic destruction of itself when the final reference is removed. It is also an object which can be named.

        A reference counting object is any object which has CObject as its base class.

        Constructing a CObject derived type, or calling its CObject::Open() member function, adds a reference to that object by adding one to its reference count. Calling its CObject::Close() member function removes a reference by subtracting one from its reference count. When the last user of the object calls CObject::Close(), the reference count becomes zero and the object is automatically destroyed.

        The following drawing shows the idea.

        A CObject is always part of a class hierarchy. It is a base class; an explicit CObject type is never instantiated.

        The server side implementation of a client/server subsession uses a CObject.

        See also:

        • CObject

        • Subsessions within a session

        • Using client/server

        \ No newline at end of file +The reference counting object

        A reference counting object is one which uses reference counting to track concurrent references to itself and which arranges for automatic destruction of itself when the final reference is removed. It is also an object which can be named.

        A reference counting object is any object which has CObject as its base class.

        Constructing a CObject derived type, or calling its CObject::Open() member function, adds a reference to that object by adding one to its reference count. Calling its CObject::Close() member function removes a reference by subtracting one from its reference count. When the last user of the object calls CObject::Close(), the reference count becomes zero and the object is automatically destroyed.

        The following drawing shows the idea.

        A CObject is always part of a class hierarchy. It is a base class; an explicit CObject type is never instantiated.

        The server side implementation of a client/server subsession uses a CObject.

        See also:

        • CObject

        • Subsessions within a session

        • Using client/server

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-48D06D0E-C4D6-54F1-B603-7A75DEF669AA_d0e583066_href.png Binary file Symbian3/PDK/Source/GUID-48D06D0E-C4D6-54F1-B603-7A75DEF669AA_d0e583066_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-48D06D0E-C4D6-54F1-B603-7A75DEF669AA_d0e604336_href.png Binary file Symbian3/PDK/Source/GUID-48D06D0E-C4D6-54F1-B603-7A75DEF669AA_d0e604336_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-48DB00D7-3807-5B4B-B4CE-D8C05B42CA6D.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-48DB00D7-3807-5B4B-B4CE-D8C05B42CA6D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Cryptography library

        Changes since v7.0

        The Cryptography library is a new component that is based on Symbian-developed code rather than code licensed from RSA. It replaces the cryptalg and privkey variants (cryptX.dll, privX.dll) with a new cryptography.dll, which at present can be built in a weak or strong form: weak_cryptography.dll and strong_cryptography.dll. The weak version is limited to symmetric cryptographic operations with a maximum key size of 56 bits and asymmetric cryptographic operations with a maximum key size of 512 bits. Clients always link against cryptography.dll.

        On hardware, the version used is determined at ROM build time by including the appropriate version of the Cryptography library as cryptography.dll. On the emulator, the crypto switch sub-component supplies cryptography.dll, and this transparently forwards calls to the appropriate version of the Cryptography library. This setup allows a version of the emulator to be built that is not export restricted (including only the weak Cryptography library), which can be enhanced to use the strong crypto library merely by the addition of the appropriate DLL.

        Note that the new Cryptography deliverable (incorporating supporting libraries such as hash.dll) is not source or binary compatible with the previous Cryptalg implementation.

        The new Cryptography library has also been made available to the Symbian OS v7.0s release.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-49205F79-C17B-4126-BDB2-D759B91B5894.dita --- a/Symbian3/PDK/Source/GUID-49205F79-C17B-4126-BDB2-D759B91B5894.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-49205F79-C17B-4126-BDB2-D759B91B5894.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,8 +14,8 @@ to use the best available data connection while operational.

        To use application-level roaming:

        - -Initiate an Internet + +Initiate an Internet connection using the Connection Manager API and the Internet destination network. In this example it is assumed that the best available access point for Internet is GPRS. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4922D80F-009D-56CE-B255-FDAF9C247667_d0e317021_href.png Binary file Symbian3/PDK/Source/GUID-4922D80F-009D-56CE-B255-FDAF9C247667_d0e317021_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4922D80F-009D-56CE-B255-FDAF9C247667_d0e323011_href.png Binary file Symbian3/PDK/Source/GUID-4922D80F-009D-56CE-B255-FDAF9C247667_d0e323011_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4930A22F-EF80-5B08-A878-C0DB73929558_d0e435184_href.png Binary file Symbian3/PDK/Source/GUID-4930A22F-EF80-5B08-A878-C0DB73929558_d0e435184_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4930A22F-EF80-5B08-A878-C0DB73929558_d0e441029_href.png Binary file Symbian3/PDK/Source/GUID-4930A22F-EF80-5B08-A878-C0DB73929558_d0e441029_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-49363088-CE0B-558D-8E86-48400E4F7C2F.dita --- a/Symbian3/PDK/Source/GUID-49363088-CE0B-558D-8E86-48400E4F7C2F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-49363088-CE0B-558D-8E86-48400E4F7C2F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -46,7 +46,7 @@ to be cleared or snoozed.

        Alarm state diagram for multiple alarm notification support - +

        In the diagram above, a queued alarm can change to the ‘waiting to notify’ state if an alarm has expired but the maximum number of notifying alarms has been reached. The state can also change if Alarm Server is waiting diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-49379616-C235-598D-AE43-668998AD072B.dita --- a/Symbian3/PDK/Source/GUID-49379616-C235-598D-AE43-668998AD072B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-49379616-C235-598D-AE43-668998AD072B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -309,7 +309,7 @@ decremented. This means that if the stack overflows, the stack pointer points into the guard area and causes a processor exception, with the result that the kernel panics the thread.

        - +

        Return addresses are stored by pushing them on to the stack so at any point you can trace through the stack looking at the saved return addresses to see the chain of function calls up to the present function.

        The diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-49397CFD-955A-5DF6-9251-368C44224966.dita --- a/Symbian3/PDK/Source/GUID-49397CFD-955A-5DF6-9251-368C44224966.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Build tools reference \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita --- a/Symbian3/PDK/Source/GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4941C035-C359-4968-9BD5-31F44EE5F810.dita Fri Jul 16 17:23:46 2010 +0100 @@ -41,11 +41,10 @@ framework directly and results in the Options menu being presented to the device user.

      -

      For more information on resource files, see Managing -resource files.

      +

      For more information on resource files, see Managing resource files.

      For an example of a resource file, see Resource management example: HelloWorldBasic.

      -Options menu +Options menu

      Commands are passed to the object with which the menu is associated. The object that receives the command should handle the command if it is specific to the object. If the command is relevant to another object, then it should diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-494AF38D-CE0C-4B4C-BE44-2FC7482F4B7B.dita --- a/Symbian3/PDK/Source/GUID-494AF38D-CE0C-4B4C-BE44-2FC7482F4B7B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-494AF38D-CE0C-4B4C-BE44-2FC7482F4B7B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,15 +9,8 @@ --> -Hiding and showing stylus pop-up menu items -

      To hide and show stylus pop-up menu items, use the method CAknStylusPopUpMenu::SetItemDimmed() in the class.

      -// You can remove the menu item dynamically according to the command id. For example: -iPopupMenu->RemoveMenuItem( StylusMenuCommand1 ); - -// You can dim (hide) a menu item without removing it -iPopupMenu->SetItemDimmed( StylusMenuDynamicAdd, ETrue ); - -// You can un-dim(show) the menu item again: -iPopupMenu->SetItemDimmed( StylusMenuDynamicAdd, EFalse ); - +Hiding +and showing stylus pop-up menu items +

      To hide and show stylus pop-up menu items, use the method SetItemDimmed() in the class CAknStylusPopUpMenu.

      +

      Add sample code here.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4957E6BB-C41D-52F1-94CD-68CF6D61C271.dita --- a/Symbian3/PDK/Source/GUID-4957E6BB-C41D-52F1-94CD-68CF6D61C271.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4957E6BB-C41D-52F1-94CD-68CF6D61C271.dita Fri Jul 16 17:23:46 2010 +0100 @@ -18,7 +18,7 @@ not only the new attribute which it introduces, but also every attribute which it inherits from the preceding format layer.

      - +

      The Symbian platform avoids this inefficiency by using the system of based-on links. Here, each new layer adds attributes in a natural way without @@ -35,13 +35,13 @@ arrow represents a based-on link.

      Format layering - +

      The following diagram demonstrates the system of based-on links when attributes are applied to different parts of text rather than added on top of existing attribute layers.

      - +

      In this case, several format layers are required, all of which are based on the normal layer.

      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-495C619C-1223-59C1-9B31-0F4031BAE4A9.dita --- a/Symbian3/PDK/Source/GUID-495C619C-1223-59C1-9B31-0F4031BAE4A9.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ - - - - - -systeminclude

      systeminclude directory-list

      Use the systeminclude statement to define directories to be scanned for files specified in #include statements in source and resource files.

      It may be specified any number of times, and each may have any number of directories.

      When a project is being built, the pre-processor will be invoked specifying all the systeminclude and userinclude directories indicated in these statements. No standard include directories will be searched unless the project links to Win32 libraries under WINS.

      Files included from source code with a line such as #include - <e32def.h> are searched based on the first matching file in the directory, in the following order:

      • Directory containing the source file

      • Directories specified by userinclude keyword, if any

      • Directories specified by systeminclude keyword, if any

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-495EA1C8-E95F-54AE-B4D1-0F463003C2D7.dita --- a/Symbian3/PDK/Source/GUID-495EA1C8-E95F-54AE-B4D1-0F463003C2D7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-495EA1C8-E95F-54AE-B4D1-0F463003C2D7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -24,7 +24,7 @@ some of the key concepts that are used in the documentation of surfaces.

      Composition of the UI surface and an external surface, showing the viewport and extent - +
      Graphics surface
      @@ -65,7 +65,7 @@ can be seen.

      A cross section through the surfaces, showing the display output - +
    Supported Uses

    You can:

      @@ -92,7 +92,7 @@ surface from top to bottom and rotate it by 180° to achieve a mirroring effect.

    The following diagrams shows some surface configuration use cases.

    Surface configuration use cases - +
    Configuration

    There are a number of ways in which dynamically updated content can be configured diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-497AD33D-F6DC-52D4-85C8-B9E02978ACD4_d0e211010_href.jpg Binary file Symbian3/PDK/Source/GUID-497AD33D-F6DC-52D4-85C8-B9E02978ACD4_d0e211010_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-497AD33D-F6DC-52D4-85C8-B9E02978ACD4_d0e217011_href.jpg Binary file Symbian3/PDK/Source/GUID-497AD33D-F6DC-52D4-85C8-B9E02978ACD4_d0e217011_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-49F16A96-083E-5928-B939-75F2D11E2BF8_d0e232785_href.png Binary file Symbian3/PDK/Source/GUID-49F16A96-083E-5928-B939-75F2D11E2BF8_d0e232785_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-49F16A96-083E-5928-B939-75F2D11E2BF8_d0e238780_href.png Binary file Symbian3/PDK/Source/GUID-49F16A96-083E-5928-B939-75F2D11E2BF8_d0e238780_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-49FEF50C-98C8-5789-881E-553164EF5517.dita --- a/Symbian3/PDK/Source/GUID-49FEF50C-98C8-5789-881E-553164EF5517.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,93 +0,0 @@ - - - - - -How -to use CapSearch -

    CapSearch is a tool that allows you to search a ROM log for binaries with -specific capabilities and list them within a report in HTML format.

    -

    When using the CapSearch tool, you need to define the -name and location of the ROM log and the Symbian Capability List. You should -also specify whether to search for EXACT or ALL capabilities, -and whether to include all binaries or only the executables in your search.

    -

    Along with the HTML report, a list of binaries and capabilities is printed -to standard output, which can be stored as a .txt file. -The standard output facility can also be used to generate the Expected Capability -List, which is used as input for CapCheck.

    -

    The Expected Capability List is created by specifying no capabilities when -running CapSearch, and by setting the -match option -to LEAST.

    -

    The Symbian Capability List is the header file named e32capability.h, -and can be found in the <EPOCROOT>\epoc32\include directory. -It lists all the permissible capabilities by name and corresponding number -in hexadecimal format. Either name or number can be used when defining the -capability to be searched.

    -
    Command line syntax

    The command line syntax to -be used for CapSearch is shown below.

    >CapSearch.pl --r <rom_log_file> -s <symbian_capability_list> [-c <capability>] -[-scope <ALL|EXE>] [-match <EXACT|LEAST>] [-R <HTML_report>]

    The -order of the arguments can be modified, as long as the mandatory ones are -used, which are -r and -s.

    Arguments

    The -following arguments are used.

    - - - -

    -r <rom_log_file>

    -

    The name and location of the ROM log file, in relation to the directory -where the tool is run from, for example .\input\rom.log. -This flag is mandatory.

    -
    - -

    -s <Symbian_capability_list>

    -

    The name of the Symbian Capability List, listing all the capabilities -available to search, and their corresponding values. This flag is mandatory -and the list can be found in <EPOCROOT>\epoc32\include\e32capability.h.

    -
    - -

    -c <capability>

    -

    Defines a text string or numerical value for the capability to be -searched. This could be specified several times, i.e. -c <capability1> --c <capability2> -c <capability3>. The names and corresponding -numbers are listed in the Symbian Capability List.

    -
    - -

    -scope <ALL|EXE>

    -

    Defines the scope of the search - whether to only search the executables, EXE, -within the ROM, or to include all the binaries, ALL. The -default is ALL.

    -
    - -

    -match <EXACT|LEAST>

    -

    Defines how the search should be carried out - whether to report -binaries which contain the specified capability only, EXACT, -or whether to report binaries which include the specified capability and more, LEAST. -The default is LEAST.

    -
    - -

    -R <HTML_report>

    -

    Defines the name of the HTML report to be generated in the working -directory. If not specified, the default is CapSearchReport.html.

    -
    - -

    -h

    -

    Displays help information (optional).

    -
    - - -

    Example

    A full example of how to use the CapSearch tool -is shown below:

    >CapSearch.pl -r .\input\rom.log -s e32capability.h -c NetworkControl -c ReadUserData -c WriteUserData -scope ALL -match -least -R results.html
    - -CapSearch - report - file format -CapCheck -Guide -CapImportCheck -Guide - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4A2E212E-BC1B-5965-9A62-6309CC7CAAAB_d0e289179_href.png Binary file Symbian3/PDK/Source/GUID-4A2E212E-BC1B-5965-9A62-6309CC7CAAAB_d0e289179_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4A2E212E-BC1B-5965-9A62-6309CC7CAAAB_d0e295171_href.png Binary file Symbian3/PDK/Source/GUID-4A2E212E-BC1B-5965-9A62-6309CC7CAAAB_d0e295171_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4A5A50EB-261E-5739-904E-1D14D1A6BAD9_d0e219540_href.png Binary file Symbian3/PDK/Source/GUID-4A5A50EB-261E-5739-904E-1D14D1A6BAD9_d0e219540_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4A5A50EB-261E-5739-904E-1D14D1A6BAD9_d0e225560_href.png Binary file Symbian3/PDK/Source/GUID-4A5A50EB-261E-5739-904E-1D14D1A6BAD9_d0e225560_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4A66B46E-8A23-42E4-ADAD-B124A36B180A.dita --- a/Symbian3/PDK/Source/GUID-4A66B46E-8A23-42E4-ADAD-B124A36B180A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4A66B46E-8A23-42E4-ADAD-B124A36B180A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,30 +12,9 @@ Showing and hiding stylus pop-up menu

    Use the method ShowMenu() in the class CAknStylusPopUpMenu to show the stylus pop-up menu.

    -

    Usually, the pop-up menu must not be directly displayed in the HandlePointerEventL of -a CCoeControl. Use the CAknLongTapDetector -to handle the Llong Tap event and show the pop-up on the HandleLongTapEventL, -which is the implementation to the interface MAknLongTapDetectorCallBack.

    -

    The following code snippets illustrates how to show pop-up menu:

    -CAknLongTapDetector * iLongTapDetector; -// "this" implement the interface MAknLongTapDetectorCallBack -iLongTapDetector = CAknLongTapDetector::NewL( this ); - -// pass the process to the long tap detector -void XXXX::HandlePointerEventL( - const TPointerEvent& aPointerEvent) - { - iLongTapDetector->PointerEventL( aPointerEvent ); - // Call base class HandlePointerEventL() - CCoeControl::HandlePointerEventL(aPointerEvent); - } -// handle long tap detector event to show the stylus popup -void XXXX::HandleLongTapEventL( const TPoint& aPenEventLocation, const TPoint& aPenEventScreenLocation ) - { - iPopupMenu->SetPosition( - aPenEventScreenLocation , - CAknStylusPopUpMenu::EPositionTypeRightBottom ); - iPopupMenu->ShowMenu(); - } - +

    How is the menu dismissed/hidden? +Automatically after a command has been selected or when the user taps outside +the menu?

    +

    Add sample code on showing and hiding +the menu here.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4AAABD77-C08E-5EE2-A02A-3B412EA6D23F.dita --- a/Symbian3/PDK/Source/GUID-4AAABD77-C08E-5EE2-A02A-3B412EA6D23F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4AAABD77-C08E-5EE2-A02A-3B412EA6D23F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -31,7 +31,7 @@ interacts with a specially customised DevSound (configured as optional).

    Shown below is a representation of how A3F interacts with DevSound and other components:

    A3F and related components - +
    Library summary

    A3F includes the following libraries:

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4AB3C821-25B5-4B5B-BC20-C8FA42D69802_d0e17034_href.png Binary file Symbian3/PDK/Source/GUID-4AB3C821-25B5-4B5B-BC20-C8FA42D69802_d0e17034_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4AB3C821-25B5-4B5B-BC20-C8FA42D69802_d0e18145_href.png Binary file Symbian3/PDK/Source/GUID-4AB3C821-25B5-4B5B-BC20-C8FA42D69802_d0e18145_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4ADD8234-4AFD-4E80-94A4-AC018FE83276.dita --- a/Symbian3/PDK/Source/GUID-4ADD8234-4AFD-4E80-94A4-AC018FE83276.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4ADD8234-4AFD-4E80-94A4-AC018FE83276.dita Fri Jul 16 17:23:46 2010 +0100 @@ -18,7 +18,7 @@
  • Spawn APIs

  • Libgmodule APIs

  • -
    Memory +<section id="GUID-DFAD39D6-BA92-4293-B5EC-97077CE1FC1A-GENID-1-12-1-14-1-1-7-1-6-1-4-1-3-3"> <title>Memory allocation

    The Symbian GLib implementation does not follow the default OSS behavior. The default OSS behavior is such that in the event of a memory allocation failure the application, using g_malloc() and @@ -30,7 +30,7 @@ all the application code written using GLib does not perform memory allocation failure checks. Hence, for Symbian GLib it is the application programmer's responsibility to check for memory allocation failures.

    -
    Spawn +<section id="GUID-DFAD39D6-BA92-4293-B5EC-97077CE1FC1A-GENID-1-12-1-14-1-1-7-1-6-1-4-1-3-4"> <title>Spawn APIs

    GLib has a set of APIs for process spawning. Since Symbian platform does not support the fork() and exec() APIs, the g_spawn* APIs have limitations in their functionality. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4AE98C9B-03A9-5F26-BD0F-2A60B01A67F4_d0e429216_href.png Binary file Symbian3/PDK/Source/GUID-4AE98C9B-03A9-5F26-BD0F-2A60B01A67F4_d0e429216_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4AE98C9B-03A9-5F26-BD0F-2A60B01A67F4_d0e435061_href.png Binary file Symbian3/PDK/Source/GUID-4AE98C9B-03A9-5F26-BD0F-2A60B01A67F4_d0e435061_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4AEBF49C-E62A-5D0D-8181-600BF29DFFC7.dita --- a/Symbian3/PDK/Source/GUID-4AEBF49C-E62A-5D0D-8181-600BF29DFFC7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4AEBF49C-E62A-5D0D-8181-600BF29DFFC7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,69 +1,59 @@ - - - - - -IPC: -IPC Mechanisms -

    This example demonstrates how a parent process communicates with its child -process using various IPC mechanisms. Two executables, a parent and a child -(spawned by the parent) are created to demonstrate these mechanisms. The child -process is created by the parent using the posix_spawn() function. -The parent process communicates with the child process using the following -IPC mechanisms:

    -
      -
    • Named pipes (FIFO - -First in First Out)

    • -
    • Single pipe (popen() system -call)

    • -
    -
    Download

    Click on the following link to download -the example: IPC.zip

    Click: browse to view the example code.

    -
    Description

    Spawning the child process

    The posix_spawn() function -creates the child process. A pointer to the process ID (pid) -of the child process and the path of the child process are passed as arguments -to this function. The parent waits for the child to terminate by calling the waitpid() function.

    Creating -a named pipe

    This example creates a named pipe using the mkfifo() function. -The child writes data into the FIFO and then exits. The parent reads data -from FIFO and writes it to the console. The first argument of the mkfifo() function -indicates the path of the FIFO file.

    Opening a single pipe

    The -parent creates a child process and a pipe to the child process using the popen() function. -A file handle to the pipe is returned to the parent and the parent uses this -handle to read the data written to the pipe by the child. The path of the -child process is passed as the first argument to the popen() function.

    -
    Build

    The following statements are present in all -the .mmp files of the example:

    SYSTEMINCLUDE epoc32\include\stdapis -LIBRARY libc.lib -STATICLIBRARY libcrt0.lib

    Note: You require these statements -because of the following reasons:

      -
    • The epoc32\include\stdapis directory -contains header files such as, stdio.h, unistd.h and -so on that are required to build an Open Environment application.

    • -
    • The libc.lib file -contains the definitions of all functions that are defined in the header files -associated with this example.

    • -
    • The libcrt0.lib file -provides the E32Main() function, which is the entry point -for the main() function of the example.

    • -

    The Symbian -build process describes how to build this example. The IPC builds -the following binaries in the standard location (\epoc32\release\winscw\<build_variant> for -Carbide.c++).

      -
    • ipcparent.exe: Executable -of the parent process.

    • -
    • ipcchild.exe: Executable -of the child process created using the popen() function.

    • -
    • fifochild.exe: Executable -of the child process created using the posix_spawn() function.

    • -
    -
    Runtime setting

    Two eshells must be opened before -executing this example. The executable, ipcparent.exe is -run in one eshell and the other eshell is used to run the child process fifochild.exe. -You can switch between the two eshells by pressing CTRL +ALT +SHIFT +T.

    + + + + + +IPC: IPC Mechanisms +

    This example demonstrates how a parent process communicates with +its child process using various IPC mechanisms. Two executables, a +parent and a child (spawned by the parent) are created to demonstrate +these mechanisms. The child process is created by the parent using +the posix_spawn() function. The parent process +communicates with the child process using the following IPC mechanisms:

    +
      +
    • Named pipes +(FIFO - First in First Out)

    • +
    • Single pipe +(popen() system call)

    • +
    +
    Download

    Click on the following link to download the example: IPC.zip

    Click: browse to view the example code.

    +
    Description

    Spawning the child process

    The posix_spawn() function creates the child process. A pointer to the process ID +(pid) of the child process and the path of the child +process are passed as arguments to this function. The parent waits +for the child to terminate by calling the waitpid() function.

    Creating a named pipe

    This example +creates a named pipe using the mkfifo() function. +The child writes data into the FIFO and then exits. The parent reads +data from FIFO and writes it to the console. The first argument of +the mkfifo() function indicates the path of the +FIFO file.

    Opening a single pipe

    The parent +creates a child process and a pipe to the child process using the popen() function. A file handle to the pipe is returned +to the parent and the parent uses this handle to read the data written +to the pipe by the child. The path of the child process is passed +as the first argument to the popen() function.

    +
    Build

    The following statements are present in all the .mmp files of the example:

    SYSTEMINCLUDE epoc32\include\stdapis +LIBRARY libc.lib +STATICLIBRARY libcrt0.lib

    Note: You require +these statements because of the following reasons:

      +
    • The epoc32\include\stdapis directory contains header files +such as, stdio.h, unistd.h and so on that are required to build an Open Environment application.

    • +
    • The libc.lib file contains the definitions of all functions +that are defined in the header files associated with this example.

    • +
    • The libcrt0.lib file provides the E32Main() function, which is the entry point for the main() function of the example.

    • +

    The IPC builds the following binaries in +the standard location (\epoc32\release\winscw\<build_variant> for Carbide.c++).

      +
    • ipcparent.exe: Executable of the parent process.

    • +
    • ipcchild.exe: Executable of the child process created using the popen() function.

    • +
    • fifochild.exe: Executable of the child process created using the posix_spawn() function.

    • +
    +
    Runtime +setting

    Two eshells must be opened before executing this +example. The executable, ipcparent.exe is run +in one eshell and the other eshell is used to run the child process fifochild.exe. You can switch between the two eshells +by pressing CTRL +ALT +SHIFT +T.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4AEF7595-17C0-513E-9568-B212E6194388.dita --- a/Symbian3/PDK/Source/GUID-4AEF7595-17C0-513E-9568-B212E6194388.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4AEF7595-17C0-513E-9568-B212E6194388.dita Fri Jul 16 17:23:46 2010 +0100 @@ -69,7 +69,7 @@ The record buffer cycle

    The numbers one to five show the buffer cycle under normal operation, while the letters A to C show error induced operation.

    - +

    When recording commences, the driver removes two buffers from the free list making one the current buffer and the other the next buffer (4 and 5).

    When the current buffer is set as filled, the LDD normally adds diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4B4110D9-0CAA-5CA1-A994-9DAF501119E4_d0e342014_href.png Binary file Symbian3/PDK/Source/GUID-4B4110D9-0CAA-5CA1-A994-9DAF501119E4_d0e342014_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4B4110D9-0CAA-5CA1-A994-9DAF501119E4_d0e347965_href.png Binary file Symbian3/PDK/Source/GUID-4B4110D9-0CAA-5CA1-A994-9DAF501119E4_d0e347965_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B.dita --- a/Symbian3/PDK/Source/GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4B709839-8EEF-4AD2-9868-9AF0176B1E5B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,8 +12,8 @@ Using Sensor Channels APIsThe Sensor Channel establishes a data exchange connection between the sensor framework and hardware using the sensor channel APIs. - -Include the library SensrvClient.lib in + +Include the library SensrvClient.lib in your .mmp file. Include the following diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4B7410B2-849B-5E89-97BF-E06613F600CB_d0e587983_href.png Binary file Symbian3/PDK/Source/GUID-4B7410B2-849B-5E89-97BF-E06613F600CB_d0e587983_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4B7410B2-849B-5E89-97BF-E06613F600CB_d0e615877_href.png Binary file Symbian3/PDK/Source/GUID-4B7410B2-849B-5E89-97BF-E06613F600CB_d0e615877_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4B7FA629-BFC9-594B-B253-AC920EAD6E67_d0e109504_href.png Binary file Symbian3/PDK/Source/GUID-4B7FA629-BFC9-594B-B253-AC920EAD6E67_d0e109504_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4B7FA629-BFC9-594B-B253-AC920EAD6E67_d0e111927_href.png Binary file Symbian3/PDK/Source/GUID-4B7FA629-BFC9-594B-B253-AC920EAD6E67_d0e111927_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4BAA1BE9-E590-564E-8D5C-C7191AB4D8A6.dita --- a/Symbian3/PDK/Source/GUID-4BAA1BE9-E590-564E-8D5C-C7191AB4D8A6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4BAA1BE9-E590-564E-8D5C-C7191AB4D8A6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,52 +1,40 @@ - - - - - -BitmapsShell: -dealing with bitmaps -

    Note: This example is designed to work with TechView and there -is no guarantee that it will work with other interfaces.

    -
    Download

    Click -on the following link to download the example: BitmapsShell.zip

    Download some additional files -required by the example: CommonGraphicsExampleFiles

    Click: browse to view the example code.

    View the additional -files: browse.
    -
    Description

    BitmapsShell provides -an application shell, and two concrete controls.

    CGraphicExampleControl is -a control class, derived from CCoeControl, which links the -app shell to the particular controls.

    The CBitmapControl and CFbsControl classes, -derived from CGraphicExampleControl, define behaviour for -their particular controls.

    CBitmapControl illustrates -the handling and rendering of bitmaps.

    CFbsControl illustrates -the use of the font and bitmap server.

    -
    Build

    The source code for this example application -can be found in the directory:

    examples\Graphics\Bitmaps

    This -source code may be in the directory in which you installed the Symbian platform, -or it may be in src\common\developerlibrary\ directory. -The directory includes the two project files needed for building the example: bld.inf and -the .mmp file.

    The -Symbian build process describes how to build this application. For -the emulator, an application called BitmapsShell.exe is -created in epoc32\release\winscw\<udeb or urel>\.

    -
    Usage
      -
    1. Launch the emulator:

      \epoc32\release\winscw\<urel -or udeb>\EPOC.EXE.

    2. -
    3. Click on BITMAPSSHELL to -run the application. If using the TechView emulator, this will be in -the Extras menu.

    4. -
    5. The controls are listed -on the menu List of Programs. -Press the appropriate menu item to select a specific control.

    6. -
    7. Step through each phase -of an example by pressing the space bar or by tapping on the window drawn -by that example.

    8. -
    -
    Class Summary

    By the bitmap control:

    TPoint

    TRect

    TSize

    CWindowGc

    TRgb

    CFont

    CFbsBitmap

    By -the font and bitmap server control:

    CWindowGc

    CFbsBitmap

    + + + + + +BitmapsShell: dealing with bitmaps +

    Note: This example is designed to work with TechView and +there is no guarantee that it will work with other interfaces.

    +
    Download

    Click on the following link to download the example: BitmapsShell.zip

    Download some additional +files required by the example: CommonGraphicsExampleFiles

    Click: browse to view the example code.

    View the +additional files: browse.
    +
    Description

    BitmapsShell provides an application shell, +and two concrete controls.

    CGraphicExampleControl is a control class, derived from CCoeControl, which +links the app shell to the particular controls.

    The CBitmapControl and CFbsControl classes, +derived from CGraphicExampleControl, define behaviour +for their particular controls.

    CBitmapControl illustrates the handling and rendering of bitmaps.

    CFbsControl illustrates the use of the font and bitmap server.

    +
    Build

    The source code for this example application can be found in +the directory:

    examples\Graphics\Bitmaps

    This source code may be in the directory in which you installed +the Symbian platform, or it may be in src\common\developerlibrary\ directory. The directory includes the two project files needed for +building the example: bld.inf and the .mmp file.

    The Symbian build process describes +how to build this application. For the emulator, an application called BitmapsShell.exe is created in epoc32\release\winscw\<udeb +or urel>\.

    +
    Usage
      +
    1. Launch the emulator:

      \epoc32\release\winscw\<urel or udeb>\EPOC.EXE.

    2. +
    3. Click on BITMAPSSHELL to run the application. If using the TechView emulator, this will be in the Extras menu.

    4. +
    5. The controls +are listed on the menu List of Programs. Press the appropriate menu item to select a specific control.

    6. +
    7. Step through +each phase of an example by pressing the space bar or by tapping on +the window drawn by that example.

    8. +
    +
    Class +Summary

    By the bitmap control:

    TPoint

    TRect

    TSize

    CWindowGc

    TRgb

    CFont

    CFbsBitmap

    By the font and bitmap server control:

    CWindowGc

    CFbsBitmap

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4BC95F70-2F3F-5CFE-B057-0C5A97430573_d0e237432_href.png Binary file Symbian3/PDK/Source/GUID-4BC95F70-2F3F-5CFE-B057-0C5A97430573_d0e237432_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4BC95F70-2F3F-5CFE-B057-0C5A97430573_d0e243405_href.png Binary file Symbian3/PDK/Source/GUID-4BC95F70-2F3F-5CFE-B057-0C5A97430573_d0e243405_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4BCE7915-6BF9-5D83-9049-B7FA9725B406_d0e323076_href.png Binary file Symbian3/PDK/Source/GUID-4BCE7915-6BF9-5D83-9049-B7FA9725B406_d0e323076_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4BCE7915-6BF9-5D83-9049-B7FA9725B406_d0e329062_href.png Binary file Symbian3/PDK/Source/GUID-4BCE7915-6BF9-5D83-9049-B7FA9725B406_d0e329062_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4BEFF7BA-2A39-5601-919E-22AF08D06023.dita --- a/Symbian3/PDK/Source/GUID-4BEFF7BA-2A39-5601-919E-22AF08D06023.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4BEFF7BA-2A39-5601-919E-22AF08D06023.dita Fri Jul 16 17:23:46 2010 +0100 @@ -87,7 +87,7 @@ be used to compress archives to zip archives.

    EZLib Architecture - +
    APIs

    The classes exported from ezlib.dll are tabulated below:

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4BF48607-54F0-51C8-A3A8-F334454FAC9C_d0e242710_href.png Binary file Symbian3/PDK/Source/GUID-4BF48607-54F0-51C8-A3A8-F334454FAC9C_d0e242710_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4BF48607-54F0-51C8-A3A8-F334454FAC9C_d0e248721_href.png Binary file Symbian3/PDK/Source/GUID-4BF48607-54F0-51C8-A3A8-F334454FAC9C_d0e248721_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4C00FAF4-B500-5973-AC6C-79274122276A_d0e428942_href.png Binary file Symbian3/PDK/Source/GUID-4C00FAF4-B500-5973-AC6C-79274122276A_d0e428942_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4C00FAF4-B500-5973-AC6C-79274122276A_d0e434787_href.png Binary file Symbian3/PDK/Source/GUID-4C00FAF4-B500-5973-AC6C-79274122276A_d0e434787_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4C5DB74E-41A5-53CB-A053-CBBEADD31AFF.dita --- a/Symbian3/PDK/Source/GUID-4C5DB74E-41A5-53CB-A053-CBBEADD31AFF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4C5DB74E-41A5-53CB-A053-CBBEADD31AFF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,7 +12,7 @@ ArchitectureDescribes the architecture of the DMA Framework.

    The following diagram shows the main parts of the architecture:

    - +

    The DMA Framework is implemented as a single DLL, which is split into two layers:

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4C6B9697-B69C-49D5-AD23-D7C0053BED3A_d0e1809_href.png Binary file Symbian3/PDK/Source/GUID-4C6B9697-B69C-49D5-AD23-D7C0053BED3A_d0e1809_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4C6B9697-B69C-49D5-AD23-D7C0053BED3A_d0e1815_href.png Binary file Symbian3/PDK/Source/GUID-4C6B9697-B69C-49D5-AD23-D7C0053BED3A_d0e1815_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4C859177-7B45-4569-9E27-B207300A7A1C_d0e68219_href.png Binary file Symbian3/PDK/Source/GUID-4C859177-7B45-4569-9E27-B207300A7A1C_d0e68219_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4C859177-7B45-4569-9E27-B207300A7A1C_d0e72432_href.png Binary file Symbian3/PDK/Source/GUID-4C859177-7B45-4569-9E27-B207300A7A1C_d0e72432_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4C9C236D-71A7-5A5D-8C1C-F574DA604AF6-GENID-1-12-1-26-1-1-11-1-1-5-1-6-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-4C9C236D-71A7-5A5D-8C1C-F574DA604AF6-GENID-1-12-1-26-1-1-11-1-1-5-1-6-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,89 @@ + + + + + + Asymmetric +ciphers -- HowTo +
    How do I use +the asymmetric cryptographic framework?

    The asymmetric cryptographic +framework consists of the following logically separate concepts:

      +
    1. Key storage classes +(For instance, CRSAPublicKey, CDSAPrivateKey)

    2. +
    3. Cipher transformation +classes (CRSAPKCS1v15Encryptor, CDSASigner)

    4. +
    5. Signature representative +classes (CRSASignature, CDSASignature)

    6. +

    The first and third are simply containers for their respective concepts. +Each implementation of item two is responsible for performing one of the four +primitive operations on some data using a key specified at construction. If +the operation is signing or verification, then the transformation outputs +a signature representative class. On the other hand, in the case of encryption +or decryption, input and output consist of binary descriptor data.

    Before +showing some example code, an important note about object ownership. In general, +unless otherwise stated, the following three rules apply.

      +
    1. All key storage and +signature representative constructors take ownership of objects given +to them (typically RInteger s).

    2. +
    3. All cipher transformation +classes only use objects given to them (typically key storage classes, +signature representatives, and descriptors).

    4. +
    5. Any functions that return +pointers to objects (typically the Signer classes) transfer ownership of +the returned object to the caller.

    6. +

    Sample +code for encryption/decryption

    The following code illustrates +how to encrypt data using an RSA PKCS#1 v1.5 encryptor. It assumes you already +have access to the CRSAPublicKey you wish to encrypt to.

    +CRSAPKCS1v15Encryptor* encryptor = CRSAPKCS1v15Encryptor::NewLC(rsaPublicKey); +//As per rules described above, encryptor does not own rsaPublicKey +HBufC8* encryptedMessage = HBufC8::NewLC(encryptor->MaxOutputLength()); +encryptor->EncryptL(messageToEncrypt, *encryptedMessage); +CleanupStack::Pop(encryptedMessage); +CleanupStack::PopAndDestroy(encryptor); +

    To subsequently decrypt, again presuming access to a CRSAPrivateKey.

    +CRSAPKCS1v15Decryptor* decryptor = CRSAPKCS1v15Decryptor::NewLC(rsaPrivateKey); +//As per rules described above, decryptor does not own rsaPrivateKey +HBufC8* decryptedMessage = HBufC8::NewLC(decryptor->MaxOutputLength()); +encryptor->EncryptL(*decryptedMessage, *encryptedMessage); +CleanupStack::Pop(decryptedMessage); +CleanupStack::PopAndDestroy(decryptor); +

    Sample code +for signing/verifying

    All implemented signature systems (both +signing and verifying) do not perform any manipulation of the input message +prior to performing their internal signing mechanism. For instance, both CRSAPKCS1v15Signer and CDSASigner do +not hash the data to be signed prior to signing it. Some people refer to this +as a "raw sign primitive". The decision to operate this way was taken because +large numbers of higher level standards dictate different ways for the data +to be hashed prior to signing (and similarly for verification) and accomadating +all of them significantly confused the api. Instead it is suggested a class +that handles specification specific (for example, RSA signatures for TLS or +X.509), pre-signing transformation is created. Upon calling a Final() -like +call on such a class, it shall return a descriptor that can be "raw signed" +by the implemented signing primitives.

    The following code illustrates +how to DSA sign an unhashed descriptor, messageToBeSigned given +a CDSAPrivateKey. In this case, the pre-signing transformation +required by the DSA is simply a SHA-1 hash. As a result, CSHA1 is +used as the specification specific, pre-signing transformation class.

    +CDSASigner* signer = CDSASigner::NewLC(dsaPrivateKey); +//As per rules described above, signer does not own dsaPrivateKey +CSHA1* sha1 = CSHA1::NewLC(); +CDSASignature* signature = signer->SignL(sha1->Final(messageToBeSigned)); +//Caller owns signature as per rules described above. +CleanupStack::PopAndDestroy(2, signer); //sha1, signer +CleanupStack::PushL(signature); +

    To subsequently verify given a CDSAPublicKey and +a CDSASignature:

    +CDSAVerifier* verifier = CDSAVerifier::NewLC(dsaPublicKey); +//As per rules described above, verifier does not own dsaPublicKey +CSHA1* sha1 = CSHA1::NewLC(); +TBool result = verifier->VerifyL(sha1->Final(messageToBeVerified), *signature); +CleanupStack::PopAndDestroy(2, verifier); //sha1, verifier +
    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4C9C236D-71A7-5A5D-8C1C-F574DA604AF6-GENID-1-12-1-26-1-1-9-1-5-1-7-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-4C9C236D-71A7-5A5D-8C1C-F574DA604AF6-GENID-1-12-1-26-1-1-9-1-5-1-7-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,89 @@ + + + + + + Asymmetric +ciphers -- HowTo +
    How do I use +the asymmetric cryptographic framework?

    The asymmetric cryptographic +framework consists of the following logically separate concepts:

      +
    1. Key storage classes +(For instance, CRSAPublicKey, CDSAPrivateKey)

    2. +
    3. Cipher transformation +classes (CRSAPKCS1v15Encryptor, CDSASigner)

    4. +
    5. Signature representative +classes (CRSASignature, CDSASignature)

    6. +

    The first and third are simply containers for their respective concepts. +Each implementation of item two is responsible for performing one of the four +primitive operations on some data using a key specified at construction. If +the operation is signing or verification, then the transformation outputs +a signature representative class. On the other hand, in the case of encryption +or decryption, input and output consist of binary descriptor data.

    Before +showing some example code, an important note about object ownership. In general, +unless otherwise stated, the following three rules apply.

      +
    1. All key storage and +signature representative constructors take ownership of objects given +to them (typically RInteger s).

    2. +
    3. All cipher transformation +classes only use objects given to them (typically key storage classes, +signature representatives, and descriptors).

    4. +
    5. Any functions that return +pointers to objects (typically the Signer classes) transfer ownership of +the returned object to the caller.

    6. +

    Sample +code for encryption/decryption

    The following code illustrates +how to encrypt data using an RSA PKCS#1 v1.5 encryptor. It assumes you already +have access to the CRSAPublicKey you wish to encrypt to.

    +CRSAPKCS1v15Encryptor* encryptor = CRSAPKCS1v15Encryptor::NewLC(rsaPublicKey); +//As per rules described above, encryptor does not own rsaPublicKey +HBufC8* encryptedMessage = HBufC8::NewLC(encryptor->MaxOutputLength()); +encryptor->EncryptL(messageToEncrypt, *encryptedMessage); +CleanupStack::Pop(encryptedMessage); +CleanupStack::PopAndDestroy(encryptor); +

    To subsequently decrypt, again presuming access to a CRSAPrivateKey.

    +CRSAPKCS1v15Decryptor* decryptor = CRSAPKCS1v15Decryptor::NewLC(rsaPrivateKey); +//As per rules described above, decryptor does not own rsaPrivateKey +HBufC8* decryptedMessage = HBufC8::NewLC(decryptor->MaxOutputLength()); +encryptor->EncryptL(*decryptedMessage, *encryptedMessage); +CleanupStack::Pop(decryptedMessage); +CleanupStack::PopAndDestroy(decryptor); +

    Sample code +for signing/verifying

    All implemented signature systems (both +signing and verifying) do not perform any manipulation of the input message +prior to performing their internal signing mechanism. For instance, both CRSAPKCS1v15Signer and CDSASigner do +not hash the data to be signed prior to signing it. Some people refer to this +as a "raw sign primitive". The decision to operate this way was taken because +large numbers of higher level standards dictate different ways for the data +to be hashed prior to signing (and similarly for verification) and accomadating +all of them significantly confused the api. Instead it is suggested a class +that handles specification specific (for example, RSA signatures for TLS or +X.509), pre-signing transformation is created. Upon calling a Final() -like +call on such a class, it shall return a descriptor that can be "raw signed" +by the implemented signing primitives.

    The following code illustrates +how to DSA sign an unhashed descriptor, messageToBeSigned given +a CDSAPrivateKey. In this case, the pre-signing transformation +required by the DSA is simply a SHA-1 hash. As a result, CSHA1 is +used as the specification specific, pre-signing transformation class.

    +CDSASigner* signer = CDSASigner::NewLC(dsaPrivateKey); +//As per rules described above, signer does not own dsaPrivateKey +CSHA1* sha1 = CSHA1::NewLC(); +CDSASignature* signature = signer->SignL(sha1->Final(messageToBeSigned)); +//Caller owns signature as per rules described above. +CleanupStack::PopAndDestroy(2, signer); //sha1, signer +CleanupStack::PushL(signature); +

    To subsequently verify given a CDSAPublicKey and +a CDSASignature:

    +CDSAVerifier* verifier = CDSAVerifier::NewLC(dsaPublicKey); +//As per rules described above, verifier does not own dsaPublicKey +CSHA1* sha1 = CSHA1::NewLC(); +TBool result = verifier->VerifyL(sha1->Final(messageToBeVerified), *signature); +CleanupStack::PopAndDestroy(2, verifier); //sha1, verifier +
    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4C9C236D-71A7-5A5D-8C1C-F574DA604AF6.dita --- a/Symbian3/PDK/Source/GUID-4C9C236D-71A7-5A5D-8C1C-F574DA604AF6.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ - - - - - - Asymmetric -ciphers -- HowTo -
    How do I use -the asymmetric cryptographic framework?

    The asymmetric cryptographic -framework consists of the following logically separate concepts:

      -
    1. Key storage classes -(For instance, CRSAPublicKey, CDSAPrivateKey)

    2. -
    3. Cipher transformation -classes (CRSAPKCS1v15Encryptor, CDSASigner)

    4. -
    5. Signature representative -classes (CRSASignature, CDSASignature)

    6. -

    The first and third are simply containers for their respective concepts. -Each implementation of item two is responsible for performing one of the four -primitive operations on some data using a key specified at construction. If -the operation is signing or verification, then the transformation outputs -a signature representative class. On the other hand, in the case of encryption -or decryption, input and output consist of binary descriptor data.

    Before -showing some example code, an important note about object ownership. In general, -unless otherwise stated, the following three rules apply.

      -
    1. All key storage and -signature representative constructors take ownership of objects given -to them (typically RInteger s).

    2. -
    3. All cipher transformation -classes only use objects given to them (typically key storage classes, -signature representatives, and descriptors).

    4. -
    5. Any functions that return -pointers to objects (typically the Signer classes) transfer ownership of -the returned object to the caller.

    6. -

    Sample -code for encryption/decryption

    The following code illustrates -how to encrypt data using an RSA PKCS#1 v1.5 encryptor. It assumes you already -have access to the CRSAPublicKey you wish to encrypt to.

    -CRSAPKCS1v15Encryptor* encryptor = CRSAPKCS1v15Encryptor::NewLC(rsaPublicKey); -//As per rules described above, encryptor does not own rsaPublicKey -HBufC8* encryptedMessage = HBufC8::NewLC(encryptor->MaxOutputLength()); -encryptor->EncryptL(messageToEncrypt, *encryptedMessage); -CleanupStack::Pop(encryptedMessage); -CleanupStack::PopAndDestroy(encryptor); -

    To subsequently decrypt, again presuming access to a CRSAPrivateKey.

    -CRSAPKCS1v15Decryptor* decryptor = CRSAPKCS1v15Decryptor::NewLC(rsaPrivateKey); -//As per rules described above, decryptor does not own rsaPrivateKey -HBufC8* decryptedMessage = HBufC8::NewLC(decryptor->MaxOutputLength()); -encryptor->EncryptL(*decryptedMessage, *encryptedMessage); -CleanupStack::Pop(decryptedMessage); -CleanupStack::PopAndDestroy(decryptor); -

    Sample code -for signing/verifying

    All implemented signature systems (both -signing and verifying) do not perform any manipulation of the input message -prior to performing their internal signing mechanism. For instance, both CRSAPKCS1v15Signer and CDSASigner do -not hash the data to be signed prior to signing it. Some people refer to this -as a "raw sign primitive". The decision to operate this way was taken because -large numbers of higher level standards dictate different ways for the data -to be hashed prior to signing (and similarly for verification) and accomadating -all of them significantly confused the api. Instead it is suggested a class -that handles specification specific (for example, RSA signatures for TLS or -X.509), pre-signing transformation is created. Upon calling a Final() -like -call on such a class, it shall return a descriptor that can be "raw signed" -by the implemented signing primitives.

    The following code illustrates -how to DSA sign an unhashed descriptor, messageToBeSigned given -a CDSAPrivateKey. In this case, the pre-signing transformation -required by the DSA is simply a SHA-1 hash. As a result, CSHA1 is -used as the specification specific, pre-signing transformation class.

    -CDSASigner* signer = CDSASigner::NewLC(dsaPrivateKey); -//As per rules described above, signer does not own dsaPrivateKey -CSHA1* sha1 = CSHA1::NewLC(); -CDSASignature* signature = signer->SignL(sha1->Final(messageToBeSigned)); -//Caller owns signature as per rules described above. -CleanupStack::PopAndDestroy(2, signer); //sha1, signer -CleanupStack::PushL(signature); -

    To subsequently verify given a CDSAPublicKey and -a CDSASignature:

    -CDSAVerifier* verifier = CDSAVerifier::NewLC(dsaPublicKey); -//As per rules described above, verifier does not own dsaPublicKey -CSHA1* sha1 = CSHA1::NewLC(); -TBool result = verifier->VerifyL(sha1->Final(messageToBeVerified), *signature); -CleanupStack::PopAndDestroy(2, verifier); //sha1, verifier -
    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4CC4D912-810B-4542-AFCD-58CEE8E0128C.dita --- a/Symbian3/PDK/Source/GUID-4CC4D912-810B-4542-AFCD-58CEE8E0128C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4CC4D912-810B-4542-AFCD-58CEE8E0128C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,30 +9,27 @@ --> -Open -C libz Example -

    The example demonstrates how to use the libz library to compress a file -and decompress it. The library can compress and decompress any kind of file -(txt, doc, xls, xml, mpeg, ppt, mp3 etc).

    -
    Download

    Click -on the following link to download the example: openclibz.zip

    Click: browse to view the example code.

    -
    Design and -Implementation

    The following sections provide more information -about the steps that the example performs.

    Capabilities

    Program -capabilities are defined in openclibz.mmp: CAPABILITY -None

    Implementation details of EXE

    This example is a -console based application. This application can be launched from the icon -(openclibz) in installed folder and also from eshell. When we launch it through -icon it prompts the user to enter the mode to process. The strategy parameter -is used to select the compression algorithm. For compressing a file, it reads -the file and then compresses it using the API of the libz library and then -stores the compressed content in a (.gz) file. If you want to decompress, -type d. For decompressing a file, it opens the compressed (.gz) file using -libz API's and then reads the content and decompresses it . To check what -happens to the content of the string after compression then type s. Enter -the string you want and see the data in compressed format . This option -is to demonstrate compression of string using libz API's.

    To run this application -through eshell:

    Usage : openclibz [-d] [-f] [-h] [-r] [-1 to -9] [files...] +Open C libz Example +

    The example demonstrates how to use the libz library to compress +a file and decompress it. The library can compress and decompress +any kind of file (txt, doc, xls, xml, mpeg, ppt, mp3 etc).

    +
    Download

    Click on the following link to download the example: openclibz.zip

    Click: browse to view the example code.

    +
    Design +and Implementation

    The following sections provide more +information about the steps that the example performs.

    Capabilities

    Program capabilities are defined in openclibz.mmp: CAPABILITY None

    Implementation +details of EXE

    This example is a console based application. +This application can be launched from the icon (openclibz) in installed +folder and also from eshell. When we launch it through icon it prompts +the user to enter the mode to process. The strategy parameter is used +to select the compression algorithm. For compressing a file, it reads +the file and then compresses it using the API of the libz library +and then stores the compressed content in a (.gz) file. If you want +to decompress, type d. For decompressing a file, it opens the compressed +(.gz) file using libz API's and then reads the content and decompresses +it . To check what happens to the content of the string after compression +then type s. Enter the string you want and see the data in compressed +format . This option is to demonstrate compression of string using +libz API's.

    To run this application through eshell:

    Usage : openclibz [-d] [-f] [-h] [-r] [-1 to -9] [files...] -d : decompress -f : compress with Z_FILTERED -h : compress with Huffman encoding @@ -40,27 +37,27 @@ -1 to -9 : compression level files : absolute path of files

    Some usage tips

    Once you choose compression -process, enter the file name. You should provide absolute path of the file -you want to compress. (drive letter):\[(folder name)\]filename. - To get : on phone you have to press 1 few times. To get on phone you have -to press 1 few times. To get on emulator is bit tricky. If you are lucky -then pressing 1 will get it for you, otherwise change the mode. using "\ BUTTON" -(Just above the enter button in the keyboard) and then try pressing 1. To -press enter on phone we are supposed to press 0 four times.

    Cross -platform usage

    We can compress the file on any platform and uncompress -it on any other platform. For example Unix's gzip files can be compressed -using the example application and decompressed using Unix's gunzip. Compression -can be done in a single step, if the buffers are large enough; or compression -can be done by repeated calls of the compression function. In the second scenario, -application must provide more input and consume the output (providing more -output space) before each call.

    -
    APIs Used

    compress, uncompress, gzopen, gzclose, gzread, gzwrite, gzerror from -libz library

    fopen, fclose, fread, fwrite, mmap, munmap, fstat, unlink, printf, scanf from -libc library

    -
    Building and -Using

    The Symbian -build process describes how to build this example application.

    To -build the example application, go to the openclibz\group directory and build -the application. The definition for the whole application can be found in -the bld.inf file in the group subdirectory of the applications main directory.
    +process, enter the file name. You should provide absolute path of +the file you want to compress. (drive letter):\[(folder +name)\]filename. To get : on phone you have to press +1 few times. To get on phone you have to press 1 few times. To get +on emulator is bit tricky. If you are lucky then pressing 1 will get +it for you, otherwise change the mode. using "\ BUTTON" (Just above +the enter button in the keyboard) and then try pressing 1. To press +enter on phone we are supposed to press 0 four times.

    Cross +platform usage

    We can compress the file on any platform +and uncompress it on any other platform. For example Unix's gzip +files can be compressed using the example application and decompressed +using Unix's gunzip. Compression can be done in a single step, if +the buffers are large enough; or compression can be done by repeated +calls of the compression function. In the second scenario, application +must provide more input and consume the output (providing more output +space) before each call.

    +
    APIs Used

    compress, uncompress, gzopen, gzclose, gzread, gzwrite, gzerror from libz library

    fopen, fclose, fread, fwrite, mmap, munmap, fstat, unlink, printf, scanf from libc library

    +
    Building +and Using

    The Symbian build process describes how to build +this example application.

    To build the example +application, go to the openclibz\group directory and build the application. + The definition for the whole application can be found in the bld.inf +file in the group subdirectory of the applications main directory.
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4CEB52EC-8F08-53B7-A900-AF163316D442.dita --- a/Symbian3/PDK/Source/GUID-4CEB52EC-8F08-53B7-A900-AF163316D442.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4CEB52EC-8F08-53B7-A900-AF163316D442.dita Fri Jul 16 17:23:46 2010 +0100 @@ -28,7 +28,7 @@ as, TCP/IP, are performed by MTMs. The Messaging Framework provides APIs to enable storage of messages in the Message Store. It also provides APIs to manipulate messages in the Message Store.

    - +
    Documentation and examples

    The following sections list tutorials and example applications that can be referred while creating diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4CFFD28E-25B5-5B3F-859F-DF8ADC1DC029_d0e260233_href.png Binary file Symbian3/PDK/Source/GUID-4CFFD28E-25B5-5B3F-859F-DF8ADC1DC029_d0e260233_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4CFFD28E-25B5-5B3F-859F-DF8ADC1DC029_d0e266242_href.png Binary file Symbian3/PDK/Source/GUID-4CFFD28E-25B5-5B3F-859F-DF8ADC1DC029_d0e266242_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4D4CB4DC-9B9A-5256-B949-C5E9F369D9C6.dita --- a/Symbian3/PDK/Source/GUID-4D4CB4DC-9B9A-5256-B949-C5E9F369D9C6.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -help

    abld help ( ( [ options ] | [ commands ] ) | ( command ) )

    This command provides a brief guide to abld command-line syntax.

    abld help options lists the options available with abld.

    abld help commands lists the available commands.

    abld help command displays the syntax for a particular command, and also a brief description of what the command is used for.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4D82B904-71BF-4945-85ED-655AF8879FF9_d0e99434_href.png Binary file Symbian3/PDK/Source/GUID-4D82B904-71BF-4945-85ED-655AF8879FF9_d0e99434_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4D92E302-3145-4453-AFA1-F5C5BDF933F9.dita --- a/Symbian3/PDK/Source/GUID-4D92E302-3145-4453-AFA1-F5C5BDF933F9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4D92E302-3145-4453-AFA1-F5C5BDF933F9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -97,10 +97,19 @@ CWsScreenDevice::SetPalette(), CWsScreenDevice::PaletteAttributes(), and CWsScreenDevice::GetPalette(). -These APIs are not supported. All calls to these -APIs will return KErrNotSupported. If the existing applications using -these APIs check for KErrNotSupported error, will continue to work -without any change. All other applications must be modified and rebuilt. +These APIs are not supported. All calls to these APIs will +return KErrNotSupported. If the existing applications using these +APIs check for KErrNotSupported error, will continue to work without +any change. All other applications must be modified and rebuilt. + + +CDirectScreenAccess, RDirectScreenAccess, and MDirectScreenAccess. +The usage of these Direct Screen Access (DSA) +APIs has changed in Symbian^3 because of the ScreenPlay feature, which +recommends using external surfaces instead of DSA to write to screen. +Refer to DSA +Migration Guide for information on how to use these APIs in +Symbian^3. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4D93A8E2-DB78-5681-BD0E-54B02D92140F.dita --- a/Symbian3/PDK/Source/GUID-4D93A8E2-DB78-5681-BD0E-54B02D92140F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4D93A8E2-DB78-5681-BD0E-54B02D92140F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -25,7 +25,7 @@ interacts with hardware through the Hardware Adaptation Layer (HAL) and abstracts hardware to mobile TV middleware. The diagramatic representation is shown below:

    - +
    API summary

    The Mobile TV DVB-H Receiver HAI component includes the following APIs:

      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4DACC8E6-090F-5FDE-9D67-5B43A9E8C6B2_d0e450805_href.png Binary file Symbian3/PDK/Source/GUID-4DACC8E6-090F-5FDE-9D67-5B43A9E8C6B2_d0e450805_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4DACC8E6-090F-5FDE-9D67-5B43A9E8C6B2_d0e456650_href.png Binary file Symbian3/PDK/Source/GUID-4DACC8E6-090F-5FDE-9D67-5B43A9E8C6B2_d0e456650_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4DB70D45-1E74-5357-9824-566962316E12_d0e139221_href.png Binary file Symbian3/PDK/Source/GUID-4DB70D45-1E74-5357-9824-566962316E12_d0e139221_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4DB70D45-1E74-5357-9824-566962316E12_d0e141470_href.png Binary file Symbian3/PDK/Source/GUID-4DB70D45-1E74-5357-9824-566962316E12_d0e141470_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4DBE998D-9699-5770-8182-929FDCAA7E26_d0e477601_href.png Binary file Symbian3/PDK/Source/GUID-4DBE998D-9699-5770-8182-929FDCAA7E26_d0e477601_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4DBE998D-9699-5770-8182-929FDCAA7E26_d0e483430_href.png Binary file Symbian3/PDK/Source/GUID-4DBE998D-9699-5770-8182-929FDCAA7E26_d0e483430_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4DE6423B-9731-5168-B563-8F263AAF1482_d0e464262_href.png Binary file Symbian3/PDK/Source/GUID-4DE6423B-9731-5168-B563-8F263AAF1482_d0e464262_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4DE6423B-9731-5168-B563-8F263AAF1482_d0e470107_href.png Binary file Symbian3/PDK/Source/GUID-4DE6423B-9731-5168-B563-8F263AAF1482_d0e470107_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4E1D4E5D-7CE6-5A93-9170-BEF2937FC953_d0e239799_href.png Binary file Symbian3/PDK/Source/GUID-4E1D4E5D-7CE6-5A93-9170-BEF2937FC953_d0e239799_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4E1D4E5D-7CE6-5A93-9170-BEF2937FC953_d0e245809_href.png Binary file Symbian3/PDK/Source/GUID-4E1D4E5D-7CE6-5A93-9170-BEF2937FC953_d0e245809_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4E1F04EB-09EA-5354-8EFF-BBC95F44C9AE.dita --- a/Symbian3/PDK/Source/GUID-4E1F04EB-09EA-5354-8EFF-BBC95F44C9AE.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -How to use the audio player utility \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4E5B1276-07D1-562A-8EE8-21DDE78D2CE5.dita --- a/Symbian3/PDK/Source/GUID-4E5B1276-07D1-562A-8EE8-21DDE78D2CE5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4E5B1276-07D1-562A-8EE8-21DDE78D2CE5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -100,7 +100,7 @@ the system state is transitioned from ‘Normal’ to ‘Shutdown’.

      System state transition from 'Normal' to 'Shutdown' - +

      Symbian defined system state transitions

      The following events cause transitions in Symbian defined system state:

      1. Undefined -> Start-up:

        In diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4E6520E8-4BF1-55D1-B643-81B8D2816D1D_d0e285809_href.png Binary file Symbian3/PDK/Source/GUID-4E6520E8-4BF1-55D1-B643-81B8D2816D1D_d0e285809_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4E6520E8-4BF1-55D1-B643-81B8D2816D1D_d0e291801_href.png Binary file Symbian3/PDK/Source/GUID-4E6520E8-4BF1-55D1-B643-81B8D2816D1D_d0e291801_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4EE4E79E-F6D5-5F14-BA8D-4DD10D229B74.dita --- a/Symbian3/PDK/Source/GUID-4EE4E79E-F6D5-5F14-BA8D-4DD10D229B74.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4EE4E79E-F6D5-5F14-BA8D-4DD10D229B74.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,10 +9,80 @@ --> -Handling BLOBs

        This document introduces you to Binary Large Objects (BLOB) in Symbian SQL.

        Purpose

        A BLOB is an SQL database container object for binary large objects, usually images or audio files but may also include other binary files such as an application executable.

        Features of SQL BLOB

        BLOBS offer the following features:

        • read from and write to BLOB objects in a RAM-efficient manner -- enables an overall reduction of RAM usage,

        • reduced read latency (compared to previous versions) -- improving the responsiveness of client applications,

        • larger BLOB objects can be stored and retrieved (>16Mb). Before version 9.5 there was a limit on the size of a BLOB object supported by Symbian SQL. This limit was dictated by the amount of server-side RAM available. Applications that needed to store large BLOB objects in their database (for example, MP3 files) are no longer restricted by this limit.

        • The maximum possible length for a blob is 2147483647 bytes.

        Streaming

        The classes RSqlBlobReadStream and RSqlBlobWriteStream allow direct access to BLOB content. These classes do not require the whole BLOB to be loaded into RAM before streaming can begin. These classes match the standard Symbian RReadStream /RWriteStream idiom.

        The server intelligently chooses the size of an internal buffer to incrementally read/write the requested blob data in blocks. The size of the buffer is calculated based on a combination of the size of the request and the value of aBlockSizeHint (if specified).

        aBlockSizeHint is provided by the client to provide a hint to the server about the size of block that it is intending to use to read/write the blob data. This is advance information about the intended behaviour of the client that the server may use to its benefit to read/write the blob data.

        Whole-blob access

        The class TSqlBlob allows one-shot storage and retrieval of whole blobs. This class avoids the need for double buffering of the blob in both the client and the server.

        there are two versions of the BLOB get functions. One is non-leaving and the other is leaving.

        Use the non-leaving variant when the client knows that the blob will either:

        • all be of a fixed size,

        • not exceed an upper size limit.

        In these situations the client can pre-allocate a buffer and avoid the overhead of memory allocation.

        Use the leaving variant when the client does not have prior knowledge of the BLOB size (or if the size varies wildly). In this situation the server allocates a buffer and passes ownership to the client.

        RAM benefits

        Symbian SQL has been improved to eliminate the need for a 2 MB server-side buffer. Data is transferred to the client in blocks so for example, the server-side buffer may be reduced to 32 KB.

        Previous to version 9.5, both whole-blob and streaming use cases require up to 3MB of server-side RAM. The page cache size is capped at 1MB due to a built-in limiting mechanism. But, a 2MB buffer must be allocated to hold the entire blob. A critical side-effect of this is that, due to heap exhaustion, there is a maximum limit on the size of a blob object that can be written to or read from a database.

        In the following diagram the top two sections illustrate whole-blob retrieval in which the entire blob is retrieved in one go using RSqlStatement. The bottom section illustrates streaming retrieval in which the blob is retrieved in blocks specified by the client using RSqlColumnReadStream.

        - Reading a 2MB blob. -
        SQL Security - Policies Database file - format SQLite - Modules Free Space - Reclaimation SQL Overview \ No newline at end of file +Handling BLOBs +

        This document introduces you to Binary Large Objects (BLOB) in +Symbian SQL.

        +
        Purpose

        A BLOB is an SQL database container +object for binary large objects, usually images or audio files but +may also include other binary files such as an application executable.

        +
        Features of SQL BLOB

        BLOBS offer the following +features:

          +
        • read from and +write to BLOB objects in a RAM-efficient manner -- enables an overall +reduction of RAM usage,

        • +
        • reduced read +latency (compared to previous versions) -- improving the responsiveness +of client applications,

        • +
        • larger BLOB +objects can be stored and retrieved (>16Mb). Before version 9.5 there +was a limit on the size of a BLOB object supported by Symbian SQL. +This limit was dictated by the amount of server-side RAM available. +Applications that needed to store large BLOB objects in their database +(for example, MP3 files) are no longer restricted by this limit.

        • +
        • The maximum +possible length for a blob is 2147483647 bytes.

        • +
        +
        Streaming

        The classes RSqlBlobReadStream and RSqlBlobWriteStream allow direct access to +BLOB content. These classes do not require the whole BLOB to be loaded +into RAM before streaming can begin. These classes match the standard +Symbian RReadStream /RWriteStream idiom.

        The server intelligently chooses the size of an internal +buffer to incrementally read/write the requested blob data in blocks. +The size of the buffer is calculated based on a combination of the +size of the request and the value of aBlockSizeHint (if specified).

        aBlockSizeHint is provided +by the client to provide a hint to the server about the size of block +that it is intending to use to read/write the blob data. This is advance +information about the intended behaviour of the client that the server +may use to its benefit to read/write the blob data.

        +
        Whole-blob access

        The class TSqlBlob allows one-shot storage and retrieval of whole blobs. This class +avoids the need for double buffering of the blob in both the client +and the server.

        there are two versions of the BLOB get functions. +One is non-leaving and the other is leaving.

        Use the non-leaving variant when the client knows that the blob will +either:

          +
        • all be of a +fixed size,

        • +
        • not exceed an +upper size limit.

        • +

        In these situations the client can pre-allocate a buffer +and avoid the overhead of memory allocation.

        Use the leaving +variant when the client does not have prior knowledge of the BLOB +size (or if the size varies wildly). In this situation the server +allocates a buffer and passes ownership to the client.

        +
        RAM benefits

        Symbian SQL has been improved +to eliminate the need for a 2 MB server-side buffer. Data is transferred +to the client in blocks so for example, the server-side buffer may +be reduced to 32 KB.

        Previous to version 9.5, both whole-blob +and streaming use cases require up to 3MB of server-side RAM. The +page cache size is capped at 1MB due to a built-in limiting mechanism. +But, a 2MB buffer must be allocated to hold the entire blob. A critical +side-effect of this is that, due to heap exhaustion, there is a maximum +limit on the size of a blob object that can be written to or read +from a database.

        In the following diagram the top two sections +illustrate whole-blob retrieval in which the entire blob is retrieved +in one go using RSqlStatement. The bottom section +illustrates streaming retrieval in which the blob is retrieved in +blocks specified by the client using RSqlColumnReadStream.

        + Reading a 2MB blob. + +
        +
        +SQL +Security Policies +Database +file format +SQLite + Modules + Reclaiming +Free Space +SQL +Overview +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4F273D6C-073F-580B-8B1E-E23BECEFCAB1_d0e424722_href.png Binary file Symbian3/PDK/Source/GUID-4F273D6C-073F-580B-8B1E-E23BECEFCAB1_d0e424722_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4F273D6C-073F-580B-8B1E-E23BECEFCAB1_d0e430567_href.png Binary file Symbian3/PDK/Source/GUID-4F273D6C-073F-580B-8B1E-E23BECEFCAB1_d0e430567_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4F5DCA9A-E535-54B4-B8B2-30549AC12A51_d0e264523_href.png Binary file Symbian3/PDK/Source/GUID-4F5DCA9A-E535-54B4-B8B2-30549AC12A51_d0e264523_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4F5DCA9A-E535-54B4-B8B2-30549AC12A51_d0e270523_href.png Binary file Symbian3/PDK/Source/GUID-4F5DCA9A-E535-54B4-B8B2-30549AC12A51_d0e270523_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4F8197C3-D61B-579A-81E9-ED6397EB5645_d0e456038_href.png Binary file Symbian3/PDK/Source/GUID-4F8197C3-D61B-579A-81E9-ED6397EB5645_d0e456038_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4F8197C3-D61B-579A-81E9-ED6397EB5645_d0e461883_href.png Binary file Symbian3/PDK/Source/GUID-4F8197C3-D61B-579A-81E9-ED6397EB5645_d0e461883_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4F879832-8425-5C56-B3FE-4C4592EBB6A5_d0e514747_href.png Binary file Symbian3/PDK/Source/GUID-4F879832-8425-5C56-B3FE-4C4592EBB6A5_d0e514747_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4F879832-8425-5C56-B3FE-4C4592EBB6A5_d0e522211_href.png Binary file Symbian3/PDK/Source/GUID-4F879832-8425-5C56-B3FE-4C4592EBB6A5_d0e522211_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4F9B3746-1FB2-5F3D-BD2C-189250C2C59F-GENID-1-12-1-24-1-1-8-1-4-1-4-1-4-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-4F9B3746-1FB2-5F3D-BD2C-189250C2C59F-GENID-1-12-1-24-1-1-8-1-4-1-4-1-4-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Secure Sockets InterfaceThis section describes the Secure sockets interface.
        Description of the interface

        Secure Sockets allow the user to transport data over a public network. It provides both parties the ability to authenticate and to encrypt the data being sent.

        Secure sockets implement the MSecureSocket interface and its methods to:

        • create and close a secure connection

        • specify and query the certificates used in a connection

        • send and receive data

        This interface supports implementations that act in both the client modes, that is, connecting to a remote secure server, and acting as a server for remote clients.

        Secure socket implementations are used to secure an open and a connected socket. An application creates an instance of the CSecureSocket with reference to a connected RSocket and a protocol name to use. The CSecureSocket finds, loads, and creates a secure socket of the implementation. The CSecureSocket owns an instance of the CSecureSocket implementation object and acts as a proxy, sending any method calls to the actual implementation object.

        Protocol implementations are not directly exposed to applications. From the applications, the CSecureSocket class hides the MSecureSocket class and the plug-in nature of the implementations. Secure sockets are created through the static CSecureSocket::NewL() method.

        A secure socket plug-in is provided for TLS1.0 or SSL3.0.

        Protocol implementations

        Protocol implementations use the methods of the CSecureSocket to:

        • set a secure socket

        • set or get the current server certificate

        • set or get a protocol or version, if the implementations supports more than one

        • set or get the supported cipher suites. Note: Cipher suites are methods of encrypting the text.

        Sockets Server
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4F9B3746-1FB2-5F3D-BD2C-189250C2C59F-GENID-1-12-1-24-1-1-8-1-5-1-4-1-4-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-4F9B3746-1FB2-5F3D-BD2C-189250C2C59F-GENID-1-12-1-24-1-1-8-1-5-1-4-1-4-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Secure Sockets InterfaceThis section describes the Secure sockets interface.
        Description of the interface

        Secure Sockets allow the user to transport data over a public network. It provides both parties the ability to authenticate and to encrypt the data being sent.

        Secure sockets implement the MSecureSocket interface and its methods to:

        • create and close a secure connection

        • specify and query the certificates used in a connection

        • send and receive data

        This interface supports implementations that act in both the client modes, that is, connecting to a remote secure server, and acting as a server for remote clients.

        Secure socket implementations are used to secure an open and a connected socket. An application creates an instance of the CSecureSocket with reference to a connected RSocket and a protocol name to use. The CSecureSocket finds, loads, and creates a secure socket of the implementation. The CSecureSocket owns an instance of the CSecureSocket implementation object and acts as a proxy, sending any method calls to the actual implementation object.

        Protocol implementations are not directly exposed to applications. From the applications, the CSecureSocket class hides the MSecureSocket class and the plug-in nature of the implementations. Secure sockets are created through the static CSecureSocket::NewL() method.

        A secure socket plug-in is provided for TLS1.0 or SSL3.0.

        Protocol implementations

        Protocol implementations use the methods of the CSecureSocket to:

        • set a secure socket

        • set or get the current server certificate

        • set or get a protocol or version, if the implementations supports more than one

        • set or get the supported cipher suites. Note: Cipher suites are methods of encrypting the text.

        Sockets Server
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4F9B3746-1FB2-5F3D-BD2C-189250C2C59F-GENID-1-12-1-24-1-1-9-1-4-1-4-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-4F9B3746-1FB2-5F3D-BD2C-189250C2C59F-GENID-1-12-1-24-1-1-9-1-4-1-4-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Secure Sockets InterfaceThis section describes the Secure sockets interface.
        Description of the interface

        Secure Sockets allow the user to transport data over a public network. It provides both parties the ability to authenticate and to encrypt the data being sent.

        Secure sockets implement the MSecureSocket interface and its methods to:

        • create and close a secure connection

        • specify and query the certificates used in a connection

        • send and receive data

        This interface supports implementations that act in both the client modes, that is, connecting to a remote secure server, and acting as a server for remote clients.

        Secure socket implementations are used to secure an open and a connected socket. An application creates an instance of the CSecureSocket with reference to a connected RSocket and a protocol name to use. The CSecureSocket finds, loads, and creates a secure socket of the implementation. The CSecureSocket owns an instance of the CSecureSocket implementation object and acts as a proxy, sending any method calls to the actual implementation object.

        Protocol implementations are not directly exposed to applications. From the applications, the CSecureSocket class hides the MSecureSocket class and the plug-in nature of the implementations. Secure sockets are created through the static CSecureSocket::NewL() method.

        A secure socket plug-in is provided for TLS1.0 or SSL3.0.

        Protocol implementations

        Protocol implementations use the methods of the CSecureSocket to:

        • set a secure socket

        • set or get the current server certificate

        • set or get a protocol or version, if the implementations supports more than one

        • set or get the supported cipher suites. Note: Cipher suites are methods of encrypting the text.

        Sockets Server
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4FC82562-9163-45F5-9E14-DA0AB6B5E54C.dita --- a/Symbian3/PDK/Source/GUID-4FC82562-9163-45F5-9E14-DA0AB6B5E54C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4FC82562-9163-45F5-9E14-DA0AB6B5E54C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,7 +20,7 @@ the interaction style or language settings are not affected.

        Simplified illustration of the UI theme concept - +

        UI themes give the UI theme designer a freedom to design a unique GUI, and by designing backgrounds and icons, the result can be very different from diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4FDD1F7B-1A4E-5389-A0A4-22727CD42B5B_d0e379956_href.png Binary file Symbian3/PDK/Source/GUID-4FDD1F7B-1A4E-5389-A0A4-22727CD42B5B_d0e379956_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4FDD1F7B-1A4E-5389-A0A4-22727CD42B5B_d0e385809_href.png Binary file Symbian3/PDK/Source/GUID-4FDD1F7B-1A4E-5389-A0A4-22727CD42B5B_d0e385809_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-4FE5CA06-8C3A-4AC1-80CE-4418AC55937A.dita --- a/Symbian3/PDK/Source/GUID-4FE5CA06-8C3A-4AC1-80CE-4418AC55937A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-4FE5CA06-8C3A-4AC1-80CE-4418AC55937A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -19,8 +19,8 @@ time from the name / value pairs.

        The following are the steps to encode the WSP header:

        - - + + Create a header encoder object. //creates a pointer to CWspHeaderEncoder object CWspHeaderEncoder* primEncoder = CWspHeaderEncoder::NewLC(); diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5012D63B-4353-5616-BBFB-DB04DAF71679.dita --- a/Symbian3/PDK/Source/GUID-5012D63B-4353-5616-BBFB-DB04DAF71679.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5012D63B-4353-5616-BBFB-DB04DAF71679.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,57 +1,49 @@ - - - - - -XmlExample: -Using the XML framework to parse an XML file -
        Download

        Click -on the following link to download the example: XmlExample.zip

        Click:browse to view the example code.

        -
        Introduction

        This example application demonstrates -the usage of the XML framework API to parse XML and WBXML -files.

        The overview contains the following sections:

          -
        • Description

        • -
        • Class summary

        • -
        • Build

        • -
        -
        Description

        The -example application demonstrates, how to use the Xml framework -to parse XML and WBXML files. It takes a valid XML file with a DTD (Document -Type Declaration) definining its structure, and a WBXML (WAP Binary XML format) -file as input. You can generate a WBXML file from an XML file using any freeware -converters. The application's bld.inf file specifies -the target path to which all the three files (XML, DTD, WBXML) need to be -exported.

        The application implements all the pure virtual functions -of the Xml::MContentHandler class, which is a client interface -to the Xml framework. These functions inform the client -application about the XML element being parsed, its content, parser errors -if any and so on.

        The XML and WBXML files are parsed using an object -of the Xml::CParser class. The parser object is configured -to report namespace mappings to the client application, using the function Xml::CParser::EnableFeature().

        The -application first opens a file session using RFs to read -the XML and WBXML files. Then, the Xml::ParseL() function -is called to start parsing the files. The application parses the XML file -followed by the WBXML file. While these files are being parsed, status messages -are printed to the console by the callback functions as and when they are -invoked.

        For demonstration purposes, the XML file is parsed twice, -once by the Xml::CParser object created using the MIME -type and again by the CParser object created using match -data criteria. The match data criteria are specified using an object of the Xml::CMatchData class, -which is passed to the Xml::CParser::NewLC() function while -creating the parser object. This will return a CParser object -that matches the specified MIME type, variant and so on.

        -
        Class summary

        Xml::MContentHandler Xml::RDocumentParameters Xml::RAttributeArray Xml::CParserXml::CMatchData

        -
        Build

        The Symbian platform build process describes -how to build an application.

        The XmlExample builds -an executable called xmlexample.exe in the standard location -(\epoc32\release\winscw\<build_variant> for CodeWarrior). -After launching the executable, depending on the emulator you are using, you -may need to task away from the application launcher/shell screen to view the -console.

        + + + + + +XmlExample: Using the XML framework to parse an XML file +
        Download

        Click on the following link to download the example: XmlExample.zip

        Click:browse to view the example code.

        +
        Introduction

        This example application demonstrates +the usage of the XML framework API to parse XML +and WBXML files.

        The overview contains the following sections:

          +
        • Description

        • +
        • Class summary

        • +
        • Build

        • +
        +
        Description

        The example application demonstrates, how to use the Xml framework to parse XML and WBXML files. It takes a +valid XML file with a DTD (Document Type Declaration) definining its +structure, and a WBXML (WAP Binary XML format) file as input. You +can generate a WBXML file from an XML file using any freeware converters. +The application's bld.inf file specifies the +target path to which all the three files (XML, DTD, WBXML) need to +be exported.

        The application implements all the pure virtual +functions of the Xml::MContentHandler class, which +is a client interface to the Xml framework. These +functions inform the client application about the XML element being +parsed, its content, parser errors if any and so on.

        The XML +and WBXML files are parsed using an object of the Xml::CParser class. The parser object is configured to report namespace mappings +to the client application, using the function Xml::CParser::EnableFeature().

        The application first opens a file session using RFs to read the XML and WBXML files. Then, the Xml::ParseL() function is called to start parsing the files. +The application parses the XML file followed by the WBXML file. While +these files are being parsed, status messages are printed to the console +by the callback functions as and when they are invoked.

        For +demonstration purposes, the XML file is parsed twice, once by the Xml::CParser object created using the MIME type and again +by the CParser object created using match data criteria. +The match data criteria are specified using an object of the Xml::CMatchData class, which is passed to the Xml::CParser::NewLC() function while creating the parser +object. This will return a CParser object that matches +the specified MIME type, variant and so on.

        +
        Class +summary

        Xml::MContentHandler Xml::RDocumentParameters Xml::RAttributeArray Xml::CParserXml::CMatchData

        +
        Build

        The Symbian platform build process describes how to build an +application.

        The XmlExample builds an executable called xmlexample.exe in +the standard location (\epoc32\release\winscw\<build_variant> for CodeWarrior). After launching the executable, depending on the +emulator you are using, you may need to task away from the application +launcher/shell screen to view the console.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-50254C2F-57B6-58C4-911F-294EF2B79C04.dita --- a/Symbian3/PDK/Source/GUID-50254C2F-57B6-58C4-911F-294EF2B79C04.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-50254C2F-57B6-58C4-911F-294EF2B79C04.dita Fri Jul 16 17:23:46 2010 +0100 @@ -43,7 +43,7 @@
        Architectural relationships

        The following diagram shows the relationships between the Khronos rendering APIs.

        Dependencies between the Khronos rendering components - +
        Graphics diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-502C26EB-BB1F-547C-B93B-8A516D545561_d0e456815_href.png Binary file Symbian3/PDK/Source/GUID-502C26EB-BB1F-547C-B93B-8A516D545561_d0e456815_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-502C26EB-BB1F-547C-B93B-8A516D545561_d0e462660_href.png Binary file Symbian3/PDK/Source/GUID-502C26EB-BB1F-547C-B93B-8A516D545561_d0e462660_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5042997F-4B8C-538D-B1E0-DD82F5283BB6.dita --- a/Symbian3/PDK/Source/GUID-5042997F-4B8C-538D-B1E0-DD82F5283BB6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5042997F-4B8C-538D-B1E0-DD82F5283BB6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -26,7 +26,7 @@ of characters from Chinese and English typefaces.

        Figure 1: An example linked typeface that contains Chinese and English characters - +

        Once a linked typeface has been successfully created, fonts can be derived from it and rasterized in just the same way as from a non-linked typeface. Similarly clients request a font from a linked typeface in the same @@ -91,12 +91,12 @@ and Bitmap Server.

        Figure 2: The linked typeface creation process - +

        The following diagram represents the structure of the specification for the Chinese - English example shown in Figure 1 above.

        Figure 3: The structure of the specification for the Chinese - English example. - +

        See Creating a Linked Typeface for more information.

    Related APIs

    The following table shows the linked diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-504C5CD8-DF83-5657-9D38-E94151C84802_d0e448529_href.png Binary file Symbian3/PDK/Source/GUID-504C5CD8-DF83-5657-9D38-E94151C84802_d0e448529_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-504C5CD8-DF83-5657-9D38-E94151C84802_d0e454374_href.png Binary file Symbian3/PDK/Source/GUID-504C5CD8-DF83-5657-9D38-E94151C84802_d0e454374_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-504E4334-FDA9-5982-8BF7-509D019AFD4C_d0e536419_href.jpg Binary file Symbian3/PDK/Source/GUID-504E4334-FDA9-5982-8BF7-509D019AFD4C_d0e536419_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-504E4334-FDA9-5982-8BF7-509D019AFD4C_d0e543879_href.jpg Binary file Symbian3/PDK/Source/GUID-504E4334-FDA9-5982-8BF7-509D019AFD4C_d0e543879_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-504EB40B-AC98-5AB2-9263-185887C29A7E.dita --- a/Symbian3/PDK/Source/GUID-504EB40B-AC98-5AB2-9263-185887C29A7E.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,161 +0,0 @@ - - - - - -Searching -for an IAP Record by Name and Loading the Associated Service and the Bearer -Table: TutorialThis tutorial shows you how to search for a Symbian platform defined -Internet Access Points Configuration (IAP) record by name. The tutorial, then -shows you how load the connected service and the bearer table. - - -

    Before you start, -you must understand:

      -
    • the general concept -of the Comms Database

    • -
    • the specific concept -of fields, records, links and tables

    • -
    • how to write and build -application code to run on Symbian platform

    • -
    -

    This tutorial shows -you:

      -
    • how to search the Internet -Access Points Configuration table for a record defined by name. This table -is also called the IAP table

    • -
    • how to load the connected -service.

    • -
    • how to load the connected -bearer table.

    • -

    The principles that apply here also apply to the other Symbian platform -defined tables.

    - -Make sure that you -have created a session. - -Create an empty -IAP record in the tool or application process. - -You create a CMDBRecordSet <T> object -and specify CCDIAPRecord as the template -parameter. - -Symbian platform defines the CCDIAPRecord class to -represent a IAP record. The class is a schema for the record. The class defines -the fields and links that make a IAP record. -Symbian platform defines unique -numeric Id s for Symbian platform defined tables. The symbol KCDTIdIAPRecord also defines the value of this -Id for records in the IAP table. The Id allows the CommsDat API to get the -record from the Comms Database. -To work with other Symbian platform defined tables, use the correct -class name and the correct unique numeric Id values. The Reference section -contains a list of all Symbian platform defined tables. -... - -// This code fragment assumes that a session with the Comms Database has been created. -// iDb is a pointer to a CMDBSession object -... - -// When we search by Name or Id, there can be only one record to be returned -// Create an empty IAP record. -// -// Note: -// 1. the template parameter CCDIAPRecord defines -// the "IAP" record type. -// 2. to create a record, you use a factory function and pass the unique -// numeric Id KCDTIdIAPRecord as a parameter to the constructor. -// - -CCDIAPRecord* ptrIAPRecord = - static_cast<CCDIAPRecord *>(CCDRecordBase::RecordFactoryL(KCDTIdIAPRecord)); -... - -Define the name -of the IAP record to be found and set the name in IAP record. Do the search -for the record in the Comms Database. - -In this tutorial, the name of the IAP record is NTRas with Null Modem. - -Use the assignment operator to add the data to a field. A field that -has type T accepts a type T item as the right-hand argument -of an assignment call. - -A descriptor field needs an additional call to set the size of the descriptor. -Call SetMaxLengthL() to set the size of the descriptor. This -function is a member of the field class CMDBField <TDesC>. -Internally, the function causes the allocation of a descriptor. You must set -the size of the descriptor before you assign the data. You can also use the SetL() function. -This function sets the length and assigns the data. The function is a member -of the field class CMDBField <TDesC>. -... -// Define the name of the IAP record. -_LIT(KMyIap, "NTRas with Null Modem"); - -// Either -ptrIAPRecord->iRecordName.SetMaxLengthL(KMyIap().Length()); -ptrIAPRecord->iRecordName = KMyIap; - -// Or -ptrIAPRecord->iRecordName.SetL(KMyIap); - - -// Search the Comms Database -if(ptrIAPRecord->FindL(*iDb)) - { - // Found a matching record - ... - } - -... - -Load the NTRas with -Null Modem service and the associated bearer table. -... -// Search the Comms Database -if(ptrIAPRecord->FindL(*iDb)) - { - // Found a matching record - - // Now load the the associated service and bearer tables, - // The variables iService,iBearer, etc - // are links that point to other records. These links have a "Value" and - // "iLinkedRecord". - // - // The "Value" represent the id of the target field,and gets initialized along with the - // parent record(ptrIAPRecord). When we explictly call load on these LinkedFields, - // the "iLinkedRecord" pointer points to the appropriate object. - // - // The "iLinkedRecord" pointer is owned by the parent record and gets - // deleted along with it.THis means that it must be set to NULL - // if the user wants to take ownership. - - ptrIAPRecord->iService.LoadL(*iDb); - ptrIAPRecord->iBearer.LoadL(*iDb); - - // Take ownership of the loaded service record cache - CCDServiceRecordBase* ptrService = - static_cast< CCDServiceRecordBase *> (ptrIAPRecord->iService.iLinkedRecord); - (ptrIAPRecord->iService).iLinkedRecord = NULL; - - // Deleting ptrIAPRecord also deletes all the loaded iLinkedRecord - // pointers it owns unless set to null. - - delete ptrIAPRecord; - - //delete the service view. - delete ptrService; - } -... - - - -Comms Database - concepts - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5059C3F9-1CEA-5DF3-914A-B99376570242_d0e479349_href.jpg Binary file Symbian3/PDK/Source/GUID-5059C3F9-1CEA-5DF3-914A-B99376570242_d0e479349_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5059C3F9-1CEA-5DF3-914A-B99376570242_d0e485178_href.jpg Binary file Symbian3/PDK/Source/GUID-5059C3F9-1CEA-5DF3-914A-B99376570242_d0e485178_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-50930F20-0F6D-5FF6-A476-59F221DF5CD4_d0e459122_href.png Binary file Symbian3/PDK/Source/GUID-50930F20-0F6D-5FF6-A476-59F221DF5CD4_d0e459122_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-50930F20-0F6D-5FF6-A476-59F221DF5CD4_d0e464967_href.png Binary file Symbian3/PDK/Source/GUID-50930F20-0F6D-5FF6-A476-59F221DF5CD4_d0e464967_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-50941508-B999-5FCC-B2B9-F29F5F2CA4C1.dita --- a/Symbian3/PDK/Source/GUID-50941508-B999-5FCC-B2B9-F29F5F2CA4C1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -userinclude

    userinclude directory-list

    Use the userinclude statement to define directories to be scanned for files specified in #include statements in source and resource files.

    It may be specified any number of times, and each may have any number of directories.

    When a project is being built, the pre-processor will be invoked specifying all the userinclude and systeminclude directories indicated in these statements. No standard include directories will be searched unless the project links to Win32 libraries under WINS.

    Files included from source code with a line such as

    #include "squash.h"

    will first be searched for in the directory containing the source file, then in the userinclude directories and finally in the systeminclude directories.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-50A38544-8B2A-422D-92AF-2E9358878CFE.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-50A38544-8B2A-422D-92AF-2E9358878CFE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,51 @@ + + + + + +NKern::Lock()This document specifies that the method NKern::Lock() is now obsolete and suggests alternative locking mechanisms. +
    Description +of NKern::Lock()

    This method disables the scheduler and +the IDFC (Immediate Deferred Function Call), so that +the currently running thread cannot be pre-empted.

    This is used +to prevent a thread from being re-entered while it is processing data, +and so that no data will be corrupted as a result.

    +
    The +reason why NKern::Lock() is now obsolete

    The NKern::Lock() method can no longer be used as a means to stop scheduling, since +it only affects the core that the code is running on.

    +
    The +replacement for NKern::Lock()

    This method should be replaced +with one of the following (depending on the circumstances ):

      +
    • DMutex

    • +
    • NFastMutex

    • +
    • Spin +Locks

    • +
    • Atomic +Operations

    • +
    +
    Areas +that could be affected

    At present, the replacement of this +method only affects kernel services to user side code through an executive +call (these are made via the Exec class). This can +occur in the following areas:

      +
    • A DLogicalChannelBase derived driver

    • +
    • A HAL (Hardware Abstraction Layer) handle implementation

    • +
    • Drivers that contain multiple threads

    • +
    • Code which is called back in the context of an unrelated thread. +For example,TTickLink or BSP (Board Support Package) +drivers.

    • +
    +
    +Obsolete +Mechanisms +Spin +Locks +Atomic +Operations +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-50AB1B77-1912-5C73-A1B5-41220E7A2EA5.dita --- a/Symbian3/PDK/Source/GUID-50AB1B77-1912-5C73-A1B5-41220E7A2EA5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-50AB1B77-1912-5C73-A1B5-41220E7A2EA5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -30,7 +30,7 @@

    The other characteristics of a store map follow from this.

    -<image href="GUID-4028CDCF-D2E8-5668-A751-A7CFA86CED46_d0e584453_href.png" placement="inline"/> +<image href="GUID-4028CDCF-D2E8-5668-A751-A7CFA86CED46_d0e633741_href.png" placement="inline"/> </fig> <p>Entries in the store map can be deleted. An entry can be identified either by Swizzle or by stream ID. <codeph>CStoreMap::Unbind()</codeph> deletes an diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-50BBCB9C-F234-5813-A42E-3FCFB0F14B66.dita --- a/Symbian3/PDK/Source/GUID-50BBCB9C-F234-5813-A42E-3FCFB0F14B66.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-50BBCB9C-F234-5813-A42E-3FCFB0F14B66.dita Fri Jul 16 17:23:46 2010 +0100 @@ -25,7 +25,7 @@ server information, meta information, and body content. The following image illustrates a simple HTTP session between a client and a server. </p> <fig id="GUID-784DD05A-B86B-57F0-A2E0-A34E373ABA34"> <title> Simple HTTP Interaction - +

    See Hypertext Transfer Protocol -- HTTP/1.1, RFC 2616 for more details.

    Architectural diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-50BE8F1A-513A-433C-B045-66658FC226D7.dita --- a/Symbian3/PDK/Source/GUID-50BE8F1A-513A-433C-B045-66658FC226D7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-50BE8F1A-513A-433C-B045-66658FC226D7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,32 +9,36 @@ --> <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> -<concept id="GUID-50BE8F1A-513A-433C-B045-66658FC226D7" xml:lang="en"><title>Client/server -communication -

    Inter Process -Communication (IPC) is the basis for client/server architecture. Clients -and servers run in different threads, although not necessarily in different -processes, and communicate through message passing protocol. There are no -direct pointers between the parties, leaving the integrity of the server and -its resources untouched by clients. For more information, see Introduction -to the client/server architecture.

    -

    Communication between the client and the server is managed by Inter-thread data transfer. -Only the server and its clients can decode the parameters of the message. -This is also a security feature, because process boundaries are separators -of memory space, direct pointers to the client's data structures cannot be -delivered. All data not fitting in the provided integers must be represented -as a descriptor, -and an address to the descriptor (or actually a TPckg object) -is delivered within the message. The server then uses safe inter-thread read -and write functions to access the provided descriptor.

    +Client/server communication +

    Inter +Process Communication (IPC) is the basis for client/server +architecture. Clients and servers run in different threads, although +not necessarily in different processes, and communicate through message +passing protocol. There are no direct pointers between the parties, +leaving the integrity of the server and its resources untouched by +clients. For more information, see Introduction to the +client/server architecture.

    +

    Communication between the client and the server is managed by Inter-thread data +transfer. Only the server and its clients can decode the parameters +of the message. This is also a security feature, because process boundaries +are separators of memory space, direct pointers to the client's data +structures cannot be delivered. All data not fitting in the provided +integers must be represented as a descriptor, and an address to the descriptor (or actually a TPckg object) is delivered within the message. +The server then uses safe inter-thread read and write functions to +access the provided descriptor.

    The following figure shows the relationship of the TDesC and TPckg classes.

    -Relationship of a message package and a descriptor class -

    Consider the following issues when implementing the client-side API:

    +Relationship of a message package and a descriptor class +

    Consider the following issues when implementing the client-side +API:

      -
    • Determine if the server is already running with the TFindServer class. If not, then it should be launched.

    • -
    • Once the server is running, create the connection with RSessionBase::CreateSession and make sure there are free message slots available to avoid lost -messages.

    • -
    • When packaging message arguments, make sure they are in a -format that the server understands. For more information, see TIpcArgs.

    • +
    • Determine if the server is already running with the TFindServer class. If not, then it should be +launched.

    • +
    • Once the server is running, create the connection +with RSessionBase::CreateSession and make sure there +are free message slots available to avoid lost messages.

      +
    • +
    • When packaging message arguments, make sure they +are in a format that the server understands. For more information, +see TIpcArgs.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-50CA5439-29A1-426C-83BA-EC048FE86CDE.dita --- a/Symbian3/PDK/Source/GUID-50CA5439-29A1-426C-83BA-EC048FE86CDE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-50CA5439-29A1-426C-83BA-EC048FE86CDE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -19,15 +19,15 @@ it must request the OOM Monitor using the ROomMonitorSession::RequestFreeMemory() method.

    An application can request for free RAM either synchronously or asynchronously.

    - -Create an OOM Monitor + +Create an OOM Monitor session ROomMonitorSession ioomMonitorSession; CleanUpClosePushL(ioomMonitorSession); User::LeaveIfError(ioomMonitorSession.Connect()); -Request for free +Request for free memory can be done in two ways: diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-50CA6507-18AF-58D7-8494-2FECF8FDBDF3.dita --- a/Symbian3/PDK/Source/GUID-50CA6507-18AF-58D7-8494-2FECF8FDBDF3.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ - - - - - -How -to use CapCheck -

    CapCheck is a tool that allows you to compare the capabilities -of binaries within your ROM log with a list of expected capabilities, called -an Expected Capability List. This is to make sure that the applications within -your ROM image have the correct access rights.

    -

    The Expected Capability list is a text file listing the capabilities you -expect to find in your ROM log file. This can be created manually or, as a -starting point, by using the standard output from CapSearch without -specifying any capabilities. To be useful, this seeded list must then be modified -appropriately to include expected capabilities only. All the capabilities -are listed in hexadecimal format.

    -

    All the permissible capabilities are defined in a Symbian Capability List, -which is a file called e32capability.h, located in <EPOCROOT>\epoc32\include.

    -

    To use the CapCheck tool, you need to define the name -and location of the ROM log file, the file listing the expected capabilities, -and the name and location of the Symbian Capability list.

    -

    The results are displayed in a report, in HTML format.

    -
    Command line syntax

    The command line syntax to -be used for CapCheck is shown below.

    >CapCheck.pl --r <rom_log_file> -e <expected_capability_list> -s <Symbian_capability_list> -[-R <HTML_report>]

    Mandatory arguments are -r, -e and -s.

    Arguments

    The following arguments are used.

    - - - -

    -r <rom_log_file>

    -

    The name and location of the ROM log file to be checked, in relation -to the directory where the tool is run from, for example .\input\rom.log. -This is mandatory.

    -
    - -

    -e <expected_capability_list>

    -

    The name of the file listing the capabilities you expect to find -in the ROM. This file is a text file created by you, either manually, or by -using CapSearch. This flag is mandatory.

    -
    - -

    -s <Symbian_capability_list>

    -

    The name of the Symbian Capability List, listing all the capabilities -available to search, and their corresponding values (<EPOCROOT>\epoc32\include\e32capability.h.

    -
    - -

    -R <HTML_report>

    -

    Defines the name of the HTML report to be generated in the working -directory. If not specified, the default name is CapCheckReport.html. -This is optional.

    -
    - -

    -h

    -

    Displays help information (optional).

    -
    - - -

    Example

    A full example of how to use the CapSearch tool -is shown below:

    >CapCheck.pl -r .\input\rom.log -e MyExpectedCapabilityList.txt -s e32capability.h -R results.html
    -
    -CapCheck -report - file format -CapSearch -Guide -CapImportCheck -Guide - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-50F216D0-242A-5796-BDCC-7AAB28535458.dita --- a/Symbian3/PDK/Source/GUID-50F216D0-242A-5796-BDCC-7AAB28535458.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ - - - - - -Features -command syntax -
    Purpose

    The features tool processes -the Feature Database Manager (xml file) and generates the header file, feature -choices obey file and/or features.dat file. The header -file contains feature UIDs. The feature choices obey file is used to create -different ROM images. The features.dat file which is -a binary file, is used as a default configuration file by the Symbian emulator. -The features tool accepts both feature manager and feature -registry database as input, and for the feature registry database, it generates -only features.dat.

    -
    Syntaxfeatures [options] <xml database file> [<xml database file1> <xml database file2>...]

    The following options can be used:

    - - - -Options -Description - - --r[=<destination path>] or --hdrfile[=<destination -path>] -Creates a header file in <destination path> or -in the default path \epoc32\include, if the destination -path is not specified. - - --i[=<destination path>] or --ibyfile[=<destination -path> -Creates an IBY file in <destination path> or in -the default path \epoc32\rom\include\, if the destination -path is not specified. - - --d[=<destination path>] or --datfile[=<destination -path>] -Creates features.dat file in <destination -path> or in the current directory, if the destination path is not -specified. - - --c[=<destination path>] or --convert[=<destination -path>] -Converts the given feature registry database into a feature manager -database (for example, featureregistryname_converted.xml) -in <destination path> or in the current directory, if -the destination path is not specified. The converted file is named as featureregistryname_converted.xml by -default. See Conversion of feature registry DB to feature manager DB. - - --s or --strict -Enables strict mode. - - --v or --verbose -Enables verbose mode. - - --h or --help -Displays help. - - ---version -Displays the version of the tool. - - - -

    The features tool also allows you to specify a combination of options -(for example, features -rcv).

    <xml database -file> can be either a Feature Registry database (featureUIDs.xml) -or a Feature Manager database (featuredatabase.xml)

    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-50FD71BF-2DDA-5E80-9904-82DC90FCE6DD.dita --- a/Symbian3/PDK/Source/GUID-50FD71BF-2DDA-5E80-9904-82DC90FCE6DD.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Resource member initialisation \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5107ABD8-6408-5501-8073-ACAF3719247B.dita --- a/Symbian3/PDK/Source/GUID-5107ABD8-6408-5501-8073-ACAF3719247B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5107ABD8-6408-5501-8073-ACAF3719247B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -81,7 +81,7 @@ and these classes provide the data members the contain the maximum length and the current length of the data.

    - +

    While an RBuf descriptor has similarities to a heap descriptor, it behaves more like a standard 'R' type resource class, i.e. as a handle diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-51177BB6-D906-57BD-91DD-EC263F900225.dita --- a/Symbian3/PDK/Source/GUID-51177BB6-D906-57BD-91DD-EC263F900225.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-51177BB6-D906-57BD-91DD-EC263F900225.dita Fri Jul 16 17:23:46 2010 +0100 @@ -74,4 +74,4 @@ location request Tracking Cancelling a location request Unloading the Bluetooth GPS PSY Default - PSY Positioning Plug-in Information API Location Acquisition API \ No newline at end of file + PSY Positioning Plug-in Information API Location Acquisition API \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5127C80E-EACE-5524-9A75-A0EFB41C2226.dita --- a/Symbian3/PDK/Source/GUID-5127C80E-EACE-5524-9A75-A0EFB41C2226.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5127C80E-EACE-5524-9A75-A0EFB41C2226.dita Fri Jul 16 17:23:46 2010 +0100 @@ -22,7 +22,7 @@ removed. The tail always logically follows the head and the implementation ensures that the tail never overtakes the head.

    - +

    Physically, the buffer is a contiguous block of memory. The implementation provides the appearance of circularity.

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-512D0DA7-0BC2-534F-9233-11F46D285CA6_d0e7711_href.png Binary file Symbian3/PDK/Source/GUID-512D0DA7-0BC2-534F-9233-11F46D285CA6_d0e7711_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-512D0DA7-0BC2-534F-9233-11F46D285CA6_d0e7833_href.png Binary file Symbian3/PDK/Source/GUID-512D0DA7-0BC2-534F-9233-11F46D285CA6_d0e7833_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-51514A4B-0220-557B-9F7A-FB110CEFEF10.dita --- a/Symbian3/PDK/Source/GUID-51514A4B-0220-557B-9F7A-FB110CEFEF10.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-51514A4B-0220-557B-9F7A-FB110CEFEF10.dita Fri Jul 16 17:23:46 2010 +0100 @@ -457,7 +457,7 @@ checked. In practice you need to do so.

    Shared chunks implementation - +

    Device driver (kernel) side

    This is example code snippet shows the device driver side handling of the request made by the user-side to open handles on two shared chunks.

    The request is handled by the OpenIoChunks() function diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-516D2E22-F5C0-56FE-ABDA-948F01CD50DB_d0e317288_href.png Binary file Symbian3/PDK/Source/GUID-516D2E22-F5C0-56FE-ABDA-948F01CD50DB_d0e317288_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-516D2E22-F5C0-56FE-ABDA-948F01CD50DB_d0e323278_href.png Binary file Symbian3/PDK/Source/GUID-516D2E22-F5C0-56FE-ABDA-948F01CD50DB_d0e323278_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-517D9795-88BC-5959-9384-36F132AE634C_d0e175702_href.png Binary file Symbian3/PDK/Source/GUID-517D9795-88BC-5959-9384-36F132AE634C_d0e175702_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-517D9795-88BC-5959-9384-36F132AE634C_d0e181771_href.png Binary file Symbian3/PDK/Source/GUID-517D9795-88BC-5959-9384-36F132AE634C_d0e181771_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-518FC822-AF10-57E8-990E-BB03C2D6ACBE_d0e589136_href.png Binary file Symbian3/PDK/Source/GUID-518FC822-AF10-57E8-990E-BB03C2D6ACBE_d0e589136_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-518FC822-AF10-57E8-990E-BB03C2D6ACBE_d0e617030_href.png Binary file Symbian3/PDK/Source/GUID-518FC822-AF10-57E8-990E-BB03C2D6ACBE_d0e617030_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-51B0D0A9-C9FA-59DA-82B1-5834980CB35D_d0e471208_href.jpg Binary file Symbian3/PDK/Source/GUID-51B0D0A9-C9FA-59DA-82B1-5834980CB35D_d0e471208_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-51B0D0A9-C9FA-59DA-82B1-5834980CB35D_d0e477044_href.jpg Binary file Symbian3/PDK/Source/GUID-51B0D0A9-C9FA-59DA-82B1-5834980CB35D_d0e477044_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-51D6F328-82C4-5224-A51B-3EB9D4FF7B4C_d0e551859_href.png Binary file Symbian3/PDK/Source/GUID-51D6F328-82C4-5224-A51B-3EB9D4FF7B4C_d0e551859_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-51D6F328-82C4-5224-A51B-3EB9D4FF7B4C_d0e559315_href.png Binary file Symbian3/PDK/Source/GUID-51D6F328-82C4-5224-A51B-3EB9D4FF7B4C_d0e559315_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-51DDCDA8-8B26-4016-8CBA-BDBF82447096_d0e80642_href.png Binary file Symbian3/PDK/Source/GUID-51DDCDA8-8B26-4016-8CBA-BDBF82447096_d0e80642_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-51DDCDA8-8B26-4016-8CBA-BDBF82447096_d0e84840_href.png Binary file Symbian3/PDK/Source/GUID-51DDCDA8-8B26-4016-8CBA-BDBF82447096_d0e84840_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-51E0F9C6-CFAF-5113-8516-30045B1269C7_d0e139067_href.png Binary file Symbian3/PDK/Source/GUID-51E0F9C6-CFAF-5113-8516-30045B1269C7_d0e139067_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-51E0F9C6-CFAF-5113-8516-30045B1269C7_d0e141316_href.png Binary file Symbian3/PDK/Source/GUID-51E0F9C6-CFAF-5113-8516-30045B1269C7_d0e141316_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-51EDBA17-41AF-58FB-A96F-D5A136F83977.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-51EDBA17-41AF-58FB-A96F-D5A136F83977.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,48 @@ + + + + + +Creating +an Installer

    The Software Installation Framework helps you to create installation +applications for installing software of different types, such as Java, Python +and Flash.

    +

    You can create an installer as an in-process plug-in or as a server-side +plug-in. You should choose the architecture that best meets your specific +requirements.

    An in-process plug-in is loaded as a DLL. +You can create an installer as an in-process plug-in to verify a client's +identity and capabilities. For example, a Java installer may require the ECapabilityWriteUserData capability +to activate or deactivate a MIDlet.

    Server-side plug-ins use the SIF +Transport Library to handle software management requests such as install, +uninstall and so on. This reduces the effort of implementing a server for +handling software management requests by simplifying the sending of software +management requests across a process boundary.

    Notes:

      +
    • For more information +about an ECom plug-ins, see the Plug-in +Framework section.

    • +
    • The SIF Transport Server +is implemented as a transient server. This means that it runs only when it +is in use and terminates when its usage count falls to zero.

    • +
    + +Creating +an installer as an in-process plug-in + +Creating +an installer as a server-side plug-in + + +
    +SIF Overview + +Using the +Application Management Functions +Configuring +the SIF Launcher + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-51F43258-B3D8-5EC9-85EF-67F09499C253.dita --- a/Symbian3/PDK/Source/GUID-51F43258-B3D8-5EC9-85EF-67F09499C253.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-51F43258-B3D8-5EC9-85EF-67F09499C253.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Alarm States

    This section explains the various states of an alarm.

    At a given point of time, alarms can be in only one state, which is represented by TAlarmState. The following diagram is self-explanatory and represents the state transition of alarms:

    State Transition of Alarms -

    See Also

    Types of Alarm

    \ No newline at end of file +

    See Also

    Types of Alarm

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-51F63BFF-CD62-4FFC-929D-ED778642044E_d0e91804_href.png Binary file Symbian3/PDK/Source/GUID-51F63BFF-CD62-4FFC-929D-ED778642044E_d0e91804_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-51F63BFF-CD62-4FFC-929D-ED778642044E_d0e96002_href.png Binary file Symbian3/PDK/Source/GUID-51F63BFF-CD62-4FFC-929D-ED778642044E_d0e96002_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-51FE06D3-48DF-5BEE-A145-FC9D82DC0FB4_d0e247536_href.jpg Binary file Symbian3/PDK/Source/GUID-51FE06D3-48DF-5BEE-A145-FC9D82DC0FB4_d0e247536_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-51FE06D3-48DF-5BEE-A145-FC9D82DC0FB4_d0e253547_href.jpg Binary file Symbian3/PDK/Source/GUID-51FE06D3-48DF-5BEE-A145-FC9D82DC0FB4_d0e253547_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5223D1C1-CBBE-551A-AC57-CD94F9D1B9B6_d0e473205_href.png Binary file Symbian3/PDK/Source/GUID-5223D1C1-CBBE-551A-AC57-CD94F9D1B9B6_d0e473205_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5223D1C1-CBBE-551A-AC57-CD94F9D1B9B6_d0e479041_href.png Binary file Symbian3/PDK/Source/GUID-5223D1C1-CBBE-551A-AC57-CD94F9D1B9B6_d0e479041_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-52298398-A727-5EC2-80A9-4B9704366455_d0e373541_href.png Binary file Symbian3/PDK/Source/GUID-52298398-A727-5EC2-80A9-4B9704366455_d0e373541_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-52298398-A727-5EC2-80A9-4B9704366455_d0e379389_href.png Binary file Symbian3/PDK/Source/GUID-52298398-A727-5EC2-80A9-4B9704366455_d0e379389_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-52743192-B1E0-5B71-B85B-43487F18F412_d0e679659_href.png Binary file Symbian3/PDK/Source/GUID-52743192-B1E0-5B71-B85B-43487F18F412_d0e679659_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-52743192-B1E0-5B71-B85B-43487F18F412_d0e692486_href.png Binary file Symbian3/PDK/Source/GUID-52743192-B1E0-5B71-B85B-43487F18F412_d0e692486_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-52783B69-09FC-4123-849A-79FF61406129_d0e65678_href.png Binary file Symbian3/PDK/Source/GUID-52783B69-09FC-4123-849A-79FF61406129_d0e65678_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-52783B69-09FC-4123-849A-79FF61406129_d0e69901_href.png Binary file Symbian3/PDK/Source/GUID-52783B69-09FC-4123-849A-79FF61406129_d0e69901_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5280EC0E-1A1F-5777-ACB1-CF4791EE2147.dita --- a/Symbian3/PDK/Source/GUID-5280EC0E-1A1F-5777-ACB1-CF4791EE2147.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ - - - - - -start -resource -

    start resource source-file

    -

    [target target-file-name]

    -

    [targetpath targetpath]

    -

    [header | headeronly]

    -

    [lang languages]

    -

    [uid uid-value-1 [uid-value-2] -]

    -

    end

    -

    A start resource section specifies how a resource file -should be compiled.

    -

    source-file specifies the resource source (.rss) -file. The file should be in the current sourcepath directory, -or specified relatively to that directory.

    -

    The optional target target-file specifies -the name of the compiled resource file. The file extension part of the name -does not need to be specified, as this will be automatically supplied. By -default, the target has the same name as the source file.

    -

    The optional targetpath targetpath allows -you to specify the location of the compiled file on the z: drive -(or the emulated Z: drive). By default, the target file -is built into the same directory as the project's executable.

    - In Symbian OS v9.0 and later, platform security requires resources -to be placed into the correct path, either \resource for -resources that are public but read-only, or \private\12345678, -for resources that are private to the application with application Secure_Id 12345678. -This means that this keyword will almost always be used. -

    The optional header keyword causes a resource header (.rsg) -file to be created in epoc32\include\ along with the -resource (.rsc) file. The optional headeronly keyword -causes only the resource header (.rsg) file to be created -in epoc32\include\. The resource header defines identifiers -for the index positions of the structures in the resource file.

    -

    The optional lang keyword specifies language codes for -the resource. This overrides any language settings made for the mmp file using -the lang keyword. -A language code is two-digit code, and is used to complete the extension of -the built resource file: e.g. if the language code is 01, then the extension -is .r01. The default language code is sc. -The resource file is compiled multiple times, once for each language specified.

    -

    The optional uid keyword specifies the values for the -second, and optionally, the third UID of the resource file. See UID2 -and UID3 statements and RResourceFile::UidType() for -more information.

    -

    This example builds the resource foo.rss into z:\private\10001234\foo.rsc.

    start resource foo.rss -TARGETPATH private\10001234 -end -

    This example builds the resource foo.rss into z:\private\10001234\bar.r01, -and creates a header bar.rsg in epoc32\include.

    START RESOURCE foo.rss -TARGET bar -TARGETPATH private\10001234 -HEADER -LANG 01 -UID 0x10002345 0x10003456 -END

    This example builds only the resource header bar.rsg in epoc32\include.

    START RESOURCE foo.rss -HEADERONLY -END
    -
    -Application -resource tools guide -Application -resource tools reference -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-52B2DFDD-063A-5ED4-9A0B-FB3346301482.dita --- a/Symbian3/PDK/Source/GUID-52B2DFDD-063A-5ED4-9A0B-FB3346301482.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -unpageddata

    unpageddata

    Use the unpageddata statement to specify that the data in the executable is not paged. This controls the paging of both heap and stacks for an executable. For more fine-grained control, the paging of heap and stack data can be specified separately during the creation of new threads and processes.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-52B8098A-7695-5EA6-B58F-D730A445C583_d0e304519_href.png Binary file Symbian3/PDK/Source/GUID-52B8098A-7695-5EA6-B58F-D730A445C583_d0e304519_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-52B8098A-7695-5EA6-B58F-D730A445C583_d0e310511_href.png Binary file Symbian3/PDK/Source/GUID-52B8098A-7695-5EA6-B58F-D730A445C583_d0e310511_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-530AB0D9-BE70-5892-BFBA-213687CA62D1_d0e584031_href.png Binary file Symbian3/PDK/Source/GUID-530AB0D9-BE70-5892-BFBA-213687CA62D1_d0e584031_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-530AB0D9-BE70-5892-BFBA-213687CA62D1_d0e633319_href.png Binary file Symbian3/PDK/Source/GUID-530AB0D9-BE70-5892-BFBA-213687CA62D1_d0e633319_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-53212F7A-938B-48F6-BC82-30F7494FF8A7-master.png Binary file Symbian3/PDK/Source/GUID-53212F7A-938B-48F6-BC82-30F7494FF8A7-master.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-53212F7A-938B-48F6-BC82-30F7494FF8A7_d0e105234_href.png Binary file Symbian3/PDK/Source/GUID-53212F7A-938B-48F6-BC82-30F7494FF8A7_d0e105234_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-53313E89-3E23-4004-BD10-771858657DAD_d0e95258_href.png Binary file Symbian3/PDK/Source/GUID-53313E89-3E23-4004-BD10-771858657DAD_d0e95258_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-53313E89-3E23-4004-BD10-771858657DAD_d0e99456_href.png Binary file Symbian3/PDK/Source/GUID-53313E89-3E23-4004-BD10-771858657DAD_d0e99456_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5344014E-A6F4-5243-9D55-BB2C5C78A463_d0e444213_href.png Binary file Symbian3/PDK/Source/GUID-5344014E-A6F4-5243-9D55-BB2C5C78A463_d0e444213_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5344014E-A6F4-5243-9D55-BB2C5C78A463_d0e450058_href.png Binary file Symbian3/PDK/Source/GUID-5344014E-A6F4-5243-9D55-BB2C5C78A463_d0e450058_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-534C1D1A-9450-5A1B-933F-5157039BF069_d0e516976_href.png Binary file Symbian3/PDK/Source/GUID-534C1D1A-9450-5A1B-933F-5157039BF069_d0e516976_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-534C1D1A-9450-5A1B-933F-5157039BF069_d0e524436_href.png Binary file Symbian3/PDK/Source/GUID-534C1D1A-9450-5A1B-933F-5157039BF069_d0e524436_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-535793F2-08F1-5B4E-AD32-783985C53124.dita --- a/Symbian3/PDK/Source/GUID-535793F2-08F1-5B4E-AD32-783985C53124.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -vendorid

    vendorid vendorid

    This keyword specifies the vendor of the executable. For details on how it is possible to use this with platform security.

    In most cases, this VID will be zero, meaning that source of the executable is not required for any security checks.

    The setting is only functional on OS versions based on the EKA2 kernel. For those versions based on EKA1, the keyword is ignored.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5357F135-46B1-5C3F-BD2D-2E71D7BD0046_d0e106550_href.png Binary file Symbian3/PDK/Source/GUID-5357F135-46B1-5C3F-BD2D-2E71D7BD0046_d0e106550_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5357F135-46B1-5C3F-BD2D-2E71D7BD0046_d0e108993_href.png Binary file Symbian3/PDK/Source/GUID-5357F135-46B1-5C3F-BD2D-2E71D7BD0046_d0e108993_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-535954FD-2501-5C80-AD86-AC73A86B18B5.dita --- a/Symbian3/PDK/Source/GUID-535954FD-2501-5C80-AD86-AC73A86B18B5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-535954FD-2501-5C80-AD86-AC73A86B18B5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -26,4 +26,4 @@ ... aStream >> iB; // internalises Swizzle from stream ... - }

    Here, iId is the stream ID containing CClassABC data.

    \ No newline at end of file + }

    Here, iId is the stream ID containing CClassABC data.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-536B2F20-DB19-595C-A465-25CF2E421050_d0e137455_href.png Binary file Symbian3/PDK/Source/GUID-536B2F20-DB19-595C-A465-25CF2E421050_d0e137455_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-536B2F20-DB19-595C-A465-25CF2E421050_d0e139704_href.png Binary file Symbian3/PDK/Source/GUID-536B2F20-DB19-595C-A465-25CF2E421050_d0e139704_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-536DCEAF-3598-4D3E-A812-E266720F350D.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-536DCEAF-3598-4D3E-A812-E266720F350D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,50 @@ + + + + + +Supported codecs +

    In order to play audio and video, devices need compression/decompression +(codec) software or hardware that performs conversions between different +compressed data types. Software codecs are implemented in software +only, whereas hardware-accelerated codecs use hardware to perform +some of the functions for increased processing speed. For more information, +see Video encoding guidelines.

    +

    The multimedia framework (MMF) is a high level interface +for accessing audio and video functionality. Codecs can be accessed +through MMF or through a lower level audio device driver, DevSound.

    +
    To access codecs +

    Use the following Symbian classes:

    +
      +
    • CMMFDevSound enables audio functions +on the device hardware.

    • +
    • CMdaAudioOutputStream

      and CMdaAudioInputStream provide an +interface for playing raw or encoded audio data.

    • +
    • CMMFCodec decodes and encodes between +different coding types, and provides access to MMF software codecs.

      +
    • +
    • CmdaAudioPlayerUtility plays audio +data.

    • +
    • CmdaAudioRecorderUtility plays, +records, and edits audio data.

    • +
    • CVideoPlayerUtility plays sampled +video data.

    • +
    +

    For more information, see:

    +
      +
    • eLearning module on Multimedia Framework

    • +
    • Symbian OS Multimedia Framework and Other Multimedia APIs

    • +
    • Media Device Framework Overview

    • +
    • Supported Audio Codecs

    • +
    • Audio Client Overview

    • +
    • Video Client Overview

    • +
    • Video HAI Overview

    • +
    +
    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-53707903-9A88-409B-80F8-FDF7EF47ACBF.dita --- a/Symbian3/PDK/Source/GUID-53707903-9A88-409B-80F8-FDF7EF47ACBF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-53707903-9A88-409B-80F8-FDF7EF47ACBF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,9 +12,9 @@ CoverFlow: using ScreenPlayThis example application demonstrates creating semi-transparent UI content over OpenVG content that is rendered to a composition surface. This is only possible when ScreenPlay is enabled. -
    Download

    Click on the following link to download the example: GraphicsShell.zip

    Click: browse to view the example code.

    The example +

    Download

    Click on the following link to download the example: GraphicsShell.zip

    Click: browse to view the example code.

    The example is located in the examples\Graphics\CoverFlow directory.

    -
    Description This code implements a 'coverflow' application. It uses OpenVG to +
    Description This code implements a 'coverflow' application. It uses OpenVG to display images while semi-transparent or transparent windows and controls are used to display overlaid content. The application does the following:
      @@ -32,15 +32,15 @@ takes multiple overlaid surfaces as input and creates a single screen buffer. For more information, see Graphics Composition and The ScreenPlay Graphics Architecture.
    -
    Screenshots +
    Screenshots Basic Screenshot - + Screenshot showing ticker and incoming call animation - + Screenshot showing the absence of the mirror surface - +
    Class Summary

    These are the principal classes used in this example:

      @@ -53,18 +53,18 @@
    • CLoader

    Design -and Implementation

    +and Implementation

    UML class diagram - +

    -
    Building -and running

    The Symbian build -process describes how to build an application.

    +
    Building +and running

    The Symbian build process describes how to +build an application.

    Configuration settings for running the example on an Emulator or H4 board
      -
    1. Change the WINDOWMODE parameter to Color16MAP in epoc32\release\winscw\<udeb/urel>\z\system\data\wsini.ini (epoc32\data\z\system\data\wsini.ini on the H4 board).

    2. -
    3. The application +

    4. Change the WINDOWMODE parameter to Color16MAP in epoc32\release\winscw\<udeb/urel>\z\system\data\wsini.ini (epoc32\data\z\system\data\wsini.ini on the H4 board).

    5. +
    6. The application cannot run if ScreenPlay is disabled. If it is not already enabled, you need to enable it. See Enabling the Graphics Architecture Variants for more information.

    7. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5373B575-F284-5774-9C73-2A18C4A912A2.dita --- a/Symbian3/PDK/Source/GUID-5373B575-F284-5774-9C73-2A18C4A912A2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5373B575-F284-5774-9C73-2A18C4A912A2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,7 +9,7 @@ --> -Using Standard Names and MIB enums (SNM)

      Internet names, standard names and MIB enums (SNM) are widely used for character sets. This section describes how to use these names and values during character conversion.

      Before you start, you must understand:

      • Standard names and MIB enums (SNM)

      • Charconv framework conversion APIs.

      Introduction

      To convert text between a foreign encoding and Unicode you must know the UID of the character converter.

      Device creators can create files which map SNM information of character sets to the UIDs of their character converters. Application developers can then use the MIB enum value or an alias of a character set without knowing its UID.

      Procedure

      Creating an SNM source file

      Device creators can create an SNM mapping file in the ROM as follows:

      1. Create an SNM source file using a text editor on a PC and save it. For example d:\charconvfiles\basicsnm.txt.

        This file must define the mapping between Symbian-specific character set UIDs and one or more standard names and MIB enums. Refer to SNM Source File Reference for the file syntax. For information about Symbian UIDs, refer to the charconv.h header file.

        +Using Standard Names and MIB enums (SNM)

        Internet names, standard names and MIB enums (SNM) are widely used for character sets. This section describes how to use these names and values during character conversion.

        Before you start, you must understand:

        • Standard names and MIB enums (SNM)

        • Charconv framework conversion APIs.

        Introduction

        To convert text between a foreign encoding and Unicode you must know the UID of the character converter.

        Device creators can create files which map SNM information of character sets to the UIDs of their character converters. Application developers can then use the MIB enum value or an alias of a character set without knowing its UID.

        Procedure

        Creating an SNM source file

        Device creators can create an SNM mapping file in the ROM as follows:

        1. Create an SNM source file using a text editor on a PC and save it. For example d:\charconvfiles\basicsnm.txt.

          This file must define the mapping between Symbian-specific character set UIDs and one or more standard names and MIB enums. Refer to SNM Source File Reference for the file syntax. For information about Symbian UIDs, refer to the charconv.h header file.

          ... CharacterSet 0x10004cc6 StandardName "US-ASCII" diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-538302A3-F4B2-539C-8048-39E6028CB2A2_d0e259004_href.png Binary file Symbian3/PDK/Source/GUID-538302A3-F4B2-539C-8048-39E6028CB2A2_d0e259004_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-538302A3-F4B2-539C-8048-39E6028CB2A2_d0e265013_href.png Binary file Symbian3/PDK/Source/GUID-538302A3-F4B2-539C-8048-39E6028CB2A2_d0e265013_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5384FBBC-0171-5AD2-8CDA-23548DF99DCE_d0e449052_href.png Binary file Symbian3/PDK/Source/GUID-5384FBBC-0171-5AD2-8CDA-23548DF99DCE_d0e449052_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5384FBBC-0171-5AD2-8CDA-23548DF99DCE_d0e454897_href.png Binary file Symbian3/PDK/Source/GUID-5384FBBC-0171-5AD2-8CDA-23548DF99DCE_d0e454897_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5398C2DC-9AFA-5517-BCBF-5964970B9656_d0e332424_href.png Binary file Symbian3/PDK/Source/GUID-5398C2DC-9AFA-5517-BCBF-5964970B9656_d0e332424_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5398C2DC-9AFA-5517-BCBF-5964970B9656_d0e338396_href.png Binary file Symbian3/PDK/Source/GUID-5398C2DC-9AFA-5517-BCBF-5964970B9656_d0e338396_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-53A2CA11-2ABF-5ED7-A26C-7BE9FD9A1D22_d0e482676_href.png Binary file Symbian3/PDK/Source/GUID-53A2CA11-2ABF-5ED7-A26C-7BE9FD9A1D22_d0e482676_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-53A2CA11-2ABF-5ED7-A26C-7BE9FD9A1D22_d0e488505_href.png Binary file Symbian3/PDK/Source/GUID-53A2CA11-2ABF-5ED7-A26C-7BE9FD9A1D22_d0e488505_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-53A5AC8D-8A43-505F-A0B6-9E34F3CF23BE.dita --- a/Symbian3/PDK/Source/GUID-53A5AC8D-8A43-505F-A0B6-9E34F3CF23BE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-53A5AC8D-8A43-505F-A0B6-9E34F3CF23BE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -Playing AudioThis tutorial describes you how to start playing, pausing and resuming, stopping, retrieving the number of samples in the audio data.

          Before you start, you must:

          • Understand the A3F DevSound Component to which the DevSound library belongs.

          • Understand the architectural relationship of the DevSound. For information see DevSound Overview.

          You can perform various functionality in DevSound audio playing that are listed in the below section.

          Starting Audio Play Pausing and Resuming Audio Play Stopping Audio Play Retrieving Audio Play Samples
          Recording Audio Playing Tones
          \ No newline at end of file +Playing AudioThis tutorial describes you how to start playing, pausing and resuming, stopping, retrieving the number of samples in the audio data.

          Before you start, you must:

          • Understand the A3F DevSound Component to which the DevSound library belongs.

          • Understand the architectural relationship of the DevSound. For information see DevSound Overview.

          You can perform various functionality in DevSound audio playing that are listed in the below section.

          Starting Audio Play Pausing and Resuming Audio Play Stopping Audio Play Retrieving Audio Play Samples
          Recording Audio Playing Tones
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-53C71C87-BFD9-4C9A-8A90-6735494F300C.dita --- a/Symbian3/PDK/Source/GUID-53C71C87-BFD9-4C9A-8A90-6735494F300C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-53C71C87-BFD9-4C9A-8A90-6735494F300C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,7 +17,7 @@ View state.

          Form in the Edit state - +

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-541C8505-335F-5C93-8C0E-96BCEE39D1E6_d0e330699_href.png Binary file Symbian3/PDK/Source/GUID-541C8505-335F-5C93-8C0E-96BCEE39D1E6_d0e330699_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-541C8505-335F-5C93-8C0E-96BCEE39D1E6_d0e336676_href.png Binary file Symbian3/PDK/Source/GUID-541C8505-335F-5C93-8C0E-96BCEE39D1E6_d0e336676_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-54401E25-31F5-58E8-AE8A-276DE5E9C072_d0e205963_href.jpg Binary file Symbian3/PDK/Source/GUID-54401E25-31F5-58E8-AE8A-276DE5E9C072_d0e205963_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-54401E25-31F5-58E8-AE8A-276DE5E9C072_d0e211964_href.jpg Binary file Symbian3/PDK/Source/GUID-54401E25-31F5-58E8-AE8A-276DE5E9C072_d0e211964_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-547161C2-BE55-4248-92EE-63612D64F480.dita --- a/Symbian3/PDK/Source/GUID-547161C2-BE55-4248-92EE-63612D64F480.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-547161C2-BE55-4248-92EE-63612D64F480.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,12 +20,12 @@ below. The plug-ins enable information to pass from the network directly to the GPS hardware.

          Location subsystem and SUPL extension - +

          If a client application wants to obtain a position without waiting for a GPS service a mobile network can provide a cell-based position, using SUPL.

          A cell-based positioning request using SUPL is shown in the following steps.

          - + The client must open RPositionServer and open a connection to the server by calling RPositionServer::Connect(). @@ -33,18 +33,18 @@ then open RPositioner by calling RPositioner::Open() and specify the UID of the Network Proxy PSY. -The client application +The client application sends a location request to the Location subsystem by calling RPositioner::NotifyPositionUpdate(). -The Location subsystem +The Location subsystem forwards the location request to the SUPL Protocol module by calling CLbsNetworkProtocolBase::RequestNetworkLocation(). (In the default configuration SUPL is used for cell-based positioning). -The SUPL protocol +The SUPL protocol module communicates with an external SUPL server and obtains a cell-based location. -The SUPL Protocol +The SUPL Protocol Module returns the cell-based position by calling MLbsNetworkProtocolObserver::ProcessLocationUpdate(). The Location subsystem diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5486EFD3-4660-4C19-A007-286DE48F6EEF.dita --- a/Symbian3/PDK/Source/GUID-5486EFD3-4660-4C19-A007-286DE48F6EEF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5486EFD3-4660-4C19-A007-286DE48F6EEF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -26,7 +26,7 @@ vertically.

          Essential information or features, such as a label, instructions, or sub-controls should never be placed below an interface element that can be touched, as it may be hidden by the user's finger.

          - + Following are some useful tips that can be used while placing essential information or features on interface element:
          • With interfaces having input devices, it makes sense to place targets diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-54C2B185-3F56-5602-9021-34E27F0C40A6_d0e459082_href.png Binary file Symbian3/PDK/Source/GUID-54C2B185-3F56-5602-9021-34E27F0C40A6_d0e459082_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-54C2B185-3F56-5602-9021-34E27F0C40A6_d0e464927_href.png Binary file Symbian3/PDK/Source/GUID-54C2B185-3F56-5602-9021-34E27F0C40A6_d0e464927_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-54E05FE1-1A71-5293-9FB5-E27D7DF2392B.dita --- a/Symbian3/PDK/Source/GUID-54E05FE1-1A71-5293-9FB5-E27D7DF2392B.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -CapCheck Guide \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-54E62386-E4DB-55C3-BA9A-FFB7BFE6703E.dita --- a/Symbian3/PDK/Source/GUID-54E62386-E4DB-55C3-BA9A-FFB7BFE6703E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-54E62386-E4DB-55C3-BA9A-FFB7BFE6703E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,128 +1,131 @@ - - - - - -File -locationsThis topic gives the location for different file types. -

            Pre-Symbian platform v9.0

            Application program files -must be located in directories with the form \system\apps\<program>\. -Initialisation and configuration files should be in the same directory, or -where the application is in ROM, in the equivalent directory on a writable -drive.

            Document files can be located in any directory except \system\, -and may be given any name: the system will not alter the capitalisation of -that name, and will not attempt to add or remove any extension.

            The -application architecture does not dictate the requirements for all files, -or even all file stores. For instance, an e-mail application is not document -based. An e-mail subsystem would store its messages in a directory structure -using special e-mail policies to implement inbox, outbox and folders. Normally, -this folder would be in a \system\ directory.

            -
            Symbian platform -v9.0 and beyond

            The following table gives the location for different -file types.

            - - - -Location -Example file types -Description - - - - -
              -
            • On the emulator (default):

                -
              • epoc32\release\winscw\udeb\

              • -
              • epoc32\release\winscw\urel\

              • -

              On the emulator, e.g. for text notifiers:

                -
              • \sys\bin\tnotifiers

              • -
            • -
            • On the device:

              \sys\bin\

            • -
            -

            .exe, .app,

            .dll, .ani,

            .ctl, .fep,

            .mdl, .csy,

            .ldd, .pdd,

            .prt,

            .ECOMIIC, .PLUGIN

            -
              -
            • Location of all binaries

            • -
            • The OS will refuse to -load any binary not in \sys\bin\

            • -
            • Code without AllFiles (or TCB) -capability will never be able to read (or write) anything under \sys\

            • -
            • Note that for the emulator -when PlatSecEnforceSysBin is enabled (in the epoc.ini file) -executables found under \system will not be able to be -loaded

            • -
            -
            - -

            \private\<process SID>\

            -

            .doc, .txt,

            .xml, .dat,

            .ini, .mbm,

            .rsc

            -
              -
            • Location of all private -data files (e.g. if the file is to be accessed only by the application itself)

            • -
            • The directory name under \private is -determined by the SecureId (SID) of the process. If a SID is not specified, -the UID3 provided in the mmp file is used

            • -
            • Under the \private directory, -programs without the AllFiles capability will only ever be -able to see their own directory

            • -
            -
            - -
              -
            • Applications on the -emulator, or built into the ROM must provide registration files in:

                -
              • \private\10003a3f\apps\

              • -
            • -
            • Applications installed -via Software Install must provide registration files in:

                -
              • \private\10003a3f\import\apps\

              • -
            • -
            -

            <appname>_reg.rsc

            -
              -
            • The private system directory -for an application's registration file

            • -
            • The directory must always -be on the same drive as the application

            • -
            • These paths are true -for both the emulator and target device

            • -
            -
            - -

            \resource\apps\

            -

            .rsc, .mbm

            -
              -
            • Read access is allowed -by all

            • -
            • Write access only by -processes with AllFiles capability

            • -
            -
            - -

            \resource\plugins\

            -

            <dllname>.rsc

            -
              -
            • Specifically for ECom -registration resource files for ECom plugins

            • -
            • Read access is allowed -by all

            • -
            -
            - -

            Central Repository API

            \private\<process sid>\

            -

            .txt

            -
              -
            • If the file is read/write-only, -and access to it needs controlling through capabilities, then use the Central -Repository API, not a file at all.

            • -
            -
            - - -
            + + + + + +File locationsThis topic gives the location for different file types. +
            Pre-Symbian +OS v9.0

            Application program files must be located in directories +with the form \system\apps\<program>\. Initialisation +and configuration files should be in the same directory, or where +the application is in ROM, in the equivalent directory on a writable +drive.

            Document files can be located in any directory except \system\, and may be given any name: the system +will not alter the capitalisation of that name, and will not attempt +to add or remove any extension.

            The application architecture +does not dictate the requirements for all files, or even all +file stores. For instance, an e-mail application is not document based. +An e-mail subsystem would store its messages in a directory structure +using special e-mail policies to implement inbox, outbox and folders. +Normally, this folder would be in a \system\ directory.

            +
            Symbian +OS v9.0 and beyond

            The following table gives the location +for different file types.

            + + + + +Location +Example file types +Description + + + + +
              +
            • On the emulator +(default):

                +
              • epoc32\release\winscw\udeb\

              • +
              • epoc32\release\winscw\urel\

              • +

              On the emulator, e.g. for text notifiers:

                +
              • \sys\bin\tnotifiers

              • +
            • +
            • On the device:

              \sys\bin\

            • +
            +

            .exe, .app,

            .dll, .ani,

            .ctl, .fep,

            .mdl, .csy,

            .ldd, .pdd,

            .prt,

            .ECOMIIC, .PLUGIN

            +
              +
            • Location of +all binaries

            • +
            • The OS will +refuse to load any binary not in \sys\bin\

            • +
            • Code without AllFiles (or TCB) capability will never +be able to read (or write) anything under \sys\

            • +
            • Note that for +the emulator when PlatSecEnforceSysBin is enabled +(in the epoc.ini file) executables found under \system will not be able to be loaded

            • +
            +
            + +

            \private\<process SID>\

            +

            .doc, .txt,

            .xml, .dat,

            .ini, .mbm,

            .rsc

            +
              +
            • Location of +all private data files (e.g. if the file is to be accessed only by +the application itself)

            • +
            • The directory +name under \private is determined by the SecureId +(SID) of the process. If a SID is not specified, the UID3 provided in the mmp file is used

            • +
            • Under the \private directory, programs without the AllFiles capability will only ever be able to see their own directory

            • +
            +
            + +
              +
            • Applications +on the emulator, or built into the ROM must provide registration files +in:

                +
              • \private\10003a3f\apps\

              • +
            • +
            • Applications +installed via Software Install must provide registration files in:

                +
              • \private\10003a3f\import\apps\

              • +
            • +
            +

            <appname>_reg.rsc

            +
              +
            • The private +system directory for an application's registration file

            • +
            • The directory +must always be on the same drive as the application

            • +
            • These paths +are true for both the emulator and target device

            • +
            +
            + +

            \resource\apps\

            +

            .rsc, .mbm

            +
              +
            • Read access +is allowed by all

            • +
            • Write access +only by processes with AllFiles capability

            • +
            +
            + +

            \resource\plugins\

            +

            <dllname>.rsc

            +
              +
            • Specifically +for ECom registration resource files for ECom plugins

            • +
            • Read access +is allowed by all

            • +
            +
            + +

            Central Repository API

            \private\<process +sid>\

            +

            .txt

            +
              +
            • If the file +is read/write-only, and access to it needs controlling through capabilities, +then use the Central Repository API, not a file at all.

            • +
            +
            + + +
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-54EB6658-D2C1-514B-B9F1-BAB541A2972D.dita --- a/Symbian3/PDK/Source/GUID-54EB6658-D2C1-514B-B9F1-BAB541A2972D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-54EB6658-D2C1-514B-B9F1-BAB541A2972D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -Bitmap Devices and Contexts

            The BitGDI API provides extensions for bitmap devices of the abstract drawing device and context interfaces defined in the GDI API. The key interfaces defined by it, used for drawing on the screen, are in fact abstract. The Window Server provides concrete classes for on-screen drawing which derive from these interfaces. The concrete device and context classes that the API does provide are normally only used by applications to draw to in-memory bitmaps.

            Bitmap graphics context

            CBitmapContext specializes a GDI context (CGraphicsContext) for bitmap graphics. It provides extra functionality for:

            • clearing and copying rectangular areas

            • bitmap block transfer

            • setting pen color to a grey level

            • setting the shadow mode

            • resetting the GC settings to their default values

            The Window Server client-side API provides one implementation, CWindowGc, used for screen drawing. Another implementation, CFbsBitGc, is used for drawing to in-memory bitmaps.

            Bitmap graphics device

            CBitmapDevice specializes a graphics device (CGraphicsDevice) for bitmap graphics.

            The Window Server client-side API provides one implementation, CWsScreenDevice, for screen drawing. Another implementation, CFbsBitmapDevice, is used for drawing to in-memory bitmaps. A third, CFbsScreenDevice, is used (rarely) to access the screen directly, without the mediation of the window server.

            Screen driver information

            The screen width and height must be a multiple of four. In certain cases where the screen mode would result in a scanline (the scanline runs in the current horizontal direction of the screen) not being divisible by a whole word (32 bits) the screen width must also be a multiple of 16. This restriction will also apply to the height if there is a screen-size mode with a rotation of 90 or 270 (or both)

            For example, the screen mode EGray4 is 2 bits per pixel, therefore one word would be 16 pixels, so in order for the scanline to be a whole number of words the width must be a multiple of 16.

            The vertical height is unrestricted unless there is at least one screen-size mode with a rotation of 90 or 270 (or both).

            Bitmaps BitGDI Component
            \ No newline at end of file +Bitmap Devices and Contexts

            The BitGDI API provides extensions for bitmap devices of the abstract drawing device and context interfaces defined in the GDI API. The key interfaces defined by it, used for drawing on the screen, are in fact abstract. The Window Server provides concrete classes for on-screen drawing which derive from these interfaces. The concrete device and context classes that the API does provide are normally only used by applications to draw to in-memory bitmaps.

            Bitmap graphics context

            CBitmapContext specializes a GDI context (CGraphicsContext) for bitmap graphics. It provides extra functionality for:

            • clearing and copying rectangular areas

            • bitmap block transfer

            • setting pen color to a grey level

            • setting the shadow mode

            • resetting the GC settings to their default values

            The Window Server client-side API provides one implementation, CWindowGc, used for screen drawing. Another implementation, CFbsBitGc, is used for drawing to in-memory bitmaps.

            Bitmap graphics device

            CBitmapDevice specializes a graphics device (CGraphicsDevice) for bitmap graphics.

            The Window Server client-side API provides one implementation, CWsScreenDevice, for screen drawing. Another implementation, CFbsBitmapDevice, is used for drawing to in-memory bitmaps. A third, CFbsScreenDevice, is used (rarely) to access the screen directly, without the mediation of the window server.

            Screen driver information

            The screen width and height must be a multiple of four. In certain cases where the screen mode would result in a scanline (the scanline runs in the current horizontal direction of the screen) not being divisible by a whole word (32 bits) the screen width must also be a multiple of 16. This restriction will also apply to the height if there is a screen-size mode with a rotation of 90 or 270 (or both)

            For example, the screen mode EGray4 is 2 bits per pixel, therefore one word would be 16 pixels, so in order for the scanline to be a whole number of words the width must be a multiple of 16.

            The vertical height is unrestricted unless there is at least one screen-size mode with a rotation of 90 or 270 (or both).

            Bitmaps BitGDI Component
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5503ACC5-1C78-5EF6-AAD2-4B6FFA8890B9_d0e239080_href.png Binary file Symbian3/PDK/Source/GUID-5503ACC5-1C78-5EF6-AAD2-4B6FFA8890B9_d0e239080_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5503ACC5-1C78-5EF6-AAD2-4B6FFA8890B9_d0e245056_href.png Binary file Symbian3/PDK/Source/GUID-5503ACC5-1C78-5EF6-AAD2-4B6FFA8890B9_d0e245056_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5512B80D-77E8-5DFB-BD97-EBC1C4360E90.dita --- a/Symbian3/PDK/Source/GUID-5512B80D-77E8-5DFB-BD97-EBC1C4360E90.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -pageddata

            pageddata

            Use the pageddata statement to specify that the data in the executable is paged. This controls the paging of both heap and stacks for an executable. For more fine-grained control, the paging of heap and stack data can be specified separately during the creation of new threads and processes.

            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-552530EB-1287-542D-AED3-125387B485C1.dita --- a/Symbian3/PDK/Source/GUID-552530EB-1287-542D-AED3-125387B485C1.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-552530EB-1287-542D-AED3-125387B485C1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -49,7 +49,7 @@

            The template port provides a framework for implementing the platform specific part of the digitiser. The diagram below shows the overall relationship:

            - +

            The standard Symbian platform ports all follow the same general pattern, including the H2. However, the H2 board implementation has two levels in its diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-55754EF4-EC25-5CE3-9B38-79F278BCF19F_d0e551986_href.png Binary file Symbian3/PDK/Source/GUID-55754EF4-EC25-5CE3-9B38-79F278BCF19F_d0e551986_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-55754EF4-EC25-5CE3-9B38-79F278BCF19F_d0e559442_href.png Binary file Symbian3/PDK/Source/GUID-55754EF4-EC25-5CE3-9B38-79F278BCF19F_d0e559442_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5598B53F-2A6D-5813-913C-94B2AB36134E_d0e106187_href.png Binary file Symbian3/PDK/Source/GUID-5598B53F-2A6D-5813-913C-94B2AB36134E_d0e106187_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5598B53F-2A6D-5813-913C-94B2AB36134E_d0e108630_href.png Binary file Symbian3/PDK/Source/GUID-5598B53F-2A6D-5813-913C-94B2AB36134E_d0e108630_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-55DD28C0-54A0-4DD9-87A0-FC7CC0723765.dita --- a/Symbian3/PDK/Source/GUID-55DD28C0-54A0-4DD9-87A0-FC7CC0723765.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-55DD28C0-54A0-4DD9-87A0-FC7CC0723765.dita Fri Jul 16 17:23:46 2010 +0100 @@ -24,8 +24,8 @@ –[tcx|tci] <TCS_File>

            where <SCRIPT_FILE> indicates the script file and <TCS_FILE> indicates the TCS file.

            - -Modify the TCS file + +Modify the TCS file based on the test cases that you want to run. Run the following testexecute command: diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-55E4D84B-1B90-5BA4-9CE0-6D26EA208F13.dita --- a/Symbian3/PDK/Source/GUID-55E4D84B-1B90-5BA4-9CE0-6D26EA208F13.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-55E4D84B-1B90-5BA4-9CE0-6D26EA208F13.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,8 +11,8 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> OverviewThis topic describes memory management in the Communications Framework.
            Introduction

            The Communications Framework preallocates memory area buffers to increase the performance of its Data Plane. When a Comms Data Plane component needs a buffer, it asks for one from its pond. The pond contains pools of buffers : each pool contains buffers of a different size, and all the buffers in a pool have the same size. If the pond doesn't have a big enough buffer, it will string together a chain of smaller buffers to meet the request.

            The Communications Framework uses shared buffers. The Data Plane has strong performance requirements, and using shared buffers helps to avoid the memory copy that occurs between the kernel memory context and the Communications stack.

            Definitions
            Comms buffer (MBuf)

            A Comms buffer, or MBuf, is a contiguous memory area used to store data on the Data Plane. It is represented by an RMBuf object, which combines a shared buffer with metadata. See Shared buffers and Comms Buffers (MBuf) and Comms Chains.

            Comms buffer -
            Comms buffer chain

            A Comms buffer chain links together one or more Comms buffers. This decreases memory consumption because there is no need to reserve space for temporary large buffers, which can be created from a chain of smaller buffers. The chain is represented by a RMBufChain object. For more information, see Comms Buffers (MBuf) and Comms Chains.

            Pool

            Pre-allocated collection of shared buffers. See Shared buffers.

            The buffers of a pool all have the same size. Depending on the amount of used buffers, the pool dynamically grows and shrinks by a set number of buffers, which reduces the frequency of expensive memory allocation and reduces memory usage when possible.

            Pond

            The pond is a collection of pools. It is an RCommsBufPond object which keeps track of the memory available in the pools and allocates all the Comms buffer chains by taking buffers from the appropriate pools.

            The memory provided by the pond is available to all the layers of the Comms Framework as well as to the drivers underneath the lower layer. Therefore, the Comms Framework components and the drivers can exchange data without additional memory copies.

            At the moment, there is only one pond in the Comms Framework.

            For more information, see Advanced Pond Guide.

            +
            Comms buffer chain

            A Comms buffer chain links together one or more Comms buffers. This decreases memory consumption because there is no need to reserve space for temporary large buffers, which can be created from a chain of smaller buffers. The chain is represented by a RMBufChain object. For more information, see Comms Buffers (MBuf) and Comms Chains.

            Pool

            Pre-allocated collection of shared buffers. See Shared buffers.

            The buffers of a pool all have the same size. Depending on the amount of used buffers, the pool dynamically grows and shrinks by a set number of buffers, which reduces the frequency of expensive memory allocation and reduces memory usage when possible.

            Pond

            The pond is a collection of pools. It is an RCommsBufPond object which keeps track of the memory available in the pools and allocates all the Comms buffer chains by taking buffers from the appropriate pools.

            The memory provided by the pond is available to all the layers of the Comms Framework as well as to the drivers underneath the lower layer. Therefore, the Comms Framework components and the drivers can exchange data without additional memory copies.

            At the moment, there is only one pond in the Comms Framework.

            For more information, see Advanced Pond Guide.

            Pond contents -
            Typical usage

            Depending on where your component is in the Data Plane, you handle Comms buffers in a different way:

            • Protocol plugins manipulate the data plane flow represented by buffer chains. They obtain a buffer chain from another layer (up or down), process the chain, and send the chain to the next layer in the stack. Link layer components belong to that category.

              See Data Access Example.

            • Data source components, either at the top or at the bottom of the Comms Framework, create buffer chains and send them through the Data Plane. Device drivers belong to that category.

              See Allocation Tutorial and TLS Look-up Reduction Tutorial.

            In order to increase performance and decrease memory consumption with Comms buffers, you need to configure the pond according to your memory usage. For more information, see Advanced Pond Guide and Pond Configuration Reference.

            To monitor the pond and its available memory, see Memory Metrics.

            Shared Buffers Comms Buffers (MBuf) +
        Typical usage

        Depending on where your component is in the Data Plane, you handle Comms buffers in a different way:

        • Protocol plugins manipulate the data plane flow represented by buffer chains. They obtain a buffer chain from another layer (up or down), process the chain, and send the chain to the next layer in the stack. Link layer components belong to that category.

          See Data Access Example.

        • Data source components, either at the top or at the bottom of the Comms Framework, create buffer chains and send them through the Data Plane. Device drivers belong to that category.

          See Allocation Tutorial and TLS Look-up Reduction Tutorial.

        In order to increase performance and decrease memory consumption with Comms buffers, you need to configure the pond according to your memory usage. For more information, see Advanced Pond Guide and Pond Configuration Reference.

        To monitor the pond and its available memory, see Memory Metrics.

        Shared Buffers Comms Buffers (MBuf) and Comms Chains Advanced Pond Guide
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-55EF3CEB-AF3E-5A32-96F3-F146D1A06C8F.dita --- a/Symbian3/PDK/Source/GUID-55EF3CEB-AF3E-5A32-96F3-F146D1A06C8F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-55EF3CEB-AF3E-5A32-96F3-F146D1A06C8F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,11 +11,11 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Surface Manager OverviewThe Surface Manager is responsible for creating graphics composition surfaces (called surfaces) in system memory and controlling access to them.

        Variant: ScreenPlay. Target audience: Device creators.

        Summary

        The Surface Manager creates and manages graphics composition surfaces:

        • The Surface Manager allocates memory to which it controls access and that it can safely permit hardware to access.

        • The Surface Manager maintains size and format information.

        • The Surface Manager keeps track of the clients using each surface.

        The Surface Manager provides an API that allows clients to create, open, access (map to) and close surfaces. A client can also simply request a surface's attributes. Clients cannot change a surface's attributes which, once the surface has been created, are generally immutable.

        Surfaces are uniquely identified by a 128 bit surface ID. This comprises eight bits that identify the surface type and 120 bits that identify the surface itself.

        A client that creates a surface can pass its ID to another process. That process can then become a client of the Surface Manager and use the ID to access the surface. Access to a surface is strictly limited to clients that know the ID.

        Architecture

        The Surface Manager creates and manages surfaces that are used as input to the composition engine.

        Surface Manager and related components -

        The Surface Manager is an adaptation component, which means that it can be modified or replaced to suit the exact hardware that is available on a specific device.

        The Symbian Surface Manager consists of:

        • A generic DLL that provides the user-side API. This provides features to create and delete surfaces, to access surface pixel data and to query surface attributes. It routes the calls through to the device driver.

        • A reference implementation, which consists of a Logical Device Driver (LDD) and a kernel extension. This implements surfaces as shared chunks, which allow memory to be mapped into the address space of multiple applications and to be available to hardware such as the MBX GPU. This allows instant access and avoids copying or moving large amounts of data.

          Shared chunks are memory regions that can be safely shared between user-side and kernel-side processes. The implementation is a kernel extension because shared chunks can only be created by the kernel. As a kernel extension it is controlled using an LDD. It performs shared chunk allocation and allows the client to specify caching attributes.

        +

        The Surface Manager is an adaptation component, which means that it can be modified or replaced to suit the exact hardware that is available on a specific device.

        The Symbian Surface Manager consists of:

        • A generic DLL that provides the user-side API. This provides features to create and delete surfaces, to access surface pixel data and to query surface attributes. It routes the calls through to the device driver.

        • A reference implementation, which consists of a Logical Device Driver (LDD) and a kernel extension. This implements surfaces as shared chunks, which allow memory to be mapped into the address space of multiple applications and to be available to hardware such as the MBX GPU. This allows instant access and avoids copying or moving large amounts of data.

          Shared chunks are memory regions that can be safely shared between user-side and kernel-side processes. The implementation is a kernel extension because shared chunks can only be created by the kernel. As a kernel extension it is controlled using an LDD. It performs shared chunk allocation and allows the client to specify caching attributes.

        The Surface Manager reference implementation -

        Device creators can replace the reference implementation and retain the user-side API. Alternatively, it is possible to replace both the implementation and the user-side API or to replace the implementation and to extend the user-side API.

        It is generally necessary to create a custom Surface Manager implementation if hardware-accelerated surfaces (surfaces stored in memory managed by the GPU) are to be used. Device creators can also provide their own APIs on top of the Surface Manager. The following diagram shows the default configuration and two possible adaptation configurations.

        +

        Device creators can replace the reference implementation and retain the user-side API. Alternatively, it is possible to replace both the implementation and the user-side API or to replace the implementation and to extend the user-side API.

        It is generally necessary to create a custom Surface Manager implementation if hardware-accelerated surfaces (surfaces stored in memory managed by the GPU) are to be used. Device creators can also provide their own APIs on top of the Surface Manager. The following diagram shows the default configuration and two possible adaptation configurations.

        Some possible Surface Manager configurations -
        Description

        Features of the Surface Manager API and reference implementation include:

        • Cache control

          Surface Manager allows cached or uncached operation. If the Memory Management Unit (MMU) supports caching, the client can specify the caching attributes that the Surface Manager is to use for the shared chunk allocation. This enables the Surface Manager to create surfaces in shared chunks that are suitable for both hardware and software renderers. If the MMU does not support the requested caching attribute, a lesser one is used. The client can subsequently query the supported cache behavior.

        • Chunk adoption

          Clients can specify a pre-existing shared chunk when creating surfaces. The shared chunk can originate from an existing surface allocated through the Surface Manager or from another driver. The Surface Manager adopts the chunk passed in instead of allocating new memory. This means that pixel data that has already been written to a shared chunk by, for example, the camera driver, can be used as input to the composition engine.

          This functionality also allows memory to be saved because one chunk can be used for both landscape and portrait orientations of a surface when both orientations are not required at the same time.

        • Hinting support

          Like metadata, surface hints contain information about surface content. Hints are defined by the device creator and consist of key-value pairs, each of which has a flag that determines whether the value can be changed. Other processes that have access to the surface can read this data and change it if the hint is mutable. They can also add hints after creation of the surface.

        • Surface states

          The Surface Manager determines the relationship between each client process and each Surface ID. Each process sees each surface ID as being in one of the following states:

          • Invalid. No surface exists with that ID.

          • Closed. The surface exists, but is not open in the process.

          • Open. The process has opened the surface.

          • Mapped. The process has mapped the surface into its address space. This implies that the surface is open in that process.

          Multiple processes that refer to the same surface may have different relationships with that surface. For example, the surface may be mapped in one process but simply open in another process. Most Surface Manager operations require the surface to be in a particular state relative to the calling process. If the surface is not in the required state an error is returned.

        • Reference Counting

          The Surface Manager maintains a reference count for each surface. The count is started when the surface is created, gets incremented each time a client calls OpenSurface() and gets decremented each time CloseSurface() is called. When the count drops to zero the Surface Manager deletes the surface and releases the memory.

          When a process exits or closes its session with the Surface Manager, the Surface Manager closes all of the surfaces that the process has open.

        Executables

        The Surface Manager component contains the following executable files:

        Name Description

        Surfacemanager.dll

        The Surface Manager user-side API, which provides features to create and delete surfaces, to access surface pixel data and to query surface attributes. This routes the calls through to the device driver.

        surfacemanagerdriver.ldd

        A system memory logical device driver and kernel extension. It performs shared chunk allocation and allows the client to specify caching attributes.

        Typical uses

        Typical use involves creating a surface, querying its properties and passing the surface ID to another process. A second process can then open the surface.

        Clients of the Surface Manager simply create an instance of the client side class RSurfaceManager and use its API. The complexities of device driver communication, memory management and thread safety are completely encapsulated.

        RSurfaceManager surfaceManager; +
        Description

        Features of the Surface Manager API and reference implementation include:

        • Cache control

          Surface Manager allows cached or uncached operation. If the Memory Management Unit (MMU) supports caching, the client can specify the caching attributes that the Surface Manager is to use for the shared chunk allocation. This enables the Surface Manager to create surfaces in shared chunks that are suitable for both hardware and software renderers. If the MMU does not support the requested caching attribute, a lesser one is used. The client can subsequently query the supported cache behavior.

        • Chunk adoption

          Clients can specify a pre-existing shared chunk when creating surfaces. The shared chunk can originate from an existing surface allocated through the Surface Manager or from another driver. The Surface Manager adopts the chunk passed in instead of allocating new memory. This means that pixel data that has already been written to a shared chunk by, for example, the camera driver, can be used as input to the composition engine.

          This functionality also allows memory to be saved because one chunk can be used for both landscape and portrait orientations of a surface when both orientations are not required at the same time.

        • Hinting support

          Like metadata, surface hints contain information about surface content. Hints are defined by the device creator and consist of key-value pairs, each of which has a flag that determines whether the value can be changed. Other processes that have access to the surface can read this data and change it if the hint is mutable. They can also add hints after creation of the surface.

        • Surface states

          The Surface Manager determines the relationship between each client process and each Surface ID. Each process sees each surface ID as being in one of the following states:

          • Invalid. No surface exists with that ID.

          • Closed. The surface exists, but is not open in the process.

          • Open. The process has opened the surface.

          • Mapped. The process has mapped the surface into its address space. This implies that the surface is open in that process.

          Multiple processes that refer to the same surface may have different relationships with that surface. For example, the surface may be mapped in one process but simply open in another process. Most Surface Manager operations require the surface to be in a particular state relative to the calling process. If the surface is not in the required state an error is returned.

        • Reference Counting

          The Surface Manager maintains a reference count for each surface. The count is started when the surface is created, gets incremented each time a client calls OpenSurface() and gets decremented each time CloseSurface() is called. When the count drops to zero the Surface Manager deletes the surface and releases the memory.

          When a process exits or closes its session with the Surface Manager, the Surface Manager closes all of the surfaces that the process has open.

        Executables

        The Surface Manager component contains the following executable files:

        Name Description

        Surfacemanager.dll

        The Surface Manager user-side API, which provides features to create and delete surfaces, to access surface pixel data and to query surface attributes. This routes the calls through to the device driver.

        surfacemanagerdriver.ldd

        A system memory logical device driver and kernel extension. It performs shared chunk allocation and allows the client to specify caching attributes.

        Typical uses

        Typical use involves creating a surface, querying its properties and passing the surface ID to another process. A second process can then open the surface.

        Clients of the Surface Manager simply create an instance of the client side class RSurfaceManager and use its API. The complexities of device driver communication, memory management and thread safety are completely encapsulated.

        RSurfaceManager surfaceManager; surfaceManager.Open(); ... // Surface Manager now ready for use

        Creating a surface

        Before creating a surface, you specify its attributes through the TSurfaceCreationAttributes class.

        class TSurfaceCreationAttributes diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-55F6EEB1-1CED-518D-9AE7-E364FC080423_d0e230784_href.png Binary file Symbian3/PDK/Source/GUID-55F6EEB1-1CED-518D-9AE7-E364FC080423_d0e230784_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-55F6EEB1-1CED-518D-9AE7-E364FC080423_d0e236779_href.png Binary file Symbian3/PDK/Source/GUID-55F6EEB1-1CED-518D-9AE7-E364FC080423_d0e236779_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5606802D-7517-5BA5-A3BD-A54C417A1B64_d0e277977_href.png Binary file Symbian3/PDK/Source/GUID-5606802D-7517-5BA5-A3BD-A54C417A1B64_d0e277977_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5606802D-7517-5BA5-A3BD-A54C417A1B64_d0e283977_href.png Binary file Symbian3/PDK/Source/GUID-5606802D-7517-5BA5-A3BD-A54C417A1B64_d0e283977_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-565074B2-53E2-54CD-A06B-7E044E66EBE8.dita --- a/Symbian3/PDK/Source/GUID-565074B2-53E2-54CD-A06B-7E044E66EBE8.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -sourcepath

        sourcepath directory

        Use the sourcepath statement to define the location of the project and its workfiles.

        Either relative or full paths can be specified with the keyword. Relative paths are considered relative to the directory containing the .mmp file. Full paths are considered relative to the location defined by the EPOCROOT variable.

        Multiple sourcepath statements may be specified, but note that the build tools will expect subsequent source and resource file statements to relate to the last previous sourcepath statement.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5673347B-DA7B-563A-AB2B-615BF7C19F92_d0e538648_href.png Binary file Symbian3/PDK/Source/GUID-5673347B-DA7B-563A-AB2B-615BF7C19F92_d0e538648_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5673347B-DA7B-563A-AB2B-615BF7C19F92_d0e546108_href.png Binary file Symbian3/PDK/Source/GUID-5673347B-DA7B-563A-AB2B-615BF7C19F92_d0e546108_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-567718E7-0267-4641-A9E3-538D893362D2.dita --- a/Symbian3/PDK/Source/GUID-567718E7-0267-4641-A9E3-538D893362D2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-567718E7-0267-4641-A9E3-538D893362D2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -23,7 +23,7 @@ framework will handle the remaining tasks. An example of Item-specific options menu within stylus pop-up menu. - + Default touch events for Item-specific options menu. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-567D36A2-1097-5D44-B1B2-896F0F812A32.dita --- a/Symbian3/PDK/Source/GUID-567D36A2-1097-5D44-B1B2-896F0F812A32.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -linkas

        linkas priority

        Use the linkas statement to give the DLL that your project defines a different internal name.

        By default, the internal name of the DLL will be the same as the DLL’s filename. Under certain rare circumstances, it is useful to be able to give a DLL a different internal name.

        For example, a DLL might be built with a certain name and then renamed as part of a ROM, so the internal name must be the same as the DLL’s name in ROM.

        Use of this statement will have no effect under Win32 platforms.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5686E787-537F-5B32-B719-34EF5B7F0D37_d0e393525_href.png Binary file Symbian3/PDK/Source/GUID-5686E787-537F-5B32-B719-34EF5B7F0D37_d0e393525_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5686E787-537F-5B32-B719-34EF5B7F0D37_d0e399378_href.png Binary file Symbian3/PDK/Source/GUID-5686E787-537F-5B32-B719-34EF5B7F0D37_d0e399378_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5690EA18-106E-52E6-ABD3-4D5EE3CA8B23_d0e167865_href.png Binary file Symbian3/PDK/Source/GUID-5690EA18-106E-52E6-ABD3-4D5EE3CA8B23_d0e167865_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5690EA18-106E-52E6-ABD3-4D5EE3CA8B23_d0e173958_href.png Binary file Symbian3/PDK/Source/GUID-5690EA18-106E-52E6-ABD3-4D5EE3CA8B23_d0e173958_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5696BEC1-51F5-5062-A4E6-C6CF48C7C95A_d0e172853_href.png Binary file Symbian3/PDK/Source/GUID-5696BEC1-51F5-5062-A4E6-C6CF48C7C95A_d0e172853_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5696BEC1-51F5-5062-A4E6-C6CF48C7C95A_d0e178921_href.png Binary file Symbian3/PDK/Source/GUID-5696BEC1-51F5-5062-A4E6-C6CF48C7C95A_d0e178921_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-56BC73B4-E919-487A-9D29-99584204F14C_d0e164912_href.png Binary file Symbian3/PDK/Source/GUID-56BC73B4-E919-487A-9D29-99584204F14C_d0e164912_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-56BC73B4-E919-487A-9D29-99584204F14C_d0e171005_href.png Binary file Symbian3/PDK/Source/GUID-56BC73B4-E919-487A-9D29-99584204F14C_d0e171005_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-56DF9711-1EFA-5A07-A92B-3F3D6FBD17A8.dita --- a/Symbian3/PDK/Source/GUID-56DF9711-1EFA-5A07-A92B-3F3D6FBD17A8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-56DF9711-1EFA-5A07-A92B-3F3D6FBD17A8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,8 +11,8 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Sockets Server Client API

        This topic introduces the Sockets Server API and discusses the main classes.

        The Sockets Server Client interfaces make asynchronous calls to the Sockets Server. The Server co-ordinates client access to socket services, and manages communications with the protocol plug-ins that provide support for the particular networking protocols.

        Each protocol plug-in may contain a number of protocols. The term ‘protocol’ may also be used to describe a suite of protocols. For example, the TCP/IP protocol plug-in contains UDP, TCP, ICMP, IP, and DNS. Sockets can access UDP and TCP to transfer data over IP. Another example of a protocol plug-in is the IrDA plug-in. the IrDA plug-in is used for communicating over infrared.

        The Sockets Server loads protocols plug-ins at runtime either explicitly or on demand. When the server starts, the server scans \private\101f7989\esock for .esk files to see which protocols and services are defined, and which protocols to load.

        The Sockets Server Client API implements the idea of transport independence: different protocols are accessed through the same API. However, individual protocols exhibit different properties and semantics regarding socket behaviour. The semantics implemented by any given protocol can be found by interrogating the system using RSocketServ::GetProtocolInfo(), which describes the protocol semantics encapsulated in a TProtocolDesc.

        APIs

        Five main classes provide the Sockets Server Client API functionality:

        • RSocketServ

        • RSocket

        • RHostResolver

        • RConnection

        • RSubConnection

        The RSocketServ class establishes and reserves resources for the base communication session to the Sockets Server. The RSocketServ hosts other Sockets Server Client APIs as subsessions inside the RSocketServ session. The Sockets Server Client APIs which are hosted as subsessions inside RSocketServ are RSocket, RHostResolver, RConnection and RSubConnection. The RSocketServ class provides functions to load and query protocols.

        Figure 1 - Class diagram of RSocketServ inheritance - + Figure 2 - Class diagram of classes which make up the subsession APIs to RSocketServ -

        The RSocket class provides a client endpoint to a protocol. It provides the following services:

        • socket creation

        • reading from and writing to a protocol

        • binding to addresses

        • active connecting

        • passive connection through the listen/accept model

        The RConnection class provides access to the Connection Management functionality of a socket. See Connection Management.

        The RSubConnection API provides functions to specify Quality of Service parameters for a channel. See SubConnection Client API.

        ESK Files Reading from a Socket: +

        The RSocket class provides a client endpoint to a protocol. It provides the following services:

        • socket creation

        • reading from and writing to a protocol

        • binding to addresses

        • active connecting

        • passive connection through the listen/accept model

        The RConnection class provides access to the Connection Management functionality of a socket. See Connection Management.

        The RSubConnection API provides functions to specify Quality of Service parameters for a channel. See SubConnection Client API.

        ESK Files Reading from a Socket: Tutorial
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-56E67157-08EE-414A-9EC5-ADAF27E0D36A_d0e91880_href.png Binary file Symbian3/PDK/Source/GUID-56E67157-08EE-414A-9EC5-ADAF27E0D36A_d0e91880_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-56E67157-08EE-414A-9EC5-ADAF27E0D36A_d0e96078_href.png Binary file Symbian3/PDK/Source/GUID-56E67157-08EE-414A-9EC5-ADAF27E0D36A_d0e96078_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-57372CC6-C7CC-5802-B24C-66A272359968_d0e277989_href.png Binary file Symbian3/PDK/Source/GUID-57372CC6-C7CC-5802-B24C-66A272359968_d0e277989_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-57372CC6-C7CC-5802-B24C-66A272359968_d0e283989_href.png Binary file Symbian3/PDK/Source/GUID-57372CC6-C7CC-5802-B24C-66A272359968_d0e283989_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5746BC4A-E8D2-51DE-B101-4BA68F0E1769_d0e190171_href.png Binary file Symbian3/PDK/Source/GUID-5746BC4A-E8D2-51DE-B101-4BA68F0E1769_d0e190171_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5746BC4A-E8D2-51DE-B101-4BA68F0E1769_d0e196240_href.png Binary file Symbian3/PDK/Source/GUID-5746BC4A-E8D2-51DE-B101-4BA68F0E1769_d0e196240_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-57A777A3-5D67-5CBB-B224-B7AD422A451B.dita --- a/Symbian3/PDK/Source/GUID-57A777A3-5D67-5CBB-B224-B7AD422A451B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-57A777A3-5D67-5CBB-B224-B7AD422A451B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,7 +14,7 @@ Plugins component. The Windowing collection - + Graphics diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-57B7DA8C-A62F-4C65-B754-47D9F5E76416.dita --- a/Symbian3/PDK/Source/GUID-57B7DA8C-A62F-4C65-B754-47D9F5E76416.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-57B7DA8C-A62F-4C65-B754-47D9F5E76416.dita Fri Jul 16 17:23:46 2010 +0100 @@ -31,11 +31,11 @@ something.

        Virtual ITU-T keypad - + Virtual QWERTY keyboard - +

        The virtual QWERTY keyboard displays a keyboard that has a collection of basic keyboard functions (Shift, Caps lock, punctuation marks, and so on) diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-57BBF5C1-C08D-59FA-8F10-F180A82306A4.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-57BBF5C1-C08D-59FA-8F10-F180A82306A4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,114 @@ + + + + + + STS +Client +

        The STS provides APIs to start a file system transaction, record various +file system operation as part of a transaction, and commit or roll back the +transaction.

        +
        STS Client library details

        The STS client is implemented +in stsclient.dll.

        + + + +DLL +LIB +Short description + + + + +

        stsclient.dll

        +

        stsclient.lib

        +

        An STS client application can access the services provided by the +STS by linking against stsclient.lib.

        +
        + + +
        +
        APIs

        The key class of the STS client is as follows:

        + + + +API +Description + + + + +

        RStsSession

        +

        This class provides a synchronous interface to the STS server.

        +
        + + +
        +
        Description

        The STS can record every file system +operation such as adding, removing, or updating a file. An STS client, such +as a software installer, requires that all of its file system operations are +performed, or that none of them are to ensure that the integrity of the file +system is not compromised. An STS client instructs STS to group file system +operations as a single transaction which must be either committed fully or, +in the event of failure, rolled back to leave the file system unchanged.

        The +STS client instructs the STS to commit a transaction once all of the operations +have been performed.

        Creating a transaction

        A transaction +can include file system operations such as adding, removing or updating a +temporary file. An STS client must do the following to create a new transaction:

          +
        • Open a new STS session.

        • +
        • Create a new transaction +using RStsSession::CreateTransactionL(). This creates a +new transaction ID.

        • +

        Note: Each STS session can have only one transaction. If CreateTransactionL or OpenTransactionL is invoked more than once in an STS session, STS returns an error.

        Opening +a transaction

        Multiple clients can share a single transaction. +If an STS client wants to use an existing transaction, it must do the following:

          +
        • Open a new a session +to the STS.

        • +
        • Supply the transaction +ID of the existing transaction to RStsSession::OpenTransactionL().

        • +

        Registering a file

        You must create a transaction before +registering a file with the server.

        Register a file with the STS server +to inform the server about the addition of a new file to the file system.

          +
        • Use RStsSession::RegisterNewL to +inform STS about addition of a new file. STS does not perform any action on +the file. The client must create/add the file to the file system and close +it properly after calling this function.

        • +
        • Use RStsSession::RegisterTemporaryL for +registering a temporary file.

        • +

        Creating a file

        Create a file with specified file +name using RStsSession::CreateNewL().

        The STS server +creates an empty file and passes the file handle to the client.

        Create +a temporary file using RStsSession::CreateTemporaryL(). +STS removes temporary files automatically on both commit and rollback.

        Overwriting +a file

        Overwrite a specified file in the file system with an empty +file using RStsSession::OverwriteL().

        On commit +the new file is added to the file system, and on rollback the original file +is restored.

        Note: This function is recommended only when +your client generates the content for the new file.

        Removing a +file

        Remove a file with specified file name from the file system +using RStsSession::RemoveL(). If the file exists STS removes +it from the file system, otherwise it returns an error.

        On commit +the specified file is permanently deleted from the file system, on rollback +it is restored.

        Committing operation

        Commit the transaction +using RStsSession::CommitL. This function closes the session +to the STS server automatically.

        Note: After a transaction +is committed the STS server cannot restore any file system operation performed +during the transaction.

        Reverting or rolling back operation

        Rollback +a transaction using RStsSession::RollBackL(). This function +reverts all of the file system operations in the transaction and closes the +session to the STS server.

        Note: Only file system operations +performed using RStsSession functions are included in the transaction.

        Closing +a session

        A session to the STS is valid until the client calls CommitL() or RollBackL() or Close() functions. The Close() function automatically +rolls back the current transaction.

        Example

        Symbian +provides an example reference installer which shows typical usage of STS. +For more information, see the example code under security/usif/examples/installer/.

        +
        Related Information
          +
        • STS Overview
        • +
        +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-57C10E91-F0CD-494E-96CE-92FB1E06CB53_d0e500491_href.png Binary file Symbian3/PDK/Source/GUID-57C10E91-F0CD-494E-96CE-92FB1E06CB53_d0e500491_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-57C10E91-F0CD-494E-96CE-92FB1E06CB53_d0e507953_href.png Binary file Symbian3/PDK/Source/GUID-57C10E91-F0CD-494E-96CE-92FB1E06CB53_d0e507953_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-57CC6419-2800-4E54-8DF6-36EC2617D2FD_d0e1544_href.png Binary file Symbian3/PDK/Source/GUID-57CC6419-2800-4E54-8DF6-36EC2617D2FD_d0e1544_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-57CC6419-2800-4E54-8DF6-36EC2617D2FD_d0e1548_href.png Binary file Symbian3/PDK/Source/GUID-57CC6419-2800-4E54-8DF6-36EC2617D2FD_d0e1548_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-57F38146-1DA3-5657-ADF4-76DF740363C5.dita --- a/Symbian3/PDK/Source/GUID-57F38146-1DA3-5657-ADF4-76DF740363C5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-57F38146-1DA3-5657-ADF4-76DF740363C5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -Static Startup Configuration

        The System Starter is invoked by the Base Starter as part of the boot process once the file system has been mounted. It works by processing a list of instructions in sequence. The list is referred to as a Static Startup Configuration, or SSC. In practical terms the SSC is defined in a resource file and is built into the ROM.

        A fundamental feature of the SSC is that it allows the start up procedure to be optimised. Though the commands are processed in sequence their effect is to perform tasks not only in sequence (wait for the application or process to initialise before continuing) but also in parallel (do not wait for initialisation) and at the optimum time (wait until conditions are right).

        In the diagram above each vertical bar represents a process or application started during the startup procedure. The list on the left shows the SSC command for each process. An application may ‘rendezvous’ with the starter when its initialisation (shown in dark blue) is complete and it is ready to be used by dependent applications. A rendezvous is simply a signal from the appliation to the starter that it has reached a designated point.

        \ No newline at end of file +Static Startup Configuration

        The System Starter is invoked by the Base Starter as part of the boot process once the file system has been mounted. It works by processing a list of instructions in sequence. The list is referred to as a Static Startup Configuration, or SSC. In practical terms the SSC is defined in a resource file and is built into the ROM.

        A fundamental feature of the SSC is that it allows the start up procedure to be optimised. Though the commands are processed in sequence their effect is to perform tasks not only in sequence (wait for the application or process to initialise before continuing) but also in parallel (do not wait for initialisation) and at the optimum time (wait until conditions are right).

        In the diagram above each vertical bar represents a process or application started during the startup procedure. The list on the left shows the SSC command for each process. An application may ‘rendezvous’ with the starter when its initialisation (shown in dark blue) is complete and it is ready to be used by dependent applications. A rendezvous is simply a signal from the appliation to the starter that it has reached a designated point.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-58135EB2-5DFF-599A-B17C-B1DD60B4A750_d0e610971_href.jpg Binary file Symbian3/PDK/Source/GUID-58135EB2-5DFF-599A-B17C-B1DD60B4A750_d0e610971_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-58135EB2-5DFF-599A-B17C-B1DD60B4A750_d0e650125_href.jpg Binary file Symbian3/PDK/Source/GUID-58135EB2-5DFF-599A-B17C-B1DD60B4A750_d0e650125_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-581A8E4B-12BE-41C0-A20E-3087A80FEECF.dita --- a/Symbian3/PDK/Source/GUID-581A8E4B-12BE-41C0-A20E-3087A80FEECF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-581A8E4B-12BE-41C0-A20E-3087A80FEECF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,285 +1,264 @@ - - - - -Tactile feedback - - - - -

        There are two cases where vibration or audio of the device is used -as an output method:

        -
          -
        • As a tacticon to inform users through physical feedback, -that an important event is occurring in the device. For example, when -a new message arrives or a warning note is displayed.

        • -
        • As tactile feedback to indicate to the user that an -interaction event has been made. For example, users receive tactile -feedback when they press a button on the touch screen.

        • -
        -

        As with sounds, tactile feedback must be used carefully so as not -to desensitize the user to the vibration; the attention grabbing quality -remains and functions so long as the feedback is not too frequent.

        -

        Tactile feedback is enabled for all the Symbian platform UI components. -Tactile feedback can be disabled for the common UI components in an -application. However, this is acceptable only if tactile feedback -causes interference with other device functions.

        -

        The user can choose the level of tactile feedback and turn tacticons -ON and OFF.

        -

        The following table lists the tactile feedback effects:

        -

        -Tactile feedback effects - - - -

        Effects

        -

        Description

        -
        - - - -

        Sensitive button

        -

        Provides single pulse effect on repeated key presses with -buttons. It is also possible with other similar components.

        -
        - -

        Basic button

        -

        Provides stronger single pulse effect to buttons. It is -also possible with other similar components.

        -
        - -

        Sensitive list

        -

        Provides single pulse effect to lists and grids. Effect -is used with move (drag and flick) when new item appears on the screen.

        -
        - -

        Basic list

        -

        Provides stronger single pulse effect to lists and grids. -Effect is used with touch down and release when tap makes an action.

        In hierarchical list, collapsing/expanding item provides basic -list effect with touch down and release.

        -
        - -

        Bounce effect

        -

        Provides pulse effect when list returns to its normal state -after boundary effect.

        -
        - -

        Sensitive slider

        -

        Provides pulse effect with scrollbar and slider thumbs. -Effect is provided with touch down and release in thumb area.

        -
        - -

        Smooth slider

        -

        Provides continuous smooth feedback when dragging scrollbar -or slider thumb. This can also be increasing or decreasing depending -of the slider type.

        -
        - -

        Hold slider

        -

        Provides sensitive pulse effect when touch down and hold -on the slider or scrollbar area. Slider thumb starts moving step by -step towards the touch point. Every step gives one sensitive pulse. -If slider thumb moves directly to the touch point, then basic slider -effect is provided.

        -
        - -

        Pop-up

        -

        Provides sensitive pulse effect when pop-up is opened or -closed. If the theme animations are ON, then pop-up effect is used -with opening event after increasing long touch effect. In this scenario, -there is no pop-up effect . All pop-ups do not have theme animation.

        -
        - -

        Pop-up close

        -

        Provides decreasing smooth feedback a pop-up and when theme -animations are ON.

        -
        - -

        Increasing long touch

        -

        Provides increasing smooth feedback. This can be used with -either long tap animation or pop-up opening theme effects. If the -theme effects are ON and long tap opens a pop-up, then feedback is -provided only with long tap. This is followed by pop-up.

        -
        - -

        Basic tab

        -

        Provides strong pulse effect with touch down event in tab -area.

        -
        - -

        Smooth flick

        -

        Provides smooth feedback with drag when horizontal movement -is possible.

        -
        - -

        Sensitive flick

        -

        Provides sensitive pulse effect with touch release when -horizontal movement is possible.

        -
        - -

        Sensitive edit

        -

        Provides sensitive pulse effect in editors with touch down -and release.

        -
        - -

        Text edit

        -

        Provides pulse effect when painting the text. Effect is -provided with every character while painting the text.

        -
        - -

        Blank edit

        -

        Provides pulse effect when painting blank character. By -default, it is none.

        -
        - -

        Line edit

        -

        Provides pulse effect when painting a line.

        -
        - -

        Empty line

        -

        Provides pulse effect when painting an empty line. By default, -it is none.

        -
        - -

        Check box

        -

        Provides pulse effect when marking/unmarking a check box.

        -
        - -

        Multiple touch recognition

        -

        Provides double pulse (sensitive + sensitive) effect when -multiple touch is recognized (generally, when second finger is touched -down).

        -
        - -

        Smooth pinch

        -

        Provides smooth continuous feedback while moving fingers -in multiple touch pinch situation.

        -
        - -

        Smooth rotate

        -

        Provides smooth continuous feedback while moving fingers -in multiple touch rotate situation.

        -
        - - -

        -
        Haptics -concept

        The different senses associated to the skin are -called cutaneous senses. These senses are temperature, pressure (touch -itself), pain, tickle, itch and vibration senses. We can characterize -touch as passive or active. Passive touch means the sense of touch -itself, whereas active touch means the touch action.

        To communicate -through the sense of touch, we have to stimulate some of the cutaneous -senses or the movement sense. The stimulation of the cutaneous senses -or one of them by a product is called tactile stimulation. Respectively, -the stimulation of the movement sense by a product is called haptic -stimulation or just haptics. Haptics is also used as general term -for all issues related to sense of touch, both human and machine.

        Haptic feedback, often referred to as "Haptics", is the use of -the sense of touch in a user interface design to provide information -to an end user. In mobile phones, this generally means the use of -vibrations from the device's vibration alarm to denote that a touch -screen button has been pressed. In this particular example, the phone -would vibrate slightly in response to the user's activation of an -on-screen control, making up for the lack of a normal tactile response -that the user would experience when pressing a physical button.

        -
        Characteristics -of haptics related APIs

        You can use the following APIs -to create haptic effects:

          -
        • Tactile Feedback Client API

            -
          • Available from S60 5th Edition onwards.

          • -
          • It can be used on all S60 5th Edition or later mobile devices. -However, the feedback is played only on touch enabled layouts.

          • -
          • Provides simple functions for triggering various predefined -tactile feedback (vibration or audio) effects.

          • -
          • Enables a consistent user experience in all applications of -the mobile device (an application gives a logical feedback type as -an input and the actual physical effect depends on the mobile device -configuration and end user settings).

          • -
          • When the area feedback is used, latency is low for the feedback -triggering (a tactile feedback can already be triggered at the window -server level prior to the corresponding pointer event being delivered -to the visible application).

          • -
          • Direct feedback can be easily integrated into CCoeControl::HandlePointerEventL().

          • -
          • An application can select the logical tactile feedback from -certain types. The produced effect may be different on various mobile -devices.

          • -
        • -
        • Haptics API

            -
          • Available from S60 5th Edition, FP2 onwards.

          • -
          • It can be used in touch and hybrid mobile devices.

          • -
          • Provides an interface for accessing Haptics player that can -control different actuator types.

          • -
          • Enables producing of complex vibrator effects, such as an explosion -or machine gun effect in a game, bass boost for a music player, advanced -ringing tone vibration, and so on.

          • -
          • Enables simultaneous playing of different kinds of basis effects -and modifying them when played.

          • -
          • Allows the design of complex effects (using a separate PC application) -that can be loaded on Haptics player for playing.

          • -
          • It may require a special license key for third-party applications -(to be set at runtime) to enable the Haptics player functionality.

          • -
        • -
        • Vibra API

            -
          • Available from S60 3.0 onwards.

          • -
          • It can be used for running device vibrator with given intensity -for a given period of time.

          • -
          • It can be used by a privileged client application to play pulse -effects, which have a very short duration (as the ones used for tactile -feedback).

          • -
        • -
        -
        When -to use Tactile Feedback Client API, Haptics API, and Vibra API

          -
        • Tactile Feedback Client API for providing tactile feedback -in custom controls (grids, lists, and so on), which will comply with -the style of Core UI components to ensure a uniform user experience -among applications.

        • -
        • Haptics API on touch and hybrid mobile devices for producing -complex vibration feedback, which cannot be achieved with Tactile -Framework (games, simulations, demos, and so on).

        • -
        • Vibra API for producing haptic effects such as ringing tone -vibration in those mobile devices where Haptics API is not available -or functional.

        • -

        -
        Using -tactile feedback in applications

        The API to use for tactile -feedback is the Tactile feedback -client API.

        The Symbian platform includes a tactile feedback -interface to add, modify and remove feedback areas in the registry. -There is also an option to trigger direct feedback and bypass the -registry. MTouchFeedback::Instance() is used for -acquiring a pointer to a touch feedback instance. When touch feedback -is activated, the mobile device users get a slight vibration when -the control with the feedback interface is touched.

        Tactile -feedback can be set and disabled in a client application or a mobile -device in some scenarios, for example, during phone calls.

        Client applications cannot determine the actual physical feedback -that is generated. It depends on device configuration and current -settings. In current devices, the user changeable settings include -vibration and audio feedback intensity level.

        For more information, -see Feedback.

        -
        -
        - + + + + + +Tactile feedback +

        There are two cases where vibration or audio of the device is used +as an output method:

        +
          +
        • As a tacticon to inform users through physical feedback, +that an important event is occurring in the device. For example, when +a new message arrives or a warning note is displayed.

        • +
        • As tactile feedback to indicate to the user that an +interaction event has been made. For example, users receive tactile +feedback when they press a button on the touch screen.

        • +
        +

        As with sounds, tactile feedback must be used carefully so as not +to desensitize the user to the vibration; the attention grabbing quality +remains and functions so long as the feedback is not too frequent.

        +

        Tactile feedback is enabled for all the Symbian platform UI components. +Tactile feedback can be disabled for the common UI components in an +application. However, this is acceptable only if tactile feedback +causes interference with other device functions.

        +

        The user can choose the level of tactile feedback and turn tacticons +ON and OFF.

        +

        The following table lists the tactile feedback effects:

        +

        Tactile +feedback effects + + + +

        Effects

        +

        Description

        +
        + + + +

        Sensitive button

        +

        Provides single pulse effect on repeated key presses with +buttons. It is also possible with other similar components.

        +
        + +

        Basic button

        +

        Provides stronger single pulse effect to buttons. It is +also possible with other similar components.

        +
        + +

        Sensitive list

        +

        Provides single pulse effect to lists and grids. Effect +is used with move (drag and flick) when new item appears on the screen.

        +
        + +

        Basic list

        +

        Provides stronger single pulse effect to lists and grids. +Effect is used with touch down and release when tap makes an action.

        In hierarchical list, collapsing/expanding item provides basic +list effect with touch down and release.

        +
        + +

        Bounce effect

        +

        Provides pulse effect when list returns to its normal state +after boundary effect.

        +
        + +

        Sensitive slider

        +

        Provides pulse effect with scrollbar and slider thumbs. +Effect is provided with touch down and release in thumb area.

        +
        + +

        Smooth slider

        +

        Provides continuous smooth feedback when dragging scrollbar +or slider thumb. This can also be increasing or decreasing depending +of the slider type.

        +
        + +

        Hold slider

        +

        Provides sensitive pulse effect when touch down and hold +on the slider or scrollbar area. Slider thumb starts moving step by +step towards the touch point. Every step gives one sensitive pulse. +If slider thumb moves directly to the touch point, then basic slider +effect is provided.

        +
        + +

        Pop-up

        +

        Provides sensitive pulse effect when pop-up is opened or +closed. If the theme animations are ON, then pop-up effect is used +with opening event after increasing long touch effect. In this scenario, +there is no pop-up effect . All pop-ups do not have theme animation.

        +
        + +

        Pop-up close

        +

        Provides decreasing smooth feedback a pop-up and when theme +animations are ON.

        +
        + +

        Increasing long touch

        +

        Provides increasing smooth feedback. This can be used with +either long tap animation or pop-up opening theme effects. If the +theme effects are ON and long tap opens a pop-up, then feedback is +provided only with long tap. This is followed by pop-up.

        +
        + +

        Basic tab

        +

        Provides strong pulse effect with touch down event in tab +area.

        +
        + +

        Smooth flick

        +

        Provides smooth feedback with drag when horizontal movement +is possible.

        +
        + +

        Sensitive flick

        +

        Provides sensitive pulse effect with touch release when +horizontal movement is possible.

        +
        + +

        Sensitive edit

        +

        Provides sensitive pulse effect in editors with touch down +and release.

        +
        + +

        Text edit

        +

        Provides pulse effect when painting the text. Effect is +provided with every character while painting the text.

        +
        + +

        Blank edit

        +

        Provides pulse effect when painting blank character. By +default, it is none.

        +
        + +

        Line edit

        +

        Provides pulse effect when painting a line.

        +
        + +

        Empty line

        +

        Provides pulse effect when painting an empty line. By default, +it is none.

        +
        + +

        Check box

        +

        Provides pulse effect when marking/unmarking a check box.

        +
        + +

        Multiple Touch recognition

        +

        Provides double pulse (sensitive + sensitive) effect when +multiple touch is recognized (generally, when second finger is touched +down).

        +
        + +

        Smooth pinch

        +

        Provides smooth continuous feedback while moving fingers +in multiple touch pinch situation.

        +
        + +

        Smooth rotate

        +

        Provides smooth continuous feedback while moving fingers +in multiple touch rotate situation.

        +
        + + +

        +
        Haptics +concept

        The different senses associated to the skin are +called cutaneous senses. These senses are temperature, pressure (touch +itself), pain, tickle, itch and vibration senses. We can characterize +touch as passive or active. Passive touch means the sense of touch +itself, whereas active touch means the touch action.

        To communicate +through the sense of touch, we have to stimulate some of the cutaneous +senses or the movement sense. The stimulation of the cutaneous senses +or one of them by a product is called tactile stimulation. Respectively, +the stimulation of the movement sense by a product is called haptic +stimulation or just haptics. Haptics is also used as general term +for all issues related to sense of touch, both human and machine.

        Haptic feedback, often referred to as "Haptics", is the use of +the sense of touch in a user interface design to provide information +to an end user. In mobile phones, this generally means the use of +vibrations from the device's vibration alarm to denote that a touch +screen button has been pressed. In this particular example, the phone +would vibrate slightly in response to the user's activation of an +on-screen control, making up for the lack of a normal tactile response +that the user would experience when pressing a physical button.

        +
        Characteristics +of haptics related APIs

        You can use the following APIs +to create haptic effects:

          +
        • Tactile +Feedback Client API

            +
          • Available from S60 5th Edition onwards.

          • +
          • It can be used on all S60 5th Edition or later mobile devices. +However, the feedback is played only on touch enabled layouts.

          • +
          • Provides simple functions for triggering various predefined +tactile feedback (vibration or audio) effects.

          • +
          • Enables a consistent user experience in all applications of +the mobile device (an application gives a logical feedback type as +an input and the actual physical effect depends on the mobile device +configuration and end user settings).

          • +
          • When the area feedback is used, latency is low for the feedback +triggering (a tactile feedback can already be triggered at the window +server level prior to the corresponding pointer event being delivered +to the visible application).

          • +
          • Direct feedback can be easily integrated into CCoeControl::HandlePointerEventL().

          • +
          • An application can select the logical tactile feedback from +certain types. The produced effect may be different on various mobile +devices.

          • +
        • +
        • Haptics API

            +
          • Available from S60 5th Edition, FP2 onwards.

          • +
          • It can be used in touch and hybrid mobile devices.

          • +
          • Provides an interface for accessing Haptics player that can +control different actuator types.

          • +
          • Enables producing of complex vibrator effects, such as an explosion +or machine gun effect in a game, bass boost for a music player, advanced +ringing tone vibration, and so on.

          • +
          • Enables simultaneous playing of different kinds of basis effects +and modifying them when played.

          • +
          • Allows the design of complex effects (using a separate PC application) +that can be loaded on Haptics player for playing.

          • +
          • It may require a special license key for third-party applications +(to be set at runtime) to enable the Haptics player functionality.

          • +
        • +
        • Vibra +API

            +
          • Available from S60 3.0 onwards.

          • +
          • It can be used for running device vibrator with given intensity +for a given period of time.

          • +
          • It can be used by a privileged client application to play pulse +effects, which have a very short duration (as the ones used for tactile +feedback).

          • +
        • +
        +
        When +to use Tactile Feedback Client API, Haptics API, and Vibra API

          +
        • Tactile Feedback Client API for providing tactile feedback +in custom controls (grids, lists, and so on), which will comply with +the style of Core UI components to ensure a uniform user experience +among applications.

        • +
        • Haptics API on touch and hybrid mobile devices for producing +complex vibration feedback, which cannot be achieved with Tactile +Framework (games, simulations, demos, and so on).

        • +
        • Vibra API for producing haptic effects such as ringing tone +vibration in those mobile devices where Haptics API is not available +or functional.

        • +

        +
        Using tactile feedback +in applications

        The API to use for tactile feedback is the Tactile feedback +client API.

        The Symbian platform includes a tactile feedback +interface to add, modify and remove feedback areas in the registry. +There is also an option to trigger direct feedback and bypass the +registry. MTouchFeedback::Instance() is used for +acquiring a pointer to a touch feedback instance. When touch feedback +is activated, the mobile device users get a slight vibration when +the control with the feedback interface is touched.

        Tactile +feedback can be set and disabled in a client application or a mobile +device in some scenarios, for example, during phone calls.

        Client applications cannot determine the actual physical feedback +that is generated. It depends on device configuration and current +settings. In current devices, the user changeable settings include +vibration and audio feedback intensity level.

        For more information, +see Feedback.

        +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-581FB79B-2DB9-5AB8-AB32-997B05A62070_d0e137842_href.png Binary file Symbian3/PDK/Source/GUID-581FB79B-2DB9-5AB8-AB32-997B05A62070_d0e137842_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-581FB79B-2DB9-5AB8-AB32-997B05A62070_d0e140091_href.png Binary file Symbian3/PDK/Source/GUID-581FB79B-2DB9-5AB8-AB32-997B05A62070_d0e140091_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5822CE94-C8AF-5F81-AB3F-E95B44265065.dita --- a/Symbian3/PDK/Source/GUID-5822CE94-C8AF-5F81-AB3F-E95B44265065.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -debuggable

        debuggable

        Use the debuggable statement to mark the application to be debugged using the run-mode debug API.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-582B36BD-88B3-5B5B-8A20-058318E80D0B_d0e272975_href.png Binary file Symbian3/PDK/Source/GUID-582B36BD-88B3-5B5B-8A20-058318E80D0B_d0e272975_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-582B36BD-88B3-5B5B-8A20-058318E80D0B_d0e278975_href.png Binary file Symbian3/PDK/Source/GUID-582B36BD-88B3-5B5B-8A20-058318E80D0B_d0e278975_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5857377F-B90D-5149-9485-5919C12B8F13-GENID-1-12-1-26-1-1-11-1-1-3-1-4-1-6-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-5857377F-B90D-5149-9485-5919C12B8F13-GENID-1-12-1-26-1-1-11-1-1-3-1-4-1-6-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,124 @@ + + + + + +How +to use a rule-based selector +

        The following example demonstrates the use of the rule selector and the +inclusion of a selection rule to retrieve the characteristics of a symmetric +cipher object.

        +#include <ruleselector.h> +#include <cryptosymmetriccipherapi.h> +#include <cryptospistateapi.h> +#include <cryptospidef.h> +#include <keys.h> + +using namespace CryptoSpi; + +// Create a CSelectionRules collection object which is used to store the rules +// that influence the choice of plug-in implementation selected + +CSelectionRules* rules = CSelectionRules::NewL(); +CleanupStack::PushL(rules); + +// Add a selection rule selecting symmetric ciphers with a key length of 64 bytes + +TInt ruleValue = 64; + +// Create and initialise one or more crypto parameters +// to store the contents of the rule value +CCryptoParam* ruleValueParam = CCryptoIntParam::NewL(ruleValue,KMaximumKeyLengthTypeUid); + +// Create a selection rule for each crypto parameter (CSelectionRuleContent +// takes ownership of the crypto parameter), by passing in the following parameters: +// *InterfaceScope The Interface scope of which the rule should be applied +// *AlgorithmScope The Algorithm scope of which the rule should be applied +// *CharacteristicValue The parameter type and value of the rule +// *Operator The operator of the rule +// *IsOptional Whether this rule is optional (ETrue) or mandatory (EFalse) +CSelectionRuleContent* rule = CSelectionRuleContent::NewL(KSymmetricCipherInterfaceUid, + KNoneUid, + ruleValueParam, + EOpEqual, + EFalse); + +// Add the newly created selection rule to the CSelectionRules collection by calling +// the 'AddSelectionRuleL' method and passing in a pointer to the constructed rule. +// AddSelectionRuleL() checks that the type of the crypto parameters is correct and +// leaves with KErrNotSupported if not. For instance, a creator name parameter must +// be stored using a CCryptoDesC16Param. + +rules->AddSelectionRuleL(rule); + +// Create an instance of the rule selector, passing in the selection rules +// object previously instantiated +CRuleSelector* ruleSelector = CRuleSelector::NewL(rules); + +// Ownership of the rule collection object is passed to the rule selector, therefore +// the CSelectionRules object needs to be popped off the cleanup stack before pushing on +// the rule selector +CleanupStack::Pop(rules); +CleanupStack::PushL(ruleSelector); + +// The legacy selector is set within the framework by default. In order to set the rule +// selector, the 'SetSelector' method of CryptoSpiStateApi needs to be called, +//passing a pointer to the initialized rule selector +CCryptoSpiStateApi::SetSelector(ruleSelector); + +// Create a new CryptoParams object to encapsulate the secret key string for the +// Symmetric Cipher implementation +CCryptoParams* keyParams = CCryptoParams::NewLC(); + +// Add the secret key to the CCryptoParams object by calling the AddL method, passing in +// the key string and appropriate key parameter UID +keyParams->AddL(_L8("12345678"), KSymmetricKeyParameterUid); + +// Create a CKey object by passing in an instance of TKeyProperty and the previously +// created CCryptoParams object containing the secret key +TKeyProperty keyProperty; +CKey* key=CKey::NewL(keyProperty,*keyParams); +CleanupStack::PushL(key); + +// Create and initialise a pointer for the Symmetric Cipher implementation object +CSymmetricCipher* symmetricCipherImpl = NULL; + +// If successful, the 'CreateSymmetricCipherL' method returns KErrNone and the framework +// creates an instance of the selected Symmetric Cipher implementation, as chosen by the +// rule selector. The CSymmetricCipher pointer is passed by reference and set to point to +// the new symmetric cipher object +TRAPD(err,CSymmetricCipherFactory::CreateSymmetricCipherL(symmetricCipherImpl, + KDesUid, + *key, + KCryptoModeEncryptUid, + KOperationModeNoneUid, + KPaddingModeNoneUid, + NULL)); + +// Having successfully constructed the symmetric cipher implementation object, it is +// possible to retrieve the plug-in characteristics associated with it +if (symmetricCipherImpl && (err == KErrNone)) + { + CleanupStack::PushL(symmetricCipherImpl); + // Use cipher + CleanupStack::PopAndDestroy(symmetricCipherImpl); + } + +CleanupStack::PopAndDestroy(2, keyParams); //key, keyParams + +// Unselect rule selector before destruction. This causes CryptoSPI to use the +// legacy selector again. After calling SetSelector(), the caller +// keeps ownership of the selector, so after calling UnsetSelector(), the +// caller needs to delete the selector +CCryptoSpiStateApi::UnsetSelector(); + +// Pop and destroy the rule selector +CleanupStack::PopAndDestroy(ruleSelector); + +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5857377F-B90D-5149-9485-5919C12B8F13-GENID-1-12-1-26-1-1-9-1-5-1-5-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-5857377F-B90D-5149-9485-5919C12B8F13-GENID-1-12-1-26-1-1-9-1-5-1-5-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,124 @@ + + + + + +How +to use a rule-based selector +

        The following example demonstrates the use of the rule selector and the +inclusion of a selection rule to retrieve the characteristics of a symmetric +cipher object.

        +#include <ruleselector.h> +#include <cryptosymmetriccipherapi.h> +#include <cryptospistateapi.h> +#include <cryptospidef.h> +#include <keys.h> + +using namespace CryptoSpi; + +// Create a CSelectionRules collection object which is used to store the rules +// that influence the choice of plug-in implementation selected + +CSelectionRules* rules = CSelectionRules::NewL(); +CleanupStack::PushL(rules); + +// Add a selection rule selecting symmetric ciphers with a key length of 64 bytes + +TInt ruleValue = 64; + +// Create and initialise one or more crypto parameters +// to store the contents of the rule value +CCryptoParam* ruleValueParam = CCryptoIntParam::NewL(ruleValue,KMaximumKeyLengthTypeUid); + +// Create a selection rule for each crypto parameter (CSelectionRuleContent +// takes ownership of the crypto parameter), by passing in the following parameters: +// *InterfaceScope The Interface scope of which the rule should be applied +// *AlgorithmScope The Algorithm scope of which the rule should be applied +// *CharacteristicValue The parameter type and value of the rule +// *Operator The operator of the rule +// *IsOptional Whether this rule is optional (ETrue) or mandatory (EFalse) +CSelectionRuleContent* rule = CSelectionRuleContent::NewL(KSymmetricCipherInterfaceUid, + KNoneUid, + ruleValueParam, + EOpEqual, + EFalse); + +// Add the newly created selection rule to the CSelectionRules collection by calling +// the 'AddSelectionRuleL' method and passing in a pointer to the constructed rule. +// AddSelectionRuleL() checks that the type of the crypto parameters is correct and +// leaves with KErrNotSupported if not. For instance, a creator name parameter must +// be stored using a CCryptoDesC16Param. + +rules->AddSelectionRuleL(rule); + +// Create an instance of the rule selector, passing in the selection rules +// object previously instantiated +CRuleSelector* ruleSelector = CRuleSelector::NewL(rules); + +// Ownership of the rule collection object is passed to the rule selector, therefore +// the CSelectionRules object needs to be popped off the cleanup stack before pushing on +// the rule selector +CleanupStack::Pop(rules); +CleanupStack::PushL(ruleSelector); + +// The legacy selector is set within the framework by default. In order to set the rule +// selector, the 'SetSelector' method of CryptoSpiStateApi needs to be called, +//passing a pointer to the initialized rule selector +CCryptoSpiStateApi::SetSelector(ruleSelector); + +// Create a new CryptoParams object to encapsulate the secret key string for the +// Symmetric Cipher implementation +CCryptoParams* keyParams = CCryptoParams::NewLC(); + +// Add the secret key to the CCryptoParams object by calling the AddL method, passing in +// the key string and appropriate key parameter UID +keyParams->AddL(_L8("12345678"), KSymmetricKeyParameterUid); + +// Create a CKey object by passing in an instance of TKeyProperty and the previously +// created CCryptoParams object containing the secret key +TKeyProperty keyProperty; +CKey* key=CKey::NewL(keyProperty,*keyParams); +CleanupStack::PushL(key); + +// Create and initialise a pointer for the Symmetric Cipher implementation object +CSymmetricCipher* symmetricCipherImpl = NULL; + +// If successful, the 'CreateSymmetricCipherL' method returns KErrNone and the framework +// creates an instance of the selected Symmetric Cipher implementation, as chosen by the +// rule selector. The CSymmetricCipher pointer is passed by reference and set to point to +// the new symmetric cipher object +TRAPD(err,CSymmetricCipherFactory::CreateSymmetricCipherL(symmetricCipherImpl, + KDesUid, + *key, + KCryptoModeEncryptUid, + KOperationModeNoneUid, + KPaddingModeNoneUid, + NULL)); + +// Having successfully constructed the symmetric cipher implementation object, it is +// possible to retrieve the plug-in characteristics associated with it +if (symmetricCipherImpl && (err == KErrNone)) + { + CleanupStack::PushL(symmetricCipherImpl); + // Use cipher + CleanupStack::PopAndDestroy(symmetricCipherImpl); + } + +CleanupStack::PopAndDestroy(2, keyParams); //key, keyParams + +// Unselect rule selector before destruction. This causes CryptoSPI to use the +// legacy selector again. After calling SetSelector(), the caller +// keeps ownership of the selector, so after calling UnsetSelector(), the +// caller needs to delete the selector +CCryptoSpiStateApi::UnsetSelector(); + +// Pop and destroy the rule selector +CleanupStack::PopAndDestroy(ruleSelector); + +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5857377F-B90D-5149-9485-5919C12B8F13.dita --- a/Symbian3/PDK/Source/GUID-5857377F-B90D-5149-9485-5919C12B8F13.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,124 +0,0 @@ - - - - - -How -to use a rule-based selector -

        The following example demonstrates the use of the rule selector and the -inclusion of a selection rule to retrieve the characteristics of a symmetric -cipher object.

        -#include <ruleselector.h> -#include <cryptosymmetriccipherapi.h> -#include <cryptospistateapi.h> -#include <cryptospidef.h> -#include <keys.h> - -using namespace CryptoSpi; - -// Create a CSelectionRules collection object which is used to store the rules -// that influence the choice of plug-in implementation selected - -CSelectionRules* rules = CSelectionRules::NewL(); -CleanupStack::PushL(rules); - -// Add a selection rule selecting symmetric ciphers with a key length of 64 bytes - -TInt ruleValue = 64; - -// Create and initialise one or more crypto parameters -// to store the contents of the rule value -CCryptoParam* ruleValueParam = CCryptoIntParam::NewL(ruleValue,KMaximumKeyLengthTypeUid); - -// Create a selection rule for each crypto parameter (CSelectionRuleContent -// takes ownership of the crypto parameter), by passing in the following parameters: -// *InterfaceScope The Interface scope of which the rule should be applied -// *AlgorithmScope The Algorithm scope of which the rule should be applied -// *CharacteristicValue The parameter type and value of the rule -// *Operator The operator of the rule -// *IsOptional Whether this rule is optional (ETrue) or mandatory (EFalse) -CSelectionRuleContent* rule = CSelectionRuleContent::NewL(KSymmetricCipherInterfaceUid, - KNoneUid, - ruleValueParam, - EOpEqual, - EFalse); - -// Add the newly created selection rule to the CSelectionRules collection by calling -// the 'AddSelectionRuleL' method and passing in a pointer to the constructed rule. -// AddSelectionRuleL() checks that the type of the crypto parameters is correct and -// leaves with KErrNotSupported if not. For instance, a creator name parameter must -// be stored using a CCryptoDesC16Param. - -rules->AddSelectionRuleL(rule); - -// Create an instance of the rule selector, passing in the selection rules -// object previously instantiated -CRuleSelector* ruleSelector = CRuleSelector::NewL(rules); - -// Ownership of the rule collection object is passed to the rule selector, therefore -// the CSelectionRules object needs to be popped off the cleanup stack before pushing on -// the rule selector -CleanupStack::Pop(rules); -CleanupStack::PushL(ruleSelector); - -// The legacy selector is set within the framework by default. In order to set the rule -// selector, the 'SetSelector' method of CryptoSpiStateApi needs to be called, -//passing a pointer to the initialized rule selector -CCryptoSpiStateApi::SetSelector(ruleSelector); - -// Create a new CryptoParams object to encapsulate the secret key string for the -// Symmetric Cipher implementation -CCryptoParams* keyParams = CCryptoParams::NewLC(); - -// Add the secret key to the CCryptoParams object by calling the AddL method, passing in -// the key string and appropriate key parameter UID -keyParams->AddL(_L8("12345678"), KSymmetricKeyParameterUid); - -// Create a CKey object by passing in an instance of TKeyProperty and the previously -// created CCryptoParams object containing the secret key -TKeyProperty keyProperty; -CKey* key=CKey::NewL(keyProperty,*keyParams); -CleanupStack::PushL(key); - -// Create and initialise a pointer for the Symmetric Cipher implementation object -CSymmetricCipher* symmetricCipherImpl = NULL; - -// If successful, the 'CreateSymmetricCipherL' method returns KErrNone and the framework -// creates an instance of the selected Symmetric Cipher implementation, as chosen by the -// rule selector. The CSymmetricCipher pointer is passed by reference and set to point to -// the new symmetric cipher object -TRAPD(err,CSymmetricCipherFactory::CreateSymmetricCipherL(symmetricCipherImpl, - KDesUid, - *key, - KCryptoModeEncryptUid, - KOperationModeNoneUid, - KPaddingModeNoneUid, - NULL)); - -// Having successfully constructed the symmetric cipher implementation object, it is -// possible to retrieve the plug-in characteristics associated with it -if (symmetricCipherImpl && (err == KErrNone)) - { - CleanupStack::PushL(symmetricCipherImpl); - // Use cipher - CleanupStack::PopAndDestroy(symmetricCipherImpl); - } - -CleanupStack::PopAndDestroy(2, keyParams); //key, keyParams - -// Unselect rule selector before destruction. This causes CryptoSPI to use the -// legacy selector again. After calling SetSelector(), the caller -// keeps ownership of the selector, so after calling UnsetSelector(), the -// caller needs to delete the selector -CCryptoSpiStateApi::UnsetSelector(); - -// Pop and destroy the rule selector -CleanupStack::PopAndDestroy(ruleSelector); - -
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5862F14F-5BB7-584B-A8B1-447975C42D49.dita --- a/Symbian3/PDK/Source/GUID-5862F14F-5BB7-584B-A8B1-447975C42D49.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5862F14F-5BB7-584B-A8B1-447975C42D49.dita Fri Jul 16 17:23:46 2010 +0100 @@ -22,7 +22,7 @@ DLL interface and server application framework interface. A server application derives service support DLL classes and server application framework classes to implement the service and the server application interface.

        - +
      Procedure

      Complete the following steps to create a new service:

        diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-586A88EC-45CC-504B-BB75-9BD88233D88F.dita --- a/Symbian3/PDK/Source/GUID-586A88EC-45CC-504B-BB75-9BD88233D88F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-586A88EC-45CC-504B-BB75-9BD88233D88F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -13,10 +13,10 @@ the msgPriorityDriveList.ini fileA list of priority drives with priority set to each drive is maintained by Message Server. The list supports only seven drives out of which one must be the device system drive. -

        Before you start, +

        Before you start, you must understand Handling Multiple Disk Drives.

        -

        Before updating +

        Before updating the file, read the following considerations:

        • The drive list is read by message server only if the list is not already present in the central repository.

        • @@ -42,7 +42,7 @@ the list of drives that must be the part of a priority drive list. -msgPriorityDriveList.ini +<example id="GUID-4A2F5CA7-6571-5B53-86B7-FB77F3AB6CDA-GENID-1-12-1-21-1-1-6-1-5-1-5-1-3-1-5-1-3-4"><title>msgPriorityDriveList.ini example # The preferred drive list. PriorityDrive1 = C diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5879E34A-B0AB-5609-9C81-E0E8D772E722.dita --- a/Symbian3/PDK/Source/GUID-5879E34A-B0AB-5609-9C81-E0E8D772E722.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5879E34A-B0AB-5609-9C81-E0E8D772E722.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@

          The architecture defines four possible transitions between these three states, as shown by the diagram below:

          - +
          Active to Standby

          The decision to initiate a system-wide power transition from the Active state diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-58A5C008-88B6-5C91-8BE5-E98CA5E5A438_d0e400148_href.png Binary file Symbian3/PDK/Source/GUID-58A5C008-88B6-5C91-8BE5-E98CA5E5A438_d0e400148_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-58A5C008-88B6-5C91-8BE5-E98CA5E5A438_d0e406001_href.png Binary file Symbian3/PDK/Source/GUID-58A5C008-88B6-5C91-8BE5-E98CA5E5A438_d0e406001_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-590C985D-A43E-4869-9BE3-62A960782825.dita --- a/Symbian3/PDK/Source/GUID-590C985D-A43E-4869-9BE3-62A960782825.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-590C985D-A43E-4869-9BE3-62A960782825.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,8 +11,8 @@ PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd"> Running Tests on PhoneYou can run the tests on the phone using the .pkg file. - -Install eshell and + +Install eshell and TestExecute on the phone.

          The eshell is installed by default, if the image build of your phone is of Research and Development (R and D) version. If your image is not of diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5918ED8A-B26B-41A0-94A6-AB6D51BF80A1.dita --- a/Symbian3/PDK/Source/GUID-5918ED8A-B26B-41A0-94A6-AB6D51BF80A1.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5918ED8A-B26B-41A0-94A6-AB6D51BF80A1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -10,7 +10,7 @@ Menu bars -Menu bar configuration +Menu bar configuration

          The Symbian platform uses MENU_BAR resources to create the Options menu, when a mobile device user selects the Options softkey. The options that appear above the diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-59217FA7-3078-53CA-88B3-78D6FB788271.dita --- a/Symbian3/PDK/Source/GUID-59217FA7-3078-53CA-88B3-78D6FB788271.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-59217FA7-3078-53CA-88B3-78D6FB788271.dita Fri Jul 16 17:23:46 2010 +0100 @@ -54,7 +54,7 @@ MTMs through a single server interface. The following figure shows the MTM architecture.

          MTM architecture - +
          Message Server and MTMs

          The following figure shows the relationship between the Message Server and MTMs. The grey classes are @@ -65,7 +65,7 @@ the Message Server client API.

          Relationship between Message Server and MTMs - +
          MTM class summary

          Messaging Middleware provides the following base classes, which defines the component interfaces for MTM diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-59230503-7E2E-505D-9BC9-C2D2DB96B3E9.dita --- a/Symbian3/PDK/Source/GUID-59230503-7E2E-505D-9BC9-C2D2DB96B3E9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-59230503-7E2E-505D-9BC9-C2D2DB96B3E9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,55 +1,53 @@ - - - - - -RTPExample: -RTP Packet Streaming Example -

          Description

          This example code demonstrates RTP -packet streaming. It uses CRtpFileSender to send RTP packets -and CRtpFileStreamer to receive RTP packets. The example -opens an RTP session using the pre-connected socket and initialises new send -and receive sources on the RTP session. It registers the callback functions -when an RTP packet is successfully sent by a send source or received by a -receive source, to receive notifications whenever an RTP packet is sent or -received.

          The RTPExample example code provides -the following functionality:

          -
          Download

          Click -on the following link to download the example: RTPExample.zip

          Click browse to view the example code.

          -
          Initialising void CRtpFileStreamer::ConstructL();

          Opens an RTP session using the pre-connected socket and initialises new send -sources on the RTP session.

          -
          Sending an RTP packet void CRtpFileSender::RunL();

          Sends the RTP packet. This does the following:

            -
          • gets a new RTP packet -to send from the send source

          • -
          • sets the RTP timestamp -of the RTP packet

          • -
          • reads a block of data -from the source file

          • -
          • creates an RTP packet -using the block of data

          • -
          • sends the RTP packet

          • -
          • closes the source file.

          • -

          CRtpFileSender::PacketSent() is called to notify -that the RTP packet has been successfully sent.

          -
          Receiving an RTP packet void CRtpFileStreamer::NewSource();

          When an RTP packet with a new receive source arrives, this callback function -is called, which registers the packet. This can be used for different types -of RTP packets such as APP, BYE, SDES, SR and RR.

          void CRtpFileStreamer::PacketArrived();

          Whenever an RTP packet arrives, this callback function is called. The -function retrieves the payload from the packet received and writes it to the -target file.

          -
          Class summary

          RSocket RSocketServ RConnection RRtpSession RRtpSendSource RRtpReceiveSource RRtpSendPacket RRtpReceivePacket RFs RFile

          -
          Usage

          The Symbian -build process describes how to build an application.

          This -is a console application, so does not have a GUI. It builds an executable -called RTPExample.exe in the standard location (\epoc32\release\winscw\ <build_variant> for -CodeWarrior). After launching the executable, depending on the emulator you -are using, you may need to task away from the app launcher/shell screen to -view the console.

          -
          See also

          RTP -overview

          + + + + + +RTPExample: RTP Packet Streaming Example +
          Description

          This example code demonstrates RTP packet streaming. It uses CRtpFileSender to send RTP packets and CRtpFileStreamer to receive RTP packets. The example opens an RTP session using the +pre-connected socket and initialises new send and receive sources +on the RTP session. It registers the callback functions when an RTP +packet is successfully sent by a send source or received by a receive +source, to receive notifications whenever an RTP packet is sent or +received.

          The RTPExample example code +provides the following functionality:

          +
          Download

          Click on the following link to download the example: RTPExample.zip

          Click browse to view the example code.

          +
          Initialising void CRtpFileStreamer::ConstructL();

          Opens an RTP session using the pre-connected socket and initialises +new send sources on the RTP session.

          +
          Sending +an RTP packet void CRtpFileSender::RunL();

          Sends the RTP packet. This does the following:

            +
          • gets a new RTP +packet to send from the send source

          • +
          • sets the RTP +timestamp of the RTP packet

          • +
          • reads a block +of data from the source file

          • +
          • creates an RTP +packet using the block of data

          • +
          • sends the RTP +packet

          • +
          • closes the source +file.

          • +

          CRtpFileSender::PacketSent() is called +to notify that the RTP packet has been successfully sent.

          +
          Receiving +an RTP packet void CRtpFileStreamer::NewSource();

          When an RTP packet with a new receive source arrives, this callback +function is called, which registers the packet. This can be used for +different types of RTP packets such as APP, BYE, SDES, SR and RR.

          void CRtpFileStreamer::PacketArrived();

          Whenever an RTP packet arrives, this callback function is called. +The function retrieves the payload from the packet received and writes +it to the target file.

          +
          Class +summary

          RSocket RSocketServ RConnection RRtpSession RRtpSendSource RRtpReceiveSource RRtpSendPacket RRtpReceivePacket RFs RFile

          +
          Usage

          The Symbian build process describes how to build an application.

          This is a console application, so does not have +a GUI. It builds an executable called RTPExample.exe in the standard location (\epoc32\release\winscw\ <build_variant> for CodeWarrior). After launching the +executable, depending on the emulator you are using, you may need +to task away from the app launcher/shell screen to view the console.

          +
          See +also

          RTP overview

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5927A119-C520-572D-83AF-7265DEEF4553-GENID-1-12-1-24-1-1-8-1-4-1-4-1-5-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-5927A119-C520-572D-83AF-7265DEEF4553-GENID-1-12-1-24-1-1-8-1-4-1-4-1-5-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,129 @@ + + + + + +Using +Pre-Shared Keys with Transport Layer Security : TutorialThis topic describes how to use Pre-Shared Keys (PSKs) with Transport +Layer Security (TLS). This tutorial is useful for licensees and third-party +developers. +

          TLS_PSK is a standard for using PSKs with Transport Layer Security +(TLS). You can use TLS_PSK instead of certificate authentication. The benefits +of using TLS_PSK are as follows:

            +
          • Easy to manage - For +example, PSK can derive from a "secret key" that vendors deploy in the SIM +card of each phone.

          • +
          • It improves the connection +setup performance and battery life, as the key exchange algorithm takes less +time to run.

          • +

          Symbian maintains the following TLS_PSK ciphersuites:

            +
          • TLS_PSK_WITH_RC4_128_SHA

          • +
          • TLS_PSK_WITH_3DES_EDE_CBC_SHA

          • +
          • TLS_PSK_WITH_AES_128_CBC_SHA

          • +
          • TLS_PSK_WITH_AES_256_CBC_SHA

          • +

          The ciphersuite is made up of a key exchange (for example PSK), a +cipher (for example RC4_128) and a hash (for example SHA).

          Note: TLS_PSK +operation is specified by RFC4279.

          For a client to make a secure connection +with a TLS_PSK server, it must provide a pre-shared key and an identity. To +provide a pre-shared key and an identity, do the following steps: +

          + +Configure a PSK +key handler + + +Set available ciphersuites. There are two possibilities for offering +PSK ciphersuites: + +Specify an explicit +ordered list of ciphersuites for the server to select from. +To do this call SetAvailableCipherSuites(). You can +do this only after configuring the PSK key handler. + +Use the default +list, which is automatically generated. +If you do not specify an explicit list, the stack automatically includes +the PSK ciphersuites in addition to any other ciphersuites supported. + + +If you specify an explicit list by calling SetAvailableCipherSuites(), +and you later deconfigure the PSK key handler, you must remove the PSK ciphersuites +from the list by calling SetAvailableCipherSuites() again. + + +Start a connection. +The server chooses a ciphersuite from those offered by the client. If +the server chooses a PSK ciphersuite, the following sequence of events occurs: + + +The server can +optionally send a “PSK identity hint” to the client. + This PSK identity hint might influence the choice of key and identity +the client makes. If the server sends one, it is passed to the key handler. +If it does not send one, NULL is passed to the key handler. +Note: The PSK identity hint is optional and its meaning is not defined +(format must be UTF8). Applications using TLS-PSK may left out it or use it +for any action (for example SUPL uses it to indicate the SUPL protocol version +and to present a list of allowed PSK generators). + +The TLS stack +on the client calls ptrToKeyHandler->getPskL() +The TLS stack on the client calls getPskL() for the instance of the +key handler (in this case ptrToKeyHandler). See MSoPskKeyHandler:: +GetPskL() for the prototype. This call returns the PSK identity +and value to be used to secure the connection. + +The TLS stack +sends the PSK identity to the server. +The TLS stack sends the PSK identity (chosen in Step 2) to the server +so it can retrieve the matching PSK value to secure the connection. + + +After the client has chosen which PSK to use, it sends an identity to +the server and the server can use this to obtain a matching PSK. Again the +meaning of the identity field is not specified, but its format must be UTF8. +An application may choose to use it or leave it empty. +Note: In the example, the server must select a PSK ciphersuite, because +the client provides only PSK ciphersuites. The connection fails, if the server +selects a PSK ciphersuite and fails to get a key that matches with the client. +The TLS assumes that the first common ciphersuite cannot fail and does not +implement connection retry. + + +TLS_PSK example

          The following example code shows +how to configure TLS_PSK:

          + + +//Configure a PSK key handler + +TPckgBuf<MSoPskKeyHandler *> pskConfigPkg; +pskConfigPkg() = ptrToKeyHandler; +User::LeaveIfError(secureSocket->SetOpt(KSoPskConfig, KSolInetSSL, pskConfigPkg)); + +//set available ciphersuites + +TBuf8<8> buf; +for(TInt i=0; i<4; ++i) +{ + // The supported PSK ciphersuites are as follows:- + // TLS_PSK_WITH_RC4_128_SHA = { 0x00, 0x8A }; + // TLS_PSK_WITH_3DES_EDE_CBC_SHA = { 0x00, 0x8B }; + // TLS_PSK_WITH_AES_128_CBC_SHA = { 0x00, 0x8C }; + // TLS_PSK_WITH_AES_256_CBC_SHA = { 0x00, 0x8D }; + buf[i*2]=0; + buf[i*2+1]=0x8a+i; +} +secureSocket->SetAvailableCipherSuites( buf ); + +//Start a connection + +secureSocket->StartClientHandshake( iStatus ); + +
          +
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5927A119-C520-572D-83AF-7265DEEF4553-GENID-1-12-1-24-1-1-8-1-5-1-4-1-5-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-5927A119-C520-572D-83AF-7265DEEF4553-GENID-1-12-1-24-1-1-8-1-5-1-4-1-5-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,129 @@ + + + + + +Using +Pre-Shared Keys with Transport Layer Security : TutorialThis topic describes how to use Pre-Shared Keys (PSKs) with Transport +Layer Security (TLS). This tutorial is useful for licensees and third-party +developers. +

          TLS_PSK is a standard for using PSKs with Transport Layer Security +(TLS). You can use TLS_PSK instead of certificate authentication. The benefits +of using TLS_PSK are as follows:

            +
          • Easy to manage - For +example, PSK can derive from a "secret key" that vendors deploy in the SIM +card of each phone.

          • +
          • It improves the connection +setup performance and battery life, as the key exchange algorithm takes less +time to run.

          • +

          Symbian maintains the following TLS_PSK ciphersuites:

            +
          • TLS_PSK_WITH_RC4_128_SHA

          • +
          • TLS_PSK_WITH_3DES_EDE_CBC_SHA

          • +
          • TLS_PSK_WITH_AES_128_CBC_SHA

          • +
          • TLS_PSK_WITH_AES_256_CBC_SHA

          • +

          The ciphersuite is made up of a key exchange (for example PSK), a +cipher (for example RC4_128) and a hash (for example SHA).

          Note: TLS_PSK +operation is specified by RFC4279.

          For a client to make a secure connection +with a TLS_PSK server, it must provide a pre-shared key and an identity. To +provide a pre-shared key and an identity, do the following steps: +

          + +Configure a PSK +key handler + + +Set available ciphersuites. There are two possibilities for offering +PSK ciphersuites: + +Specify an explicit +ordered list of ciphersuites for the server to select from. +To do this call SetAvailableCipherSuites(). You can +do this only after configuring the PSK key handler. + +Use the default +list, which is automatically generated. +If you do not specify an explicit list, the stack automatically includes +the PSK ciphersuites in addition to any other ciphersuites supported. + + +If you specify an explicit list by calling SetAvailableCipherSuites(), +and you later deconfigure the PSK key handler, you must remove the PSK ciphersuites +from the list by calling SetAvailableCipherSuites() again. + + +Start a connection. +The server chooses a ciphersuite from those offered by the client. If +the server chooses a PSK ciphersuite, the following sequence of events occurs: + + +The server can +optionally send a “PSK identity hint” to the client. + This PSK identity hint might influence the choice of key and identity +the client makes. If the server sends one, it is passed to the key handler. +If it does not send one, NULL is passed to the key handler. +Note: The PSK identity hint is optional and its meaning is not defined +(format must be UTF8). Applications using TLS-PSK may left out it or use it +for any action (for example SUPL uses it to indicate the SUPL protocol version +and to present a list of allowed PSK generators). + +The TLS stack +on the client calls ptrToKeyHandler->getPskL() +The TLS stack on the client calls getPskL() for the instance of the +key handler (in this case ptrToKeyHandler). See MSoPskKeyHandler:: +GetPskL() for the prototype. This call returns the PSK identity +and value to be used to secure the connection. + +The TLS stack +sends the PSK identity to the server. +The TLS stack sends the PSK identity (chosen in Step 2) to the server +so it can retrieve the matching PSK value to secure the connection. + + +After the client has chosen which PSK to use, it sends an identity to +the server and the server can use this to obtain a matching PSK. Again the +meaning of the identity field is not specified, but its format must be UTF8. +An application may choose to use it or leave it empty. +Note: In the example, the server must select a PSK ciphersuite, because +the client provides only PSK ciphersuites. The connection fails, if the server +selects a PSK ciphersuite and fails to get a key that matches with the client. +The TLS assumes that the first common ciphersuite cannot fail and does not +implement connection retry. + + +TLS_PSK example

          The following example code shows +how to configure TLS_PSK:

          + + +//Configure a PSK key handler + +TPckgBuf<MSoPskKeyHandler *> pskConfigPkg; +pskConfigPkg() = ptrToKeyHandler; +User::LeaveIfError(secureSocket->SetOpt(KSoPskConfig, KSolInetSSL, pskConfigPkg)); + +//set available ciphersuites + +TBuf8<8> buf; +for(TInt i=0; i<4; ++i) +{ + // The supported PSK ciphersuites are as follows:- + // TLS_PSK_WITH_RC4_128_SHA = { 0x00, 0x8A }; + // TLS_PSK_WITH_3DES_EDE_CBC_SHA = { 0x00, 0x8B }; + // TLS_PSK_WITH_AES_128_CBC_SHA = { 0x00, 0x8C }; + // TLS_PSK_WITH_AES_256_CBC_SHA = { 0x00, 0x8D }; + buf[i*2]=0; + buf[i*2+1]=0x8a+i; +} +secureSocket->SetAvailableCipherSuites( buf ); + +//Start a connection + +secureSocket->StartClientHandshake( iStatus ); + +
          +
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5927A119-C520-572D-83AF-7265DEEF4553-GENID-1-12-1-24-1-1-9-1-4-1-5-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-5927A119-C520-572D-83AF-7265DEEF4553-GENID-1-12-1-24-1-1-9-1-4-1-5-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,129 @@ + + + + + +Using +Pre-Shared Keys with Transport Layer Security : TutorialThis topic describes how to use Pre-Shared Keys (PSKs) with Transport +Layer Security (TLS). This tutorial is useful for licensees and third-party +developers. +

          TLS_PSK is a standard for using PSKs with Transport Layer Security +(TLS). You can use TLS_PSK instead of certificate authentication. The benefits +of using TLS_PSK are as follows:

            +
          • Easy to manage - For +example, PSK can derive from a "secret key" that vendors deploy in the SIM +card of each phone.

          • +
          • It improves the connection +setup performance and battery life, as the key exchange algorithm takes less +time to run.

          • +

          Symbian maintains the following TLS_PSK ciphersuites:

            +
          • TLS_PSK_WITH_RC4_128_SHA

          • +
          • TLS_PSK_WITH_3DES_EDE_CBC_SHA

          • +
          • TLS_PSK_WITH_AES_128_CBC_SHA

          • +
          • TLS_PSK_WITH_AES_256_CBC_SHA

          • +

          The ciphersuite is made up of a key exchange (for example PSK), a +cipher (for example RC4_128) and a hash (for example SHA).

          Note: TLS_PSK +operation is specified by RFC4279.

          For a client to make a secure connection +with a TLS_PSK server, it must provide a pre-shared key and an identity. To +provide a pre-shared key and an identity, do the following steps: +

          + +Configure a PSK +key handler + + +Set available ciphersuites. There are two possibilities for offering +PSK ciphersuites: + +Specify an explicit +ordered list of ciphersuites for the server to select from. +To do this call SetAvailableCipherSuites(). You can +do this only after configuring the PSK key handler. + +Use the default +list, which is automatically generated. +If you do not specify an explicit list, the stack automatically includes +the PSK ciphersuites in addition to any other ciphersuites supported. + + +If you specify an explicit list by calling SetAvailableCipherSuites(), +and you later deconfigure the PSK key handler, you must remove the PSK ciphersuites +from the list by calling SetAvailableCipherSuites() again. + + +Start a connection. +The server chooses a ciphersuite from those offered by the client. If +the server chooses a PSK ciphersuite, the following sequence of events occurs: + + +The server can +optionally send a “PSK identity hint” to the client. + This PSK identity hint might influence the choice of key and identity +the client makes. If the server sends one, it is passed to the key handler. +If it does not send one, NULL is passed to the key handler. +Note: The PSK identity hint is optional and its meaning is not defined +(format must be UTF8). Applications using TLS-PSK may left out it or use it +for any action (for example SUPL uses it to indicate the SUPL protocol version +and to present a list of allowed PSK generators). + +The TLS stack +on the client calls ptrToKeyHandler->getPskL() +The TLS stack on the client calls getPskL() for the instance of the +key handler (in this case ptrToKeyHandler). See MSoPskKeyHandler:: +GetPskL() for the prototype. This call returns the PSK identity +and value to be used to secure the connection. + +The TLS stack +sends the PSK identity to the server. +The TLS stack sends the PSK identity (chosen in Step 2) to the server +so it can retrieve the matching PSK value to secure the connection. + + +After the client has chosen which PSK to use, it sends an identity to +the server and the server can use this to obtain a matching PSK. Again the +meaning of the identity field is not specified, but its format must be UTF8. +An application may choose to use it or leave it empty. +Note: In the example, the server must select a PSK ciphersuite, because +the client provides only PSK ciphersuites. The connection fails, if the server +selects a PSK ciphersuite and fails to get a key that matches with the client. +The TLS assumes that the first common ciphersuite cannot fail and does not +implement connection retry. + + +TLS_PSK example

          The following example code shows +how to configure TLS_PSK:

          + + +//Configure a PSK key handler + +TPckgBuf<MSoPskKeyHandler *> pskConfigPkg; +pskConfigPkg() = ptrToKeyHandler; +User::LeaveIfError(secureSocket->SetOpt(KSoPskConfig, KSolInetSSL, pskConfigPkg)); + +//set available ciphersuites + +TBuf8<8> buf; +for(TInt i=0; i<4; ++i) +{ + // The supported PSK ciphersuites are as follows:- + // TLS_PSK_WITH_RC4_128_SHA = { 0x00, 0x8A }; + // TLS_PSK_WITH_3DES_EDE_CBC_SHA = { 0x00, 0x8B }; + // TLS_PSK_WITH_AES_128_CBC_SHA = { 0x00, 0x8C }; + // TLS_PSK_WITH_AES_256_CBC_SHA = { 0x00, 0x8D }; + buf[i*2]=0; + buf[i*2+1]=0x8a+i; +} +secureSocket->SetAvailableCipherSuites( buf ); + +//Start a connection + +secureSocket->StartClientHandshake( iStatus ); + +
          +
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-594488FF-02C9-5066-85DB-5F88A754AE18.dita --- a/Symbian3/PDK/Source/GUID-594488FF-02C9-5066-85DB-5F88A754AE18.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -How to build DLLs \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5971E713-9CA1-5D75-AE9F-2EF9CBDE39F4_d0e322350_href.png Binary file Symbian3/PDK/Source/GUID-5971E713-9CA1-5D75-AE9F-2EF9CBDE39F4_d0e322350_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5971E713-9CA1-5D75-AE9F-2EF9CBDE39F4_d0e328336_href.png Binary file Symbian3/PDK/Source/GUID-5971E713-9CA1-5D75-AE9F-2EF9CBDE39F4_d0e328336_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-597D496F-D85A-5FFD-B9CA-FDCA3E016BE7_d0e654525_href.png Binary file Symbian3/PDK/Source/GUID-597D496F-D85A-5FFD-B9CA-FDCA3E016BE7_d0e654525_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-597D496F-D85A-5FFD-B9CA-FDCA3E016BE7_d0e667352_href.png Binary file Symbian3/PDK/Source/GUID-597D496F-D85A-5FFD-B9CA-FDCA3E016BE7_d0e667352_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-598140D3-6C92-5D8E-B204-C7197C6E404D_d0e598544_href.png Binary file Symbian3/PDK/Source/GUID-598140D3-6C92-5D8E-B204-C7197C6E404D_d0e598544_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-598140D3-6C92-5D8E-B204-C7197C6E404D_d0e616130_href.png Binary file Symbian3/PDK/Source/GUID-598140D3-6C92-5D8E-B204-C7197C6E404D_d0e616130_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-598140D3-6C92-5D8E-B204-C7197C6E404D_d0e626438_href.png Binary file Symbian3/PDK/Source/GUID-598140D3-6C92-5D8E-B204-C7197C6E404D_d0e626438_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5986717C-C777-590D-8487-CB8ED488E975.dita --- a/Symbian3/PDK/Source/GUID-5986717C-C777-590D-8487-CB8ED488E975.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,85 +0,0 @@ - - - - - -makmake -command syntax -

          Symbian projects are defined by an .mmp file which -specifies the essential elements of the project. The makmake tool -then uses this environment neutral file to build makefiles for use in various -environments. These makefiles are then used for project development.

          -

          Invocation syntax

          -

          makmake [ options ] [ source-path ] project platform

          -

          Details of options, source-path, project, -and platform are given below.

          -

          Options

          - - - - -

          -d

          -

          Indicates that the makefile is to be created in directory epoc32\build\ path_to_mmp_file \ mmp_basename \ platform rather -than the directory in which makmake was invoked.

          Note -that relative paths within the created makefile will be relative to the directory -in which makmake was invoked so nmake should -be invoked from that directory too if the project is to build correctly.

          -
          - -

          -v

          -

          Indicates verbose operation

          When this flag is specified, makmake prints -many progress messages. The default is to give error messages only.

          -
          - -

          -mmp

          -

          Provides basic syntax guide to writing .mmp files -instead of making the makefile.

          -
          - -

          -plat platform

          -

          Provides syntax guide to writing platform-specific sections of .mmp files, -and information about which macros are defined for preprocessing the .mmp files.

          -
          - -

          -arm

          -

          Instructs an ARMV5 build to not build the project as THUMB, but -as the appropriate ARM ABI.

          For details, see ARMV5 -build target.

          -
          - -

          -debug

          -

          Generates symbolic debug information for release or debug builds.

          -
          - -

          -no_debug

          -

          Does not generate symbolic debug information for release or debug -builds.

          -
          - - -
          -

          Note that you can either use -debug to generate or -no_debug to -not generate the symbolic debug information, irrespective of UREL or UDEB build.

          -

          source-path

          -

          This specifies the path of the source .mmp file, relative -to the current directory.

          -

          If omitted, the source .mmp file is project .mmp in -the current directory.

          -

          Whether or not the source-path is specified, the generated -makefile is always written into the current directory.

          -

          project

          -

          This specifies the project for which to create the makefile.

          -

          platform

          -

          This specifies the target platform, e.g. thumb or winscw.

          -

          Command output

          -

          The output makefile name in most cases has the form project-name.platform-name. -The exceptions are for cw_ide, which produces a .xml file, -which can be imported into CodeWarrior, and vc6 and vc6winc, -which produce .dsw and .dsp files.

          -
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-598B6698-3518-50CA-98DE-D85CB255BA2D-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-5-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-598B6698-3518-50CA-98DE-D85CB255BA2D-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-5-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,74 @@ + + + + + +Secure stream encryption example code

          This example covers:

          • Encrypting some data with a password and writing it to a file

          • Reading the data back from the file and decrypting it with the same password.

          Also, see:

          • PBE example code

          • Secure store example code

          Encrypting data with a password and writing it to a file
          • Supporting code for this example

          +void CSecureStreamExample::WriteEncryptedDataL(const TDesC8& aInput, const TDesC& aFilename, const TDesC& aPassword) + { + // Open a stream to the output file + RFileWriteStream writeStream; + User::LeaveIfError(writeStream.Replace(iFs, aFilename, EFileShareExclusive | EFileWrite)); + CleanupClosePushL(writeStream); + + // Create a CPBEncryptElement object, passing details of the encryption we + // are using and the user's password + CPBEncryptElement* encryption = CPBEncryptElement::NewLC(aPassword, ECipherDES_CBC); + + // Store encryption data as the first thing in the stream + writeStream << encryption->EncryptionData(); + + // Create an REncryptStream - this wraps the write stream and encrypts + // everything written to it + REncryptStream encStream; + encStream.OpenL(writeStream, *encryption); + CleanupClosePushL(encStream); + + // Now we can simply write the plaintext to the encrypt stream - it gets + // encrypted automatically + encStream << aInput; + + // Commit the stream + encStream.CommitL(); + + // Free memory (writeStream, encryption, encStream) + CleanupStack::PopAndDestroy(3, &writeStream); + } +
          Reading data from a file and decrypting it
          • Supporting code for this example

          +HBufC8* CSecureStreamExample::ReadEncryptedDataLC(const TDesC& aFilename, const TDesC& aPassword) + { + // Open a stream to the input file + RFileReadStream readStream; + User::LeaveIfError(readStream.Open(iFs, aFilename, EFileRead)); + CleanupClosePushL(readStream); + + // Read the encryption data from the stream + CPBEncryptionData* encryptionData = CPBEncryptionData::NewLC(readStream); + + // Recreate the CPBEncryptElement object, using the encryption data from the + // file and the user's password + CPBEncryptElement* encryption = CPBEncryptElement::NewLC(*encryptionData, aPassword); + + // Create an RDecryptStream based on the read stream - this decrypts + // everything we read from it + RDecryptStream decStream; + decStream.OpenL(readStream, *encryption); + CleanupClosePushL(decStream); + + // Now we can read the plaintext straight from the stream + HBufC8* plaintext = HBufC8::NewL(decStream, KMaxTInt); + + // Free memory (readStream, encryptionData, encryption, decStream) + CleanupStack::PopAndDestroy(4, &readStream); + CleanupStack::PushL(plaintext); + + // Return plaintext to the caller + return plaintext; + } +
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-598B6698-3518-50CA-98DE-D85CB255BA2D-GENID-1-12-1-26-1-1-9-1-12-1-5-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-598B6698-3518-50CA-98DE-D85CB255BA2D-GENID-1-12-1-26-1-1-9-1-12-1-5-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,74 @@ + + + + + +Secure stream encryption example code

          This example covers:

          • Encrypting some data with a password and writing it to a file

          • Reading the data back from the file and decrypting it with the same password.

          Also, see:

          • PBE example code

          • Secure store example code

          Encrypting data with a password and writing it to a file
          • Supporting code for this example

          +void CSecureStreamExample::WriteEncryptedDataL(const TDesC8& aInput, const TDesC& aFilename, const TDesC& aPassword) + { + // Open a stream to the output file + RFileWriteStream writeStream; + User::LeaveIfError(writeStream.Replace(iFs, aFilename, EFileShareExclusive | EFileWrite)); + CleanupClosePushL(writeStream); + + // Create a CPBEncryptElement object, passing details of the encryption we + // are using and the user's password + CPBEncryptElement* encryption = CPBEncryptElement::NewLC(aPassword, ECipherDES_CBC); + + // Store encryption data as the first thing in the stream + writeStream << encryption->EncryptionData(); + + // Create an REncryptStream - this wraps the write stream and encrypts + // everything written to it + REncryptStream encStream; + encStream.OpenL(writeStream, *encryption); + CleanupClosePushL(encStream); + + // Now we can simply write the plaintext to the encrypt stream - it gets + // encrypted automatically + encStream << aInput; + + // Commit the stream + encStream.CommitL(); + + // Free memory (writeStream, encryption, encStream) + CleanupStack::PopAndDestroy(3, &writeStream); + } +
          Reading data from a file and decrypting it
          • Supporting code for this example

          +HBufC8* CSecureStreamExample::ReadEncryptedDataLC(const TDesC& aFilename, const TDesC& aPassword) + { + // Open a stream to the input file + RFileReadStream readStream; + User::LeaveIfError(readStream.Open(iFs, aFilename, EFileRead)); + CleanupClosePushL(readStream); + + // Read the encryption data from the stream + CPBEncryptionData* encryptionData = CPBEncryptionData::NewLC(readStream); + + // Recreate the CPBEncryptElement object, using the encryption data from the + // file and the user's password + CPBEncryptElement* encryption = CPBEncryptElement::NewLC(*encryptionData, aPassword); + + // Create an RDecryptStream based on the read stream - this decrypts + // everything we read from it + RDecryptStream decStream; + decStream.OpenL(readStream, *encryption); + CleanupClosePushL(decStream); + + // Now we can read the plaintext straight from the stream + HBufC8* plaintext = HBufC8::NewL(decStream, KMaxTInt); + + // Free memory (readStream, encryptionData, encryption, decStream) + CleanupStack::PopAndDestroy(4, &readStream); + CleanupStack::PushL(plaintext); + + // Return plaintext to the caller + return plaintext; + } +
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-598B6698-3518-50CA-98DE-D85CB255BA2D.dita --- a/Symbian3/PDK/Source/GUID-598B6698-3518-50CA-98DE-D85CB255BA2D.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,74 +0,0 @@ - - - - - -Secure stream encryption example code

          This example covers:

          • Encrypting some data with a password and writing it to a file

          • Reading the data back from the file and decrypting it with the same password.

          Also, see:

          • PBE example code

          • Secure store example code

          Encrypting data with a password and writing it to a file
          • Supporting code for this example

          -void CSecureStreamExample::WriteEncryptedDataL(const TDesC8& aInput, const TDesC& aFilename, const TDesC& aPassword) - { - // Open a stream to the output file - RFileWriteStream writeStream; - User::LeaveIfError(writeStream.Replace(iFs, aFilename, EFileShareExclusive | EFileWrite)); - CleanupClosePushL(writeStream); - - // Create a CPBEncryptElement object, passing details of the encryption we - // are using and the user's password - CPBEncryptElement* encryption = CPBEncryptElement::NewLC(aPassword, ECipherDES_CBC); - - // Store encryption data as the first thing in the stream - writeStream << encryption->EncryptionData(); - - // Create an REncryptStream - this wraps the write stream and encrypts - // everything written to it - REncryptStream encStream; - encStream.OpenL(writeStream, *encryption); - CleanupClosePushL(encStream); - - // Now we can simply write the plaintext to the encrypt stream - it gets - // encrypted automatically - encStream << aInput; - - // Commit the stream - encStream.CommitL(); - - // Free memory (writeStream, encryption, encStream) - CleanupStack::PopAndDestroy(3, &writeStream); - } -
          Reading data from a file and decrypting it
          • Supporting code for this example

          -HBufC8* CSecureStreamExample::ReadEncryptedDataLC(const TDesC& aFilename, const TDesC& aPassword) - { - // Open a stream to the input file - RFileReadStream readStream; - User::LeaveIfError(readStream.Open(iFs, aFilename, EFileRead)); - CleanupClosePushL(readStream); - - // Read the encryption data from the stream - CPBEncryptionData* encryptionData = CPBEncryptionData::NewLC(readStream); - - // Recreate the CPBEncryptElement object, using the encryption data from the - // file and the user's password - CPBEncryptElement* encryption = CPBEncryptElement::NewLC(*encryptionData, aPassword); - - // Create an RDecryptStream based on the read stream - this decrypts - // everything we read from it - RDecryptStream decStream; - decStream.OpenL(readStream, *encryption); - CleanupClosePushL(decStream); - - // Now we can read the plaintext straight from the stream - HBufC8* plaintext = HBufC8::NewL(decStream, KMaxTInt); - - // Free memory (readStream, encryptionData, encryption, decStream) - CleanupStack::PopAndDestroy(4, &readStream); - CleanupStack::PushL(plaintext); - - // Return plaintext to the caller - return plaintext; - } -
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-59A9871D-B0F3-54E2-A5BA-38790C109797_d0e74687_href.png Binary file Symbian3/PDK/Source/GUID-59A9871D-B0F3-54E2-A5BA-38790C109797_d0e74687_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-59A9871D-B0F3-54E2-A5BA-38790C109797_d0e78900_href.png Binary file Symbian3/PDK/Source/GUID-59A9871D-B0F3-54E2-A5BA-38790C109797_d0e78900_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-59C143F6-3A0C-5C37-9351-A72FE45AFFC9_d0e341819_href.png Binary file Symbian3/PDK/Source/GUID-59C143F6-3A0C-5C37-9351-A72FE45AFFC9_d0e341819_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-59C143F6-3A0C-5C37-9351-A72FE45AFFC9_d0e347770_href.png Binary file Symbian3/PDK/Source/GUID-59C143F6-3A0C-5C37-9351-A72FE45AFFC9_d0e347770_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-59D86225-4727-5B3F-9117-7815B4900445_d0e228844_href.jpg Binary file Symbian3/PDK/Source/GUID-59D86225-4727-5B3F-9117-7815B4900445_d0e228844_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-59D86225-4727-5B3F-9117-7815B4900445_d0e234842_href.jpg Binary file Symbian3/PDK/Source/GUID-59D86225-4727-5B3F-9117-7815B4900445_d0e234842_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-59ED6D14-0976-58AE-8DDC-73F051866406.dita --- a/Symbian3/PDK/Source/GUID-59ED6D14-0976-58AE-8DDC-73F051866406.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-59ED6D14-0976-58AE-8DDC-73F051866406.dita Fri Jul 16 17:23:46 2010 +0100 @@ -41,6 +41,6 @@ from the start of CMyClass.

          Links in singly linked lists - + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-59F26729-3FFB-48AE-91FB-4B9AC2955A06_d0e101748_href.png Binary file Symbian3/PDK/Source/GUID-59F26729-3FFB-48AE-91FB-4B9AC2955A06_d0e101748_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-59F26729-3FFB-48AE-91FB-4B9AC2955A06_d0e97669_href.png Binary file Symbian3/PDK/Source/GUID-59F26729-3FFB-48AE-91FB-4B9AC2955A06_d0e97669_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5A2F083E-EBA9-5477-883F-712636CF5D7C_d0e232864_href.png Binary file Symbian3/PDK/Source/GUID-5A2F083E-EBA9-5477-883F-712636CF5D7C_d0e232864_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5A2F083E-EBA9-5477-883F-712636CF5D7C_d0e238859_href.png Binary file Symbian3/PDK/Source/GUID-5A2F083E-EBA9-5477-883F-712636CF5D7C_d0e238859_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5A3A3EA0-6C03-56F2-B277-B61A27ABFF9E.dita --- a/Symbian3/PDK/Source/GUID-5A3A3EA0-6C03-56F2-B277-B61A27ABFF9E.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,274 +0,0 @@ - - - - - -abld -command syntax overview -

          The abld batch file is used to control all aspects -of building a project. The batch file is created using bldmake from -a component description file.

          -
          Invocation syntax

          abld [ -test ] command [ options ] -[ platform [ build [ program ] -] ]

          The usage for test, command, options, platform, build, -and program are detailed in the following sections.

          Note: For -certain abld commands, parameters such as platform, build, -and program, do not apply. For example, abld export does -not require these parameters, as exports do not depend on build, platform, -or program.

          command

          You can use the -following commands with abld:

          - - - -Command -Purpose - - - - -

          build

          -

          To build the binaries for the specified target. It is a combination -of the commands, export, makefile, library, resource, target, -and final.

          -
          - -

          clean

          -

          To remove everything built for the abld target.

          -
          - -

          cleanexport

          -

          To remove files created by the abld export command.

          -
          - -

          export

          -

          To copy the exported files to their destination.

          -
          - -

          final

          -

          To allow extension makefiles to run final commands.

          -
          - -

          freeze

          -

          To freeze the exported functions in a .def file.

          -
          - -

          help

          -

          To display commands, options, or help about a particular command.

          -
          - -

          library

          -

          To create import libraries from the frozen .def files.

          -
          - -

          listing

          -

          To create an assembler listing file for a particular source file.

          -
          - -

          makefile

          -

          To create makefiles or IDE workspaces.

          -
          - -

          reallyclean

          -

          To remove all the files. It is similar to the clean command, -and additionally removes exported files and makefiles.

          -
          - -

          resource

          -

          To create resource files and bitmaps.

          -
          - -

          target

          -

          To create the main executable file and also the resources.

          -
          - -

          tidy

          -

          To remove executable files which need not be released.

          -
          - - -

          options

          You can use the following options with abld:

          - - - -Option -Purpose - - - - -

          -check or -c

          -

          To check whether the filenames of the executable and resource files -are compatible for Linux builds.

          -
          - -

          -debug

          -

          To generate symbolic debug information for release or debug builds.

          -
          - -

          -keepgoing or -k

          -

          To build unrelated targets on error.

          -
          - -

          -no_debug

          -

          To not generate symbolic debug information for release or debug -builds.

          -
          - -

          -savespace or -s

          -

          To delete intermediate files on success.

          -
          - -

          -verbose or -v

          -

          To display the progress of the abld command.

          -
          - -

          -what or -w

          -

          To list all releaseables, which include executable/map files, resource -files and so on.

          -
          - -

          -I <platform>

          -

          To specify the ARM target to build for, overriding other settings.

          -
          - -

          -wrap[=<value>]

          -

          A static analysis tool can be invoked if [=<value>] is -not specified. For example, -wrap. Alternatively, a run-time -analysis tool can be invoked if <value> is specified as proxy. -For example, -wrap=proxy.

          -
          - - -

          Notes:

            -
          • You can use -debug or -no_debug options -irrespective of the output build type, that is, UREL or UDEB.

          • -
          • All options are not -applicable to all the commands. Wherever applicable, they can be specified -in their long or short forms. For example,

            -keepgoing (long -form)

            or

            -k (short form)

          • -

          platform

          This specifies the target platform. Possible -platforms are:

          - - - -Target platform -Purpose - - - - -

          all

          -

          To build for all platforms.

          -
          - -

          armv5

          -

          To build for ABI v1 of ARMV5 architecture using the RealView Compilation -Tools (RVCT).

          -
          - -

          armv5_abiv2

          -

          To build for ABI v2 of ARMV5 architecture using RVCT.

          -
          - -

          armv6

          -

          To build for ABI v2 of ARMV6 architecture using RVCT.

          -
          - -

          armv6t2

          -

          To build for ABI v2 of ARMV6 architecture that supports Thumb-2 -instruction set, using RVCT.

          -
          - -

          armv7

          -

          To build for ABI v2 of ARMV7 architecture that supports Thumb-2 -instruction set, using RVCT.

          -
          - - cw_ide

          -

          To build the Metrowerks CodeWarrior project file (importable .xml file).

          -
          - -

          gcce

          -

          To build for ABI v2 of ARMV5 architecture using the GNU GCC compiler.

          -
          - -

          gccev6

          -

          To build for ABI v2 of ARMV6 architecture using the GNU GCC compiler.

          -
          - -

          gccev6t2

          -

          To build for ABI v2 of ARMV6 architecture that supports Thumb-2 -instruction set, using the GNU GCC compiler.

          -
          - -

          gccev7

          -

          To build for ABI v2 of ARMV7 architecture that supports Thumb-2 -instruction set, using the GNU GCC compiler.

          -
          - -

          gccxml

          -

          To generate the XML description of the project and the program using -GCC XML.

          -
          - -

          vs6

          -

          To create the project files suitable for opening the project in -Microsoft Visual Studio IDE, version Visual C++ v6.

          -
          - -

          vs2003

          -

          To create the project files suitable for opening the project in -Microsoft Visual Studio IDE, version .NET2003.

          -
          - -

          winscw

          -

          To build for the Symbian emulator on Microsoft Windows, using the -Metrowerks CodeWarrior compiler.

          -
          - - -

          Note: The target platforms, armv5 and armv5_abiv2 are -compatible with Symbian OS v9.4 or earlier versions. From Symbian OS v9.4 -onwards, these build platforms are renamed as armv5 and armv5_abiv1 to -generate binaries and libraries conforming to ABI v2 and ABI v1 respectively.

          If platform is -not specified, or is specified as all, then abld will -build for all the platforms specified in the component description file.

          Basenames -of .mmp files or extension makefiles must not be platform -names.

          build

          This specifies the build type. Possible -types are:

          - - - -

          udeb

          -

          Debug build

          -
          - -

          urel

          -

          Release build

          -
          - -

          all

          -

          Debug and release builds

          -
          - - -

          If build is not specified, or specified as all, -then abld will build for both udeb and urel.

          Basenames -of .mmp files or extension makefiles must not be build -type names.

          program

          This specifies the basename of a -particular .mmp file or extension makefile, in order -to limit the command to a single project within a component.

          If program is -not specified, then all the projects within the component are built.

          test

          If test is -specified before command, the command will -build all the projects defined by .mmp files listed in -the prj_testmmpfiles section of the component description -file, rather than those listed in the prj_mmpfiles section.

          Note: The test parameter -is not relevant for some commands, and in those cases, it cannot be specified.

          -
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5A71755A-E67F-5007-8C55-5B8FA65B3C04.dita --- a/Symbian3/PDK/Source/GUID-5A71755A-E67F-5007-8C55-5B8FA65B3C04.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5A71755A-E67F-5007-8C55-5B8FA65B3C04.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> ROM File SystemDescribes the ROM file system. -
          Introduction

          This +

          Introduction

          This is the file system is used to access code storage on execute-in place (XIP) storage e.g. NOR flash.

          Background information

          This is the only file system diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5A8AE98B-51B3-5540-911A-2D04DA144C08_d0e229858_href.png Binary file Symbian3/PDK/Source/GUID-5A8AE98B-51B3-5540-911A-2D04DA144C08_d0e229858_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5A8AE98B-51B3-5540-911A-2D04DA144C08_d0e235853_href.png Binary file Symbian3/PDK/Source/GUID-5A8AE98B-51B3-5540-911A-2D04DA144C08_d0e235853_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5ACFA8E4-3C4B-5851-A43E-9FA72D0B8403.dita --- a/Symbian3/PDK/Source/GUID-5ACFA8E4-3C4B-5851-A43E-9FA72D0B8403.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5ACFA8E4-3C4B-5851-A43E-9FA72D0B8403.dita Fri Jul 16 17:23:46 2010 +0100 @@ -50,7 +50,7 @@ that are described in the following section.

          Package diagram for the XML DOM Engine component - +
          Description

          The XML DOM Engine is an object-oriented provider of the DOM services included in the standard libxml2 library: tree-based @@ -64,7 +64,7 @@ types are shown in the following diagram.

          Extract of the class diagram for the XML DOM Engine parser - +

          Serialisation

          Serialisation transforms the DOM tree (including binary data) into one of the following formats:

          • Default (standard XML)

          • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5AE741A2-68C5-4219-8F2A-ECE0A819FCAA_d0e153742_href.jpg Binary file Symbian3/PDK/Source/GUID-5AE741A2-68C5-4219-8F2A-ECE0A819FCAA_d0e153742_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5AE741A2-68C5-4219-8F2A-ECE0A819FCAA_d0e159843_href.jpg Binary file Symbian3/PDK/Source/GUID-5AE741A2-68C5-4219-8F2A-ECE0A819FCAA_d0e159843_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5AF0B573-4351-5735-92A1-4F29BCF9A164.dita --- a/Symbian3/PDK/Source/GUID-5AF0B573-4351-5735-92A1-4F29BCF9A164.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ - - - - - -prj_mmpfiles

            prj_mmpfiles

            mmp_file_1 [build_as_arm] [tidy]

            makefile makefile_1 [build_as_arm] [tidy]

            makefile makefile_n [build_as_arm] [tidy]

            nmakefile makefile_1 [build_as_arm] [tidy]

            nmakefile makefile_n [build_as_arm] [tidy]

            gnumakefile makefile_1 [build_as_arm] [tidy]

            gnumakefile makefile_n [build_as_arm] [tidy]

            In the prj_mmpfiles section, list the .mmp files contained in your component.

            Specify each .mmp file on a separate line.

            Relative paths

            If a relative path is specified with an .mmp file, the path will be considered relative to the directory containing the bld.inf file.

            For example, if in the prj_mmpfiles section, a certain Hello.mmp file is specified as a relative path:

            PRJ_MMPFILES -ProjSpec\Hello.mmp

            and if the bld.inf file is in \MyComp\, then the full path for the location of Hello.mmp will be \MyComp\ProjSpec\Hello.mmp.

            The tidy attribute

            Specify the tidy attribute if the releasable that an .mmp file defines is purely internal to your component, and therefore not required either by other components or for your component to execute.

            If the tidy attribute is specified in your component’s description file, then this will indicate to the abld tool when it is used to run the command abld tidy, to remove those releasables that are no longer required.

            The build_as_arm attribute

            Use the build_as_arm statement to instruct an ARMV5 build to not build the project for the THUMB instruction set, but for the ARM instruction set.

            For details, see ARM/THUMB overrides.

            Extension makefiles

            Use the keyword makefile, nmakefile, and/or gnumakefile to specify extension makefiles for your component. Extension makefiles can be used where build activities need to be carried out which are not catered for by generated makefiles.

            makefile and nmakefile invoke nmake on the specified file. gnumakefile invokes make.

            Build activities relating to particular .mmp files or extension makefiles are carried out in the order in which the .mmp files and extension makefiles are listed in the bld.inf file. Extension makefiles can be interspersed among the .mmp files.

            See Extension makefiles targets for more details.

            Note that the extension makefiles are deprecated, use PRJ_EXTENSIONS instead.

            Platform-specific use

            The prj_mmpfiles section is preprocessed for each platform listed in the prj_platforms section.

            If an .mmp file or extension makefile applies only to a particular platform, then place the item within

            #if defined <identifier> -#endif

            For example, if an .mmp file relates only to the WINS platform, specify the file as follows:

            #if defined(WINS) -<mmp_file> -#endif
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5B112A34-1CBA-5B28-A941-27847FC1D30A-GENID-1-12-1-26-1-1-11-1-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-5B112A34-1CBA-5B28-A941-27847FC1D30A-GENID-1-12-1-26-1-1-11-1-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,75 @@ + + + + + +Cryptography +overview +
            Purpose

            The +Cryptography module is the basis of the Symbian platform Security system. +The services provided by this module are used by the following components: +Certman (Certificate Management), Software Installation, Secure Communication +Protocols (for example, SSL, TLS, IPSEC), and WTLS.

            These services +include:

              +
            • symmetric encryption-decryption

            • +
            • asymmetric encryption-decryption

            • +
            • integrity checking and +signature verification

            • +
            • key exchange

            • +
            • message digests

            • +

            The interface for the cryptographic services hides the implementation +details of particular algorithms. No detailed knowledge of the cryptographic +algorithms is needed to use the cryptographic services.

            +
            Description

            The +Cryptography module encapsulates the following significant components:

              +
            • Cryptographic algorithms

            • +
            • Hash algorithms

            • +
            • Random Number Generator (RNG)

            • +
            • Supporting APIs

            • +

            Cryptographic algorithms

            These +algorithms allow data to be encrypted and decrypted. They include:

              +
            • Symmetric +ciphers — algorithms that require communicating parties to hold a shared +secret. They are fast and used for the transmission of bulk data.

            • +
            • Asymmetric +ciphers — algorithms which have two keys, one private to the keys' +owner and one which can be published. They are slow compared to symmetric +ciphers and are used to exchange a symmetric key before transmission of data +encrypted using that key.

            • +

            The classes implementing the symmetric and asymmetric ciphers are +provided in cryptography.dll (see Cryptography +library).

            Hash +algorithms

            Hash algorithms compact a message down to a short series +of bytes from which it is impossible to regenerate the message. They are used +with an asymmetric cipher to generate signatures.

            The classes implementing +the hash algorithms are provided in hash.dll.

            Hash +algorithms are documented in the mainstream Symbian platform library.

            Random Number Generator +(RNG)

            RNG is the basis for the cryptographic key generation. It +uses the RANROT algorithm seeded by random data available on the target hardware +(for example, free running counters available on ARM processors).

            The +Random number library is provided by random.dll.

            The +Random Number Generator API is documented in the mainstream Symbian OS Library.

            Supporting APIs

              +
            • Password +Based Encryption (PBE) — provides an API to encrypt and decrypt data +with a user-supplied password.

              The classes implementing PBE (for example, +for secure stream encryption) are provided in pbe.dll.

            • +
            • Padding — is extra bits +concatenated with a key, password, or plaintext to make their length equal +to the block size. It defines the way blocks are filled with data when the +data to be encrypted is smaller than the block size. Padding is added at encryption +and checked on decryption. (See Block +and stream ciphers and CPadding +class relationships.)

              The Cryptography library supports PKCS#1 public +and private padding, and PKCS#7 style padding (see RFC 2315 section 10.3).

            • +
            • Big +integers — Implementation of arbitrarily large integers.

              Note +that although some methods are exported, the intent is that this library is +only for use by the Cryptography library and not by application code.

            • +
            +
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5B112A34-1CBA-5B28-A941-27847FC1D30A-GENID-1-12-1-26-1-1-9-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-5B112A34-1CBA-5B28-A941-27847FC1D30A-GENID-1-12-1-26-1-1-9-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,75 @@ + + + + + +Cryptography +overview +
            Purpose

            The +Cryptography module is the basis of the Symbian platform Security system. +The services provided by this module are used by the following components: +Certman (Certificate Management), Software Installation, Secure Communication +Protocols (for example, SSL, TLS, IPSEC), and WTLS.

            These services +include:

              +
            • symmetric encryption-decryption

            • +
            • asymmetric encryption-decryption

            • +
            • integrity checking and +signature verification

            • +
            • key exchange

            • +
            • message digests

            • +

            The interface for the cryptographic services hides the implementation +details of particular algorithms. No detailed knowledge of the cryptographic +algorithms is needed to use the cryptographic services.

            +
            Description

            The +Cryptography module encapsulates the following significant components:

              +
            • Cryptographic algorithms

            • +
            • Hash algorithms

            • +
            • Random Number Generator (RNG)

            • +
            • Supporting APIs

            • +

            Cryptographic algorithms

            These +algorithms allow data to be encrypted and decrypted. They include:

              +
            • Symmetric +ciphers — algorithms that require communicating parties to hold a shared +secret. They are fast and used for the transmission of bulk data.

            • +
            • Asymmetric +ciphers — algorithms which have two keys, one private to the keys' +owner and one which can be published. They are slow compared to symmetric +ciphers and are used to exchange a symmetric key before transmission of data +encrypted using that key.

            • +

            The classes implementing the symmetric and asymmetric ciphers are +provided in cryptography.dll (see Cryptography +library).

            Hash +algorithms

            Hash algorithms compact a message down to a short series +of bytes from which it is impossible to regenerate the message. They are used +with an asymmetric cipher to generate signatures.

            The classes implementing +the hash algorithms are provided in hash.dll.

            Hash +algorithms are documented in the mainstream Symbian platform library.

            Random Number Generator +(RNG)

            RNG is the basis for the cryptographic key generation. It +uses the RANROT algorithm seeded by random data available on the target hardware +(for example, free running counters available on ARM processors).

            The +Random number library is provided by random.dll.

            The +Random Number Generator API is documented in the mainstream Symbian OS Library.

            Supporting APIs

              +
            • Password +Based Encryption (PBE) — provides an API to encrypt and decrypt data +with a user-supplied password.

              The classes implementing PBE (for example, +for secure stream encryption) are provided in pbe.dll.

            • +
            • Padding — is extra bits +concatenated with a key, password, or plaintext to make their length equal +to the block size. It defines the way blocks are filled with data when the +data to be encrypted is smaller than the block size. Padding is added at encryption +and checked on decryption. (See Block +and stream ciphers and CPadding +class relationships.)

              The Cryptography library supports PKCS#1 public +and private padding, and PKCS#7 style padding (see RFC 2315 section 10.3).

            • +
            • Big +integers — Implementation of arbitrarily large integers.

              Note +that although some methods are exported, the intent is that this library is +only for use by the Cryptography library and not by application code.

            • +
            +
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5B112A34-1CBA-5B28-A941-27847FC1D30A.dita --- a/Symbian3/PDK/Source/GUID-5B112A34-1CBA-5B28-A941-27847FC1D30A.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,75 +0,0 @@ - - - - - -Cryptography -overview -
            Purpose

            The -Cryptography module is the basis of the Symbian platform Security system. -The services provided by this module are used by the following components: -Certman (Certificate Management), Software Installation, Secure Communication -Protocols (for example, SSL, TLS, IPSEC), and WTLS.

            These services -include:

              -
            • symmetric encryption-decryption

            • -
            • asymmetric encryption-decryption

            • -
            • integrity checking and -signature verification

            • -
            • key exchange

            • -
            • message digests

            • -

            The interface for the cryptographic services hides the implementation -details of particular algorithms. No detailed knowledge of the cryptographic -algorithms is needed to use the cryptographic services.

            -
            Description

            The -Cryptography module encapsulates the following significant components:

              -
            • Cryptographic algorithms

            • -
            • Hash algorithms

            • -
            • Random Number Generator (RNG)

            • -
            • Supporting APIs

            • -

            Cryptographic algorithms

            These -algorithms allow data to be encrypted and decrypted. They include:

              -
            • Symmetric -ciphers — algorithms that require communicating parties to hold a shared -secret. They are fast and used for the transmission of bulk data.

            • -
            • Asymmetric -ciphers — algorithms which have two keys, one private to the keys' -owner and one which can be published. They are slow compared to symmetric -ciphers and are used to exchange a symmetric key before transmission of data -encrypted using that key.

            • -

            The classes implementing the symmetric and asymmetric ciphers are -provided in cryptography.dll (see Cryptography -library).

            Hash -algorithms

            Hash algorithms compact a message down to a short series -of bytes from which it is impossible to regenerate the message. They are used -with an asymmetric cipher to generate signatures.

            The classes implementing -the hash algorithms are provided in hash.dll.

            Hash -algorithms are documented in the mainstream Symbian platform library.

            Random Number Generator -(RNG)

            RNG is the basis for the cryptographic key generation. It -uses the RANROT algorithm seeded by random data available on the target hardware -(for example, free running counters available on ARM processors).

            The -Random number library is provided by random.dll.

            The -Random Number Generator API is documented in the mainstream Symbian OS Library.

            Supporting APIs

              -
            • Password -Based Encryption (PBE) — provides an API to encrypt and decrypt data -with a user-supplied password.

              The classes implementing PBE (for example, -for secure stream encryption) are provided in pbe.dll.

            • -
            • Padding — is extra bits -concatenated with a key, password, or plaintext to make their length equal -to the block size. It defines the way blocks are filled with data when the -data to be encrypted is smaller than the block size. Padding is added at encryption -and checked on decryption. (See Block -and stream ciphers and CPadding -class relationships.)

              The Cryptography library supports PKCS#1 public -and private padding, and PKCS#7 style padding (see RFC 2315 section 10.3).

            • -
            • Big -integers — Implementation of arbitrarily large integers.

              Note -that although some methods are exported, the intent is that this library is -only for use by the Cryptography library and not by application code.

            • -
            -
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5B1D5561-CC48-5FAD-9DC6-9E89A757288D_d0e448876_href.png Binary file Symbian3/PDK/Source/GUID-5B1D5561-CC48-5FAD-9DC6-9E89A757288D_d0e448876_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5B1D5561-CC48-5FAD-9DC6-9E89A757288D_d0e454721_href.png Binary file Symbian3/PDK/Source/GUID-5B1D5561-CC48-5FAD-9DC6-9E89A757288D_d0e454721_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5B442231-6E71-5F35-A27E-B14AEC2FC105.dita --- a/Symbian3/PDK/Source/GUID-5B442231-6E71-5F35-A27E-B14AEC2FC105.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ - - - - - -ARMV5 -build customisation -

            The ARMV5 build supports the notion of customisation. This allows a programmer -to define a new build target that is derived from the ARMV5 build. A new build -target is defined via a .BSF file. The build system becomes -aware of a customised build by the presence of its .BSF file in epoc32\tools\. -Such customisations are referred to by the name of their .BSF file: -e.g. the file XScale.bsf defines the build target XScale. -This name can be used in exactly the same way as built-in names such as ARMV5.

            -
            BSF Syntax

            It is intended that the syntax of a -.BSF file is toolchain specific with the exception of the obligatory header:

            #<BSF># : token to identify this as a BSF file must appear at start of first line. -CUSTOMIZES build : identitifies which build is customized by this spec e.g. ARMV5.

            Currently, -only ARMV5 can be customised. The ARMV5 specific .BSF syntax is as follows:

            THUMB_OPTIONS opt1 opt2 ... : compiler options used by default for user side code (expected to be THUMB mode) -ARM_OPTIONS opt1 opt2 ... : compiler options used when BUILD_AS_ARM etc are specified (expected to be ARM mode) -KERNEL_OPTIONS opt1 opt2 ... : compiler options used to compile kernel side code -COMMON_OPTIONS opt1 opt2 ... : compiler options that are added to all the above

            The -above four keywords specify compiler options that can be overriden in an MMP -file throughOPTION. For example:

            OPTION ARMCC -Ospace

            A final keyword specifies the system-wide options that cannot be overridden -in an MMP file via OPTION. Typically, these specify options -within the EABI e.g. the SOFTVFP calling convention. They are called invariant -since code compiled with different settings will not be binary compatible.

            INVARIANT_OPTIONS opt opt2 ... : these options are appended to all compiler command lines
            -

            The following is an example bsf file:

            #<bsf># - -# Example build specialization file -# -# NB currently specialization only applies to ARMV5 build using RVCT. - -# This file customizes the default ARMV5. It specifies a build that -# always uses optimization level O1 rather than the default O2. -customizes ARMV5 - -# The following options that can be overridden by MMP files - -# Use these options when compiling user-side THUMB code -thumb_options -thumb -O1 - -# Use these options when compiling user-side ARM code -arm_options -arm -O1 - -# Use these options when compiling Kernel code -kernel_options -arm -O1 - -# This just factors out common (contingent) options from the above. -# These options can also be overridden by MMP files. -common_options --diag_suppress 1,161,654,1135,1152,1300 --diag_error 1267 - -# Fixed options for this build. These options should only be changed with great care since -# they have the potential to introduce incompatible ABI (or machine) level effects. -# -cpu 5T - this build just targets a generic 5T -# -Ono_known_library - we use our own library so tell the compiler not to make assumptions about its implementation -# -fpu softvfp - some system code explicitly assumes this variant of the EABI (softvfp+vfp could be used on say XScale) -# --dll_vtbl - this switches on class exporting and is needed to support Symbian platform DLL model -# -apcs /inter - redundant on 5T, but worth saying anyway -invariant_options -cpu 5T -fy -Ono_known_library -fpu softvfp --dll_vtbl -apcs /inter
            -
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5B6634EA-EB78-504E-BC5D-ABA67EEA06DF_d0e155964_href.png Binary file Symbian3/PDK/Source/GUID-5B6634EA-EB78-504E-BC5D-ABA67EEA06DF_d0e155964_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5B6634EA-EB78-504E-BC5D-ABA67EEA06DF_d0e599998_href.png Binary file Symbian3/PDK/Source/GUID-5B6634EA-EB78-504E-BC5D-ABA67EEA06DF_d0e599998_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5B8061C3-3BED-51D7-9919-5BA16EA6C6FE_d0e528171_href.png Binary file Symbian3/PDK/Source/GUID-5B8061C3-3BED-51D7-9919-5BA16EA6C6FE_d0e528171_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5B8061C3-3BED-51D7-9919-5BA16EA6C6FE_d0e535631_href.png Binary file Symbian3/PDK/Source/GUID-5B8061C3-3BED-51D7-9919-5BA16EA6C6FE_d0e535631_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5B8FEDA0-624E-44D6-BF70-C5228234BD15_d0e163290_href.png Binary file Symbian3/PDK/Source/GUID-5B8FEDA0-624E-44D6-BF70-C5228234BD15_d0e163290_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5B8FEDA0-624E-44D6-BF70-C5228234BD15_d0e169383_href.png Binary file Symbian3/PDK/Source/GUID-5B8FEDA0-624E-44D6-BF70-C5228234BD15_d0e169383_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5B9DE39D-61D0-51FF-948E-15691CD673B5.dita --- a/Symbian3/PDK/Source/GUID-5B9DE39D-61D0-51FF-948E-15691CD673B5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5B9DE39D-61D0-51FF-948E-15691CD673B5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,109 +1,99 @@ - - - - - -AdvancedClientServerExample: -Using Client/Server APIsThis example application demonstrates the use of client/server -APIs using a logical device driver (LDD) and a physical device driver (PDD). -
            Introduction

            This -example implements asynchronous as well as synchronous client requests to -the server. This example also demonstrates a client and server running in -separate processes and a client and server running in the same process.

            This -example demonstrates the following:

              -
            • a server running -its own process: This is referred to in this document as the process -server. The example also implements a DLL that provides an API to allow -clients to request services from the process server. This client DLL is referred -to as the process client.

            • -
            • a server and client -running in a single process: These are referred to as the thread server and thread -client.

            • -
            • a shut down server: This -terminates the process or thread server if it has no clients connected to -it for 50 seconds.

            • -
            -
            Download

            Process -Client and Server

            Click the following links to download the example:

            ProcessClient.zip

            ProcessServer.zip

            Click the following links -for additional files:

            ProcessServerInc.zip

            Common.zip

            Driver.zip

            Click the following links to view -the example:

            browse ProcessClient

            browse ProcessServer

            Click the following links -to view additional files:

            browse ProcessServerInc

            browse Common

            browse Driver

            Thread Client and Server

            Click -the following links to download the example:

            ThreadClient.zip

            ThreadServer.zip

            Click the following links -to download additional files:

            ThreadServerInc.zip

            Driver.zip

            CommonInc.zip

            Common.zip

            Click the following links to view -the example:

            browse ThreadClient

            browse ThreadServer

            Click the following links to -view additional files

            browse ThreadServerInc

            browse Driver

            browse CommonInc

            browse Common

            -
            Directories

            common

            This -directory contains code that is common to the process and thread servers. -It implements the shut down server which checks the number of connected clients -to the thread or process server. If this number is zero, then after a time -delay, the thread/process server is terminated. The server is not terminated -in the following cases:

              -
            • if the client tries -to connect within the duration of the timer, then the shut down operation -is cancelled and the server handles the client's request to connect.

            • -
            • if the client tries -to connect after the timer has expired but before the server shut down process -has begun, then the process or thread server is stopped and restarted to handle -the client's request to connect.

            • -

            driver

            Device drivers are DLLs that allow code to -communicate with hardware. For more information about device drivers, see -the Device Driver Guide.

            ProcessClient

            This -directory implements a client DLL that starts the process server and creates -a session with it. The client DLL provides an API to allow clients to request -the server to load and unload the device driver.

            ProcessServer

            This -directory implements the process server class CProcessServer, -which is derived from CServer2. It handles client requests -to interact with the device drivers. It can have multiple clients connected -at the same time. The device driver, server and client all have the MultimediaDD capability. -Note that this is for demonstration purposes rather than because the code -uses any Multimedia APIs. The session class CProcessServerSession implements -a simple message queue to hold asynchronous requests.

            ThreadClient

            This -directory implements a client DLL that starts the thread server and creates -a session within it. The client DLL provides an API to allow clients to request -the server to load and unload the device driver.

            ThreadServer

            This -directory implements the thread server class CThreadServer, -which is derived from CServer2. An instance of the thread -server runs in the same process as the client. The thread server handles client -requests to interact with the device drivers. It can have multiple clients -connected at the same time. The session class CThreadServerSession implements -a simple message queue to hold asynchronous requests.

            test

            This -example directory contains a comprehensive test suite to test the process -client and server and the thread client and server.

            -
            Class summary

            CServer2 CSession2 RSessionBase RMessage2 RMessagePtr2 RProcess RThread RBusLogicalChannel DLogicalDevice DLogicalChannel DPhysicalDevice

            -
            Build

            Build -the development and test code using the abld build command -from AdvancedClientServerExample\group as described in the Symbian platform -build process.

            The AdvancedClientServerExample builds -the following binaries in the standard location (\epoc32\release\winscw\<build_variant> for -CodeWarrior):

              -
            • driver1_ldd.ldd.

            • -
            • driver1_pdd.pdd.

            • -
            • processclient.dll,threadclient.dll and threadserver.dll. ,\

            • -
            • processserver.exe, Te_ProcessClientServerTestSuite.exe and Te_ThreadClientServerTestSuite.exe.

            • -

            After launching the Te_ProcessClientServerTestSuite.exe or Te_ThreadClientServerTestSuite.exe executable, depending on the emulator you are using, you may have to -navigate away from the application launcher/shell screen to view the -console.

            -
            Running tests

            To -run the tests, perform the following steps:

              -
            • From the command prompt, change directory to epoc32\release\winscw\udeb.

            • -
            • Run the following command:

              epoc

            • -
            • On the emulator, go to eshell.

            • -
            • Run the following commands:

              testexecute c:\testdata\scripts\te_processclientservertestsuite.script

              testexecute c:\testdata\scripts\te_threadclientservertestsuite.script

              Note: Test -results are stored in the epoc32\winscw\c\logs\testexecute directory:

            • -
            • Process server -tests: Refer to the te_processclientservertestsuite.htm file.

            • -
            • Thread server tests: Refer -to the te_threadclientservertestsuite.htm file.

            • -
            -
            -Inter Process -Communication - Device Driver -Guide + + + + + +AdvancedClientServerExample: Using Client/Server APIsThis example application demonstrates the use of client/server +APIs using a logical device driver (LDD) and a physical device driver +(PDD). +
            Introduction

            This example implements asynchronous as well as synchronous +client requests to the server. This example also demonstrates a client +and server running in separate processes and a client and server running +in the same process.

            This example demonstrates the following:

              +
            • a server +running its own process: This is referred to in this document +as the process server. The example also implements a DLL that +provides an API to allow clients to request services from the process +server. This client DLL is referred to as the process client.

            • +
            • a server +and client running in a single process: These are referred to +as the thread server and thread client.

            • +
            • a shut down +server: This terminates the process or thread server if it has +no clients connected to it for 50 seconds.

            • +
            +
            Download

            Process Client and Server

            Click the following links +to download the example:

            ProcessClient.zip

            ProcessServer.zip

            Click the following +links for additional files:

            ProcessServerInc.zip

            Common.zip

            Driver.zip

            Click the following links +to view the example:

            browse ProcessClient

            browse ProcessServer

            Click the following +links to view additional files:

            browse ProcessServerInc

            browse Common

            browse Driver

            Thread Client and Server

            Click the following links to download the example:

            ThreadClient.zip

            ThreadServer.zip

            Click the following +links to download additional files:

            ThreadServerInc.zip

            Driver.zip

            CommonInc.zip

            Common.zip

            Click the following links +to view the example:

            browse ThreadClient

            browse ThreadServer

            Click the following +links to view additional files

            browse ThreadServerInc

            browse Driver

            browse CommonInc

            browse Common

            +
            Directories

            common

            This directory contains code that is common +to the process and thread servers. It implements the shut down server +which checks the number of connected clients to the thread or process +server. If this number is zero, then after a time delay, the thread/process +server is terminated. The server is not terminated in the following +cases:

              +
            • if the client +tries to connect within the duration of the timer, then the shut down +operation is cancelled and the server handles the client's request +to connect.

            • +
            • if the client +tries to connect after the timer has expired but before the server +shut down process has begun, then the process or thread server is +stopped and restarted to handle the client's request to connect.

            • +

            driver

            Device drivers are DLLs that allow +code to communicate with hardware. For more information about device +drivers, see the Device Driver Guide.

            ProcessClient

            This directory implements a client DLL that starts the process +server and creates a session with it. The client DLL provides an API +to allow clients to request the server to load and unload the device +driver.

            ProcessServer

            This directory implements the process server +class CProcessServer, which is derived from CServer2. It handles client requests to interact with the +device drivers. It can have multiple clients connected at the same +time. The device driver, server and client all have the MultimediaDD capability. Note that this is for demonstration purposes rather +than because the code uses any Multimedia APIs. The session class CProcessServerSession implements a simple message queue +to hold asynchronous requests.

            ThreadClient

            This directory implements a client DLL that starts the thread +server and creates a session within it. The client DLL provides an +API to allow clients to request the server to load and unload the +device driver.

            ThreadServer

            This directory implements the thread +server class CThreadServer, which is derived from CServer2. An instance of the thread server runs in the +same process as the client. The thread server handles client requests +to interact with the device drivers. It can have multiple clients +connected at the same time. The session class CThreadServerSession implements a simple message queue to hold asynchronous requests.

            test

            This example directory contains a comprehensive +test suite to test the process client and server and the thread client +and server.

            +
            Class +summary

            CServer2 CSession2 RSessionBase RMessage2 RMessagePtr2 RProcess RThread RBusLogicalChannel DLogicalDevice DLogicalChannel DPhysicalDevice

            +
            Build

            Build the development and test code using the abld build command from AdvancedClientServerExample\group.

            The AdvancedClientServerExample builds the following binaries in the standard location (\epoc32\release\winscw\<build_variant> for CodeWarrior):

              +
            • driver1_ldd.ldd.

            • +
            • driver1_pdd.pdd.

            • +
            • processclient.dll,threadclient.dll and threadserver.dll. ,\

            • +
            • processserver.exe, Te_ProcessClientServerTestSuite.exe and Te_ThreadClientServerTestSuite.exe.

            • +

            After launching the Te_ProcessClientServerTestSuite.exe or Te_ThreadClientServerTestSuite.exe executable, depending on the emulator you are using, you may +have to navigate away from the application launcher/shell screen +to view the console.

            +
            Running +tests

            To run the tests, perform the following steps:

              +
            • From the command prompt, change directory to epoc32\release\winscw\udeb.

            • +
            • Run the following command:

              epoc

            • +
            • On the emulator, go to eshell.

            • +
            • Run the following commands:

              testexecute c:\testdata\scripts\te_processclientservertestsuite.script

              testexecute c:\testdata\scripts\te_threadclientservertestsuite.script

              Note: Test results are stored in the epoc32\winscw\c\logs\testexecute directory:

            • +
            • Process +server tests: Refer to the te_processclientservertestsuite.htm file.

            • +
            • Thread server +tests: Refer to the te_threadclientservertestsuite.htm file.

            • +
            +
            +Inter +Process Communication + Device +Driver Guide
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5B9F25B5-5FE1-4E38-BC8D-A0273F458C36.dita --- a/Symbian3/PDK/Source/GUID-5B9F25B5-5FE1-4E38-BC8D-A0273F458C36.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5B9F25B5-5FE1-4E38-BC8D-A0273F458C36.dita Fri Jul 16 17:23:46 2010 +0100 @@ -30,7 +30,7 @@ devices, the touch functionality of the component is disabled.

            Discreet pop-up - +

            Based on the purpose of use, there are two types of discreet pop-ups:

            • Global discreet pop-ups - displayed irrespective of the active diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5BABDDEC-1D81-5847-9ADB-65DF8E404BFA_d0e332479_href.png Binary file Symbian3/PDK/Source/GUID-5BABDDEC-1D81-5847-9ADB-65DF8E404BFA_d0e332479_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5BABDDEC-1D81-5847-9ADB-65DF8E404BFA_d0e338451_href.png Binary file Symbian3/PDK/Source/GUID-5BABDDEC-1D81-5847-9ADB-65DF8E404BFA_d0e338451_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5BB017AA-46AE-5461-9184-98CE7FA898B9_d0e603081_href.jpg Binary file Symbian3/PDK/Source/GUID-5BB017AA-46AE-5461-9184-98CE7FA898B9_d0e603081_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5BB017AA-46AE-5461-9184-98CE7FA898B9_d0e630975_href.jpg Binary file Symbian3/PDK/Source/GUID-5BB017AA-46AE-5461-9184-98CE7FA898B9_d0e630975_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5BCB7325-1755-5A66-99B5-6F5AE003D207_d0e276814_href.png Binary file Symbian3/PDK/Source/GUID-5BCB7325-1755-5A66-99B5-6F5AE003D207_d0e276814_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5BCB7325-1755-5A66-99B5-6F5AE003D207_d0e282814_href.png Binary file Symbian3/PDK/Source/GUID-5BCB7325-1755-5A66-99B5-6F5AE003D207_d0e282814_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5BD8EE4B-3149-4331-91E0-7813DF4994E1_d0e102291_href.png Binary file Symbian3/PDK/Source/GUID-5BD8EE4B-3149-4331-91E0-7813DF4994E1_d0e102291_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5BD8EE4B-3149-4331-91E0-7813DF4994E1_d0e106311_href.png Binary file Symbian3/PDK/Source/GUID-5BD8EE4B-3149-4331-91E0-7813DF4994E1_d0e106311_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71.dita --- a/Symbian3/PDK/Source/GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5C1E776D-5AEF-5326-BEA6-F2108F42CB71.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,96 +9,84 @@ --> -condvar: -Using Condition VariablesExamples that explains how to use condition variables. +condvar: Using Condition VariablesExamples that explains how to use condition variables.

              • condvarglobal

              • condvarlocal

              -
              condvarglobal

              This -example shows the use of the global condition variable IPC mechanism. The -scope of a global condition variable is inter-process. It can be shared by -threads of any process in the system.

              Download

              Click -on the following link to download the example: condvarglobal .zip

              Click browse to view the example code

              Class summary

              RCondVar RMutex RChunk CPeriodic

              Description

              This -example uses an adder and subtractor pattern to show the use of a global condition -variable. Two processes, the adder and the subtractor, modify a shared variable -by adding and subtracting random amounts. The condition variable ensures that -the value remains within given limits, KMaxValue and KMinValue, -by blocking one of the processes if the value crosses a warning threshold.

              The -adder program creates a global shared memory chunk. It also creates a global -mutex to control access to the chunk and a global condition variable to signal -that the value in the chunk is 'ready for use'. It then initialises -the value in the chunk to zero and periodically tries to add a random value -between 1 and 10 . If, having added a value, it finds that the value of the -chunk is greater than KUpperThreshold, it waits for a signal -from the condition variable before adding another value.

              The subtractor -program periodically tries to subtract a random value between 1 and 10 from -the global shared memory chunk. If, having subtracted a value, it finds that -the value of the chunk is less than KLowerThreshold, it waits -for a signal from the condition variable before subtracting another value.

              Design -and implementation

              - -

              Build

              The -Symbian build process describes how to build this example. The ConditionVariable -example builds the following binary files in the standard location (\epoc32\release\winscw\ +

              condvarglobal

              This example shows the use of the global condition variable IPC +mechanism. The scope of a global condition variable is inter-process. +It can be shared by threads of any process in the system.

              Download

              Click on the following link to download the +example: condvarglobal .zip

              Click browse to view the example code

              Class +summary

              RCondVar RMutex RChunk CPeriodic

              Description

              This example uses an adder and subtractor +pattern to show the use of a global condition variable. Two processes, +the adder and the subtractor, modify a shared variable by adding and +subtracting random amounts. The condition variable ensures that the +value remains within given limits, KMaxValue and KMinValue, by blocking one of the processes if the value +crosses a warning threshold.

              The adder program creates a global +shared memory chunk. It also creates a global mutex to control access +to the chunk and a global condition variable to signal that the value +in the chunk is 'ready for use'. It then initialises +the value in the chunk to zero and periodically tries to add a random +value between 1 and 10 . If, having added a value, it finds that the +value of the chunk is greater than KUpperThreshold, it waits for a signal from the condition variable before adding +another value.

              The subtractor program periodically tries to +subtract a random value between 1 and 10 from the global shared memory +chunk. If, having subtracted a value, it finds that the value of the +chunk is less than KLowerThreshold, it waits for +a signal from the condition variable before subtracting another value.

              Design and implementation

              + +

              Build

              The ConditionVariable example builds +the following binary files in the standard location (\epoc32\release\winscw\ <build_variant>) for Carbide.c++.

                -
              • adder.exe: Demonstrates -the use of the global condition variable. It creates a global shared memory -chunk and periodically adds random values to the chunk.

              • -
              • subtractor.exe: Demonstrates -the use of the global condition variable. It periodically subtracts random -values from the chunk created by adder.exe.

              • -

              How to run the Example

              To run the example, perform -the following steps:

                +
              1. adder.exe: Demonstrates the use of the global condition variable. It creates +a global shared memory chunk and periodically adds random values to +the chunk.

              2. +
              3. subtractor.exe: Demonstrates the use of the global condition variable. It periodically +subtracts random values from the chunk created by adder.exe.

              4. +

            How to run the Example

            To run the example, +perform the following steps:

            1. Run adder.exe.

            2. Run eshell.

            3. -
            4. Run subtract.exe in -your new eshell.

            5. -
            6. Switch between eshells -by pressing CTRL+ALT+SHIFT+T.

            7. -
            8. To finish, stop each -application by pressing any key.

            9. +
            10. Run subtract.exe in your new eshell.

            11. +
            12. Switch between +eshells by pressing CTRL+ALT+SHIFT+T.

            13. +
            14. To finish, stop +each application by pressing any key.

          -
          condvarlocal

          This -example shows the use of the local condition variable IPC mechanism. The scope -of a local condition variable is intra-process. It can be shared by threads -of the process that creates the condition variable.

          Download

          Click -on the following link to download the example: condvarlocal .zip

          Click browse to view the example.

          Class summary

          RMutex RThread CPeriodic RCondVar

          Description

          This -example uses the producer and the consumer model to show the use of the local -condition variable.

          The example creates two local threads: a producer -and a consumer. The two threads share a buffer, which is an object of the CQueue class. -The CQueue object creates a local condition variable using the RCondVar::CreateLocal() function. -It also defines the methods to insert and remove a token from the queue. The CQueue::Insert() function -inserts a token into the queue and signals the condition variable. The CQueue::Remove() function -tries to remove a token from the queue. If the queue is empty, it must wait -for a signal from the condition variable.

          An object of the CProducer class -creates and calls the producer thread. The producer thread is called once -every two seconds using an object of the CPeriodic class. -This thread inserts a token into the queue when it is called. It calls the CQueue::Insert() function -on the shared CQueue object.

          An object of the CConsumer class -creates and calls the consumer thread. The consumer thread is called once -a second using an object of the CPeriodic class. This thread -removes a token from the queue when it is called. It calls the CQueue::Remove() function -on the shared CQueue object.

          For more information, -refer to Condition Variables.

          Symbian -is not responsible for the content of external websites.

          Design -and implementation

          - -

          Build

          The -Symbian build process describes how to build this example. The ConditionVariable -example builds the following binary files in the standard location (\epoc32\release\winscw\ - <build_variant>) for Carbide.c++.

          condvarlocal.exe: -Demonstrates the use of the local condition variable.

          How to run -the Example

          To run the example, perform the following steps:

            -
          1. Run condvarlocal.exe. -The program calls the producer and the consumer threads periodically as shown -in the description section. It also displays a menu.

          2. -
          3. Press ‘d’ to -display the contents of the queue.

          4. -
          5. Press ‘p’ to -insert a token into the queue.

          6. -
          7. Press any key to stop -the program.

          8. +
            condvarlocal

            This example shows the use of the local condition variable IPC +mechanism. The scope of a local condition variable is intra-process. +It can be shared by threads of the process that creates the condition +variable.

            Download

            Click on the following link +to download the example: condvarlocal .zip

            Click browse to view the example.

            Class +summary

            RMutex RThread CPeriodic RCondVar

            Description

            This example uses the producer and the +consumer model to show the use of the local condition variable.

            The example creates two local threads: a producer and a consumer. +The two threads share a buffer, which is an object of the CQueue class. The CQueue object creates a local condition +variable using the RCondVar::CreateLocal() function. +It also defines the methods to insert and remove a token from the +queue. The CQueue::Insert() function inserts a token +into the queue and signals the condition variable. The CQueue::Remove() function tries to remove a token from the queue. If the queue is +empty, it must wait for a signal from the condition variable.

            An object of the CProducer class creates and +calls the producer thread. The producer thread is called once every +two seconds using an object of the CPeriodic class. +This thread inserts a token into the queue when it is called. It calls +the CQueue::Insert() function on the shared CQueue object.

            An object of the CConsumer class creates and calls the consumer thread. The consumer thread +is called once a second using an object of the CPeriodic class. This thread removes a token from the queue when it is called. +It calls the CQueue::Remove() function on the shared CQueue object.

            For more information, refer to Condition Variables.

            Symbian +is not responsible for the content of external websites.

            Design and implementation

            + +

            Build

            The Symbian build process describes +how to build this example. The ConditionVariable example builds the +following binary files in the standard location (\epoc32\release\winscw\ + <build_variant>) for Carbide.c++.

            condvarlocal.exe: Demonstrates the use of the +local condition variable.

            How to run the Example

            To run the example, perform the following steps:

              +
            1. Run condvarlocal.exe. The program calls the producer and the +consumer threads periodically as shown in the description section. +It also displays a menu.

            2. +
            3. Press ‘d’ to display the contents of the queue.

            4. +
            5. Press ‘p’ to insert a token into the queue.

            6. +
            7. Press any key +to stop the program.

            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5C1EC237-EBC3-474D-B58D-502B82911DCA_d0e103581_href.png Binary file Symbian3/PDK/Source/GUID-5C1EC237-EBC3-474D-B58D-502B82911DCA_d0e103581_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5C1EC237-EBC3-474D-B58D-502B82911DCA_d0e107601_href.png Binary file Symbian3/PDK/Source/GUID-5C1EC237-EBC3-474D-B58D-502B82911DCA_d0e107601_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5C215C64-5D3D-5B65-A11F-BE6F8C306CF4.dita --- a/Symbian3/PDK/Source/GUID-5C215C64-5D3D-5B65-A11F-BE6F8C306CF4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5C215C64-5D3D-5B65-A11F-BE6F8C306CF4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -79,4 +79,4 @@

            The resource (.rss) file contains the XML file and the following information:

            • dll_uid and implementation_uid: These UIDs are supplied on request to Symbian Signed.

              Note: These UIDs can be the same.

            • interface_uid: This must have the value 0x102010DD.

            • default_data: The application UID (without 0x).

            • opaque_data: The application capabilities in XML format. This field is empty if application capabilities are defined in the implementation.

            Resolving the target client using CSIPResolvedClient

            The following illustration shows how the SIP Client Resolver subsystem resolves the target client implementation and requests the resolved client to connect to the SIP implementation. In this plan, the default resolution logic is applied.

            Call flow of resolving a target client implementation using CSIPResolvedClient -

            The following list describes how the target client is resolved using CSIPResolvedClient.

            1. The user receives a SIP request and the target client is defined using CSIPResolvedClient.

            2. The user requests the SIP Client Resolver API implementation for a channel UI to connect to the user.

            3. The user requests the target client to connect to SIP with the resolved UID if there is no connection with the resolved channel UID.

            4. The SIP Client Resolver API implementation starts the target client.

            See also

            Example of a SIP client resolver plug-in

            \ No newline at end of file +

            The following list describes how the target client is resolved using CSIPResolvedClient.

            1. The user receives a SIP request and the target client is defined using CSIPResolvedClient.

            2. The user requests the SIP Client Resolver API implementation for a channel UI to connect to the user.

            3. The user requests the target client to connect to SIP with the resolved UID if there is no connection with the resolved channel UID.

            4. The SIP Client Resolver API implementation starts the target client.

          See also

          Example of a SIP client resolver plug-in

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5C52B6B9-546C-5152-A968-B91CB3D885A0_d0e550561_href.jpg Binary file Symbian3/PDK/Source/GUID-5C52B6B9-546C-5152-A968-B91CB3D885A0_d0e550561_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5C52B6B9-546C-5152-A968-B91CB3D885A0_d0e558017_href.jpg Binary file Symbian3/PDK/Source/GUID-5C52B6B9-546C-5152-A968-B91CB3D885A0_d0e558017_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5C5A695C-A0BB-53C3-A20B-7C7F4DD718DF_d0e435599_href.png Binary file Symbian3/PDK/Source/GUID-5C5A695C-A0BB-53C3-A20B-7C7F4DD718DF_d0e435599_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5C5A695C-A0BB-53C3-A20B-7C7F4DD718DF_d0e441444_href.png Binary file Symbian3/PDK/Source/GUID-5C5A695C-A0BB-53C3-A20B-7C7F4DD718DF_d0e441444_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5C7F92F7-F3BC-4B00-A093-682AA6A26FFE_d0e92230_href.png Binary file Symbian3/PDK/Source/GUID-5C7F92F7-F3BC-4B00-A093-682AA6A26FFE_d0e92230_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5C7F92F7-F3BC-4B00-A093-682AA6A26FFE_d0e96428_href.png Binary file Symbian3/PDK/Source/GUID-5C7F92F7-F3BC-4B00-A093-682AA6A26FFE_d0e96428_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5CA933B9-7987-5DDE-AE12-B0D5AFD31451.dita --- a/Symbian3/PDK/Source/GUID-5CA933B9-7987-5DDE-AE12-B0D5AFD31451.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5CA933B9-7987-5DDE-AE12-B0D5AFD31451.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,7 +21,7 @@ PC: Media Transfer Protocol (MTP) and OBEX.

          Backup and Restore Architecture - +

          Backup and restore using the MTP Backup and Restore Data Provider

          The Symbian platform includes a Backup and Restore Data Provider plug-in for data backup and restore over MTP. The plug-in is loaded by the MTP Framework when diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5CAF1B85-853F-5450-B79B-7E768DFA44EC.dita --- a/Symbian3/PDK/Source/GUID-5CAF1B85-853F-5450-B79B-7E768DFA44EC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5CAF1B85-853F-5450-B79B-7E768DFA44EC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Bluetooth GPS PSY Configuration API OverviewThis document describes the Bluetooth GPS PSY Configuration API and is aimed at application developers who want to create applications for managing a list of Bluetooth GPS devices.

          Purpose

          A developer can use the Bluetooth GPS PSY Configuration API to write an application to manage a list of Bluetooth GPS devices. The list of devices is in order of preference. When GPS position information is required, the Bluetooth GPS PSY reads the list and attempts to connect to the first device address listed. If the connection is unsuccessful, then the Bluetooth GPS PSY tries each device in the list, in the order in which they are specified, until a connection is made. If the end of the list is reached, the Bluetooth GPS PSY requests for another device (not on the list) to be selected via the client application.

          The Bluetooth GPS PSY Configuration API stores the list in its own repository.

          Library details

          The DLL that provides the functionality and the library to which your code must link is identified below.

          DLL LIB Short description

          lbsbtgpsconfig.dll

          lbsbtgpsconfig.lib

          The Configuration API for the Bluetooth GPS PSY.

          Architecture

          The following diagram shows the Bluetooth GPS PSY Configuration API class structure:

          Figure 1. Bluetooth GPS PSY Configuration API Class Diagram -
          Description

          The Bluetooth GPS PSY Configuration API provides the following types of functions:

          Querying

          The following functions return information about the preferred list:

          • CLbsBtGpsConfig::GetDeviceListL(RPointerArray<TLbsBtGpsDeviceInfo>&) - returns the list of devices.

          • CLbsBtGpsConfig::GetDeviceCount(TInt&) - returns the number of devices in the list.

          Configuring

          The following functions enable the preferred list to be configured:

          • CLbsBtGpsConfig::AddDevice(const TBTDevAddr&, TInt, +

          Description

          The Bluetooth GPS PSY Configuration API provides the following types of functions:

          Querying

          The following functions return information about the preferred list:

          • CLbsBtGpsConfig::GetDeviceListL(RPointerArray<TLbsBtGpsDeviceInfo>&) - returns the list of devices.

          • CLbsBtGpsConfig::GetDeviceCount(TInt&) - returns the number of devices in the list.

          Configuring

          The following functions enable the preferred list to be configured:

          • CLbsBtGpsConfig::AddDevice(const TBTDevAddr&, TInt, TLbsBtGpsEntryKey&) - adds a new device to the list, at a specified position.

          • CLbsBtGpsConfig::ReorderDevice(TLbsBtGpsEntryKey, TInt) - moves a device to a new position in the list.

          • CLbsBtGpsConfig::RemoveDevice(TLbsBtGpsEntryKey) - removes a device from the list.

          • CLbsBtGpsConfig::EmptyDeviceList() - removes all of the devices from the list.

          APIs

          The key classes of Bluetooth GPS PSY Configuration API are as follows:

          Class Name Description

          CLbsBtGpsConfig

          Enables client applications to manage the preferred list of Bluetooth GPS devices.

          MLbsBtGpsConfigObserver

          Observer class that client applications can implement to receive notifications about changes to the list.

          Using the Bluetooth GPS PSY Configuration API

          The following tutorials describe how to use the Bluetooth GPS PSY Configuration API:

          • Creating an Instance of the Bluetooth GPS PSY Configuration API

          • Adding a Device to the Start of the List

          • Moving a Device to a New Position in the List

          • Removing a Device from the List

          • Retrieving the List of Devices

          Bluetooth diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5CCF303A-B7D5-570D-9BE8-29DFBE184995.dita --- a/Symbian3/PDK/Source/GUID-5CCF303A-B7D5-570D-9BE8-29DFBE184995.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5CCF303A-B7D5-570D-9BE8-29DFBE184995.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,87 +1,80 @@ - - - - - -Porting -OverviewThis topic describes the typical steps that you will need to do -to create a base port. -

          The easiest way to create a base port is to take the supplied template -port and expand it to suit your own hardware configuration(s). The template -port, is an outline, but working, framework that you can modify to suit your -own hardware.

          -

          The template port can be found under the sf/os/kernelhwsrv/bsptemplate/ directory. -For more information about the template port see Kernel & Hardware Quick Start Guide.

          -
          Set up the environment

          The first thing to do is -to set up your environment for building, downloading onto your hardware, and -testing that the port works.

          -
          Build, download, and test the supplied template port

          As -supplied, the template port is designed to boot on any hardware. It should -boot successfully, but clearly, the system can do nothing more at this time. -A successful boot shows that your build environment has been set up correctly.

          -
          Copy and rename the Template port

          When porting -the base to a new platform, you will need to code and build the Variant. This -provides those hardware dependent services required by the kernel. In nearly -all ports, this is split into an ASSP DLL and a Variant DLL. We usually refer -to the ASSP layer and the Variant layer.

          It is desirable that code -that depends only on the properties of the ASSP be segregated from code that -depends on details of the system outside the ASSP, so that multiple systems -that use the same ASSP can share common code.

          For example, in the -template reference port, the ..\template_assp\... directory -contains source code that contains the ASSP code, whereas the ...\template_variant\... directory -contains the code specific to the template board.

          -
          Code the Bootstrap

          The bootstrap consists of several -generic source and header files suppplied as part of Symbian platform, and -a set of platform specific files. You need to create these platform specific -files as part of a base port.

          For details, see Bootstrap.

          The -updated port can then be built, downloaded and tested.

          -
          Implement the -interrupt dispatcher

          An interrupt is a condition that causes the -CPU to suspend normal execution, enter interrupt handling state and jump to -a section of code called an interrupt handler. The ASSP/variant part of the -base port must implement an interrupt dispatcher class to manage interrupts.

          For -details, see the Interrupt -Dispatcher Implementation Tutorial.

          The updated port can then -be built, downloaded and tested.

          -
          Implement the -Asic class

          The Kernel requires that the ASSP/variant part of the -base port provides an implementation of the Asic interface. -This defines a small number of hardware-specific functions that are used by -the Kernel.

          For details, see the Asic -Class Tutorial.

          The updated port can then be built, downloaded -and tested.

          -
          Port the User-Side Hardware Abstraction (HAL)

          The -User-Side Hardware Abstraction (HAL) component provides a simple interface -for programs to read and set hardware-specific settings, for example, the -display contrast. A base port must define the attributes that clients can -use on a phone, and implement any functions that are required to get and set -the attributes.

          For details, see User-Side -Hardware Abstraction.

          -
          Port the other drivers

          The remaining drivers can -now be ported. Go and see:

            -
          • DMA -Framework

          • -
          • Digitizer -Driver

          • -
          • Keyboard -Driver

          • -
          • LCD -Extension

          • -
          • Local Media Subsystem

          • -
          • Media -Drivers

          • -
          • Power -Management

          • -
          • Serial Port Driver

          • -
          • Sound -Driver

          • -
          • USB -Client Driver Technology

          • -
          + + + + + +Porting OverviewThis topic describes the typical steps that you will need +to do to create a base port. +

          The easiest way to create a base port is to take the supplied template +port and expand it to suit your own hardware configuration(s). The +template port, is an outline, but working, framework that you can +modify to suit your own hardware.

          +

          The template port can be found under the sf/os/kernelhwsrv/bsptemplate/ directory. For more information about the template port see Kernel & Hardware Quick Start Guide.

          +
          Set +up the environment

          The first thing to do is to set up your +environment for building, downloading onto your hardware, and testing +that the port works.

          +
          Build, +download, and test the supplied template port

          As supplied, +the template port is designed to boot on any hardware. It should boot +successfully, but clearly, the system can do nothing more at this +time. A successful boot shows that your build environment has been +set up correctly.

          +
          Copy +and rename the Template port

          When porting the base to a +new platform, you will need to code and build the Variant. This provides +those hardware dependent services required by the kernel. In nearly +all ports, this is split into an ASSP DLL and a Variant DLL. We usually +refer to the ASSP layer and the Variant layer.

          It is desirable +that code that depends only on the properties of the ASSP be segregated +from code that depends on details of the system outside the ASSP, +so that multiple systems that use the same ASSP can share common code.

          For example, in the template reference port, the ..\template_assp\... directory contains source code that contains the ASSP code, whereas +the ...\template_variant\... directory contains +the code specific to the template board.

          +
          Code +the Bootstrap

          The bootstrap consists of several generic +source and header files suppplied as part of Symbian platform, and +a set of platform specific files. You need to create these platform +specific files as part of a base port.

          For details, see Bootstrap.

          The updated port can then be built, downloaded and tested.

          +
          Implement +the interrupt dispatcher

          An interrupt is a condition that +causes the CPU to suspend normal execution, enter interrupt handling +state and jump to a section of code called an interrupt handler. The +ASSP/variant part of the base port must implement an interrupt dispatcher +class to manage interrupts.

          For details, see the Interrupt Dispatcher +Implementation Tutorial.

          The updated port can then +be built, downloaded and tested.

          +
          Implement +the Asic class

          The Kernel requires that the ASSP/variant +part of the base port provides an implementation of the Asic interface. This defines a small number of hardware-specific functions +that are used by the Kernel.

          For details, see the Asic Class Tutorial.

          The updated port can then be +built, downloaded and tested.

          +
          Port +the User-Side Hardware Abstraction (HAL)

          The User-Side +Hardware Abstraction (HAL) component provides a simple interface for +programs to read and set hardware-specific settings, for example, +the display contrast. A base port must define the attributes that +clients can use on a phone, and implement any functions that are required +to get and set the attributes.

          For details, see User-Side Hardware Abstraction.

          +
          Port +the other drivers

          The remaining drivers can now be ported. +Go and see:

            +
          • DMA Framework

          • +
          • Digitizer Driver

          • +
          • Keyboard Driver

          • +
          • LCD Extension

          • +
          • Local Media Subsystem

          • +
          • Media Drivers

          • +
          • Power Management

          • +
          • Serial Port Driver

          • +
          • Sound Driver

          • +
          • USB Client Driver +Technology

          • +
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5CF162CA-4395-58AC-A318-2BF178276A57_d0e296428_href.png Binary file Symbian3/PDK/Source/GUID-5CF162CA-4395-58AC-A318-2BF178276A57_d0e296428_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5CF162CA-4395-58AC-A318-2BF178276A57_d0e302420_href.png Binary file Symbian3/PDK/Source/GUID-5CF162CA-4395-58AC-A318-2BF178276A57_d0e302420_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5D4DA7CA-DAB8-51E6-B597-4E8B0AB56477.dita --- a/Symbian3/PDK/Source/GUID-5D4DA7CA-DAB8-51E6-B597-4E8B0AB56477.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -target

          target filename . ext

          Use the target statement to specify the file generated by the project.

          Specify only the filename with its extension. The path for the released target will be chosen depending on the platform, variant, and release path.

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5D508751-C824-48E4-A6E3-0C5EA05DEC99.dita --- a/Symbian3/PDK/Source/GUID-5D508751-C824-48E4-A6E3-0C5EA05DEC99.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5D508751-C824-48E4-A6E3-0C5EA05DEC99.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,50 +1,48 @@ - - - - - -PKG -file format to support multilingual application installation

          Symbian platform applications can be localized by defining all -the localizable text and images in language-specific resource and icon files. -For more information on localising the resource files, see How -to localise resources. The PKG file must contain language-specific -resource and icon files along with the elements required for simple -installation.

          -
          Example

          The following PKG file is provided -in examples\ToolsAndUtilities\Localise\.

          ; Install file for multi-lingual application supporting two language variants - -; List of languages supported -&EN,GE - -; List of localised vendor names for each supported language -%{"Nokia Corporation", "Nokia Corporation"} - -; Single, non-localised (global) vendor name. -:"Nokia Corporation" - -; Package header -; Component names specified in English and German as these are supported languages -#{"Hello World", "Hallo Welt"}, (0xE8000096), 1,0,0 - -; Language-neutral files to be installed irrespective of the languages supported on the Symbian device. - -"HelloWorld.exe"-"!:\sys\bin\HelloWorld.exe" -"HelloWorld_reg.rsc" - "!:\private\10003a3f\import\apps\HelloWorld_reg.rsc" - -; List of language-specific files; installed based on the language supported by the Symbian device. -if supported_language=01 - "HelloWorld.r01" -"!:\resource\apps\HelloWorld.r01" ;English version of the resource file - "HelloWorld01.mbm" -"!:\resource\apps\HelloWorld01.mbm" ;language-specific icon file -endif - -if supported_language=03 - "HelloWorld.r03" -"!:\resource\apps\HelloWorld.r03" ;German version of the resource file - "HelloWorld03.mbm" -"!:\resource\apps\HelloWorld03.mbm" ;language-specific icon file -endif
          + + + + + +PKG file format to support multilingual application installation

          Symbian platform applications can be localized by defining +all the localizable text and images in language-specific resource +and icon files. The PKG file must contain language-specific +resource and icon files along with the elements required for +simple installation.

          +
          Example

          The following PKG file is +provided in examples\ToolsAndUtilities\Localise\.

          ; Install file for multi-lingual application supporting two language variants + +; List of languages supported +&EN,GE + +; List of localised vendor names for each supported language +%{"Nokia Corporation", "Nokia Corporation"} + +; Single, non-localised (global) vendor name. +:"Nokia Corporation" + +; Package header +; Component names specified in English and German as these are supported languages +#{"Hello World", "Hallo Welt"}, (0xE8000096), 1,0,0 + +; Language-neutral files to be installed irrespective of the languages supported on the Symbian device. + +"HelloWorld.exe"-"!:\sys\bin\HelloWorld.exe" +"HelloWorld_reg.rsc" - "!:\private\10003a3f\import\apps\HelloWorld_reg.rsc" + +; List of language-specific files; installed based on the language supported by the Symbian device. +if supported_language=01 + "HelloWorld.r01" -"!:\resource\apps\HelloWorld.r01" ;English version of the resource file + "HelloWorld01.mbm" -"!:\resource\apps\HelloWorld01.mbm" ;language-specific icon file +endif + +if supported_language=03 + "HelloWorld.r03" -"!:\resource\apps\HelloWorld.r03" ;German version of the resource file + "HelloWorld03.mbm" -"!:\resource\apps\HelloWorld03.mbm" ;language-specific icon file +endif
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5D5CCF46-0FB4-57DA-B32D-C2C7F86FAD30_d0e449930_href.png Binary file Symbian3/PDK/Source/GUID-5D5CCF46-0FB4-57DA-B32D-C2C7F86FAD30_d0e449930_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5D5CCF46-0FB4-57DA-B32D-C2C7F86FAD30_d0e455775_href.png Binary file Symbian3/PDK/Source/GUID-5D5CCF46-0FB4-57DA-B32D-C2C7F86FAD30_d0e455775_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5D712F4A-E956-543D-BCC0-91107C6E4717.dita --- a/Symbian3/PDK/Source/GUID-5D712F4A-E956-543D-BCC0-91107C6E4717.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5D712F4A-E956-543D-BCC0-91107C6E4717.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -Notification of changes to the comms databaseThis topic describes the mechanism that allows the CommsDat API to notify tools and applications of changes to the Comms Database.

          All elements that you can read and write have the class MMetaDatabase as a base class. This base class contains the functions that allow the CommsDat API to notify tools and applicaions of changes to the database.

          Tables, records, links and fields are all elements. The classes that represent tables, records, links and fields have MMetaDatabase in their class hierearchy. You can use the CommsDat::MMetaDatabase::RequestNotification() function to register for notification of changes to the Comms Database. You can use the CommsDat::MMetaDatabase::CancelNotification() function to cancel a request for notification.

          \ No newline at end of file +Notification of changes to the comms databaseThis topic describes the mechanism that allows the CommsDat API to notify tools and applications of changes to the Comms Database.

          All elements that you can read and write have the class MMetaDatabase as a base class. This base class contains the functions that allow the CommsDat API to notify tools and applicaions of changes to the database.

          Tables, records, links and fields are all elements. The classes that represent tables, records, links and fields have MMetaDatabase in their class hierearchy. You can use the CommsDat::MMetaDatabase::RequestNotification() function to register for notification of changes to the Comms Database. You can use the CommsDat::MMetaDatabase::CancelNotification() function to cancel a request for notification.

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5D831531-2430-4C61-B8C4-BEE9850387C2_d0e65837_href.png Binary file Symbian3/PDK/Source/GUID-5D831531-2430-4C61-B8C4-BEE9850387C2_d0e65837_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5D831531-2430-4C61-B8C4-BEE9850387C2_d0e70060_href.png Binary file Symbian3/PDK/Source/GUID-5D831531-2430-4C61-B8C4-BEE9850387C2_d0e70060_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5DB0F7C7-6132-552B-BA42-B47D267D1143_d0e76911_href.png Binary file Symbian3/PDK/Source/GUID-5DB0F7C7-6132-552B-BA42-B47D267D1143_d0e76911_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5DB0F7C7-6132-552B-BA42-B47D267D1143_d0e81124_href.png Binary file Symbian3/PDK/Source/GUID-5DB0F7C7-6132-552B-BA42-B47D267D1143_d0e81124_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5DD17088-1F9C-5810-8143-5067A2B18330.dita --- a/Symbian3/PDK/Source/GUID-5DD17088-1F9C-5810-8143-5067A2B18330.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5DD17088-1F9C-5810-8143-5067A2B18330.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,15 +12,15 @@ A-GPS Location Data Source APIThis document describes the A-GPS Location Data Source API that device creators use to integrate with A-GPS hardware.
          Purpose

          This document describes the A-GPS (Assisted GPS) Location Data Source API that a licensee's GPS/A-GPS Integration Module must implement to integrate GPS hardware with the LBS subsystem. It is intended to give licensee Integration Module writers an understanding of the API, how it is called by the LBS subsystem and the behaviour expected from Integration Modules.

          This document contains links to A-GPS Location Data Source API reference documentation that can be followed to obtain full descriptions of API classes and methods.

          Contents
          • Introduction

          • GPS modes

          • A-GPS Location Data Source API description

          • Using the A-GPS Location Data Source API

            • LBS loads the A-GPS Integration Module

            • LBS sets GPS options (including the GPS mode)

            • LBS sends power advice

            • LBS requests location update

            • Module requests assistance data

            • LBS notifies the A-GPS Integration Module of assistance data availability

            • Module retrieves A-GPS assistance data items

            • Module notifies LBS of a location update

            • Cancelling a location update request

            • Resetting A-GPS assistance data

            • GPS hardware device status changes and quality status changes

          • Integration module configuration

          • See also

          Introduction

          Licensees who want to use GPS technology in their phones must integrate the GPS hardware with the LBS subsystem. To do this they must create a GPS or A-GPS (Assisted GPS) Integration Module. An Integration Module provides the adaptation layer between the LBS subsystem and the GPS hardware. It is an ECOM plug-in that is loaded by the LBS subsystem A-GPS Location Manager on start-up.

          This document describes the A-GPS Location Data Source API. The API defines the interface between the LBS subsystem and an Integration Module. Symbian provides a reference implementation of an A-GPS Integration Module based on a SiRF chipset. Licensees can use the Symbian reference implementation as the basis of their own A-GPS Integration Module (see A-GPS reference module overview for more information).

          For a high-level description of LBS architecture, see LBS architecture overview. For a more detailed explanation of the architecture see SGL.TS0004.202 LBS Architectural Description (in the LBS source distribution documentation folder).

          GPS modes

          Different GPS hardware chipsets may support different GPS capabilities: hardware may produce GPS position fixes (latitude, longitude and altitude data) or, more simply, GPS measurements that must be used by software outside of the GPS hardware to calculate a position fix.

          The four GPS modes supported by the LBS subsystem are:

          • Autonomous mode

            In autonomous mode GPS hardware calculates a position fix without using assistance data from the network. This typically takes longer than if assistance data were used to calculate the fix.

          • Terminal based mode (TB)

            In terminal based mode the Integration Module and GPS hardware use assistance data received from the network to calculate a GPS position fix and return it to the LBS subsystem.

          • Terminal assisted mode (TA)

            In terminal assisted mode, the GPS hardware produces GPS measurements (with the help of assistance data from the network).

            In the Symbian LBS subsystem the Integration Module returns the GPS measurements which are sent to a network-based server. The measurements are used to calculate a position fix.

          • Simultaneous support of TB + TA modes

            GPS hardware may be able to return both GPS measurements and position fixes. An Integration Module can return the GPS measurements as they are received from GPS satellites together with GPS position fixes that are increasingly complete and/or accurate.

            As in TA mode, the LBS subsystem returns the GPS measurements to the network for calculation. Either the network of the Integration Module may be the first to return a position of the required accuracy (as specified by a client process).

          Licensees can implement their Integration Modules to support more than one GPS mode. A module may support terminal based mode with the ability to fallback to autonomous mode if assistance data is not available. A module may also be designed to support either TB or TA, but not TB + TA.

          An Integration Module publishes the GPS mode it supports in a configuration file. LBS uses the configuration file, the LBS subsystem administration settings and any preferences received from the network to set the GPS mode that an Integration Module uses to calculate a position fix. Later sections of this document describe how LBS sets an Integration Module's GPS mode.

          A-GPS Location Data Source API description

          This section describes the classes of the A-GPS Location Data Source API.

          A-GPS Location Data Source API class diagram

          Figure 1 shows the classes of the A-GPS Location Data Source API.

          The main classes of the API are CLbsLocationSourceGpsBase and MLbsLocationSourceGpsObserver which together model an observer/observable design pattern. A licensee's Integration Module must derive from CLbsLocationSourceGpsBase. The LBS subsystem (A-GPS Location Manager) implements MLbsLocationSourceGpsObserver.

          Note: All of the methods of the CLbsLocationSourceGpsBase are synchronous and their implementations in a licensee Integration Module must return quickly.

          Figure 1. A-GPS Location Data Source API classes -

          API classes and types

          Table 1 lists the classes and types that define the A-GPS Location Data Source API. Further details about the classes can be found by following the links to reference documentation.

          The A-GPS Location Data Source API has publishedPartner interface access.

          Class/type name Description Header file

          CLbsLocationSourceGpsBase

          The base class for all A-GPS Integration Module implementations. It defines the methods that the LBS subsystem uses to request GPS measurements or a GPS position fix, to set the mode of operation of the GPS hardware and to send power advice.

          LbsLocDataSourceGpsBase.h

          MLbsLocationSourceGpsObserver

          The GPS Integration Module observer class implemented by the LBS subsystem (A-GPS Location Manager). It defines the methods that an A-GPS module uses to request assistance data, return GPS measurements or a position fix, and send module status messages into LBS.

          LbsLocDataSourceGpsBase.h

          CLbsLocationSourceGpsBase::TPowerMode

          Defines a set of values for power advice. A value is a parameter in CLbsLocationSourceGpsBase::AdvisePowerMode().

          LbsLocDataSourceGpsBase.h

          TLbsLocRequestQuality

          Specifies the desired quality of a location request. TLbsLocRequestQuality is used to specify the desired quality of a location request to an Integration Module. A reference to an object of this type is passed to CLbsLocationSourceBase::UpdateLocation().

          LbsLocDataSourceGpsBase.h

          TLbsGpsOptions

          This is the default class used to hold various global settings for the GPS integration module including the GPS positioning mode required. It has the method TLbsGpsOptions::SetGpsMode() that is used to set the GPS positioning mode of the module (such as terminal based or terminal assisted mode).

          LbsLocDataSourceGpsBase.h

          TLbsGpsOptionsItem (from v9.3)

          An item in a TLbsGpsOptionsArray. The item specifies the type of update required from a module - a position fix or a set of GPS measurements or both.

          LbsLocDataSourceGpsBase.h

          TLbsGpsOptionsArray (from v9.3)

          This class is derived from TLbsGpsOptions. It is only passed as a parameter in CLbsLocationSourceGpsBase::UpdateLocation() when the network has asked the LBS subsystem to work in TB + TA mode. For more information see LBS sets GPS options.

          LbsLocDataSourceGpsBase.h

          Table 1 Classes and types of the A-GPS Location Data Source API.

          Table 2 lists the assistance data classes and types that are passed across the API. The classes and types are used to specify the assistance data that an Integration Module requires. For more information see the links to reference documentation.

          Class/type name Description Header file

          TLbsAssistanceDataItem

          The class defines the type of assistance data that an Integration Module requires. A bitmask of type TLbsAssistanceDataGroup is composed of TLbsAssistanceDataItem values. The class and the bitmask are used to pass requests for assistance data between the Integration Module and the LBS subsystem.

          LbsAssistanceDataBase.h

          TLbsAssistanceDataGroup

          Bitmask of TLbsAssistanceDataItem values.

          LbsAssistanceDataBase.h

          RDataBuilderRootBase

          Base class of readers for assistance data. Each type of assistance data requires its own reader that is derived from RDataBuilderRootBase.

          LbsAssistanceDataBase.h

          Table 2 Assistance data classes passed across the API

          Table 3 lists position info classes that are passed across the API from an Integration Module to the LBS subsystem. For more information see the links to reference documentation.

          Class/type name Description Header file

          TPositionInfoBase

          Base class for classes that hold GPS position fixes or GPS measurements.

          LbsPositionInfo.h

          TPositionSatelliteInfo

          Holds a position fix and satellite information.

          LbsSatelliteInfo.h

          TPositionGpsMeasurementInfo

          Holds GPS measurements.

          LbsGpsMeasurement.h

          Table 3 Position Info classes

          Libraries

          The main classes of the A-GPS Location Data Source API are packaged in lbslocdatasource.dll. Integration Module implementations link to lbslocdatasource.lib.

          Assistance data classes are packaged in lbsassistancedata.dll. Clients link to lbsassistancedata.lib.

          Position info classes are packaged in lbsselflocate.dll. Clients link to lbsselflocate.lib.

          Using the A-GPS Location Data Source API

          Licensees use the API to create an Integration Module to interface their device GPS hardware with the LBS subsystem. The API provides the means by which the LBS subsystem and an Integration Module interact. Details of how the Integration Module interact with the GPS hardware are hardware-specific and are not part of the API.

          This section describes how an Integration Module and the LBS subsystem use the API to interact. It is intended to give a description of the general order in which the API methods are called by the LBS subsystem and to give a better understanding of their purpose.

          The behaviour of an A-GPS Integration Module can be complex when it is linked to a Network Protocol Module. Several detailed end-to-end sequence diagrams that document the behaviour of the LBS subsystem including the behaviour expected from an Integration Module are given in LBS Sequence Diagrams.

          Figure 2 shows a simplified sequence for an MO-LR self locate (a self-locate request from the Location Acquisition API). Terminal based positioning involves obtaining assistance data (and possibly a reference position) from the network via a Network Protocol Module. The discussion that follows describes the main flow of events for MO-LR self locate.

          +

          API classes and types

          Table 1 lists the classes and types that define the A-GPS Location Data Source API. Further details about the classes can be found by following the links to reference documentation.

          The A-GPS Location Data Source API has publishedPartner interface access.

          Class/type name Description Header file

          CLbsLocationSourceGpsBase

          The base class for all A-GPS Integration Module implementations. It defines the methods that the LBS subsystem uses to request GPS measurements or a GPS position fix, to set the mode of operation of the GPS hardware and to send power advice.

          LbsLocDataSourceGpsBase.h

          MLbsLocationSourceGpsObserver

          The GPS Integration Module observer class implemented by the LBS subsystem (A-GPS Location Manager). It defines the methods that an A-GPS module uses to request assistance data, return GPS measurements or a position fix, and send module status messages into LBS.

          LbsLocDataSourceGpsBase.h

          CLbsLocationSourceGpsBase::TPowerMode

          Defines a set of values for power advice. A value is a parameter in CLbsLocationSourceGpsBase::AdvisePowerMode().

          LbsLocDataSourceGpsBase.h

          TLbsLocRequestQuality

          Specifies the desired quality of a location request. TLbsLocRequestQuality is used to specify the desired quality of a location request to an Integration Module. A reference to an object of this type is passed to CLbsLocationSourceBase::UpdateLocation().

          LbsLocDataSourceGpsBase.h

          TLbsGpsOptions

          This is the default class used to hold various global settings for the GPS integration module including the GPS positioning mode required. It has the method TLbsGpsOptions::SetGpsMode() that is used to set the GPS positioning mode of the module (such as terminal based or terminal assisted mode).

          LbsLocDataSourceGpsBase.h

          TLbsGpsOptionsItem (from v9.3)

          An item in a TLbsGpsOptionsArray. The item specifies the type of update required from a module - a position fix or a set of GPS measurements or both.

          LbsLocDataSourceGpsBase.h

          TLbsGpsOptionsArray (from v9.3)

          This class is derived from TLbsGpsOptions. It is only passed as a parameter in CLbsLocationSourceGpsBase::UpdateLocation() when the network has asked the LBS subsystem to work in TB + TA mode. For more information see LBS sets GPS options.

          LbsLocDataSourceGpsBase.h

          Table 1 Classes and types of the A-GPS Location Data Source API.

          Table 2 lists the assistance data classes and types that are passed across the API. The classes and types are used to specify the assistance data that an Integration Module requires. For more information see the links to reference documentation.

          Class/type name Description Header file

          TLbsAssistanceDataItem

          The class defines the type of assistance data that an Integration Module requires. A bitmask of type TLbsAssistanceDataGroup is composed of TLbsAssistanceDataItem values. The class and the bitmask are used to pass requests for assistance data between the Integration Module and the LBS subsystem.

          LbsAssistanceDataBase.h

          TLbsAssistanceDataGroup

          Bitmask of TLbsAssistanceDataItem values.

          LbsAssistanceDataBase.h

          RDataBuilderRootBase

          Base class of readers for assistance data. Each type of assistance data requires its own reader that is derived from RDataBuilderRootBase.

          LbsAssistanceDataBase.h

          Table 2 Assistance data classes passed across the API

          Table 3 lists position info classes that are passed across the API from an Integration Module to the LBS subsystem. For more information see the links to reference documentation.

          Class/type name Description Header file

          TPositionInfoBase

          Base class for classes that hold GPS position fixes or GPS measurements.

          LbsPositionInfo.h

          TPositionSatelliteInfo

          Holds a position fix and satellite information.

          LbsSatelliteInfo.h

          TPositionGpsMeasurementInfo

          Holds GPS measurements.

          LbsGpsMeasurement.h

          Table 3 Position Info classes

          Libraries

          The main classes of the A-GPS Location Data Source API are packaged in lbslocdatasource.dll. Integration Module implementations link to lbslocdatasource.lib.

          Assistance data classes are packaged in lbsassistancedata.dll. Clients link to lbsassistancedata.lib.

          Position info classes are packaged in lbsselflocate.dll. Clients link to lbsselflocate.lib.

          Using the A-GPS Location Data Source API

          Licensees use the API to create an Integration Module to interface their device GPS hardware with the LBS subsystem. The API provides the means by which the LBS subsystem and an Integration Module interact. Details of how the Integration Module interact with the GPS hardware are hardware-specific and are not part of the API.

          This section describes how an Integration Module and the LBS subsystem use the API to interact. It is intended to give a description of the general order in which the API methods are called by the LBS subsystem and to give a better understanding of their purpose.

          The behaviour of an A-GPS Integration Module can be complex when it is linked to a Network Protocol Module. Several detailed end-to-end sequence diagrams that document the behaviour of the LBS subsystem including the behaviour expected from an Integration Module are given in LBS Sequence Diagrams.

          Figure 2 shows a simplified sequence for an MO-LR self locate (a self-locate request from the Location Acquisition API). Terminal based positioning involves obtaining assistance data (and possibly a reference position) from the network via a Network Protocol Module. The discussion that follows describes the main flow of events for MO-LR self locate.

          Figure 2. Simplified sequence for MO-LR self locate request -

          The following explains a simple flow of events between the LBS subsystem and an A-GPS Integration Module (for terminal based positioning):

          • LBS loads the A-GPS Integration Module

          • LBS sets GPS options (including the GPS mode)

          • LBS sends power advice

          • LBS requests location update

          • Module requests assistance data

          • LBS notifies the A-GPS Integration Module of assistance data availability

          • Module retrieves A-GPS assistance data items

          • Module notifies LBS of a location update

          In addition to the typical flow of events described, a module can also notify LBS of GPS device status changes and quality status changes.

          The implementation of CLbsLocationSourceGpsBase methods must not call MLbsLocationSourceGpsObserver methods or stack overflow may eventually occur. The exception to this rule is CLbsLocationSourceGpsBase::AssistanceDataEvent(): implementations may call MLbsLocationSourceGpsObserver::GetAssistanceDataItem() multiple times to get all the request assistance data items.

          Each of the steps above and shown in figure 2 is described in more detail in the following sections, with links to API reference documentation.

          LBS loads the A-GPS Integration Module

          The Integration Module is packaged as an ECOM plug-in DLL. When the LBS subsystem starts up, the A-GPS Location Manager process uses the ECOM framework to load the Integration Module. The A-GPS Location Manager calls CLbsLocationSourceGpsBase::NewL(), passing a reference to itself as an MLbsLocationSourceGpsObserver and the ID of the ECOM implementation DLL to load.

          For more information about how to configure LBS to use an Integration Module see LBS integration and configuration guide.

          LBS sets GPS options (including the GPS mode)

          The GPS mode specifies how the A-GPS Integration Module should obtain a location fix. There are four modes supported by the LBS subsystem as described in GPS modes:

          • Autonomous mode

          • Terminal based mode (TB)

          • Terminal assisted mode (TA)

          • Simultaneous TB + TA

          GPS mode settings values

          The LBS subsystem calls CLbsLocationSourceGpsBase::SetGpsOptions() to set the GPS mode. The LBS subsystem calls this method when an Integration Module is first loaded by the LBS subsystem and when an MO-LR begins (when the setting value is taken from the LBS administration setting value for KLbsSettingHomeGpsMode).

          As shown in figure 2, SetGpsOptions() may be called again as part of a location request if the network requests a different GPS mode from the one that is currently set. The mode that is set should be used by the Integration Module for all further location requests until the next call from LBS to SetGpsOptions().

          Table 1 shows a list of values of CLbsAdmin::TGpsMode that are passed in SetGpsOptions().

          TGpsMode Meaning

          EGpsPreferTerminalBased

          Prefer Terminal Based (PTB): Integration module should use Terminal Based Positioning (TB) if possible. If TB is not possible then fallback to autonomous mode.

          EGpsAutonomous

          Use Autonomous GPS: Module must not request any assistance data from the network and calculate a position without it.

          EGpsPreferTerminalAssisted

          Prefer Terminal Assisted (PTA): Module must use Terminal Assisted Positioning (TA) if possible. If TA is not possible then fallback to autonomous mode if possible.

          EGpsAlwaysTerminalAssisted

          Always Terminal Assisted (ATA): Module must always use TA and return an error if this is not possible. If the Integration Module is not able to use TA it calls MLbsLocationSourceGpsObserver::UpdateLocation() with a status code of KErrNotSupported.

          EGpsAlwaysTerminalBased

          Always Terminal Based (ATB): Module must always use TB and return an error if this is not possible. This value is not currently supported.

          Table 1. TGpsMode values and their meanings.

          A licensee's Integration Module is not required to support all of these modes. Licensees modify the Integration Module module.ini file DeviceGpsModeCaps setting to publish a module's capabilities to the LBS subsystem.

          Valid values of DeviceGpsModeCaps in module.ini are as follows:

          • 0001 - Module supports Terminal Based positioning and is also able to calculate position autonomously if assistance data is unavailable or does not arrive on time (for example a fix is obtained before assistance data delivery).

          • 0010 - Module supports Terminal Assisted positioning. The module may (but does not have to) be able to calculate position autonomously if Terminal Assisted positioning does not succeed (for example the network is unavailable).

          • 0011 - Module supports Terminal Based positioning OR Terminal Assisted positioning and is also able to calculate position autonomously if assistance data is unavailable, or does not arrive on time (for example a fix is obtained before assistance data delivery).

          • 0100 - Module can perform Terminal Assisted AND Terminal Based positioning at the same time (TB + TA). It is also able to calculate position autonomously if assistance data is unavailable (e.g. network error), or does not arrive on time (e.g. a fix is obtained before assistance data delivery). NOTE: If this bit is set then it is not necessary to set either of the less significant 2 bits as they are implied.

          If DeviceGpsModeCaps is not specified in this file, LBS assumes that the module can support both Terminal Based AND Terminal Assisted GPS modes at the same time.

          There are two slightly different methods of specifying the GPS mode to an Integration Module. Both methods involve the A-GPS Location Manager calling CLbsLocationSourceGpsBase::SetGpsOptions():

          Setting a single positioning mode

          (For autonomous mode, terminal based mode and terminal assisted mode)

          LBS creates an object of class TLbsGpsOptions and calls TLbsGpsOptions::SetGpsMode() with a single parameter of type CLbsAdmin::TGpsMode:

          To set the Integration Module to use autonomous mode, LBS calls SetGpsMode() with the parameter value CLbsAdmin::EGpsAutonomous.

          To set terminal based mode, LBS calls SetGpsMode() with the parameter value CLbsAdmin::EGpsPreferTerminalBased. This specifies that a GPS position fix is required from the Integration Module (the module should use TB if possible, but fallback to autonomous mode if no assistance data is available).

          To set terminal assisted mode, LBS calls SetGpsMode() with the parameter value CLbsAdmin::EGpsPreferTerminalAssisted or CLbsAdmin::EGpsAlwaysTerminalAssisted. This specifies that GPS measurements are required from the module. The two parameter values have the following meanings:

          • EGpsPreferTerminalAssisted means that a module should use TA if possible but fallback to autonomous mode if this is not possible (for example a network error).

          • EGpsAlwaysTerminalAssisted means that a module should always use TA. If TA is not possible (for example because of a network error) then the Integration Module must signal an error by calling MLbsLocationSourceGpsObserver::UpdateLocation() with an error status code (a negative code).

          To set the GPS mode on the Integration Module, LBS calls CLbsLocationSourceGpsBase::SetGpsOptions() passing the TLbsGpsOptions reference as a parameter.

          If LBS attempts to set an Integration Module's GPS mode to one that it does not support then the Integration Module must call MLbsLocationSourceGpsObserver::UpdateLocation() with a status parameter of KErrNotSupported. Note that the Symbian reference A-GPS Integration Module does not support Terminal Assisted mode or TB + TA mode.

          As part of a location request, the network can specify the required GPS modes to LBS (see Network Protocol Module documentation for more information about how a Protocol Module specifies these modes). If the network asks for Terminal Assisted mode, the LBS subsystem uses the value of the administration setting KLbsSettingHomeGpsMode to decide which mode is sent to the Integration Module, either +

          The following explains a simple flow of events between the LBS subsystem and an A-GPS Integration Module (for terminal based positioning):

          • LBS loads the A-GPS Integration Module

          • LBS sets GPS options (including the GPS mode)

          • LBS sends power advice

          • LBS requests location update

          • Module requests assistance data

          • LBS notifies the A-GPS Integration Module of assistance data availability

          • Module retrieves A-GPS assistance data items

          • Module notifies LBS of a location update

          In addition to the typical flow of events described, a module can also notify LBS of GPS device status changes and quality status changes.

          The implementation of CLbsLocationSourceGpsBase methods must not call MLbsLocationSourceGpsObserver methods or stack overflow may eventually occur. The exception to this rule is CLbsLocationSourceGpsBase::AssistanceDataEvent(): implementations may call MLbsLocationSourceGpsObserver::GetAssistanceDataItem() multiple times to get all the request assistance data items.

          Each of the steps above and shown in figure 2 is described in more detail in the following sections, with links to API reference documentation.

          LBS loads the A-GPS Integration Module

          The Integration Module is packaged as an ECOM plug-in DLL. When the LBS subsystem starts up, the A-GPS Location Manager process uses the ECOM framework to load the Integration Module. The A-GPS Location Manager calls CLbsLocationSourceGpsBase::NewL(), passing a reference to itself as an MLbsLocationSourceGpsObserver and the ID of the ECOM implementation DLL to load.

          For more information about how to configure LBS to use an Integration Module see LBS integration and configuration guide.

          LBS sets GPS options (including the GPS mode)

          The GPS mode specifies how the A-GPS Integration Module should obtain a location fix. There are four modes supported by the LBS subsystem as described in GPS modes:

          • Autonomous mode

          • Terminal based mode (TB)

          • Terminal assisted mode (TA)

          • Simultaneous TB + TA

          GPS mode settings values

          The LBS subsystem calls CLbsLocationSourceGpsBase::SetGpsOptions() to set the GPS mode. The LBS subsystem calls this method when an Integration Module is first loaded by the LBS subsystem and when an MO-LR begins (when the setting value is taken from the LBS administration setting value for KLbsSettingHomeGpsMode).

          As shown in figure 2, SetGpsOptions() may be called again as part of a location request if the network requests a different GPS mode from the one that is currently set. The mode that is set should be used by the Integration Module for all further location requests until the next call from LBS to SetGpsOptions().

          Table 1 shows a list of values of CLbsAdmin::TGpsMode that are passed in SetGpsOptions().

          TGpsMode Meaning

          EGpsPreferTerminalBased

          Prefer Terminal Based (PTB): Integration module should use Terminal Based Positioning (TB) if possible. If TB is not possible then fallback to autonomous mode.

          EGpsAutonomous

          Use Autonomous GPS: Module must not request any assistance data from the network and calculate a position without it.

          EGpsPreferTerminalAssisted

          Prefer Terminal Assisted (PTA): Module must use Terminal Assisted Positioning (TA) if possible. If TA is not possible then fallback to autonomous mode if possible.

          EGpsAlwaysTerminalAssisted

          Always Terminal Assisted (ATA): Module must always use TA and return an error if this is not possible. If the Integration Module is not able to use TA it calls MLbsLocationSourceGpsObserver::UpdateLocation() with a status code of KErrNotSupported.

          EGpsAlwaysTerminalBased

          Always Terminal Based (ATB): Module must always use TB and return an error if this is not possible. This value is not currently supported.

          Table 1. TGpsMode values and their meanings.

          A licensee's Integration Module is not required to support all of these modes. Licensees modify the Integration Module module.ini file DeviceGpsModeCaps setting to publish a module's capabilities to the LBS subsystem.

          Valid values of DeviceGpsModeCaps in module.ini are as follows:

          • 0001 - Module supports Terminal Based positioning and is also able to calculate position autonomously if assistance data is unavailable or does not arrive on time (for example a fix is obtained before assistance data delivery).

          • 0010 - Module supports Terminal Assisted positioning. The module may (but does not have to) be able to calculate position autonomously if Terminal Assisted positioning does not succeed (for example the network is unavailable).

          • 0011 - Module supports Terminal Based positioning OR Terminal Assisted positioning and is also able to calculate position autonomously if assistance data is unavailable, or does not arrive on time (for example a fix is obtained before assistance data delivery).

          • 0100 - Module can perform Terminal Assisted AND Terminal Based positioning at the same time (TB + TA). It is also able to calculate position autonomously if assistance data is unavailable (e.g. network error), or does not arrive on time (e.g. a fix is obtained before assistance data delivery). NOTE: If this bit is set then it is not necessary to set either of the less significant 2 bits as they are implied.

          If DeviceGpsModeCaps is not specified in this file, LBS assumes that the module can support both Terminal Based AND Terminal Assisted GPS modes at the same time.

          There are two slightly different methods of specifying the GPS mode to an Integration Module. Both methods involve the A-GPS Location Manager calling CLbsLocationSourceGpsBase::SetGpsOptions():

          Setting a single positioning mode

          (For autonomous mode, terminal based mode and terminal assisted mode)

          LBS creates an object of class TLbsGpsOptions and calls TLbsGpsOptions::SetGpsMode() with a single parameter of type CLbsAdmin::TGpsMode:

          To set the Integration Module to use autonomous mode, LBS calls SetGpsMode() with the parameter value CLbsAdmin::EGpsAutonomous.

          To set terminal based mode, LBS calls SetGpsMode() with the parameter value CLbsAdmin::EGpsPreferTerminalBased. This specifies that a GPS position fix is required from the Integration Module (the module should use TB if possible, but fallback to autonomous mode if no assistance data is available).

          To set terminal assisted mode, LBS calls SetGpsMode() with the parameter value CLbsAdmin::EGpsPreferTerminalAssisted or CLbsAdmin::EGpsAlwaysTerminalAssisted. This specifies that GPS measurements are required from the module. The two parameter values have the following meanings:

          • EGpsPreferTerminalAssisted means that a module should use TA if possible but fallback to autonomous mode if this is not possible (for example a network error).

          • EGpsAlwaysTerminalAssisted means that a module should always use TA. If TA is not possible (for example because of a network error) then the Integration Module must signal an error by calling MLbsLocationSourceGpsObserver::UpdateLocation() with an error status code (a negative code).

          To set the GPS mode on the Integration Module, LBS calls CLbsLocationSourceGpsBase::SetGpsOptions() passing the TLbsGpsOptions reference as a parameter.

          If LBS attempts to set an Integration Module's GPS mode to one that it does not support then the Integration Module must call MLbsLocationSourceGpsObserver::UpdateLocation() with a status parameter of KErrNotSupported. Note that the Symbian reference A-GPS Integration Module does not support Terminal Assisted mode or TB + TA mode.

          As part of a location request, the network can specify the required GPS modes to LBS (see Network Protocol Module documentation for more information about how a Protocol Module specifies these modes). If the network asks for Terminal Assisted mode, the LBS subsystem uses the value of the administration setting KLbsSettingHomeGpsMode to decide which mode is sent to the Integration Module, either EGpsPreferTerminalAssisted or EGpsAlwaysTerminalAssisted.

          Setting multiple positioning modes (TB + TA)

          The network can specify two positioning modes that LBS should use (see Network Protocol Module for more information about how the modes are specified to LBS).

          If the Integration Module is capable of supporting both TB and TA simultaneously (DevGpsModeCaps = 0100 in module.ini) then LBS specifies both modes to a module as follows:

          LBS creates an object of class TLbsGpsOptionsArray. Each element of the array is a TLbsGpsOptionsItem object which can hold one of two values of type TLbsGpsOptionsItem::TPosUpdateType, set by calling TLbsGpsOptionsItem::SetLocUpdateType():

          • TLbsOptionsItem::EPosUpdateCalculation specifies that a calculated position is required from the Integration Module

          • TLbsOptionsItem:EPosUpdateMeasurement specifies that a set of GPS measurements are required from the Integration Module

          LBS creates an array with two TLbsGpsOptionsItem elements, the first of type TLbsOptionsItem::EPosUpdateCalculation and the second of type TLbsOptionsItem:EPosUpdateMeasurement.

          LBS calls TLbsGpsOptions::SetGpsMode() with a parameter value of EGpsPreferTerminalBased. To set the GPS mode on the Integration Module, LBS calls CLbsLocationSourceGpsBase::SetGpsOptions() passing the TLbsGpsOptions reference as a parameter.

          The type and position of the elements in the array controls the type of data the Integration Module returns when it notifies LBS of a location update.

          LBS sends power advice

          Power advice messages are sent from LBS to notify the Integration Module that it should change its power status. Power advice is sent by LBS calling CLbsLocationSourceGpsBase::AdvisePowerMode(), passing a CLbsLocationSourceGpsBase::TPowerMode value as a parameter. The Integration Module must implement its own code to control the power mode of the GPS hardware. The meanings of the TPowerMode values are as follows:

          TPowerMode Meaning

          EPowerModeOn

          Advise the module to turn on GPS hardware power

          EPowerModeStandby

          Advise the module to set the GPS hardware power to standby

          EPowerModeOff

          Advise the module to turn off GPS hardware power

          EPowerModeClose

          Advise the module that the LBS subsystem is shutting down

          When the GPS hardware changes its power mode the Integration Module must notify LBS of a device status change by calling MLbsLocationSourceGpsObserver::UpdateDeviceStatus(). This message not shown on figure 2.

          LBS requests a location update (for a GPS position fix or GPS measurements)

          LBS calls CLbsLocationSourceGpsBase::RequestLocationUpdate() to request a location update. The method should be implemented to return as soon as possible. At some later time the A-GPS Integration Module informs LBS that a location update is available by calling MLbsLocationSourceGpsObserver::UpdateLocation().

          The full signature of the method is RequestLocationUpdate(const TTime &aTargetTime, const TLbsLocRequestQuality &aQuality).

          aTargetTime specifies when a location update is required. When the GPS module responds by calling MLbsLocationSourceGpsObserver::UpdateLocation() it is aTargetTime that is used to couple a location update request and response within the LBS subsystem. Therefore an Integration Module must use aTargetTime to identify the response to LBS.

          aQuality specifies quality criteria for the request including the required position accuracy and a MaxFixTime which is the maximum time that the Integration Module should spend processing the location request. If the Integration Module is not capable of delivering a position within MaxFixTime then it must return an incomplete update. See the section Module notifies LBS of a location update for more details.

          Module requests assistance data (if necessary)

          Depending on the GPS mode that was set before the location request was made and the age of any assistance data it may already have, an A-GPS Integration Module may request assistance data from the LBS subsystem by calling MLbsLocationSourceGpsObserver::RequestAssistanceData().

          The Integration Module specifies the type of assistance data it requires by creating a TLbsAsistanceDataGroup bitmask which contains bit values from the TLbsAssistanceDataItem enumeration. Each value of TLbsAssistanceDataItem specifies a particular type of assistance data.

          The module passes a bitwise OR of TLbsAssistanceDataItem values as a TLbsAsistanceDataGroup parameter in a call to MLbsLocationSourceGpsObserver::RequestAssistanceData().

          Notes:

          1. Calling RequestAssistanceData() causes LBS to retrieve new assistance data from the network. The LBS subsystem caches assistance data when it is retrieved. Before calling RequestAssistanceData() for new assistance data it is most efficient for an Integration Module to check the timestamp of the assistance data cached by LBS by calling MLbsLocationSourceGpsObserver::GetAssistanceDataItemTimeStamp(). The Integration Module can use the returned timestamp to decide if it the assistance data is still valid, or if it needs to obtain new data by calling RequestAssistanceData().

            A licensee can implement an Integration Module to have its own assistance data cache. An Integration Module can be instructed to reset its assistance data cache. See Resetting A-GPS assistance data for more information.

          2. If a Integration Module does not require assistance data (possibly because the assistance data it currently has is still accurate) then it must respond to RequestLocationUpdate() by calling RequestAssistanceData() with a parameter bitmask=0.

          LBS notifies the A-GPS Integration Module of assistance data availability

          When LBS obtains assistance data from the network it informs the module by calling CLbsLocationSourceGpsBase::AssistanceDataEvent(). As shown in figure 2, this method may be called multiple times as new assistance data arrives from the network. LBS can call this method to deliver assistance data at any time, not just immediately after a module calls RequestAssistanceData().

          The type of assistance data available is indicated by a TLbsAsistanceDataGroup bitmask parameter which contains TLbsAssistanceDataItem values.

          Note: This method is used to notify LBS of a network error during a location request in which case the status parameter is set to a negative error code (a network or network protocol specific error code).

          Module retrieves A-GPS assistance data items

          When it is notified that assistance data is available, the A-GPS Integration Module uses MLbsLocationSourceGpsObserver::GetAssistanceDataItem() to get obtain it.

          Where more than one item of assistance data is available (as indicated by the TLbsAsistanceDataGroup bitmask parameter passed with CLbsLocationSourceGpsBase::AssistanceDataEvent()) it is necessary to call GetAssistanceDataItem() for each item.

          Module notifies LBS of a location update

          When the Integration Module calculates a GPS position fix or has obtained GPS position measurements it calls MLbsLocationSourceGpsObserver::UpdateLocation(). The parameter list of UpdateLocation() is as follows:

          void UpdateLocation(TInt aStatus, const TPositionInfoBase *aPosInfoArray[], TInt aNumItems, const TTime &aTargetTime);

          aPosInfoArray is a return parameter that is a pointer to an array of TPositionInfoBase objects. What an Integration Module returns in this parameter depends on the GPS positioning mode that was set by calling CLbsLocationSourceGpsBase::SetGpsOptions().

          • Autonomous mode and Terminal Based mode

            The Integration Module returns a pointer to a single TPositionSatelliteInfo object. It contains a position fix and GPS satellite details. The position fix may be incomplete if the Integration Module was unable to calculate the position completely before the MaxFixTime (specified as part of the location request) expired. For example, a position may be returned that contains only horizontal but not vertical co-ordinates. Missing co-ordinate values are set to NaN.

            Up until MaxFixTime, an Integration Module calls MLbsLocationSourceGpsObserver::UpdateLocation() whenever it has calculated a more accurate or complete position fix.

          • Terminal Assisted mode

            The Integration Module returns a pointer to a single TPositionGpsMeasurementInfo object. It contains a set of GPS measurements, but not a position fix.

            Up until MaxFixTime, an Integration Module calls MLbsLocationSourceGpsObserver::UpdateLocation() whenever it obtains additional GPS measurements. Measurements are sent to the network where they are used to calculate a position.

          • Terminal Based mode + Terminal Assisted mode (TB + TA)

            The Integration Module returns a pointer to an array of elements derived from class TPositionInfoBase.

            Specifically, the array has elements of the derived classes TPositionSatelliteInfo and TPositionGpsMeasurementInfo. The number and type of elements returned must be as specified by LBS when it set the GPS mode. In practice, this means that the array returned by an Integration Module must have two elements:

            • The first element is of class TPositionSatelliteInfo (and contains a position fix that may be incomplete)

            • The second element is of class TPositionGpsMeasurementInfo and contains GPS measurements.

            As in TA and TB modes, the Integration Module calls MLbsLocationSourceGpsObserver::UpdateLocation() whenever it obtains additional GPS measurements or calculates a more accurate or complete position fix (up until the location request MaxFixTime).

          Error codes

          An Integration Module must return a location update (positions and/or measurements) by the MaxFixTime that was specified by LBS in CLbsLocationSourceGpsBase::RequestLocationUpdate(). If an Integration Module has only incomplete data by MaxFixTime it must return it (aStatus == KErrNone).

          If an Integration Module decides that it will be unable to calculate a position fix with the specified quality criteria, then rather than waiting until MaxFixTime it can return its best available position (which may be incomplete or contain invalid data) with aStatus == KPositionCalculationFutile.

          Cancelling a location update request

          LBS can cancel an outstanding location request by calling CLbsLocationSourceGpsBase::CancelLocationRequest() (not shown on figure 2).

          Resetting A-GPS assistance data

          During testing it is useful to be able to reset some or all of the A-GPS assistance data cached by an Integration Module. One of the main benefits is to allow the Time To First Fix (TTFF) of a module to be tested without the need to restart the LBS subsystem or the mobile device.

          A licensee Network Protocol Module calls MLbsNetworkProtocolObserver::ProcessAssistanceData() to tell the LBS subsystem to reset some or all of its assistance data. The Network Protocol Module passes a parameter value of KPositionAssistanceDataReset to specify that LBS must clear the assistance data in its cache and a TLbsAssistanceDataGroup parameter to specify the bitmask of types of assistance data that must be reset.

          LBS responds by clearing the specified types of assistance data in its own cache. It also calls CLbsLocationSourceGpsBase::AssistanceDataEvent() on the Integration Module with a KPositionAssistanceDataReset parameter to specify an assistance data reset and a TLbsAssistanceDataGroup parameter to specify the bitmask of types of assistance data that must be reset. If the licensee A-GPS Integration Module implements its own assistance data cache it must clear the types of assistance data specified by LBS.

          Figure 3 shows a simple sequence for assistance data reset, followed by the start of an MO-LR.

          Figure 3. Assistance data reset before location request -

          GPS hardware device status changes and quality status changes

          (Not shown on figure 2)

          Device status changes

          When the base GPS hardware changes its power mode the Integration Module must notify LBS by calling MLbsLocationSourceGpsObserver::UpdateDeviceStatus().

          Quality status changes

          If an Integration Module detects that there is a change in the quality of position it is able to provide it must notify LBS by calling MLbsLocationSourceGpsObserver::UpdateDataQualityStatus().

          See here for more information about how client applications can get updates of device status changes and quality status changes.

          Integration module configuration

          In addition to coding the Integration Module, there are configuration steps that a licensee must complete:

          Create a GPS Integration Module .ini file

          The GPS Integration Module .ini file identifies a GPS 'source of location' to LBS. This is the pairing of the GPS/A-GPS Integration Module ECom plug-in with the A-GPS Location Manager process.

          The module .ini file created by a device creator for their own Integration Module must have the same layout as the following example and it must be exported to <rom_drive>:\private\10282253\lbs\locmods\ (10282253 is the UID3 of the LBS Root process).

          +

          GPS hardware device status changes and quality status changes

          (Not shown on figure 2)

          Device status changes

          When the base GPS hardware changes its power mode the Integration Module must notify LBS by calling MLbsLocationSourceGpsObserver::UpdateDeviceStatus().

          Quality status changes

          If an Integration Module detects that there is a change in the quality of position it is able to provide it must notify LBS by calling MLbsLocationSourceGpsObserver::UpdateDataQualityStatus().

          See here for more information about how client applications can get updates of device status changes and quality status changes.

          Integration module configuration

          In addition to coding the Integration Module, there are configuration steps that a licensee must complete:

          Create a GPS Integration Module .ini file

          The GPS Integration Module .ini file identifies a GPS 'source of location' to LBS. This is the pairing of the GPS/A-GPS Integration Module ECom plug-in with the A-GPS Location Manager process.

          The module .ini file created by a device creator for their own Integration Module must have the same layout as the following example and it must be exported to <rom_drive>:\private\10282253\lbs\locmods\ (10282253 is the UID3 of the LBS Root process).

          # example_datasource.ini [1] Version= 0.2.1 # diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5E358AB4-03A7-5859-ABF2-A8B64B74AF56.dita --- a/Symbian3/PDK/Source/GUID-5E358AB4-03A7-5859-ABF2-A8B64B74AF56.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5E358AB4-03A7-5859-ABF2-A8B64B74AF56.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,41 +1,39 @@ - - - - - -Vector -Floating Point Architecture (VFP)Describes the implementation of the ARM Vector Floating Point Architecture -(VFPv2) on Symbian platform. -

          ARM provide a hardware floating point coprocessor that provides floating -point computation that is fully compliant with IEEE Std 754-1985.We refer -to the coprocessor as the VFP unit.

          -

          Symbian platform supports the use of VFPv2 on platforms where the required -hardware is present in both RunFast mode and in IEEE-without-exceptions mode. -See ARM's Vector Floating-point Coprocessor Technical reference Manual for -more details on the coprocessor, its architecture, and its execution modes.

          -

          You should read the information in Floating -point support about applications and user side code as this is also -applicable to code running on the kernel side. However there are a number -of restrictions that must be observed:

          -
            -
          • You cannot use -VFP instructions in any interrupt service routine.

          • -
          • You cannot use -VFP instructions when the kernel is locked, for example, in an IDFC or after -calling NKern::Lock()

          • -
          • You cannot use -VFP instructions in any section of code which runs with a fast mutex held.

          • -
          -

          Using VFP instructions in these situations can lead to data being corrupted, -or the kernel panicking. If you rely on the compiler to generate VFP instructions, -rather than using inline assembler, it is extremely important that you do -not use any floating point values in these situations. The compiler may generate -VFP instructions for the most trivial floating point operations and even for -simple assignments.

          + + + + + +Vector Floating Point Architecture (VFP)Describes the implementation of the ARM Vector Floating +Point Architecture (VFPv2) on Symbian platform. +

          ARM provide a hardware floating point coprocessor that provides +floating point computation that is fully compliant with IEEE Std 754-1985.We +refer to the coprocessor as the VFP unit.

          +

          Symbian platform supports the use of VFPv2 on platforms where the +required hardware is present in both RunFast mode and in IEEE-without-exceptions mode. See ARM's Vector Floating-point +Coprocessor Technical reference Manual for more details on the coprocessor, +its architecture, and its execution modes.

          +

          You should read Floating point support in Symbian^3 Tools Guide +> Building. The guide contains information about applications and +user-side code, which is also applicable to code running +on the kernel side. However there are a number of restrictions that +must be observed:

          +
            +
          • You cannot use VFP instructions in any interrupt service routine.

          • +
          • You cannot use VFP instructions when the kernel is locked, for example, in +an IDFC or after calling NKern::Lock()

          • +
          • You cannot use VFP instructions in any section of code which runs with a fast +mutex held.

          • +
          +

          Using VFP instructions in these situations can lead to data being +corrupted, or the kernel panicking. If you rely on the compiler to +generate VFP instructions, rather than using inline assembler, it +is extremely important that you do not use any floating point values +in these situations. The compiler may generate VFP instructions for +the most trivial floating point operations and even for simple assignments.

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5E380880-9DBB-51D7-8942-829C6FD788C2_d0e482724_href.png Binary file Symbian3/PDK/Source/GUID-5E380880-9DBB-51D7-8942-829C6FD788C2_d0e482724_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5E380880-9DBB-51D7-8942-829C6FD788C2_d0e488553_href.png Binary file Symbian3/PDK/Source/GUID-5E380880-9DBB-51D7-8942-829C6FD788C2_d0e488553_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5E7FB4BD-DF3B-4F97-8394-5E1A6FF8D11B_d0e1532_href.png Binary file Symbian3/PDK/Source/GUID-5E7FB4BD-DF3B-4F97-8394-5E1A6FF8D11B_d0e1532_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5E7FB4BD-DF3B-4F97-8394-5E1A6FF8D11B_d0e1536_href.png Binary file Symbian3/PDK/Source/GUID-5E7FB4BD-DF3B-4F97-8394-5E1A6FF8D11B_d0e1536_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5E861D2B-CEAA-55F4-90D8-206CB8EF835B.dita --- a/Symbian3/PDK/Source/GUID-5E861D2B-CEAA-55F4-90D8-206CB8EF835B.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ - - - - - -UTrace API

          This topic lists the various functionality changes in the UTrace API for UTF 2.0. It covers the following sub-topics:

          • API Changes

          • Trace Calls

          • Exported Traces

          • Trace Points

          • Identifiers

          API Changes

          The following table lists the various changes in the UTrace API for UTF 2.0:

          Item UTF 1.0 UTF 2.0

          Namespace

          Not supported

          UTF

          Class containing trace methods

          TUTrace

          TTraceContext

          8-bit filter and identifier

          TUint8 TPrimaryFilter

          TUint8 TClassification

          32-bit filter and identifier

          TUint32 TSecondaryFilter

          TUint32 TModuleUid

          8-bit identifier

          TUint8 TTraceSchema

          Not supported

          16-bit identifier

          Not supported

          TUint16 TFormatId

          Context ID

          TBool aIncludeContextId

          enum THasThreadIdentification -{ - EAddThreadIdentification = ETrue, - ENoThreadIdentification = EFalse -}; -

          Program Counter

          TBool aIncludePc

          enum THasProgramCounter -{ - EAddProgramCounter = ETrue, - ENoProgramCounter = EFalse -}; -
          Trace Calls

          In UTF 1.0, all trace calls are contained in the TUTrace class and you can instantiate a TUTrace object. The TUTrace object sets some values, which are used when the trace functions are called. Alternatively, you can pass these values as parameters into each trace call.

          In UTF 2.0, all trace calls are defined as global static functions which do not belong to a class. Instead of using values stored in a TUTrace object each trace function takes a TTraceContext as a parameter. The TTraceContext class has constructors that set default values for the following parameters:

          Parameter Default Value

          ModuleUid

          TTraceContext::DefaultModuleUid();

          Normally, it is UID3 of an application.

          Note: To override the default ModuleUid, you can use EXECUTABLE_DEFAULT_MODULEUID, which is defined in e32utrace_basic_types.h.

          Thread Identification

          EAddThreadIdentification

          Note: To override the default setting for adding or not adding the thread identification in a trace packet, you can use EXECUTABLE_DEFAULT_HAS_THREAD_IDENTIFICATION.

          Program Counter

          ENoProgramCounter

          Note: To override the default setting for adding or not adding the program counter in a trace packet, you can use EXECUTABLE_DEFAULT_HAS_PC.

          The following code snippets explain how to override the default values:

          MMP file

          - -#define SYMBIAN_INCLUDE_EXECUTABLE_TRACE -//override the default values -MACRO EXECUTABLE_DEFAULT_MODULEUID=0x00210D3B -MACRO EXECUTABLE_DEFAULT_HAS_THREAD_IDENTIFICATION=ENoThreadIdentification -MACRO EXECUTABLE_DEFAULT_HAS_PC=EAddProgramCounter -#include <e32utrace.mmh> - -

          CPP file

          #include <e32utrace.h> -using namespace UTF; - -void e32main() -{ - - // print the trace using default ModuleUid, ThreadIdentification and ProgramCounter settings - Printf(TTraceContext(EBorder), “File handle is %s.”, iMyData); - - // do a binary trace - FormatId myDataFormat = KInitialClientFormat; //KInitialClientFormat as defined in e32utrace_basic_types.h - Trace(TTraceContext(EBorder), myDataFormat, iMyData, sizeof(iMyData)); // data to be included in the trace output - - // override the default context values - TModuleUid useCaseA = 0x00210D3C; - Trace(TTraceContext(useCaseA, EBorder, ENoThreadIdentification, ENoProgramCounter), myDataFormat, iMyData, sizeof(iMyData)); -}

          Note: In UTF 1.0, you must specify whether to send a trace using only a primary filter or a combination of primary and secondary filters. You must also set up Context ID and Program counter for each trace.

          Exported Traces

          In UTF 1.0, the e32btrace.h header file needs to be included in source for the trace calls.

          In UTF 2.0, trace calls can be exported. To export the trace calls, you must include the e32utrace.h header file in the source and the e32utrace.mmh file in an MMP file. If you want to include trace data in ROM, then use the implemented version of the utraceuser.dll. To disable all traces in the entire ROM, replace the implemented DLL with the stubbed DLL called utraceuserstubbed.dll. This allows you to choose a stubbed version over an implemented version without recompiling all components at ROM build time.

          Trace Points

          In UTF 1.0, the #define SYMBIAN_TRACE_ENABLE must be defined in an MMP file if traces are to be compiled into source code. In UTF 2.0, the following define statement is added instead of #define SYMBIAN_TRACE_ENABLE:

          #define SYMBIAN_INCLUDE_EXECUTABLE_TRACE

          This must be defined in your MMP file to implement the traces in source.

          Identifiers

          In UTF 2.0, the TTraceSchema (8-bit identifier) is removed and TFormatId (16-bit identifier) added in its place. The TFormatId identifier is used in conjunction with the Classification and the ModuleUid. It describes how the trace records are to be parsed on the host side.

          There are two pre-defined FormatIds, KFormatIdPrintf and KFormatIdPrintfUnicode, which differentiate between normal and unicode printf calls. These two pre-defined ids are sent as part of a trace packet generated by a call to any of the printf calls.

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5E8AA6B6-38EB-5347-BA30-F9FF4BF7C107.dita --- a/Symbian3/PDK/Source/GUID-5E8AA6B6-38EB-5347-BA30-F9FF4BF7C107.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5E8AA6B6-38EB-5347-BA30-F9FF4BF7C107.dita Fri Jul 16 17:23:46 2010 +0100 @@ -27,7 +27,7 @@ the SQL database.

          Message Server architecture with the SQL database - + Write operations like updating, creating and deleting entries require disk operation to retrieve TMsvEntry from database, because the entry cache is always in synchronisation with the corresponding diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5E8B08F7-D8C7-5761-BA84-3C4DD49800D2.dita --- a/Symbian3/PDK/Source/GUID-5E8B08F7-D8C7-5761-BA84-3C4DD49800D2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5E8B08F7-D8C7-5761-BA84-3C4DD49800D2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Licensee TSYA Licensee TSY (LTSY) is the platform-dependent part of a TSY. Licensees develop a LTSY to adapt the modem to Symbian platform. The LTSY should implement the functionality provided by the Common TSY (CTSY). This topic describes the Licensee TSY of the telephony server plug-ins.

          CTSY sends the requests to the LTSY, the LTSY responds to the requests with a complete method. LTSY can return a KErrNone or one of the error codes to CTSY in the Complete method.

          The CTSY and the telephony server run in the same thread and it is recommended that a LTSY also runs in this thread. An LTSY should have only one active scheduler and one or more static DLLs

          LTSY Class diagram -
          LTSY tasks

          A LTSY communicates with the baseband using proprietary software. A LTSY is an interface between the baseband and the CTSY. The main tasks of a LTSY are to:

          • translate the baseband specific data to Symbian platform data types

          • convert the Symbian platform request to the baseband request for the telephony client data

          • map the baseband specific error codes to Symbian platform error codes

          • process incoming calls, emergency calls and Class 2 Type 0 SMS even in out of memory situations

          • notify the CTSY of baseband status changes

          • maintain a state machine, if required

          • allocate memory for the baseband messages during initialisation of the LTSY

          • free the allocated memory when the baseband messages are sent back to the CTSY.

          Licensee TSY Tutorial
          \ No newline at end of file +
          LTSY tasks

          A LTSY communicates with the baseband using proprietary software. A LTSY is an interface between the baseband and the CTSY. The main tasks of a LTSY are to:

          • translate the baseband specific data to Symbian platform data types

          • convert the Symbian platform request to the baseband request for the telephony client data

          • map the baseband specific error codes to Symbian platform error codes

          • process incoming calls, emergency calls and Class 2 Type 0 SMS even in out of memory situations

          • notify the CTSY of baseband status changes

          • maintain a state machine, if required

          • allocate memory for the baseband messages during initialisation of the LTSY

          • free the allocated memory when the baseband messages are sent back to the CTSY.

          Licensee TSY Tutorial
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5F38F219-B22D-42E6-973A-B4DBBC5984F8.dita --- a/Symbian3/PDK/Source/GUID-5F38F219-B22D-42E6-973A-B4DBBC5984F8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5F38F219-B22D-42E6-973A-B4DBBC5984F8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -28,7 +28,7 @@ DRM-protected audio content.

          The following figure illustrates the general principle of DRM content authoring.

          -Concept of Digital Rights Management +Concept of Digital Rights Management

          The application itself can be DRM-protected. Use the DRM License Checker API to DRM-protect data files and skins in your application. To install a protected application, you must have a valid license. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5F4510C9-5B16-593A-A225-37606800915B.dita --- a/Symbian3/PDK/Source/GUID-5F4510C9-5B16-593A-A225-37606800915B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5F4510C9-5B16-593A-A225-37606800915B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Controlling Video Playback

          This tutorial describes how to control video playback.

          Purpose

          The purpose of this tutorial is to show you how to use the video player to control video playback.

          Required Background

          The Video Client Overview introduces the video client utilities.

          Introduction

          The video player utility is used to open, play, and obtain information from sampled video data. This functionality is implemented by the CVideoPlayerUtility class. The video data can be supplied either in a file, a descriptor or a URL.

          The sequence diagram below explains the different functionalities of the Video Player Utility:

          Video Player sequence diagram -
          Using Video Player

          The following tasks will be covered in this tutorial:

          • Play Video Clips

          • Get Current Frame

          Playing Video Clips

          The high level steps to play video clips are shown here:

          1. After configuring the properties, the CVideoPlayerUtility::Play() function is called for the video clip to be played.

          2. The play can be paused for a small duration using CVideoPlayerUtility::PauseL() and later resumed by calling CVideoPlayerUtility::Play() function once again.

          3. To halt the video play CVideoPlayerUtility::Stop() is called.

          4. In order to unload all related controllers and return, use CVideoPlayerUtility::Close().

          These high level steps are shown in the following example code:

          void CPlayVideo::Play() //Starts playback of the video clip +
          Using Video Player

          The following tasks will be covered in this tutorial:

          • Play Video Clips

          • Get Current Frame

          Playing Video Clips

          The high level steps to play video clips are shown here:

          1. After configuring the properties, the CVideoPlayerUtility::Play() function is called for the video clip to be played.

          2. The play can be paused for a small duration using CVideoPlayerUtility::PauseL() and later resumed by calling CVideoPlayerUtility::Play() function once again.

          3. To halt the video play CVideoPlayerUtility::Stop() is called.

          4. In order to unload all related controllers and return, use CVideoPlayerUtility::Close().

          These high level steps are shown in the following example code:

          void CPlayVideo::Play() //Starts playback of the video clip { iVideoUtility->Play(); } diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5F72210C-1636-584D-9D89-987D25136975_d0e596477_href.png Binary file Symbian3/PDK/Source/GUID-5F72210C-1636-584D-9D89-987D25136975_d0e596477_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5F72210C-1636-584D-9D89-987D25136975_d0e614422_href.png Binary file Symbian3/PDK/Source/GUID-5F72210C-1636-584D-9D89-987D25136975_d0e614422_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5F72210C-1636-584D-9D89-987D25136975_d0e624371_href.png Binary file Symbian3/PDK/Source/GUID-5F72210C-1636-584D-9D89-987D25136975_d0e624371_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5F747E90-CB8A-5EF7-833F-E63B6A0A4402_d0e231290_href.png Binary file Symbian3/PDK/Source/GUID-5F747E90-CB8A-5EF7-833F-E63B6A0A4402_d0e231290_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5F747E90-CB8A-5EF7-833F-E63B6A0A4402_d0e237285_href.png Binary file Symbian3/PDK/Source/GUID-5F747E90-CB8A-5EF7-833F-E63B6A0A4402_d0e237285_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5F749184-C804-41FC-BA81-038783BDC967.dita --- a/Symbian3/PDK/Source/GUID-5F749184-C804-41FC-BA81-038783BDC967.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5F749184-C804-41FC-BA81-038783BDC967.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,38 +1,37 @@ - - - - - -Resources -

          In Symbian mobile application development, resource files are used for -defining user interface components and visible text. The advantage of using -resource files include:

          -
            -
          • making source code shorter and simpler

          • -
          • saving memory, because text is loaded only when needed

            -
          • -
          • making it easier to implement localization to different language -groups

          • -
          -

          A key example of the use of resource files is found in the implementation -of AVKON components. -AVKON UI components consist of data structures that are defined in the resource files , and then are called from the classes controlling the UI implementation. -When UI component implementation is split into these two approaches, it means -that resources can be recompiled, for example for new languages, without having -to recompile the application code.

          -

          For more information on managing resource files, see:

          -
            -
          • Managing -resource files

            -
          • -
          • Internationalization -and localization

            -
          • -
          + + + + + +Resources +

          In Symbian mobile application development, resource files are +used for defining user interface components and visible text. The +advantage of using resource files include:

          +
            +
          • making source code shorter and simpler

            +
          • +
          • saving memory, because text is loaded only when needed

            +
          • +
          • making it easier to implement localization to different +language groups

          • +
          +

          A key example of the use of resource files is found in the implementation +of AVKON components. AVKON UI components consist of data structures that are defined +in the resource +files , and then are called from the classes controlling the UI implementation. +When UI component implementation is split into these two approaches, +it means that resources can be recompiled, for example for new languages, +without having to recompile the application code.

          +

          For more information on managing resource files, see:

          +
            +
          • Managing resource files

          • +
          • Internationalization +and localization

          • +
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5F7CDE80-ED4E-592E-983D-C6C2E7EEC7E0_d0e230658_href.png Binary file Symbian3/PDK/Source/GUID-5F7CDE80-ED4E-592E-983D-C6C2E7EEC7E0_d0e230658_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5F7CDE80-ED4E-592E-983D-C6C2E7EEC7E0_d0e236653_href.png Binary file Symbian3/PDK/Source/GUID-5F7CDE80-ED4E-592E-983D-C6C2E7EEC7E0_d0e236653_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5F9BEEF7-19BC-550F-BD97-60F70B55E906_d0e277039_href.png Binary file Symbian3/PDK/Source/GUID-5F9BEEF7-19BC-550F-BD97-60F70B55E906_d0e277039_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5F9BEEF7-19BC-550F-BD97-60F70B55E906_d0e283039_href.png Binary file Symbian3/PDK/Source/GUID-5F9BEEF7-19BC-550F-BD97-60F70B55E906_d0e283039_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5FAF3185-66B3-5783-84FB-1947DCCDEE28.dita --- a/Symbian3/PDK/Source/GUID-5FAF3185-66B3-5783-84FB-1947DCCDEE28.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-5FAF3185-66B3-5783-84FB-1947DCCDEE28.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,4 +12,4 @@ Positioning Indicator APIThe Positioning Indicator API defines P&S keys for publishing and subscribing for the current status of positioning hardware in the mobile device. The API is deprecated.

          It was intended for use by UI components (such as the UI status bar) that require updates of that status of positioning hardware. The Integrated GPS Hardware Status API now contains an observer class that allows UI components to receive hardware status updates.

          Contents
          • Purpose

          • API description

          • API summary

          • Using the API

            • Updating the state of a positioning UI indicator

          • Error handling

          • See also

          Purpose

          This document describes the Positioning Indicator API. It defines Publish and Subscribe (P&S) keys for properties for notifying of changes to GPS hardware status.

          The API is deprecated. It was intended for use by UI components. The Integrated GPS Hardware Status API is the recommended way of updating UI components with the GPS hardware status.

          API description

          The API can be used to update UI components when the status of GPS hardware changes.

          API summary

          The API defines no classes. It defines only global constants which are the Positioning UI Indicator P&S category (KPosIndicatorCategory) and key (KPosIntGpsHwStatus) and an enumeration TPosIntGpsHwState that defines the values that the P&S property can take.

          The definitions are in locationfwdomainpsKey.h are summarised in table 1.

          Constant Name Description

          KPosIndicatorCategory

          The UID of Positioning Indicator P&S keys category.

          KPosIntGpsHwStatus

          The ID of the Integrated GPS HW status key. It contain values defined by TPosIntGpsHwIndicatorState.

          The default value (i.e. when this key is not found) is EPosIntGpsHwIndicatorOff.

          If it contains any value other than one defined in TPosIntGpsHwState, the value must be ignored and TPosIndicatorState::EPosIntGpsHwIndicatorOff must be assumed.

          Table 1. Positioning IndicatorP&S category and key definitions.

          Libraries

          The P&S keys of the Positioning Indicator API are defined in locationfwdomainpsKey.h. This API uses the Publish and Subscribe API and there are no additional libraries required by a client.

          Capabilities

          An API client does not require any capabilities to read the property value.

          Using the API

          This API supports only one typical use case:

          Updating the state of a positioning UI indicator

          The API client (a component responsible for updating the status of a UI indicator component) reads the current state of integrated GPS hardware using Publish & Subscribe API (see RProperty for details).

          The client subscribes for changes in KPosIntGpsHwStatus P&S key from KPosIndicatorCategory category. When a state change is reported, a client reads the new value and update UI indicator accordingly.

          The TPosIntGpsHwState enumeration defines the possible values of the KPosIntGpsHwStatus property. If any other value is retrieved it must be ignored and the value TPosIndicatorState::EPosIntGpsHwIndicatorOff assumed. If the key is not found, then EPosIntGpsHwIndicatorOff must be assumed as its value.

          Figure 1 shows how a client reads and updates UI indicator based on the states of Positioning Indicator P&S key.

          Figure 1. Updating the state of Positioning UI Indicator sequence diagram -

          Refer to RProperty class description in the Symbian platform Reference and "Publish and Subscribe" article in Symbian Guide for further details on using P&S keys.

          The following table describes the mapping of KPosIntGpsHwStatus key values and status of the UI indicator that should be set:

          Key value Indicator state Comment

          TPosIndicatorState::EPosIntGpsHwOff

          Hidden

          GPS hardware is OFF and indicator should be hidden.

          TPosIndicatorState::EPosIntGpsHwOn

          Shown

          GPS hardware is ON and indicator should be shown.

          TPosIndicatorState::EPosIntGpsHwIntermediate

          Animated

          GPS hardware in intermediate state. UI indicator is shown in intermediate (possibly animated) state.

          Error handling

          This API does not define or use any error codes.

          Refer to RProperty class description in the Symbian platform Reference for further details on error handling in Publish & Subscribe API.

          See also

          Integrated GPS Hardware Status API

          \ No newline at end of file +

          Refer to RProperty class description in the Symbian platform Reference and "Publish and Subscribe" article in Symbian Guide for further details on using P&S keys.

          The following table describes the mapping of KPosIntGpsHwStatus key values and status of the UI indicator that should be set:

          Key value Indicator state Comment

          TPosIndicatorState::EPosIntGpsHwOff

          Hidden

          GPS hardware is OFF and indicator should be hidden.

          TPosIndicatorState::EPosIntGpsHwOn

          Shown

          GPS hardware is ON and indicator should be shown.

          TPosIndicatorState::EPosIntGpsHwIntermediate

          Animated

          GPS hardware in intermediate state. UI indicator is shown in intermediate (possibly animated) state.

          Error handling

          This API does not define or use any error codes.

          Refer to RProperty class description in the Symbian platform Reference for further details on error handling in Publish & Subscribe API.

          See also

          Integrated GPS Hardware Status API

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5FDAF564-6BE1-544A-B5C0-E0D6E25D82E7_d0e382417_href.png Binary file Symbian3/PDK/Source/GUID-5FDAF564-6BE1-544A-B5C0-E0D6E25D82E7_d0e382417_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5FDAF564-6BE1-544A-B5C0-E0D6E25D82E7_d0e388270_href.png Binary file Symbian3/PDK/Source/GUID-5FDAF564-6BE1-544A-B5C0-E0D6E25D82E7_d0e388270_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5FE10ECA-1FAB-4E4F-A1D9-67D379EE8CB3_d0e498128_href.png Binary file Symbian3/PDK/Source/GUID-5FE10ECA-1FAB-4E4F-A1D9-67D379EE8CB3_d0e498128_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5FE10ECA-1FAB-4E4F-A1D9-67D379EE8CB3_d0e505590_href.png Binary file Symbian3/PDK/Source/GUID-5FE10ECA-1FAB-4E4F-A1D9-67D379EE8CB3_d0e505590_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-5FFBC0B0-FC6E-5D60-868B-064DBEB632E0.dita --- a/Symbian3/PDK/Source/GUID-5FFBC0B0-FC6E-5D60-868B-064DBEB632E0.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,125 +0,0 @@ - - - - - -Resource -builder tool: epocrc -
          Purpose

          epocrc combines the -actions of passing a resource file through the C++ preprocessor, and then -compiling it with rcomp.

          -
          Command line -syntaxepocrc [-Dargs] -[-Iargs] [-u] [-ttmpdir] [-uid2 uid] -[-uid3 uid] source-file [-ooutput-file] -[-hheader-file]

          Arguments

          - - - -

          -D args

          -

          Pass arguments args to the preprocessor's -D -(macro definitions) option.

          -
          - -

          -I args

          -

          Pass arguments args to the preprocessor's -I -(additional include files path) option.

          -
          - -

          -u

          -

          Generate a Unicode resource binary.

          -
          - -

          -t tmpdir

          -

          Create any temporary files in the directory tmpdir.

          If -this option is not specified, the current directory is used.

          -
          - -

          -uid2 uid

          -

          Second UID for the resource file. Specifying either -uid2 or -uid3 -overrides all UIDs specified in the source file.

          -
          - -

          -uid3 uid

          -

          Third UID for the resource file

          -
          - -

          source-file

          -

          Name (and path if the file is not in the current directory) of the -resource file to compile

          -
          - -

          -o output-file

          -

          Create data output file output-file. If a path -is not specified, the current directory is used.

          If this option is -not specified, no data output file is created.

          -
          - -

          -h header-file

          -

          Create header output file header-file. If a path -is not specified, the current directory is used.

          If this option is -not specified, no header output file is created.

          -
          - -

          -v

          -

          Verbose. Displays the command line syntax.

          -
          - - -

          Output files

          - - - -

          output-file

          -

          Compiled resource data referred to by the application at run-time.

          -
          - -

          header-file

          -

          The generated header file defining macro identifiers for referring -to resources by a resource index

          -
          - - -

          epocrc configuration -file format

          Apart from the options listed above, you can use the epocrc.config file -located at epoc32\tools\ to configure the pre-processor -and the rcomp tool. The file is supplied to each Symbian -platform licensee as they need it, but it may not be present on some platforms.

          The epocrc.config file -contains the following options:

            -
          • check_rls_items: -This option can either be set to 0 or 1. If you want to check for the presence -of localisation comment tags before each RLS item declaration, set it to 1, -otherwise set it to 0. If there are no localisation comment tags within the -resource file, it is assumed that localisation is not required for this file.

          • -
          • strict_checking: -This option can either be set to 0 or 1. If you set it to 1, the rcomp tool -warns you if the rpp file contains RLS item declarations -without the localisation comment tags. If you want to enable this functionality, -you must set check_rls_items to 1.

          • -
          • include:: -This option is used to specify files and directories, which need to be passed -to the C++ pre-processor. File names and directory names must be relative -to EPOCROOT.

          • -
          You can comment a line in the epocrc.config file -by preceding it by '#'.

          Here is an example of the epocrc.config file, -which enables the strict_checking and check_rls_items options, -and lists the resource headers to be included using the include: option:

          # epocrc.config -# -# Copyright (c) 2005 Symbian Ltd. All rights reserved. -# -check_rls_items = 1; -strict_checking = 1; -include: epoc32\include\SymbianTags.rh -include: epoc32\include\SymbainContexts.rh -
          -
          Example

          The following example compiles the source -file ex.rss into the compiled resource file ex.rsc and -the header file ex.rsg.

          epocrc -I\symbian\epoc32\include\ --u ex.rss -oex.rsc -hex.rsg

          -
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6006AAB0-B319-546F-8D79-E2D4887A1E72.dita --- a/Symbian3/PDK/Source/GUID-6006AAB0-B319-546F-8D79-E2D4887A1E72.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6006AAB0-B319-546F-8D79-E2D4887A1E72.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,7 +20,7 @@ items; for example, a stack.

          Singly linked list - +

          Singly linked lists involve the creation and use of the classes:

            diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-600DCD27-ADC0-40D7-B061-1D44238363BA_d0e163531_href.png Binary file Symbian3/PDK/Source/GUID-600DCD27-ADC0-40D7-B061-1D44238363BA_d0e163531_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-600DCD27-ADC0-40D7-B061-1D44238363BA_d0e169624_href.png Binary file Symbian3/PDK/Source/GUID-600DCD27-ADC0-40D7-B061-1D44238363BA_d0e169624_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6025A68F-625B-570A-87D7-2C11E66044D4.dita --- a/Symbian3/PDK/Source/GUID-6025A68F-625B-570A-87D7-2C11E66044D4.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ - - - - - -Build -FAQ -

            This page gives some quick answers to problems and issues you may encounter -when building code.

            -

            Why do applications build to the Symbian Emulator's Z: drive?

            -

            The build tools were originally designed for building ROM-based applications, -and so assume that applications should be placed in the emulated ROM area -(i.e. epoc32\release\winscw\udeb\ or urel\). Third party -applications intended to loaded on disk are also built to this location, but -this doesn't mean they can only be installed in ROM or have any other impact -on them. (Note that your code should not assume that it will be installed -on any particular drive, as this is choice is best left to the user).

            -

            Why does abld makefile give a WARNING: Can't find following headers -in System Include Path message, even though I export the header(s) in my bld.inf?

            -

            You can specify that headers from your project should be copied into the -system headers directory, epoc32\include, by using a prj_exports statement -in the bld.inf file. The header is not actually copied -though until an abld export command, or a command -that calls this, such as abld build is executed. -The solution is to call abld export before abld -makefile.

            -

            What Symbian platform tools can I cause to be invoked through a project -file keywords?

            -

            The chief purpose of a project (.mmp) file is to specify -the source files and options to pass to the appropriate compiler toolchain -for the platform. In many cases though, you will want to create a number of -additional, Symbian platform-specific, support files as part of the project -build. You can invoke the tools to create such files by specifying a number -of project file keywords:

            -
              -
            • start -resource to compile resource files

            • -
            • start -bitmap to compile multi-bitmap files.

            • -
            -

            Of the other commonly used Symbian platform tools, the project file does -not specify keywords that invoke the:

            -
              -
            • Installation -File Generator (makesis)

            • -
            • Certification -Generator (makekeys)

            • -
            • Context -Sensitive Help Compiler (cshlpcmp)

            • -
            -

            Note though you can invoke these, and any other tools, through extension -makefiles.

            -

            What are edll.obj and eexe.obj?

            -

            The build process builds into each .exe file a small -object file, eexe.lib, which contains a small amount -of code to manage process startup. Similiarly, each DLL has an object file edll.lib built -into it.

            -

            Why does the build give a message diff: <file-path-and-name>: No -such file or directory?

            -

            This message appears when building a project's resource or multi-bitmap -file for the first time. It can be ignored.

            -

            Why do I get a LNK2001: unresolved external symbol __chkstk error?

            -

            The program exceeds the stack space available, e.g. by creating a large TBuf on -the stack. The solution is to reduce the use of stack space by using the heap -appropriately.

            -

            How can I change the libraries for a project open in an IDE?

            -

            To change a project's libraries, you should edit the .mmp file's library statement -as normal, and then regenerate the IDE workspace using abld -makefile.

            -

            Where are the .lib files for ARM debug builds?

            -

            The .lib files required for ARM debug builds are identical -to those for release builds, so the build tools use a single copy of the libs -in the urel directory.

            -

            Why do I get an error from petran when I build for ARM, when the WINS/WINSCW -build is fine?

            -

            petran is a tool that is invoked only at the final -stage of the build process for ARM targets. It will give an error if you build -a DLL that contains writeable static data. See Static -data for more information.

            -
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6067DF61-D32F-4029-ADCD-9E69CA564212.dita --- a/Symbian3/PDK/Source/GUID-6067DF61-D32F-4029-ADCD-9E69CA564212.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,46 +0,0 @@ - - - - - -Key -presses -

            A key press is a press and release of a key (down and up).

            -

            Typically, the primary action of the key is performed when the key is pressed -down, already before the key is released (there may be exceptions to this -rule; see Typical functions -of the standard keys for an example).

            -

            Some functions depend on the length of the key press:

            -
              -
            • In a short press, the key is held down for less than 0.6 seconds (please -note that this time-out value may depend on the product implementation). If -the key is held down longer, the result is a long key press.

            • -
            • If the pressed key (in the given context) has functions for both a -short and long press, the short key press action is performed first at the -moment when the key is pressed down. If the key press is long, then the long -key press action is performed. In the case of the Home / Menu key and the -Edit key, the interaction is different, causing the action on the key release -event.

            • -
            • Certain keys, possibly in certain contexts only, may perform key repeat. -Key repeat starts after the long key press time-out when the key is continuously -being held down, and the associated function is performed according to the -key repeat frequency. For example, in scrolling within lists and text editors, -these frequencies are by default 6 times/second for vertical and 10 times/second -for horizontal scrolling (the repeat frequency may be product or application -specific).

            • -
            • Long key press actions and key repeat actions are not defined at the -same time; only one can occur in the given context.

            • -
            • The primary key press action should not be conflicting with the long -key press action or key repeat action.

            • -
            - With certain input hardware (for example, Roller), long -key presses and key repeat may not be possible. The long key press actions -and key repeat actions should be designed so that this does not cause harm: -the long key press must never be the only way to perform a function -
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-60890859-C8B7-4677-962A-B5AE73D42F86_d0e105451_href.jpg Binary file Symbian3/PDK/Source/GUID-60890859-C8B7-4677-962A-B5AE73D42F86_d0e105451_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-60890859-C8B7-4677-962A-B5AE73D42F86_d0e107894_href.jpg Binary file Symbian3/PDK/Source/GUID-60890859-C8B7-4677-962A-B5AE73D42F86_d0e107894_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-60949ACD-AAA9-540E-85AE-BB173382D548_d0e375842_href.png Binary file Symbian3/PDK/Source/GUID-60949ACD-AAA9-540E-85AE-BB173382D548_d0e375842_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-60949ACD-AAA9-540E-85AE-BB173382D548_d0e381686_href.png Binary file Symbian3/PDK/Source/GUID-60949ACD-AAA9-540E-85AE-BB173382D548_d0e381686_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-60AB43B9-29B1-5BAC-B70A-617C279321C1_d0e244335_href.png Binary file Symbian3/PDK/Source/GUID-60AB43B9-29B1-5BAC-B70A-617C279321C1_d0e244335_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-60AB43B9-29B1-5BAC-B70A-617C279321C1_d0e250346_href.png Binary file Symbian3/PDK/Source/GUID-60AB43B9-29B1-5BAC-B70A-617C279321C1_d0e250346_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-60B4CDBE-B863-52EA-9125-632A1FF1A059_d0e640645_href.png Binary file Symbian3/PDK/Source/GUID-60B4CDBE-B863-52EA-9125-632A1FF1A059_d0e640645_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-60B4CDBE-B863-52EA-9125-632A1FF1A059_d0e653467_href.png Binary file Symbian3/PDK/Source/GUID-60B4CDBE-B863-52EA-9125-632A1FF1A059_d0e653467_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-60B9404B-5102-4FBB-A32F-55F2ACFD1481.dita --- a/Symbian3/PDK/Source/GUID-60B9404B-5102-4FBB-A32F-55F2ACFD1481.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-60B9404B-5102-4FBB-A32F-55F2ACFD1481.dita Fri Jul 16 17:23:46 2010 +0100 @@ -27,7 +27,7 @@ uses these plug-ins to perform various roles such as encoding, decoding and media processing.

            GStreamer plug-ins - +

          Description

          Some GStreamer concepts are as follows:

            @@ -69,7 +69,7 @@
          • Video editing

      For example the diagram below shows how a Media Player uses GStreamer:

      Media playback using GStreamer - +

      Sound device is a framework to perform hardware accelerated audio functionality. Audio Policy manages the requests to access the audio hardware. Digital Signal Processing converts diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-60B98AFE-6DE6-5086-B70C-F377562E60D9.dita --- a/Symbian3/PDK/Source/GUID-60B98AFE-6DE6-5086-B70C-F377562E60D9.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,23 +0,0 @@ - - - - - -Extension makefile targets

      Extension makefiles can be used where certain build steps are required that are not catered for by the generated makefiles. Extension makefiles are makefiles to be run by make.exe (the GCC make utility) or nmake.exe (the Microsoft make utility). They must contain certain make targets. During build activities, abld will call the target corresponding to the build activity that is being carried out. This will then execute whatever commands your makefile specifies for that target.

      The following table lists the required make targets:

      Target

      Corresponding abld command

      makmake

      makefile

      freeze

      freeze

      lib

      library

      cleanlib

      tidy

      clean

      clean

      final

      final. This target is provided specifically to allow extension makefiles to execute final commands.

      resource

      resource

      bld

      target

      savespace

      target -savespace

      releasables

      target [-what | -check]

      All targets must be provided in an extension makefile. This should be done even if no commands are listed with a particular target, for the following two reasons:

      • The target will be called, during the build, whether commands are listed or not

      • nmake.exe /make.exe will generate an error if the target cannot be found.

      Simple example

      An example of a simple extension makefile is given below:

      MAKMAKE : - echo this is an example - -FINAL FREEZE LIB CLEANLIB RESOURCE RELEASABLES CLEAN BLD SAVESPACE :

      This prints this is an example to the console at the makefile construction stage of an abld, and does nothing for the other targets.

      Note that:

      • You can put multiple targets on the same line, as above.

      • You must have a space or a tab at the start of lines containing target commands.

      • Commands listed with each target can be calls to any tools or system commands that are available at build-time.

      Platform-specific commands example

      If different commands are required for the same target for different platforms, special nmake.exe /make.exe syntax can be used in conjunction with the $(PLATFORM) and $(CFG) macros that abld defines to carry out the different commands.

      $(CFG) is defined as UDEB or UREL. $(PLATFORM) is WINS, ARMI, etc.

      For example, the following nmake makefile prints ARMI MAKEMAKE COMMAND at the makefile stage for the ARMI target, or NOT ARMI BUILD for any other platform:

      !IF "$(PLATFORM)" == "ARMI" -MAKMAKE: - echo ARMI MAKEMAKE COMMAND -!ELSE -MAKMAKE: - echo NOT ARMI BUILD -!ENDIF - -FINAL FREEZE LIB CLEANLIB RESOURCE RELEASABLES CLEAN BLD SAVESPACE :
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-60DBA025-8FA0-5DF2-90D0-744A016998EE.dita --- a/Symbian3/PDK/Source/GUID-60DBA025-8FA0-5DF2-90D0-744A016998EE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-60DBA025-8FA0-5DF2-90D0-744A016998EE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,7 +12,7 @@ Panoramic Stitching Guide

      This document introduces you to the panoramic stitching functionality.

      -
      Purpose

      Panoramic +

      Purpose

      Panoramic stitching involves combining a collection of images into a single image.

      Panoramic stitching overview

      The panorama image is created by stitching a collection of several separate image into one large @@ -183,7 +183,7 @@ to capture many images to be stitched into a single panorama image, repeat the steps 5, 6 and 7.

    - +

    Panorama stitching

    The CVFTracker helps to decide when to capture each of the full resolution images using the camera. The images @@ -198,7 +198,7 @@ been captured you can render the stitched image to file, image buffer, CFbsBitmap or image frame using CImagePanorama::RenderL().

    - +

    User Interface

    Provide a good user interface (UI) application for the CImagePanorama is crucial. An example of UI design is described below, which gives you a robust and easy application for generating @@ -212,18 +212,18 @@ direction from left-to-right. The rotation is made around the imagined axis through mobile (axis of rotation in the image). A panorama image covers approximately a 100 degree field of view.

    - +
  • Application Start

    When you launch the application the UI appears as shown in the below diagram.

    - +

    Here the screen area shows the viewfinder image. When you sweep the mobile, several images are captured and then the images are stitched to create a panorama image.

  • Capture a panorama image during tracking

    When you choose to capture a panorama image the UI changes, which is shown in the below diagram.

    - +

    In the above diagram you see three different boxes named 1, 2 and 3 which represent the position of the camera. The blue box representation changes according to the rotation of the mobile phone.

    The boxes shown @@ -307,12 +307,12 @@ They are as follows:

    • The total panorama coverage area is divided into four different image areas:

      - +
    • When you choose to capture a panorama image the following steps are performed. The first image is captured at position 0. The UI looks as follows:

      - +
    • When you rotate the mobile phone clockwise, the blue box moves to the right using the translation @@ -323,18 +323,18 @@ stops. You then known that the next image is captured. At this moment the camera must be steady.

      After second image is captured the blue box is moving again and vibrator is set-on. The UI looks as follows:

      - +

      Again, you rotate the mobile clockwise until the two boxes coincide and vibrator stops; third image then captured. After this, the UI looks as follows:

      - +

      You rotate the mobile phone until the boxes coincide and the fourth (last) image is captured.

      Note: If the mobile phone rotation deviates from chosen (clockwise) direction or translates up and down, the blue box indicates this, and you must correct the mobile phone for the wrong movement.

      At this point the stitched image can be saved or you can reset the camera, to create another panorama image:

      - +
  • Camera diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-60EE22AA-402D-4FC2-9AD1-B3AEF822E8DC.dita --- a/Symbian3/PDK/Source/GUID-60EE22AA-402D-4FC2-9AD1-B3AEF822E8DC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-60EE22AA-402D-4FC2-9AD1-B3AEF822E8DC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,8 +16,8 @@

    Before listening for channel data, you must open the sensor channel.

    - -Create channel condition + +Create channel condition items using CSensrvChannelCondition constructor. These conditions can be used to filter the sensor data feeds. //Comparison values needed for condition diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-61056CE2-97BF-5D32-8AC5-E625FBC7D0EC.dita --- a/Symbian3/PDK/Source/GUID-61056CE2-97BF-5D32-8AC5-E625FBC7D0EC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-61056CE2-97BF-5D32-8AC5-E625FBC7D0EC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -26,7 +26,7 @@ of the TXmlEngElement class for a comprehensive list.

    Creating a DOM tree - + diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-61459132-3AC2-55D3-AC28-D6FA689409E6.dita --- a/Symbian3/PDK/Source/GUID-61459132-3AC2-55D3-AC28-D6FA689409E6.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -How to invoke a static analysis tool using abld
    Description

    A static analysis tool can be integrated with the Symbian platform build system by using a command line argument to abld. This feature is new in v9.5.

    To invoke a static analysis tool, the –wrap option must be passed to abld. For example:

    abld build armv5 urel –wrap

    The name of the static analysis tool executable is set using the environment variable ABLD_COMPWRAP.

    If ABLD_COMPWRAP has not been set, then using the –wrap option causes abld to report an error and terminate. The exception to this is if the –keepgoing option has additionally been used, for instance:

    abld build armv5 urel –wrap -keepgoing

    In this case abld reports a warning and ignores the –wrap option.

    Log file output folders

    When invoking abld for multiple platforms and/or build variants (debug and release), the analysis tool may generate multiple log files. In order to avoid log files overwriting each other, they need to be generated in different locations. To do this, pass a target folder as an argument to the static analysis tool that includes the environment variable OUTPUT_NAME. abld will replace OUTPUT_NAME with a platform and build-specific folder name. For example, (the following command line assumes that the target folder is passed to the analysis tool using an argument called emitpath):

    set ABLD_COMPWRAP=tool.exe –emitpath c:\analysis\report\$(OUTPUT_NAME)

    abld build armv5 –wrap

    In this example, the log files for the release build are generated in c:\analysis\report\armv5_urel\ and for the debug build in c:\analysis\report\armv5_udeb\.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6146A5BB-1AC1-48D4-9EB8-7FA4EC35BFF2.dita --- a/Symbian3/PDK/Source/GUID-6146A5BB-1AC1-48D4-9EB8-7FA4EC35BFF2.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,165 +0,0 @@ - - - - - -Typical -full QWERTY keyboard functions -

    The default short key press events of a QWERTY keyboard are listed in the -following table:

    -Default short -key press event on full QWERTY keyboard - - - -Key -Action - - - - -

    Character keys

    -

    Adds a character.

    -
    - -

    Backspace

    -

    Moves the cursor one step back, clearing any character or selected -text in that position.

    -
    - -

    Enter

    -

    Adds a carriage return where possible (a new line). Elsewhere the -default behavior is similar with the Selection key.

    -
    - -

    Space

    -

    Adds a space.

    -
    - -

    Chr

    -

    Opens the special characters table.

    -
    - -

    Shift

    -

    Activates the Shift character mode for the character that is pressed -after Shift. For example, consecutive presses of Shift and the character -a' produce a capital A' character.

    -
    - -

    Scroll keys

    -

    Moves the cursor or focus to the pressed direction.

    -
    - -

    Fn key (optional key)

    -

    Activates Fn-mode character input for the next following key press.Two -presses activate Fn mode (locked) until single press deactivates the mode.

    -
    - - -
    -

    The default long key press events of a full QWERTY keyboard are listed -in the following table:

    -Default long -key press events on full QWERTY keyboard - - - -Key -Action - - - - -

    Character keys

    -

    Adds a character with key repeat.

    -
    - -

    Backspace

    -

    Moves the cursor back, clearing the previous character with key -repeat.

    -
    - -

    Enter

    -

    Adds a carriage return where possible (a new line) with key repeat.

    -
    - -

    Space

    -

    Adds a space with key repeat.

    -
    - -

    Chr

    -

    Accented characters can be entered by holding down the Chr key and -pressing a character key consecutively.

    -
    - -

    Scroll keys

    -

    Moves the cursor or focus to the pressed direction with key repeat.

    -
    - - -
    -

    The key combinations for full QWERTY keyboard are listed in the following -table:

    -Key combinations -on full QWERTY keyboard - - - -Key -Action - - - - -

    Shift + a character key

    -

    Enters the Shift character of that particular character key. Can -be used either as two consecutive short presses or simultaneous presses.

    -
    - -

    Shift + scroll keys

    -

    Selects text from the present cursor position to the direction of -the selected scroll key. Simultaneous pressing is required.

    -
    - -

    Chr + a character key

    -

    Accented characters can be entered by holding down the Chr key and -then pressing a character key repeatedly.

    -
    - -

    "Dead" keys

    -

    Some keys in certain localized keyboards that produce a visible -outcome in editing only after another key is pressed right afterwards. For -example, accents over characters.

    -
    - -

    Ctrl + x'

    -

    Cuts the text in editors (for example, text that was -selected with Shift + a scroll key).

    -
    - -

    Ctrl + c'

    -

    Copies the text in editors (for example, text that was selected -with Shift + a scroll key).

    -
    - -

    Ctrl + v'

    -

    Pastes text in editors (for example, text that was selected with -Shift + a scroll key).

    -
    - -

    Fn + a character key

    -

    Activates Fn-mode for that key press.

    -
    - -

    Fn + space

    -

    Opens editing menu.

    -
    - - -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6163197B-7983-5FB7-9B92-02E490A900FB.dita --- a/Symbian3/PDK/Source/GUID-6163197B-7983-5FB7-9B92-02E490A900FB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6163197B-7983-5FB7-9B92-02E490A900FB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -40,6 +40,6 @@ from the start of CMyClass.

    -<image href="GUID-29E7942D-A00D-5771-9782-59260965C687_d0e315631_href.png" placement="inline"/> +<image href="GUID-29E7942D-A00D-5771-9782-59260965C687_d0e321621_href.png" placement="inline"/> </fig> </conbody></concept> \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-617A7B7E-DF91-5757-B473-D2E0B665F5E4.dita --- a/Symbian3/PDK/Source/GUID-617A7B7E-DF91-5757-B473-D2E0B665F5E4.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -<?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-617A7B7E-DF91-5757-B473-D2E0B665F5E4" xml:lang="en"><title>Application resource tools guide \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-619A607D-CA89-5A98-887D-5B1D2A5F921C.dita --- a/Symbian3/PDK/Source/GUID-619A607D-CA89-5A98-887D-5B1D2A5F921C.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -mmp file statements

    always_build_as_arm

    override the build target to build for ARM

    armfpu

    how the compiler is to deal with floating point instructions

    baseaddress

    address to which a DLL will be built and, if possible, loaded

    bytepaircompresstarget

    specifies that the target executable should be compressed using the bytepair algorithm

    capability

    platform security capability

    compresstarget

    specifies that the target executable should be compressed using the Deflate, Huffman+LZ77 algorithm

    debuglibrary

    libraries that are only required in debug builds

    deffile

    override the default linker definition file

    document

    document (non-code) files

    epocheapsize

    minimum and maximum heap sizes for your executable

    epocprocesspriority

    process priority for your .exe executable

    epocstacksize

    stack size for your executable

    exportlibrary

    specify name of .lib file

    exportunfrozen

    create library file without requiring frozen exports

    inflatecompresstarget

    specifies that the target executable should be compressed using the Deflate, Huffman+LZ77 algorithm

    lang

    languages code for the project

    library

    import libraries

    linkas

    give a DLL a different internal name than its filename

    macro

    #defines for the preprocessing of source code

    nocompresstarget

    states that the target executable should not be compressed

    noexportlibrary

    stops the generation of a component's .lib file.

    nostrictdef

    do not apply a u suffix to frozen .def files

    option

    specify additional compiler options

    resource

    resource file for application projects

    secureid

    secure identifier of the executable

    source

    source files

    sourcepath

    location of the project and its workfiles

    srcdbg

    disables the use of optimisation in debug builds

    start bitmap

    bitmaps to build into an .mbm file

    start <platform>...end

    platform-specific section

    start resource

    resource file to build

    start stringtable

    specifies the source file for the string table

    staticlibrary

    static libraries

    strictdepend

    project's dependencies may differ with the variant,

    systeminclude

    system header files directories

    systemresource

    resource file for system projects; from v9.0, use start resource

    target

    file generated by the project

    targetpath

    where the project should be released

    targettype

    kind of project

    uid

    UIDs for a project

    userinclude

    project's header files directories

    vendorid

    vendor identifier

    version

    set the version

    wcharentrypoint

    set the entry point for a standard EXE

    win32_library

    Win32 system libraries to link to in a WINS/WINSCW build

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-61BB12AA-7467-5633-8E4C-54D82AFF0F5E_d0e228837_href.jpg Binary file Symbian3/PDK/Source/GUID-61BB12AA-7467-5633-8E4C-54D82AFF0F5E_d0e228837_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-61BB12AA-7467-5633-8E4C-54D82AFF0F5E_d0e234835_href.jpg Binary file Symbian3/PDK/Source/GUID-61BB12AA-7467-5633-8E4C-54D82AFF0F5E_d0e234835_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-61C340D0-9058-45C2-9A90-4AB8E0612872_d0e68588_href.png Binary file Symbian3/PDK/Source/GUID-61C340D0-9058-45C2-9A90-4AB8E0612872_d0e68588_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-61C340D0-9058-45C2-9A90-4AB8E0612872_d0e72801_href.png Binary file Symbian3/PDK/Source/GUID-61C340D0-9058-45C2-9A90-4AB8E0612872_d0e72801_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-61E8141F-366E-5476-ABCE-8B57535FF6D1_d0e427341_href.png Binary file Symbian3/PDK/Source/GUID-61E8141F-366E-5476-ABCE-8B57535FF6D1_d0e427341_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-61E8141F-366E-5476-ABCE-8B57535FF6D1_d0e433186_href.png Binary file Symbian3/PDK/Source/GUID-61E8141F-366E-5476-ABCE-8B57535FF6D1_d0e433186_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-622D6337-E60A-5252-8B2B-BA8232927453_d0e389421_href.png Binary file Symbian3/PDK/Source/GUID-622D6337-E60A-5252-8B2B-BA8232927453_d0e389421_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-622D6337-E60A-5252-8B2B-BA8232927453_d0e395274_href.png Binary file Symbian3/PDK/Source/GUID-622D6337-E60A-5252-8B2B-BA8232927453_d0e395274_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6262B90B-3F91-517C-B2FA-749C84CE01DE_d0e137391_href.png Binary file Symbian3/PDK/Source/GUID-6262B90B-3F91-517C-B2FA-749C84CE01DE_d0e137391_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6262B90B-3F91-517C-B2FA-749C84CE01DE_d0e139640_href.png Binary file Symbian3/PDK/Source/GUID-6262B90B-3F91-517C-B2FA-749C84CE01DE_d0e139640_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-62746B54-FFEB-532F-BA00-D6C22F82DBA4-master.png Binary file Symbian3/PDK/Source/GUID-62746B54-FFEB-532F-BA00-D6C22F82DBA4-master.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-62746B54-FFEB-532F-BA00-D6C22F82DBA4_d0e617298_href.png Binary file Symbian3/PDK/Source/GUID-62746B54-FFEB-532F-BA00-D6C22F82DBA4_d0e617298_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-628A90FC-35F9-51D0-853E-9BECB3C91B59_d0e477891_href.png Binary file Symbian3/PDK/Source/GUID-628A90FC-35F9-51D0-853E-9BECB3C91B59_d0e477891_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-628A90FC-35F9-51D0-853E-9BECB3C91B59_d0e483720_href.png Binary file Symbian3/PDK/Source/GUID-628A90FC-35F9-51D0-853E-9BECB3C91B59_d0e483720_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6290D35A-7A41-5B9E-882A-E14F6D165ED7_d0e547006_href.png Binary file Symbian3/PDK/Source/GUID-6290D35A-7A41-5B9E-882A-E14F6D165ED7_d0e547006_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6290D35A-7A41-5B9E-882A-E14F6D165ED7_d0e554462_href.png Binary file Symbian3/PDK/Source/GUID-6290D35A-7A41-5B9E-882A-E14F6D165ED7_d0e554462_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-62950BAA-8DCB-58E2-B511-AF400605DA5C_d0e231101_href.png Binary file Symbian3/PDK/Source/GUID-62950BAA-8DCB-58E2-B511-AF400605DA5C_d0e231101_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-62950BAA-8DCB-58E2-B511-AF400605DA5C_d0e237096_href.png Binary file Symbian3/PDK/Source/GUID-62950BAA-8DCB-58E2-B511-AF400605DA5C_d0e237096_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-629A9EF6-3029-5165-9B8B-471D341D33C5_d0e482483_href.png Binary file Symbian3/PDK/Source/GUID-629A9EF6-3029-5165-9B8B-471D341D33C5_d0e482483_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-629A9EF6-3029-5165-9B8B-471D341D33C5_d0e488312_href.png Binary file Symbian3/PDK/Source/GUID-629A9EF6-3029-5165-9B8B-471D341D33C5_d0e488312_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-629EAA30-ED77-4CA9-91ED-36C818D7B4F4.dita --- a/Symbian3/PDK/Source/GUID-629EAA30-ED77-4CA9-91ED-36C818D7B4F4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-629EAA30-ED77-4CA9-91ED-36C818D7B4F4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -25,7 +25,7 @@ following illustration is an example of multiprocessor architecture with four CPUs connected to a shared memory.

    SMP architecture example - +
    Technologies

    SMP is a microprocessor architecture with two or more processors. The processors diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-62DF565C-8121-429F-99D0-B5FBDE634AA9.dita --- a/Symbian3/PDK/Source/GUID-62DF565C-8121-429F-99D0-B5FBDE634AA9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-62DF565C-8121-429F-99D0-B5FBDE634AA9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,78 +1,78 @@ - - - - - -Using -long-tap events -

    Long-tap events allow you to specify functions performed when the user -taps and holds the button for a specified period of time. An example of a -long-tap function is fast forwarding in a media player application by tapping -and holding down a button.

    -

    To receive long-tap events, use the class CAknLongTapDetector in the Touch -UI utilities API.

    -

    To enable the handling of long tap events in your CAknButton , -set the flag KAknButtonReportOnLongPress for the button. -When the long tap event starts,CAknButton::ELongPressEvent() is -reported to the button observer (MCoeControlObserver). When -the long tap event ends, CAknButton::ELongPressEndedEvent() is -reported.

    -

    To define the period for which the button needs to be held down for a long-tap -event, use the method SetLongPressInterval() in the class CAknButton.

    -void CMyAppContainer::ConstructL() -{ -… -iButton = CAknButton::NewL( NULL, NULL, NULL, NULL, - -KNullDesC, KNullDesC , KAknButtonReportOnLongPress, 0 ); - -iButton->SetContainerWindowL( *this ); -iButton->SetObserver( this ); -… -} - -void CMyAppContainer::HandleControlEventL( CCoeControl* aControl, - TCoeEvent aEventType ) - { - switch ( aEventType ) - { - -// Button is pressed for a long time - - case CAknButton::ELongPressEvent: - if ( aControl == iButton ) - -{ - - … - -} - - break; - -// Button long press ended - - case CAknButton::ELongPressEndedEvent: - if ( aControl == iButton ) - -{ - - … - -} - - break; - - default: - break; - } - } - - + + + + + +Using +long-tap events +

    Long-tap events allow you to specify functions performed when the user +taps and holds the button for a specified period of time. An example of a +long-tap function is fast forwarding in a media player application by tapping +and holding down a button.

    +

    To receive long-tap events, use the class CAknLongTapDetector in the Touch +UI utilities API.

    +

    To enable the handling of long tap events in your CAknButton , +set the flag KAknButtonReportOnLongPress for the button. +When the long tap event starts, CAknButton::ELongPressEvent is +reported to the button observer (MCoeControlObserver). When +the long tap event ends, CAknButton::ELongPressEndedEvent is +reported.

    +

    To define the period for which the button needs to be held down for a long-tap +event, use the method SetLongPressInterval() in the class CAknButton.

    +void CMyAppContainer::ConstructL() +{ +… +iButton = CAknButton::NewL( NULL, NULL, NULL, NULL, + +KNullDesC, KNullDesC , KAknButtonReportOnLongPress, 0 ); + +iButton->SetContainerWindowL( *this ); +iButton->SetObserver( this ); +… +} + +void CMyAppContainer::HandleControlEventL( CCoeControl* aControl, + TCoeEvent aEventType ) + { + switch ( aEventType ) + { + +// Button is pressed for a long time + + case CAknButton::ELongPressEvent: + if ( aControl == iButton ) + +{ + + … + +} + + break; + +// Button long press ended + + case CAknButton::ELongPressEndedEvent: + if ( aControl == iButton ) + +{ + + … + +} + + break; + + default: + break; + } + } + +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-631E27DB-97A7-47E2-8FC1-856198435FFF_d0e2988_href.png Binary file Symbian3/PDK/Source/GUID-631E27DB-97A7-47E2-8FC1-856198435FFF_d0e2988_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-631E27DB-97A7-47E2-8FC1-856198435FFF_d0e2998_href.png Binary file Symbian3/PDK/Source/GUID-631E27DB-97A7-47E2-8FC1-856198435FFF_d0e2998_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-63802305-E3D1-53F9-BDE2-764D90C2C833_d0e590856_href.png Binary file Symbian3/PDK/Source/GUID-63802305-E3D1-53F9-BDE2-764D90C2C833_d0e590856_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-63802305-E3D1-53F9-BDE2-764D90C2C833_d0e618750_href.png Binary file Symbian3/PDK/Source/GUID-63802305-E3D1-53F9-BDE2-764D90C2C833_d0e618750_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-63AD2899-FDDC-4E3F-8876-C72EC7C194CE_d0e13907_href.png Binary file Symbian3/PDK/Source/GUID-63AD2899-FDDC-4E3F-8876-C72EC7C194CE_d0e13907_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-63AD2899-FDDC-4E3F-8876-C72EC7C194CE_d0e14007_href.png Binary file Symbian3/PDK/Source/GUID-63AD2899-FDDC-4E3F-8876-C72EC7C194CE_d0e14007_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-63BA04BD-2242-4365-95A1-717569207E92_d0e514481_href.png Binary file Symbian3/PDK/Source/GUID-63BA04BD-2242-4365-95A1-717569207E92_d0e514481_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-63BA04BD-2242-4365-95A1-717569207E92_d0e521935_href.png Binary file Symbian3/PDK/Source/GUID-63BA04BD-2242-4365-95A1-717569207E92_d0e521935_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-63BB9C30-9103-5900-9FD7-5B45FD78A5D7_d0e73074_href.png Binary file Symbian3/PDK/Source/GUID-63BB9C30-9103-5900-9FD7-5B45FD78A5D7_d0e73074_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-63BB9C30-9103-5900-9FD7-5B45FD78A5D7_d0e77287_href.png Binary file Symbian3/PDK/Source/GUID-63BB9C30-9103-5900-9FD7-5B45FD78A5D7_d0e77287_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-63C60154-2A50-5A39-A188-515A607F498B.dita --- a/Symbian3/PDK/Source/GUID-63C60154-2A50-5A39-A188-515A607F498B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-63C60154-2A50-5A39-A188-515A607F498B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -24,7 +24,7 @@

    The following diagram illustrates how elements are organised within the array buffer:

    - +

    This kind of array is suitable for a small number of elements or for a moderately large but fixed maximum number of elements. It is not suitable diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-63CB6C7E-44EC-5D0B-A37D-FE78F7D76592.dita --- a/Symbian3/PDK/Source/GUID-63CB6C7E-44EC-5D0B-A37D-FE78F7D76592.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-63CB6C7E-44EC-5D0B-A37D-FE78F7D76592.dita Fri Jul 16 17:23:46 2010 +0100 @@ -22,7 +22,7 @@ to normal application development.

    The Graphics Composition collection - + diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6408C26A-2736-59A9-B785-6B119143619B.dita --- a/Symbian3/PDK/Source/GUID-6408C26A-2736-59A9-B785-6B119143619B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6408C26A-2736-59A9-B785-6B119143619B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -33,7 +33,7 @@ this handle-number. The following diagram helps visualise the situation.

    Thread-death notifier - +

    The following code fragments demonstrate this:

    { diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-643AFF2D-3EDB-5FAB-9631-7B93FABC56B6_d0e227801_href.png Binary file Symbian3/PDK/Source/GUID-643AFF2D-3EDB-5FAB-9631-7B93FABC56B6_d0e227801_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-643AFF2D-3EDB-5FAB-9631-7B93FABC56B6_d0e233800_href.png Binary file Symbian3/PDK/Source/GUID-643AFF2D-3EDB-5FAB-9631-7B93FABC56B6_d0e233800_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-644810EC-7D5E-4569-834B-C207447B88A3.dita --- a/Symbian3/PDK/Source/GUID-644810EC-7D5E-4569-834B-C207447B88A3.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ - - - - - -Multitasking -

    The Symbian UI style allows multitasking; that is, working with more than -one application simultaneously. Mobile device users can leave an application -running when they start another application, swap between running applications, -and interact with them.

    -

    To open a new application without closing the one that is presently being -used, users can press the Home / Menu key to go to the Menu and -select application suites and applications.

    -

    The first application process remains running in the background while the -user interacts with the second application.

    -

    The number of simultaneously running (different) applications is limited -only by the available memory in the device. When a new application process -cannot be created because of limited memory, the system can automatically -shut down applications to increase the amount of free memory.

    -

    To swap active applications, users can:

    -
      -
    • Long-press the Home / Menu key to open the task swapping window.

    • -
    • Alternatively, select Options > Show -open applications to open the task swapping window.

    • -
    - -Visualized multitasking: task swapping window - - -

    The task swapping window displays the applications that are currently running -in the order of their most recent use. By default, the focus is on the first -item in the grid. The task swapping window is a pop-up with a heading (Open -applications). The names of the open applications are displayed -in an Information pop-up. The Information pop-up is launched with a 0.5 second -delay after the focus is moved onto each item, and it remains visible for -1.5 seconds (or until the focus is moved to another item). Menu and home screen -are always visible in the task swapping window. The configuration and visual -appearance of the task swapping window might depend on the product.

    -

    Users can use the task swapping window to close active applications. In -devices with a keypad, users move the focus onto the application to be closed, -and press the Clear (delete) key. In touch devices, -users tap and hold the item to open a pop-up menu where they can select the Exit option.

    -

    For implementation information on -using the application -and UI frameworks, see Window -server events.

    -
    - -Application -framework concepts -Framework -requirements for GUI applications - -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-646C2A7A-B90C-5E82-B44F-EA24DDBB1EC5_d0e141947_href.png Binary file Symbian3/PDK/Source/GUID-646C2A7A-B90C-5E82-B44F-EA24DDBB1EC5_d0e141947_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-646C2A7A-B90C-5E82-B44F-EA24DDBB1EC5_d0e144196_href.png Binary file Symbian3/PDK/Source/GUID-646C2A7A-B90C-5E82-B44F-EA24DDBB1EC5_d0e144196_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-647ADEDA-AB5A-548F-93C3-D099EAE6A030_d0e405594_href.png Binary file Symbian3/PDK/Source/GUID-647ADEDA-AB5A-548F-93C3-D099EAE6A030_d0e405594_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-647ADEDA-AB5A-548F-93C3-D099EAE6A030_d0e411447_href.png Binary file Symbian3/PDK/Source/GUID-647ADEDA-AB5A-548F-93C3-D099EAE6A030_d0e411447_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6482956D-C3A3-5B68-A37F-4250C85B0D82.dita --- a/Symbian3/PDK/Source/GUID-6482956D-C3A3-5B68-A37F-4250C85B0D82.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ - - - - - -Polymorphic -interface DLLs -

    A polymorphic DLL contains an interface defined by a gate function and -an abstract class with at least one virtual function.

    -

    The polymorphic DLL exports the gate function at ordinal 1, which typically -constructs a concrete class derived from the abstract interface. The virtual -function is then called, and the functions of the class are available.

    -

    Examples of polymorphic DLLs in Symbian platform include ECom plug-ins, -device drivers, Front End Processors, and many more.

    -

    Each type of interface should specify its own UID, which is used as uid2 for -the polymorphic DLL.

    -

    The function responsible for loading a polymorphic DLL should check that -its uid2 corresponds with the expected interface type.

    -

    For polymorphic DLLs, the interpretation of uid3 depends -on the interface type. uid3 may not be required by all interfaces.

    -

    The build process for a polymorphic DLL produces an import library, but -it is not used.

    -
    mmp project specification

    The project -file for a polymorphic DLL must specify the correct target type and UIDs:

      -
    • Specify the TARGETTYPE line -as:

      TARGETTYPE dll

      This -implicitly specifies UID1 correctly. Note that some types -of polymorphic DLLs, have particular support by the build tools, and have -their own different target types. See Polymorphic -DLL targettype summary.

    • -
    • Specify the UID for -the DLL in a UID line:

      UID <UID2> <UID3>

      The UID2 value is defined by the interface which is being implemented. -Some types of polymorphic DLL also require a third UID, but, if so, its meaning -is defined by the DLL.

    • -
    -

    An example of a project file (PolymorphicDLL1.mmp) -for a polymorphic DLL is given below.

    TARGET PolymorphicDLL1.dll -TARGETTYPE dll -UID 0x10004262 0x10004264 -SOURCEPATH . -SOURCE PolymorphicDLL1.cpp -USERINCLUDE . -USERINCLUDE ..\UsingDLLs -SYSTEMINCLUDE \Epoc32\include -LIBRARY euser.lib -EXPORTUNFROZEN
    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-648D4AEB-4BCD-552A-BCAF-F049F79F04FC_d0e429269_href.png Binary file Symbian3/PDK/Source/GUID-648D4AEB-4BCD-552A-BCAF-F049F79F04FC_d0e429269_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-648D4AEB-4BCD-552A-BCAF-F049F79F04FC_d0e435114_href.png Binary file Symbian3/PDK/Source/GUID-648D4AEB-4BCD-552A-BCAF-F049F79F04FC_d0e435114_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-64AC6F53-A9A5-46FD-BCC6-4A9BD8D4DB5C.dita --- a/Symbian3/PDK/Source/GUID-64AC6F53-A9A5-46FD-BCC6-4A9BD8D4DB5C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-64AC6F53-A9A5-46FD-BCC6-4A9BD8D4DB5C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -46,8 +46,8 @@
  • Device Orientation, when the keyboard is opened, resulting in the display being set at an angle to the keyboard. For example, N97.

  • - -Create an instance + +Create an instance of CSensorDataCompensator. iCompensator = CSensorDataCompensator::NewL(TSensrvAccelerometerAxisData::KDataTypeId,ESensorCompensateDeviceAndUIOrientation); diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-64BDD1DA-6B93-5F45-8CBD-7DBAF92CC4C7_d0e364179_href.png Binary file Symbian3/PDK/Source/GUID-64BDD1DA-6B93-5F45-8CBD-7DBAF92CC4C7_d0e364179_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-64BDD1DA-6B93-5F45-8CBD-7DBAF92CC4C7_d0e370028_href.png Binary file Symbian3/PDK/Source/GUID-64BDD1DA-6B93-5F45-8CBD-7DBAF92CC4C7_d0e370028_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-64D2B0E2-BB5D-4009-ACE5-7A3503016341.dita --- a/Symbian3/PDK/Source/GUID-64D2B0E2-BB5D-4009-ACE5-7A3503016341.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-64D2B0E2-BB5D-4009-ACE5-7A3503016341.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,7 +12,7 @@ Troubleshooting TipsThis section addresses the basic differences in the way things are done in Symbian Platform and in Linux. -
    Symbian +<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-12-1-14-1-1-5-1-3-1-9-1-3-1"> <title>Symbian directory structure

    In Symbian platform, project source files are arranged based on the directory pattern shown below.

    @@ -36,7 +36,7 @@

    The developer can choose whether to follow these tips.

    -
    EXPORT_C, +<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-12-1-14-1-1-5-1-3-1-9-1-3-2"> <title>EXPORT_C, DEF file and ordinal numbers

    This applies only for the DLL target type. If a DLL wants to export an API, the code definition should start with the macro EXPORT_C.

    // Declaration @@ -94,7 +94,7 @@ return something; }
    -
    <codeph>dlsym()</codeph> or <codeph>g_module_symbol()</codeph> +
    <codeph>dlsym()</codeph> or <codeph>g_module_symbol()</codeph>

    Since DLL entry points are not exported by name, DLL symbol lookup functions do not work on Symbian platform. For more information about alternatives suggested on Symbian platform, see Dynamic @@ -105,7 +105,7 @@ symbol parameter (refer the library's list of exports, the DEF file for the function's ordinal number):

    dlsym(&handle, "foo")

    needs to be changed to:

    dlsym (&handle, "3")
    -
    Problem with +<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-12-1-14-1-1-5-1-3-1-9-1-3-4"><title>Problem with a variable list of arguments in macros

    This section suggests a way to overcome the problems faced when macros with a variable list of arguments are used.

    #define DEBUG(a,...)

    The above statement @@ -114,14 +114,14 @@ static inline void _DEBUG (const char *a, ...) { }

    -
    Keep +<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-12-1-14-1-1-5-1-3-1-9-1-3-5"> <title>Keep changes to OSS to a minimum

    While porting the OSS code, keep the changes to the OSS code as few as possible. The OSS code is already tested and used by a bigger community, and is unlikely to have any compilation errors or major logical errors. In many cases code changes that are necessary brings potential logical flaws to the OSS port. Minimum changes to the OSS code while porting also helps in merging to the new OSS.

    -
    Exporting +<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-12-1-14-1-1-5-1-3-1-9-1-3-6"> <title>Exporting variables from a DLL

    Exporting data from a DLL is not allowed in Symbian platform . The following pattern can be used:

    1. Do not export global @@ -140,13 +140,13 @@ IMPORT_C int* GlbData (); #define globalVal (*GlbData())

    -
    Application +<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-12-1-14-1-1-5-1-3-1-9-1-3-7"> <title>Application is not loaded

    The absence of the dependent libraries could be one of the reasons for the application not to load in the mobile device. On the target device, Symbian platform looks for libraries in c:\sys\bin or in z:\sys\bin.

    Do make sure that all the libraries are present in either of the above-mentioned libraries.

    -
    Capabilities +<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-12-1-14-1-1-5-1-3-1-9-1-3-8"> <title>Capabilities not known

    Capabilities are specified in the MMP file. The primary information source is the P.I.P.S. API reference documentation. If problems with capabilities remain, one known method to find the capability @@ -155,7 +155,7 @@ for release code it is good practice to give a valid capability in the MMP file in order to have the application successfully signed. The following is a sample of a capability error found in the [Debug Messages] window.

    *PlatSec* ERROR - Capability check failed - Process hellogst.exe[10015942]0001 was checked by Thread c32exe.exe[101f7989]0001::ESock_IP and was found to be missing the capabilities: NetworkServices.
    -
    Environment +<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-12-1-14-1-1-5-1-3-1-9-1-3-9"> <title>Environment variables

    At the moment, environment variables are not completely supported in Symbian C++. Therefore be wary of using library functions like getenv() which work on environment variables. Make sure the library initialization routine @@ -166,7 +166,7 @@ { setenv ("JPEGMEM ", "XXXXX", 1); }

    -
    Assembly +<section id="GUID-77D7347D-8DEC-45D0-A677-8FDBDFB8FF81-GENID-1-12-1-14-1-1-5-1-3-1-9-1-3-10"> <title>Assembly code

    The syntax for inline assembly code is different in Symbian platform. The following is a code snippet of assembly code syntax in Symbian platform.

    EXPORT_C __NAKED__ TUint16 TTemplate::Register16(TUint anAddr) @@ -180,7 +180,7 @@ }

    In common practice the assembly code has the extension .CIA in Symbian platform, whereas in Linux the assembly code has the extension .S.

    -
    Glossary +
    Glossary

    The following table lists terms used in Linux and their approximate equivalents in Symbian platform:

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-652DA0DD-AB1D-58A4-A6D2-27B5BAA506FF.dita --- a/Symbian3/PDK/Source/GUID-652DA0DD-AB1D-58A4-A6D2-27B5BAA506FF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-652DA0DD-AB1D-58A4-A6D2-27B5BAA506FF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,7 +21,7 @@ content, first flip the surface and then rotate it by 180°.

    Mirroring - +

    The following example code assumes that the surface already exists. Call TSurfaceConfiguration::SetFlip() to flip the surface, then call TSurfaceConfiguration::SetOrientation() to diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-65365507-5773-4FE9-B63E-450CC2DD7570_d0e68018_href.png Binary file Symbian3/PDK/Source/GUID-65365507-5773-4FE9-B63E-450CC2DD7570_d0e68018_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-65365507-5773-4FE9-B63E-450CC2DD7570_d0e72231_href.png Binary file Symbian3/PDK/Source/GUID-65365507-5773-4FE9-B63E-450CC2DD7570_d0e72231_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-656E2E4F-D7C5-5FDC-B1E6-DFA5970BB3F0_d0e488785_href.jpg Binary file Symbian3/PDK/Source/GUID-656E2E4F-D7C5-5FDC-B1E6-DFA5970BB3F0_d0e488785_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-656E2E4F-D7C5-5FDC-B1E6-DFA5970BB3F0_d0e494606_href.jpg Binary file Symbian3/PDK/Source/GUID-656E2E4F-D7C5-5FDC-B1E6-DFA5970BB3F0_d0e494606_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-65885916-0242-5DDB-9D88-EB214096C4DF_d0e516450_href.png Binary file Symbian3/PDK/Source/GUID-65885916-0242-5DDB-9D88-EB214096C4DF_d0e516450_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-65885916-0242-5DDB-9D88-EB214096C4DF_d0e523910_href.png Binary file Symbian3/PDK/Source/GUID-65885916-0242-5DDB-9D88-EB214096C4DF_d0e523910_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6597A895-37D5-51D1-86B3-E74F6E845899_d0e398103_href.png Binary file Symbian3/PDK/Source/GUID-6597A895-37D5-51D1-86B3-E74F6E845899_d0e398103_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6597A895-37D5-51D1-86B3-E74F6E845899_d0e403956_href.png Binary file Symbian3/PDK/Source/GUID-6597A895-37D5-51D1-86B3-E74F6E845899_d0e403956_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-659E2A30-C2E0-4E5A-AA9F-50EBEC7E9579.dita --- a/Symbian3/PDK/Source/GUID-659E2A30-C2E0-4E5A-AA9F-50EBEC7E9579.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-659E2A30-C2E0-4E5A-AA9F-50EBEC7E9579.dita Fri Jul 16 17:23:46 2010 +0100 @@ -67,7 +67,7 @@

    Panes - +
    Using windows and panes in applications

    Windows and panes diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-65A4BA91-579F-5B9B-ACC1-D3D9B1F233B7_d0e107858_href.png Binary file Symbian3/PDK/Source/GUID-65A4BA91-579F-5B9B-ACC1-D3D9B1F233B7_d0e107858_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-65A4BA91-579F-5B9B-ACC1-D3D9B1F233B7_d0e110301_href.png Binary file Symbian3/PDK/Source/GUID-65A4BA91-579F-5B9B-ACC1-D3D9B1F233B7_d0e110301_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-65C997F4-3899-56B1-85DD-9425E06F128B_d0e232763_href.png Binary file Symbian3/PDK/Source/GUID-65C997F4-3899-56B1-85DD-9425E06F128B_d0e232763_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-65C997F4-3899-56B1-85DD-9425E06F128B_d0e238758_href.png Binary file Symbian3/PDK/Source/GUID-65C997F4-3899-56B1-85DD-9425E06F128B_d0e238758_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-65E9C040-AAB6-5C1E-9724-8828DADFC741.dita --- a/Symbian3/PDK/Source/GUID-65E9C040-AAB6-5C1E-9724-8828DADFC741.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-65E9C040-AAB6-5C1E-9724-8828DADFC741.dita Fri Jul 16 17:23:46 2010 +0100 @@ -75,7 +75,7 @@ Figure 1. RPositionServer and RPositioner with basic position data classes - +

    Platform security capabilities

    Applications must have the Location capability to use the Location Acquisition diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-65F3E8BD-22C9-5CF2-A3CC-270C24ADECC0_d0e388259_href.png Binary file Symbian3/PDK/Source/GUID-65F3E8BD-22C9-5CF2-A3CC-270C24ADECC0_d0e388259_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-65F3E8BD-22C9-5CF2-A3CC-270C24ADECC0_d0e394112_href.png Binary file Symbian3/PDK/Source/GUID-65F3E8BD-22C9-5CF2-A3CC-270C24ADECC0_d0e394112_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-66470976-7B8B-582B-B32B-4010C95052FF.dita --- a/Symbian3/PDK/Source/GUID-66470976-7B8B-582B-B32B-4010C95052FF.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Compressed Unicode resource format

    This page describes the compressed resource file format introduced from Symbian OS v7.0.

    This format compresses, for those cases where actual benefit is yielded by compressing, Unicode text-strings in the resource data by using the Standard Compression Scheme for Unicode, described in http://www.unicode.org/unicode/reports/tr6/tr6-3.2.html.

    Resource files in this format are generated by the resource compiler from Symbian OS v7.0.

    Number of bytes

    Description

    16

    These bytes store the resource file’s UIDs.

    The first twelve bytes consist of three four-byte integers (in little-endian byte order) followed by a four-byte CRC checksum generated from those three integers.

    The first UID is always 0x101f4a6b.

    The second and third UIDs can be specified on rcomp's command-line. By default, the second UID is zero and the third UID is the resource file’s “offset”, i.e. the twenty-bit integer generated from the resource file’s name. These twenty bits are stored in the least significant twenty bits of the third UID; the most significant twelve bits are all zero.

    1

    This byte stores flags. Currently, there is only one flag defined, which is the lowest bit of the byte (0x01). This flag indicates whether the third UID is actually the resource file’s “offset” (see the row above). The bit is set to non-zero if it is, and zero if it is not.

    2

    This two-byte integer (in little-endian byte order) stores the size in bytes of the largest resource in the file (that is, the size when uncompressed).

    number_of_resources/8 (rounded up to the nearest whole number)

    This is a bit-array (one bit for each resource) storing which resources contain compressed Unicode. The least significant bit of the first byte corresponds to the first resource, the next-to-least significant bit of the first byte corresponds to the second resource, etc. A bit being set to non-zero indicates that the corresponding resource contains compressed Unicode, a zero bit indicates that it does not contain compressed Unicode.

    [any]

    This contains the data for all the resources stored in order, one after another with no byte-padding between them. The format of the data for each resource is in one of two possible formats depending on whether the resource contains compressed Unicode. The bit-array described in the row above indicates which resources contain compressed Unicode. Note that resources in either of these two formats may contain uncompressed Unicode: this is because compressing Unicode using the Standard Compression Scheme for Unicode can, in certain conditions, yield larger output than input, hence such Unicode text-strings will not be compressed as it would not be beneficial. Extra padding bytes (arbitrarily 0xab) are inserted in front of any uncompressed Unicode text-string that would otherwise not be aligned on a two-byte boundary relative to the start of that resource’s data, once the resource has been uncompressed.

    Resources not containing compressed Unicode:

    The binary data of these resources is laid out exactly as specified in the resource definition (although note the comment about padding bytes above).

    Resources containing compressed Unicode:

    The binary data of these resources is split up into one or more sequences, or “runs”, alternating between compressed Unicode and other material.

    Each run is preceded by an integer containing the length in bytes of the run (not including the byte(s) it occupies itself). The run-length occupies a single byte if it is less than 128, otherwise it occupies two bytes (in little-endian byte order), with the most significant bit of the first byte set to non-zero to indicate that the run-length occupies two bytes. Only the length of the first run may be zero (which would be the case if the resource does not start with compressed Unicode).

    (number_of_resources+1)*2

    This is the resource index, which is a series of two-byte integers (in little-endian byte order), one for each resource in the resource file, each storing the file-position of that resource’s data (see row immediately above).

    This is followed by a two-byte integer (in little-endian byte order), which is the file-position one byte past the end of the last resource’s data. This is so that working out the length of a resource’s data is trivially done by subtracting the file-position stored in that resource’s index-entry from the file-position in the next index-entry.

    This last entry in the resource index, which stores the file-position one byte past the end of the last resource’s data, can also be thought of as storing the file-position of the start of the resource index.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-66772A42-2326-5250-9411-4C65534FB5D2_d0e473678_href.png Binary file Symbian3/PDK/Source/GUID-66772A42-2326-5250-9411-4C65534FB5D2_d0e473678_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-66772A42-2326-5250-9411-4C65534FB5D2_d0e479514_href.png Binary file Symbian3/PDK/Source/GUID-66772A42-2326-5250-9411-4C65534FB5D2_d0e479514_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-667C0481-2DEF-4618-9AA5-8DF528082061.dita --- a/Symbian3/PDK/Source/GUID-667C0481-2DEF-4618-9AA5-8DF528082061.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-667C0481-2DEF-4618-9AA5-8DF528082061.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,108 +9,115 @@ --> -Accessory -Services OverviewAccessory Services abstract accessory-related services for platform -and SDK clients and provides accessory-related APIs for adaptation (audio -and display) and accessory plug-ins. -
    Purpose

    Accessory Services is a group of components -that support APIs for platform clients to retrieve accessory connection status -information, and device and services type information. It also provides adaptation +Accessory Services OverviewAccessory Services abstract accessory-related services +for platform and SDK clients and provides accessory-related APIs for +adaptation (audio and display) and accessory plug-ins. +

    Purpose

    Accessory Services is a group of components that support APIs +for platform clients to retrieve accessory connection status information, +and device and services type information. It also provides adaptation APIs for the addition of new Accessory Services plug-in components.

    -
    Architecture

    The architecture of Accessory Services -revolves around the Accessory and the Remote Control Framework. Accessory -Framework provides platform clients with access to the accessory functionality -on the device, while abstracting away accessory, hardware, bearer and protocol-specific -details from the software layers. Accessory Framework also provides accessory -policy and adaptation APIs for the addition of new Accessory Framework plug-in -components (if required). The Remote Control Framework provides APIs required -to send and receive remote control commands to/from an accessory connected -to a phone.

    The core of the Accessory Framework is the Accessory Server. -Accessory Server has a central role in accessory-related connection/disconnection -handling on the Symbian platform. The Accessory Framework depends on the concepts, -such as Generic ID, Accessory Policy, Accessory Handlers and Accessory Mode. -These concepts are described in the following section.

    Remote Control -Framework exposes the Remote Control Server using the Remote Control Core -APIs. The remote control commands are understood by the Key Event Converter -and passed on to the Target Selector Plug-in (TSP) Controller by the Remote -Control Framework. Then TSP decides which application must handle this request -and passes that information to the Remote Control Server. Finally, the request -is handled by that application. For more information about Remote Control -concepts, see the Remote Control Framework section.

    The following -figure illustrates the architecture of Accessory Services:

    +
    Architecture

    The architecture of Accessory Services revolves around the Accessory +and the Remote Control Framework. Accessory Framework provides platform +clients with access to the accessory functionality on the device, +while abstracting away accessory, hardware, bearer and protocol-specific +details from the software layers. Accessory Framework also provides +accessory policy and adaptation APIs for the addition of new Accessory +Framework plug-in components (if required). The Remote Control Framework +provides APIs required to send and receive remote control commands +to/from an accessory connected to a phone.

    The core of the Accessory +Framework is the Accessory Server. Accessory Server has a central +role in accessory-related connection/disconnection handling on the +Symbian platform. The Accessory Framework depends on the concepts, +such as Generic ID, Accessory Policy, Accessory Handlers and Accessory +Mode. These concepts are described in the following section.

    Remote Control Framework exposes the Remote Control Server using +the Remote Control Core APIs. The remote control commands are understood +by the Key Event Converter and passed on to the Target Selector Plug-in +(TSP) Controller by the Remote Control Framework. Then TSP decides +which application must handle this request and passes that information +to the Remote Control Server. Finally, the request is handled by that +application. For more information about Remote Control concepts, see +the Remote Control Framework section.

    The following figure +illustrates the architecture of Accessory Services:

    Accessory Services Architecture - + +
    -
    Description

    This section describes the key concepts -associated with Accessory Services.

      -
    • Generic ID: Generic ID provides the means to describe, detect, -connect, and control an enhancement without a need to use hardware or provider-specific -definitions. Thus Generic ID must be a native concept for any accessory-related -platform software. For the platform purposes, Generic ID must be defined so -that it covers all the enhancement device types, bearers, protocols, and accessory -feature profiles that the platform supports and for which information is needed.

    • -
    • Accessory Policy: Accessory Policy provides the Generic ID data -type for identifying an accessory on the basis of its features, instead of -an accessory-specific ID. Accessory Server uses Accessory Policy through the -Accessory Policy API to get information about the connected accessories. A -connected accessory is identified using an assigned Generic ID, which is a -data structure that describes the relevant physical and logical features of -the accessory.

    • -
    • Accessory Mode: Accessory Mode describes the accessory connection -status of the devices connected to a phone and indicates whether the audio -is routed into the accessory or not. Accessory Mode typically affects the -vibra state, lights state, texts, some UI icons and menu items.

      Note: Accessory -Mode is a single-valued state, unlike the accessory connection status. Some -supported Accessory Modes include hand portable, wired headset, wireless headset, -wired car kit, wireless car kit, headphones, text device, music stand and +

      Description

      This section describes the key concepts associated with Accessory +Services.

        +
      • Generic ID: Generic ID provides the means to describe, +detect, connect, and control an enhancement without a need to use +hardware or provider-specific definitions. Thus Generic ID must be +a native concept for any accessory-related platform software. For +the platform purposes, Generic ID must be defined so that it covers +all the enhancement device types, bearers, protocols, and accessory +feature profiles that the platform supports and for which information +is needed.

      • +
      • Accessory Policy: Accessory Policy provides the Generic +ID data type for identifying an accessory on the basis of its features, +instead of an accessory-specific ID. Accessory Server uses Accessory +Policy through the Accessory Policy API to get information about the +connected accessories. A connected accessory is identified using an +assigned Generic ID, which is a data structure that describes the +relevant physical and logical features of the accessory.

      • +
      • Accessory Mode: Accessory Mode describes the accessory +connection status of the devices connected to a phone and indicates +whether the audio is routed into the accessory or not. Accessory Mode +typically affects the vibra state, lights state, texts, some UI icons +and menu items.

        Note: Accessory Mode is a single-valued +state, unlike the accessory connection status. Some supported Accessory +Modes include hand portable, wired headset, wireless headset, wired +car kit, wireless car kit, headphones, text device, music stand and TV-out.

      • -
      • Accessory Handlers: Accessory Handlers (ASYs) form the Accessory -Framework adaptation layer. Accessory Server hosts multiple ASYs. For example, -wired ASY, bluetooth ASY, plugged display ASY and so on. ASYs can be understood -as an accessory adaptation layer between the Accessory Framework and any other -Symbian platform or hardware-related software on the phone. Typical -task of an ASY is accessory detection (registering for hardware indications) -and providing the capabilities of the accessories to the Accessory framework.

      • -
      • Controller: Controller is a device that sends a control message -or command to a target device and is ready to capture responses.

      • -
      • Target: Target is a device that accepts the control message -or command from the controller, invokes necessary procedures and sends out -responses to controller.

      • -
      • Bearer: The bearer is a carrier that acts like a vehicle of -transmission for remote control messages. The bearer here is an ECom plug-in -to the Remote Control Server.

      • +
      • Accessory Handlers: Accessory Handlers (ASYs) form the +Accessory Framework adaptation layer. Accessory Server hosts multiple +ASYs. For example, wired ASY, bluetooth ASY, plugged display ASY and +so on. ASYs can be understood as an accessory adaptation layer between +the Accessory Framework and any other Symbian platform or hardware-related +software on the phone. Typical task of an ASY is accessory detection +(registering for hardware indications) and providing the capabilities +of the accessories to the Accessory framework.

      • +
      • Controller: Controller is a device that sends a control +message or command to a target device and is ready to capture responses.

      • +
      • Target: Target is a device that accepts the control +message or command from the controller, invokes necessary procedures +and sends out responses to controller.

      • +
      • Bearer: The bearer is a carrier that acts like a vehicle +of transmission for remote control messages. The bearer here is an +ECom plug-in to the Remote Control Server.

      -
      Components

      Accessory Services consists of the following -components:

        -
      • Accessory Monitor: Provides APIs to retrieve information about -the connected accessories, such as a headset and car kit.

      • -
      • Accessory Remote Control: Provides APIs for clients to communicate -with remote targets in a terminal and remote targets outside a terminal.

      • -
      • Accessory Server: This is a core component that exposes accessory-related -client and adaptation APIs through the Accessory Framework. The Accessory -Framework provides APIs to query accessory-related information, adjust accessory-related -user settings and to request control for accessory-related functions.

      • -
      • Headset Status API: Provides APIs for checking the headset status. -For example, headset status change notifications.

      • -
      • Target Selector Plug-in (TSP) Client Mapper: Provides APIs to -create mappings between remote control clients.

      • -
      • Plugged Display: Plugged Display component is an ASY that enables -High-Definition Multimedia Interface (HDMI) and TV-out support. For more information -about HDMI, see Wikipedia.

      • -
      • Remote Control Framework: Provides APIs needed to send and receive -remote control commands to/from a Bluetooth enabled device.

      • +
        Components

        Accessory Services consists of the following components:

          +
        • Accessory Monitor: Provides APIs to retrieve information +about the connected accessories, such as a headset and car kit.

        • +
        • Accessory Remote Control: Provides APIs for clients +to communicate with remote targets in a terminal and remote targets +outside a terminal.

        • +
        • Accessory Server: This is a core component that exposes +accessory-related client and adaptation APIs through the Accessory +Framework. The Accessory Framework provides APIs to query accessory-related +information, adjust accessory-related user settings and to request +control for accessory-related functions.

        • +
        • Headset Status API: Provides APIs for checking the headset +status. For example, headset status change notifications.

        • +
        • Target Selector Plug-in (TSP) Client Mapper: Provides +APIs to create mappings between remote control clients.

        • +
        • Plugged Display: Plugged Display component is an ASY +that enables High-Definition Multimedia Interface (HDMI) and TV-out +support. For more information about HDMI, see Wikipedia.

        • +
        • Remote Control Framework: Provides APIs needed to send +and receive remote control commands to/from a Bluetooth enabled device.

        -
        Using Accessory Services

        You can use features provided -by Accessory Services to perform the following tasks:

          -
        • Retrieve accessory mode, connection status, accessory device and service -type information.

        • +
          Using +Accessory Services

          You can use features provided by Accessory +Services to perform the following tasks:

            +
          • Retrieve accessory mode, connection status, accessory device +and service type information.

          • Retrieve accessory control and connection-related functionality.

          • -
          • Request for a protocol-specific connection handle for accessory audio -control.

          • +
          • Request for a protocol-specific connection handle for accessory +audio control.

          • Handle accessory-related key events.

          • Monitor accessories connected to a phone.

          • -
          • Identify accessories connected based on its features, using Generic -IDs.

          • +
          • Identify accessories connected based on its features, using +Generic IDs.

          • Configure accessory-related settings.

          • Retrieve headset connection status.

          • Create mappings between remote control clients.

          • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-669190F8-3BE9-58FC-B689-00F06FDAD74D_d0e596171_href.png Binary file Symbian3/PDK/Source/GUID-669190F8-3BE9-58FC-B689-00F06FDAD74D_d0e596171_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-669190F8-3BE9-58FC-B689-00F06FDAD74D_d0e614116_href.png Binary file Symbian3/PDK/Source/GUID-669190F8-3BE9-58FC-B689-00F06FDAD74D_d0e614116_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-669190F8-3BE9-58FC-B689-00F06FDAD74D_d0e624065_href.png Binary file Symbian3/PDK/Source/GUID-669190F8-3BE9-58FC-B689-00F06FDAD74D_d0e624065_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-66BBA81D-2488-50B8-8822-43AAAA139DDE.dita --- a/Symbian3/PDK/Source/GUID-66BBA81D-2488-50B8-8822-43AAAA139DDE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-66BBA81D-2488-50B8-8822-43AAAA139DDE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Overview of random number generation -
            Overview

            The +

            Overview

            The purpose of the Random Number Generation API is the generation of cryptographically strong random numbers.

            Several cryptographic applications rely upon the randomness, unpredictability and irreproducibility of the random number @@ -38,7 +38,7 @@ For information on each class see the Cryptography API Reference material.

            The inheritance hierarchy for the RRandomSession and CSystemRandom classes - +

            How to use TRandom

            TRandom is a cryptographically stong random number generator. Its declaration is:

            class TRandom { diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-66C1F45B-FA94-5724-AD8F-371EAE92B7E9.dita --- a/Symbian3/PDK/Source/GUID-66C1F45B-FA94-5724-AD8F-371EAE92B7E9.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -DEBUGGABLE_UDEBONLY

            DEBUGGABLE_UDEBONLY

            Use the DEBUGGABLE_UDEBONLY statement to mark only the debug version of application to be debugged using the run-mode debug API.

            If both DEBUGGABLE_UDEBONLY and debuggable are in an .mmp file, the behaviour will follow as DEBUGGABLE_UDEBONLY.

            The following examples show the different scenarios when using the keywords debuggable and DEBUGGABLE_UDEBONLY:

            • Perform the following steps using the keyword debuggable:

              1. Add keyword debuggable into helloworld.mmp file

              2. Build helloworld.mmp

              3. Execute READIMAGE to dump helloworld.exe (release and debug version).

                The expected result is 0x00000800, which means the executable file is debuggable.

            • Perform the following steps using the keyword DEBUGGABLE_UDEBONLY:

              1. Add keyword DEBUGGABLE_UDEBONLY into helloworld.mmp file

              2. Build helloworld.mmp

              3. Execute READIMAGE to dump helloworld.exe (release and debug version).

                The expected result is that the debug version of the executable file is debuggable but, the release executable file is not debuggable.

            • Perform the following steps using both DEBUGGABLE_UDEBONLY and debuggable keywords:

              1. Add both DEBUGGABLE_UDEBONLY and debuggable keywords into helloworld.mmp file.

              2. Build helloworld.mmp file

              3. Execute READIMAGE to dump helloworld.exe (release and debug version).

                The expected result is that the debug version of the executable file is debuggable but, the release executable file is not debuggable.

            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-66CF7E30-010D-5A7A-95EF-41620CD49BF9_d0e20988_href.jpg Binary file Symbian3/PDK/Source/GUID-66CF7E30-010D-5A7A-95EF-41620CD49BF9_d0e20988_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-66CF7E30-010D-5A7A-95EF-41620CD49BF9_d0e22955_href.jpg Binary file Symbian3/PDK/Source/GUID-66CF7E30-010D-5A7A-95EF-41620CD49BF9_d0e22955_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-66E0B7F2-DEB4-5326-9DE0-5C0E253568AF_d0e577479_href.png Binary file Symbian3/PDK/Source/GUID-66E0B7F2-DEB4-5326-9DE0-5C0E253568AF_d0e577479_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-66E0B7F2-DEB4-5326-9DE0-5C0E253568AF_d0e626767_href.png Binary file Symbian3/PDK/Source/GUID-66E0B7F2-DEB4-5326-9DE0-5C0E253568AF_d0e626767_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-66EFFCF5-581A-4EE7-B784-8087A1081B6D.dita --- a/Symbian3/PDK/Source/GUID-66EFFCF5-581A-4EE7-B784-8087A1081B6D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-66EFFCF5-581A-4EE7-B784-8087A1081B6D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,33 +12,29 @@ Title pane

            The Title pane displays a context-dependent application -title or state name. Title pane in Home screen view can work with touch down -and release but by default, there is no functionality.

            - +title or state name.

            + Title pane - +
            • Typically, the title text is the descriptive name of the current main pane view.

            • -
            • In an application title pane, the title text is typically -the application name.

            • -
            • In the home screen, the Title pane may contain -an operator logo (left-aligned in the area available) instead of the operator -name as text.

            • +
            • In an application idle state, the title text is typically the application +name.

            • +
            • In the idle state, the Title pane may contain +an operator logo (left-aligned in the area available) instead +of the operator name as text.

            -
            Using -the title pane in applications

            The API to use for the title pane -component is the Title pane API. For observing title pane touch events, use -the Title Pane Touch Observer API.

            To use a title pane in your application, -create an instance of the CAknTitlePane class.

            Use -the CAknTitlePane::SetTextL() method to set the title pane -text and display it. To set the text to scroll if it does not fit the title -pane text area, set the flag aScroll to ETrue. -To set the text to the default (name of the application), use the CAknTitlePane::SetTextToDefault() method.

            Use -the CAknTitlePane::SetPicture() method to display a picture -in the title pane. To set the icon from a file, use the CAknTitlePane::SetPictureFromFileL() method. -Alternatively, to set a small icon to be displayed together with text, use -the CAknTitlePane::SetSmallPicture() method.

            To set -the title pane contents from a resource file, use the CAknTitlePane::SetFromResourceL() method.

            +
            Using the title pane +in C++ applications

            The API to use for the title pane component +is the Title +pane API. For observing title pane touch events, use the Title +Pane Touch Observer API.

            To use a title pane in your application, +create an instance of the class CAknTitlePane.

            Use the method SetTextL() in the class CAknTitlePane to set the title pane text and display it. To set the text to scroll +if it does not fit the title pane text area, set the flag aScroll to ETrue. +To set the text to the default (name of the application), use the method SetTextToDefault().

            Use the method SetPicture() to display a picture in the title pane. +To set the icon from a file, use the method SetPictureFromFileL(). Alternatively, to set a small +icon to be displyed together with text, use the method SetSmallPicture().

            To set the title pane contents +from a resource file, use the method SetFromResourceL().

            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6740A668-33A2-52B1-9416-E9F21591D16C_d0e210589_href.jpg Binary file Symbian3/PDK/Source/GUID-6740A668-33A2-52B1-9416-E9F21591D16C_d0e210589_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6740A668-33A2-52B1-9416-E9F21591D16C_d0e216590_href.jpg Binary file Symbian3/PDK/Source/GUID-6740A668-33A2-52B1-9416-E9F21591D16C_d0e216590_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-67B311E5-5522-5367-BEC2-F5C9285AC99D.dita --- a/Symbian3/PDK/Source/GUID-67B311E5-5522-5367-BEC2-F5C9285AC99D.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ - - - - - -Architecture of the Unified Trace Solution

            The full Unified Trace solution consists of the following components:

            • UTrace OS component: Includes UTrace API and trace configuration tool.

            • UTrace non-OS component: Includes host-side analysis tools, a command line interface, USB transport, and the host-side configuration.

            The following diagram illustrates the high-level architecture of the Unified Trace solution.

            - Unified Trace solution architecture -

            Carbide.c++

            Provided by Nokia

            TPTP

            Provided by Eclipse

            Trace viewer

            Uses the TPTP module to view traces in CBE format.

            Trace config API

            Java API-Windows service and host-side device driver to remote configure trace configuration tool

            BTrace

            Filters traces coming from UTrace

            Buffer

            BTrace.dll-provides an API to access the BTrace buffer, this implements the BTrace handler.

            The tracing process consists of three basic phases:

            • Instrumentation

              • Inserting trace macros in the application or component code using the UTrace API. Each trace is identified by a primary filter, and optionally a secondary filter.

              • Compiling and transferring the application to the target.

            • Tracing

              • Enabling the logging of the traces on the target using trace configuration tool. The trace configuration tool should use filters to decide which traces are to be logged and which are to be discarded.

              • Starting the application to enable tracing.

              • Stopping the application to log the traces.

            • Analysis

              • Transferring the resulting log file to a PC.

              • The logs could then be processed, analysed and viewed on screen in a human-readable format. A Trace Environment Developer can provide their own analysis tool, or the Carbide.c++ or Eclipse-based TPTP Log Viewer is available in particular CustKits.

            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-67D0F837-65EE-54FE-B8D6-E5226CB9D8C9-GENID-1-12-1-24-1-1-4-1-1-3-1.dita --- a/Symbian3/PDK/Source/GUID-67D0F837-65EE-54FE-B8D6-E5226CB9D8C9-GENID-1-12-1-24-1-1-4-1-1-3-1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ - - - - - -Feature Management OverviewThis section gives an overview of feature management, what it does, how it works, how to use it and links to relevant links.
            Purpose

            A feature is a piece of functionality that is shipped with the device, but which can be disabled or enabled.

            Feature management is used to manage the enabling and disabling of these features and associated activities for example to provide a means of allowing the system to know if a feature is enabled or not.

            Architecture

            The feature management system consists of a server and two dll files.

            The feature management system has a standard client server architecture. The server is the feature management server and the dll files provide a series of APIs with which the client can communicate with the server.

            Description

            As described above, the functionality of feature management can be broken into two groups: the server and the dll files.

            The feature manager server: this comes as an executable called featmgrserver.exe.

            • This does all the feature management work that is keeping track of the status of each feature.

            The communication to the feature management server is carried out via the two dll files i.e. featdiscovery.dll and featmgr.dll.

            • Provide a means of telling the client when a change to the status of a feature has occurred.

            • Allows the client to specify which feature is to be enabled or disabled.

            • Allows the client to add or delete features.

            Components

            The following components make up the feature management collection.

            • Feature Discovery

              featdiscovery.dll

              Provides the APIs that provide only a subset of what can be provided by feature management.

              It provides the functionality for TFeatureSet and CFeatureDiscovery.

            • Feature Manager

              featmgr.dll

              Provides the APIs that allow the client to carry out the full functionality available with feature management.

              It provides the functionality for RFeatMgrClient, RFeatureControl, MFeatureObserver and CFeatureNotifier.

            • Feature Manager Server

              featmgrserver.exe

              Performs all the actual operations and maintains details about features.

            Feature Manager - Overview
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-67D0F837-65EE-54FE-B8D6-E5226CB9D8C9-GENID-1-12-1-24-1-1-4-1-1-5-1-4-1.dita --- a/Symbian3/PDK/Source/GUID-67D0F837-65EE-54FE-B8D6-E5226CB9D8C9-GENID-1-12-1-24-1-1-4-1-1-5-1-4-1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ - - - - - -Feature Management OverviewThis section gives an overview of feature management, what it does, how it works, how to use it and links to relevant links.
            Purpose

            A feature is a piece of functionality that is shipped with the device, but which can be disabled or enabled.

            Feature management is used to manage the enabling and disabling of these features and associated activities for example to provide a means of allowing the system to know if a feature is enabled or not.

            Architecture

            The feature management system consists of a server and two dll files.

            The feature management system has a standard client server architecture. The server is the feature management server and the dll files provide a series of APIs with which the client can communicate with the server.

            Description

            As described above, the functionality of feature management can be broken into two groups: the server and the dll files.

            The feature manager server: this comes as an executable called featmgrserver.exe.

            • This does all the feature management work that is keeping track of the status of each feature.

            The communication to the feature management server is carried out via the two dll files i.e. featdiscovery.dll and featmgr.dll.

            • Provide a means of telling the client when a change to the status of a feature has occurred.

            • Allows the client to specify which feature is to be enabled or disabled.

            • Allows the client to add or delete features.

            Components

            The following components make up the feature management collection.

            • Feature Discovery

              featdiscovery.dll

              Provides the APIs that provide only a subset of what can be provided by feature management.

              It provides the functionality for TFeatureSet and CFeatureDiscovery.

            • Feature Manager

              featmgr.dll

              Provides the APIs that allow the client to carry out the full functionality available with feature management.

              It provides the functionality for RFeatMgrClient, RFeatureControl, MFeatureObserver and CFeatureNotifier.

            • Feature Manager Server

              featmgrserver.exe

              Performs all the actual operations and maintains details about features.

            Feature Manager - Overview
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-67D0F837-65EE-54FE-B8D6-E5226CB9D8C9-GENID-1-12-1-27-1-1-4-1-1-3-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-67D0F837-65EE-54FE-B8D6-E5226CB9D8C9-GENID-1-12-1-27-1-1-4-1-1-3-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,13 @@ + + + + + +Feature Management OverviewThis section gives an overview of feature management, what it does, how it works, how to use it and links to relevant links.
            Purpose

            A feature is a piece of functionality that is shipped with the device, but which can be disabled or enabled.

            Feature management is used to manage the enabling and disabling of these features and associated activities for example to provide a means of allowing the system to know if a feature is enabled or not.

            Architecture

            The feature management system consists of a server and two dll files.

            The feature management system has a standard client server architecture. The server is the feature management server and the dll files provide a series of APIs with which the client can communicate with the server.

            Description

            As described above, the functionality of feature management can be broken into two groups: the server and the dll files.

            The feature manager server: this comes as an executable called featmgrserver.exe.

            • This does all the feature management work that is keeping track of the status of each feature.

            The communication to the feature management server is carried out via the two dll files i.e. featdiscovery.dll and featmgr.dll.

            • Provide a means of telling the client when a change to the status of a feature has occurred.

            • Allows the client to specify which feature is to be enabled or disabled.

            • Allows the client to add or delete features.

            Components

            The following components make up the feature management collection.

            • Feature Discovery

              featdiscovery.dll

              Provides the APIs that provide only a subset of what can be provided by feature management.

              It provides the functionality for TFeatureSet and CFeatureDiscovery.

            • Feature Manager

              featmgr.dll

              Provides the APIs that allow the client to carry out the full functionality available with feature management.

              It provides the functionality for RFeatMgrClient, RFeatureControl, MFeatureObserver and CFeatureNotifier.

            • Feature Manager Server

              featmgrserver.exe

              Performs all the actual operations and maintains details about features.

            Feature Manager + Overview
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-67D0F837-65EE-54FE-B8D6-E5226CB9D8C9-GENID-1-12-1-27-1-1-4-1-1-5-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-67D0F837-65EE-54FE-B8D6-E5226CB9D8C9-GENID-1-12-1-27-1-1-4-1-1-5-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,13 @@ + + + + + +Feature Management OverviewThis section gives an overview of feature management, what it does, how it works, how to use it and links to relevant links.
            Purpose

            A feature is a piece of functionality that is shipped with the device, but which can be disabled or enabled.

            Feature management is used to manage the enabling and disabling of these features and associated activities for example to provide a means of allowing the system to know if a feature is enabled or not.

            Architecture

            The feature management system consists of a server and two dll files.

            The feature management system has a standard client server architecture. The server is the feature management server and the dll files provide a series of APIs with which the client can communicate with the server.

            Description

            As described above, the functionality of feature management can be broken into two groups: the server and the dll files.

            The feature manager server: this comes as an executable called featmgrserver.exe.

            • This does all the feature management work that is keeping track of the status of each feature.

            The communication to the feature management server is carried out via the two dll files i.e. featdiscovery.dll and featmgr.dll.

            • Provide a means of telling the client when a change to the status of a feature has occurred.

            • Allows the client to specify which feature is to be enabled or disabled.

            • Allows the client to add or delete features.

            Components

            The following components make up the feature management collection.

            • Feature Discovery

              featdiscovery.dll

              Provides the APIs that provide only a subset of what can be provided by feature management.

              It provides the functionality for TFeatureSet and CFeatureDiscovery.

            • Feature Manager

              featmgr.dll

              Provides the APIs that allow the client to carry out the full functionality available with feature management.

              It provides the functionality for RFeatMgrClient, RFeatureControl, MFeatureObserver and CFeatureNotifier.

            • Feature Manager Server

              featmgrserver.exe

              Performs all the actual operations and maintains details about features.

            Feature Manager + Overview
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6820BB9E-F0B9-4493-A4C3-686238527C9B_d0e88577_href.png Binary file Symbian3/PDK/Source/GUID-6820BB9E-F0B9-4493-A4C3-686238527C9B_d0e88577_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6820BB9E-F0B9-4493-A4C3-686238527C9B_d0e92775_href.png Binary file Symbian3/PDK/Source/GUID-6820BB9E-F0B9-4493-A4C3-686238527C9B_d0e92775_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-68417158-D625-56BF-BDD5-BE49A7651CED.dita --- a/Symbian3/PDK/Source/GUID-68417158-D625-56BF-BDD5-BE49A7651CED.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-68417158-D625-56BF-BDD5-BE49A7651CED.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Audio Output Streaming Overview

            This document provides an overview of Audio Output Streaming.

            Purpose

            Audio Output Streaming is the interface to streaming sampled audio data to the low level audio controller part of the Multimedia Framework (MMF).

            Audio Output Streaming Library Details

            The DLL that provides the functionality and the library to which your code must link is identified below.

            DLL LIB Short Description

            mediaclientaudiostream.dll

            mediaclientaudiostream.lib

            These files are used for implementing Audio Output Streaming.

            Architectural Relationship

            How the Audio Output Streaming classes interact with other components of MMF is shown below:

            Audio output streaming overview -
            Description

            Streamed audio data is sent and received incrementally. This means:

            • sound clips sent to the low level audio controller (audio play) can be sent as they arrive rather than waiting until the entire clip is received.

              The user of the API should maintain the data fragments in a queue before sending them to the server. If the user attempts to send data faster than the server can receive it, the excess data fragments are maintained in another client side queue (invisible to the user), whose elements are references to the buffers passed to it. The server notifies the client using a callback each time it has received a data fragment. This indicates to the client that the data fragment can be deleted.

            • sound clips that are being captured by the low level audio controller (audio record) can be read incrementally without having to wait until audio capture is complete.

              The low level audio controller maintains the received buffers where it can place the audio data that is being captured. The client uses a read function to read the received data into destination descriptors.

            The client is also notified (for audio play and record) when the stream is opened and available for use (opening takes place asynchronously), and when the stream is closed.

            This API can only be used to stream audio data, with the data being stored or sourced from a descriptor. Client applications must ensure that the data is in 16 bit PCM format as this is the only format supported. The API does not support mixing. A priority mechanism is used to control access to the sound device by more than one client.

            Key Audio Output Streaming Classes

            The functionality provided by Audio Output Streaming is contained within the CMdaAudioOutputStream class.

            Using Audio Output Streaming

            Clients can use Audio Output Streaming to:

            • Open, set audio properties, write to and close the audio stream.

            See Also

            Audio Output Streaming Tutorial

            \ No newline at end of file +
            Description

            Streamed audio data is sent and received incrementally. This means:

            • sound clips sent to the low level audio controller (audio play) can be sent as they arrive rather than waiting until the entire clip is received.

              The user of the API should maintain the data fragments in a queue before sending them to the server. If the user attempts to send data faster than the server can receive it, the excess data fragments are maintained in another client side queue (invisible to the user), whose elements are references to the buffers passed to it. The server notifies the client using a callback each time it has received a data fragment. This indicates to the client that the data fragment can be deleted.

            • sound clips that are being captured by the low level audio controller (audio record) can be read incrementally without having to wait until audio capture is complete.

              The low level audio controller maintains the received buffers where it can place the audio data that is being captured. The client uses a read function to read the received data into destination descriptors.

            The client is also notified (for audio play and record) when the stream is opened and available for use (opening takes place asynchronously), and when the stream is closed.

            This API can only be used to stream audio data, with the data being stored or sourced from a descriptor. Client applications must ensure that the data is in 16 bit PCM format as this is the only format supported. The API does not support mixing. A priority mechanism is used to control access to the sound device by more than one client.

            Key Audio Output Streaming Classes

            The functionality provided by Audio Output Streaming is contained within the CMdaAudioOutputStream class.

            Using Audio Output Streaming

            Clients can use Audio Output Streaming to:

            • Open, set audio properties, write to and close the audio stream.

            See Also

            Audio Output Streaming Tutorial

            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-684F99F3-7C7D-5B50-8EC0-BE14E22C33BE.dita --- a/Symbian3/PDK/Source/GUID-684F99F3-7C7D-5B50-8EC0-BE14E22C33BE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-684F99F3-7C7D-5B50-8EC0-BE14E22C33BE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -31,7 +31,7 @@ and can only be executed in its location within the XIP ROM. Files are specified by using the file keyword in the .oby file. The following diagram summarises the situation for EKA1.

            - +

            EKA2

            In EKA2, executables can be placed in the ROM in:

            • uncompressed form diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-685C3F33-1530-4984-B125-E4EF8EBB2EE8.dita --- a/Symbian3/PDK/Source/GUID-685C3F33-1530-4984-B125-E4EF8EBB2EE8.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ - - - - - -Symbian -UI with rotation -

              Symbian UI can rotate between the portrait and landscape layout. This section -describes the guidelines for designing landscape-aware application user interfaces. -On the whole, the primary guideline in the Symbian platform is that no specific -UI design is necessary for landscape orientation and mode. Instead, applications -designed according to the guidelines described in this section should work -in both landscape orientation and with the default portrait orientation. This -section does, however, describe some exceptions to this rule.

              -

              The Symbian platform in landscape orientation follows the bottom softkey -style. In the bottom softkey style, the layout of the normal portrait UI is -merely stretched horizontally to fit the screen, leaving the softkeys below -the screen as in standard portrait orientation.

              - -Symbian UI rotated to landscape in the bottom softkey style - - -
              Using -portrait and landscape layouts in applications

              Switching between -portrait and landscape layouts is handled in the application and UI frameworks -using layout change -events.

              - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-687AFC9D-ADB7-5190-A535-C54B835825DD.dita --- a/Symbian3/PDK/Source/GUID-687AFC9D-ADB7-5190-A535-C54B835825DD.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Application resource tools reference \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita --- a/Symbian3/PDK/Source/GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-68B999C2-0993-4804-9624-42C3D88BE5C7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -13,7 +13,7 @@ architecture

              The following image illustrates the components of the view architecture approach.

              -View architecture classes +View architecture classes

              Symbian platform applications that follow the view architecture require:

              • a UI diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-68BBBA98-BDF7-4562-8168-5E90C73ADCF8.dita --- a/Symbian3/PDK/Source/GUID-68BBBA98-BDF7-4562-8168-5E90C73ADCF8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-68BBBA98-BDF7-4562-8168-5E90C73ADCF8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ their greatest threat, and allows intruders to try different attack methods against the device. The figure below illustrates the most common methods of attack against mobile devices.

                -Mobile device and common attack methods +Mobile device and common attack methods

                Due to the nature of mobile devices, including the potential vulnerabilities mentioned above, you should consider the following points when designing your application:

                diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-68C4E5E5-65A2-51BC-B3DC-2B83D29212D4_d0e167911_href.png Binary file Symbian3/PDK/Source/GUID-68C4E5E5-65A2-51BC-B3DC-2B83D29212D4_d0e167911_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-68C4E5E5-65A2-51BC-B3DC-2B83D29212D4_d0e174004_href.png Binary file Symbian3/PDK/Source/GUID-68C4E5E5-65A2-51BC-B3DC-2B83D29212D4_d0e174004_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-68E3609C-3429-5B1C-B8D9-C0EBBACEF357_d0e235540_href.png Binary file Symbian3/PDK/Source/GUID-68E3609C-3429-5B1C-B8D9-C0EBBACEF357_d0e235540_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-68E3609C-3429-5B1C-B8D9-C0EBBACEF357_d0e241513_href.png Binary file Symbian3/PDK/Source/GUID-68E3609C-3429-5B1C-B8D9-C0EBBACEF357_d0e241513_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-68F27C54-A339-507B-9DD3-B3701132FE0A.dita --- a/Symbian3/PDK/Source/GUID-68F27C54-A339-507B-9DD3-B3701132FE0A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-68F27C54-A339-507B-9DD3-B3701132FE0A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,100 +9,100 @@ --> -WAP -Push Framework OverviewWAP Push Framework is a plug-in framework that supports receiving, -processing and storing of WAP (Wireless Application Protocol) push messages. -
                Required background

                Before using this component, -you must understand ECom -Framework and Open -Mobile Alliance (OMA) standards.

                -
                Key concepts and terms
                +WAP Push Framework OverviewWAP Push Framework is a plug-in framework that supports +receiving, processing and storing of WAP (Wireless Application Protocol) +push messages. +
                Required background

                Before using this component, +you must understand ECom Framework and Open Mobile Alliance (OMA) standards.

                +
                Key concepts and terms
                Push message
                -

                WAP push messages are specially formatted SMS messages that display -an alert message to the user, and give the user the option of connecting directly -to a particular URL through the mobile phone’s WAP Browser; for example, notification -about a new email.

                A push message has a header section and a body -section. Header section has X-Wap-Application-Id and Content-Type fields. -The message body can be any MIME content-type and optionally encoded. When -a push message is received, the framework parses the message header and loads -an appropriate plug-in to process and store the message in a Message Store.

                +

                WAP push messages are specially formatted SMS messages that +display an alert message to the user, and give the user the option +of connecting directly to a particular URL through the mobile phone’s +WAP Browser; for example, notification about a new email.

                A push message has a header section and a body section. Header section +has X-Wap-Application-Id and Content-Type fields. The message body can be any MIME content-type and optionally +encoded. When a push message is received, the framework parses the +message header and loads an appropriate plug-in to process and store +the message in a Message Store.

                Push plug-in
                -

                The handler (plug-in) supported by the framework are known as Push -plug-in, such as Application Handler or Content Handler.

                +

                The handler (plug-in) supported by the framework are known +as Push plug-in, such as Application Handler or Content Handler.

                -
                Architecture

                WAP Push Framework provides support -for connectionless (CL) OTA-WSP push.

                The main components of the framework -are Push Watcher, Application Handler and Content Handler. A Push Watcher -is a plug-in that plug-in to the Messaging -Watcher Framework and is responsible for listening on the WAP Stack -for incoming push messages. Push Watcher after receiving the message, loads -an appropriate Application Handler through Application Dispatcher. An Application -Handler is responsible for loading the appropriate Content Handler using the X-Wap-Application-Id value +

                Architecture

                WAP Push Framework provides +support for connectionless (CL) OTA-WSP push.

                The main components +of the framework are Push Watcher, Application Handler and Content +Handler. A Push Watcher is a plug-in that plug-in to the Messaging Watcher +Framework and is responsible for listening on the WAP Stack +for incoming push messages. Push Watcher after receiving the message, +loads an appropriate Application Handler through Application Dispatcher. +An Application Handler is responsible for loading the appropriate +Content Handler using the X-Wap-Application-Id value contained in the received push message. The content handler is responsible -to handle the push message and take any action on the message that may be -necessary. However, if a plug-in for a given content-type is not available, -the WAP Push Framework uses the unknown application handler plug-in (default) -and discards the push message.

                The following figure shows the architecture -of WAP Push Framework.

                +to handle the push message and take any action on the message that +may be necessary. However, if a plug-in for a given content-type is +not available, the WAP Push Framework uses the unknown application +handler plug-in (default) and discards the push message.

                The +following figure shows the architecture of WAP Push Framework.

                WAP Push Framework Architecture - +
                Push Watcher
                -

                There are two Push Watchers in the framework for CL OTA-WSP—one is -for secure push and the other is for non-secure push. The insecure CL watcher -is always active and waits asynchronously to receive message from WAP Stack -at port 2948. On receiving a push message, the watcher wraps the message up -in a CPushMessage, parses the message and calls the Application -Dispatcher, passing in the X-Wap-Application-Id value obtained -from the push message.

                +

                There are two Push Watchers in the framework for CL OTA-WSP—one +is for secure push and the other is for non-secure push. The insecure +CL watcher is always active and waits asynchronously to receive message +from WAP Stack at port 2948. On receiving a push message, the watcher +wraps the message up in a CPushMessage, parses +the message and calls the Application Dispatcher, passing in the X-Wap-Application-Id value obtained from the push message.

                Dispatchers and Handlers
                -

                The framework contains an Application Dispatcher and a Content Dispatcher -that are used to find the appropriate Application Handler and Content Handler -respectively.

                Application Dispatcher uses ECom to load an Application -Handler using the application-ID passed to it by the Push Watcher. Two different -Application Handlers are present in the framework—Unknown Application Handler -for applications of unknown type and User Agent (UA) Application Handler that -receives messages of type ‘x-wap-application:* ’ or ‘x-wap-application:wml.ua ’. -The UA Application Handler looks at the content-type of the message and passes -it to the Content Dispatcher. The content dispatcher then loads an appropriate -Content Handler. The Unknown Application Handler deletes the push message.

                The -Content Dispatcher uses ECom to load a particular Content Handler (plug-in) -based on the content-type passed in by the Application Handler. The following -are the Content Handlers provided within the framework.

                  -
                • SI Content Handler: These -plug-ins process Service Indication (SI) messages. An SI message is a UA message -with content-type text/vnd.wap.si or application/vnd.wap.sic. -The basic form of an SI message is a short message with a URI indicating a -service; for example, notification about new emails.

                • -
                • SL Content Handler: These -plug-ins process Service Load (SL) messages. An SL message is an UA message -with content-type text/vnd.wap.sl or application/vnd.wap.slc. -The SL message contains a URI indicating a service which gets loaded without -user input.

                • +

                  The framework contains an Application Dispatcher and a Content +Dispatcher that are used to find the appropriate Application Handler +and Content Handler respectively.

                  Application Dispatcher uses +ECom to load an Application Handler using the application-ID passed +to it by the Push Watcher. Two different Application Handlers are +present in the framework—Unknown Application Handler for applications +of unknown type and User Agent (UA) Application Handler that receives +messages of type ‘x-wap-application:* ’ or ‘x-wap-application:wml.ua ’. The UA Application Handler looks at the content-type of the message +and passes it to the Content Dispatcher. The content dispatcher then +loads an appropriate Content Handler. The Unknown Application Handler +deletes the push message.

                  The Content Dispatcher uses ECom +to load a particular Content Handler (plug-in) based on the content-type +passed in by the Application Handler. The following are the Content +Handlers provided within the framework.

                    +
                  • SI Content +Handler: These plug-ins process Service Indication (SI) messages. +An SI message is a UA message with content-type text/vnd.wap.si or application/vnd.wap.sic. The basic form +of an SI message is a short message with a URI indicating a service; +for example, notification about new emails.

                  • +
                  • SL Content +Handler: These plug-ins process Service Load (SL) messages. An +SL message is an UA message with content-type text/vnd.wap.sl or application/vnd.wap.slc. The SL message +contains a URI indicating a service which gets loaded without user +input.

                  • Multipart-mixed -Content Handler: These plug-ins process multipart-mixed messages. These -are messages with content-type application/vnd.wap.multipart.mixed or multipart/mixed. -They create new sub-messages from each message part, and load appropriate -content handler plug-ins to process each sub-message.

                  • +Content Handler: These plug-ins process multipart-mixed messages. +These are messages with content-type application/vnd.wap.multipart.mixed or multipart/mixed. They create new sub-messages +from each message part, and load appropriate content handler plug-ins +to process each sub-message.

                  • Multipart-related, -Multipart-alternative Content Handlers: These plug-ins process messages -for the application/vnd.wap.multipart.alternative, multipart/alternative, application/vnd.wap and multipart.related content-types. They save the -entire message in the Message Store, where each part is saved as a child entry -to the main part.

                  • -
                  • Unknown Content -Handler: These plug-ins process content-types for which there are no handler -plug-ins. They store the received push messages in Inbox of the Message Store.

                  • +Multipart-alternative Content Handlers: These plug-ins process +messages for the application/vnd.wap.multipart.alternative, multipart/alternative, application/vnd.wap and multipart.related content-types. They save +the entire message in the Message Store, where each part is saved +as a child entry to the main part.

                    +
                  • Unknown +Content Handler: These plug-ins process content-types for which +there are no handler plug-ins. They store the received push messages +in Inbox of the Message Store.

                -
                APIs +
                APIs
                @@ -122,23 +122,25 @@
                -
                Typical uses

                WAP Push Framework is extensible, -that is, new plug-ins can be installed to the framework and installed plug-ins -can be removed from the framework without re-building the framework. It uses -dynamically loaded plug-ins at run-time to support different content-types; -for example, content of push message for Service Indicator (SI) application. -ECom Framework is used to provide support for run-time loading.

                  -
                • Creating content handler -plug-ins.

                  Note: Push plug-ins must inherit from the base push -plug-in class and override a set of pure virtual functions.

                • -
                • Removing any installed -plug-ins.

                • +
                  Typical uses

                  WAP Push Framework is extensible, +that is, new plug-ins can be installed to the framework and installed +plug-ins can be removed from the framework without re-building the +framework. It uses dynamically loaded plug-ins at run-time to support +different content-types; for example, content of push message for +Service Indicator (SI) application. ECom Framework is used to provide +support for run-time loading.

                    +
                  • Creating content +handler plug-ins.

                    Note: Push plug-ins must inherit +from the base push plug-in class and override a set of pure virtual +functions.

                  • +
                  • Removing any +installed plug-ins.

                  -Open Mobile - Alliance (OMA) -Watcher Framework - + +Open Mobile Alliance (OMA) +Watcher +Framework SUPL Push API Tutorial \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6913F58F-FDA1-4708-B03E-16AF6C545E5B_d0e3152_href.jpg Binary file Symbian3/PDK/Source/GUID-6913F58F-FDA1-4708-B03E-16AF6C545E5B_d0e3152_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6913F58F-FDA1-4708-B03E-16AF6C545E5B_d0e3161_href.jpg Binary file Symbian3/PDK/Source/GUID-6913F58F-FDA1-4708-B03E-16AF6C545E5B_d0e3161_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-694C7416-927E-58F7-B010-CA55D2FFA88F_d0e236264_href.png Binary file Symbian3/PDK/Source/GUID-694C7416-927E-58F7-B010-CA55D2FFA88F_d0e236264_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-694C7416-927E-58F7-B010-CA55D2FFA88F_d0e242237_href.png Binary file Symbian3/PDK/Source/GUID-694C7416-927E-58F7-B010-CA55D2FFA88F_d0e242237_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-697087D6-C029-51E8-8722-9E2584420276.dita --- a/Symbian3/PDK/Source/GUID-697087D6-C029-51E8-8722-9E2584420276.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-697087D6-C029-51E8-8722-9E2584420276.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> SMS Stack ArchitectureThe SMS Stack is a plug-in to the socket server. This section provides the architectural relationships of the SMS stack.
                  SMS stack components
                  1. SMSPROT - The SMS stack protocol module

                  2. GSMU - GSM Utility class

                  3. SMSU - SMS Utility class

                  SMSPROT

                  SMSPROT.prt is a socket server (ESOCK) plug-in DLL implemented with a protocol module suffix PRT. The main functions of the SMS protocol module are to send queues, receive queues and maintain the connection to the socket server. For more information about SMSPROT, see SMS Protocol Modules.

                  GSMU

                  The GSM Utility (GSMU) class provides some utility functions for the SMS stack. The SMS messages are represented by a CSmsMessage object of the GSMU class. GSMU also provide methods to send and receive the SMS messages through the socket server. For more information about GSMU, see GSM Utilities.

                  SMSU

                  The SMS Utility (SMSU) class provides the base class for active objects of the SMS stack. For more information about SMSU, see SMS Utilities.

                  SMS Stack Architectural Relationships -

                  When a client application requests a service from the SMS stack, the SMS stack is loaded by the socket server. The main SMS stack clients are the messaging application, the WAP stack and the third party applications. The WAP stack binds directly to the SMS stack. The messaging applications and other third party applications access the SMS stack as the clients of the socket server.

                  The SMS stack communicates with the ETel (Telephony) server to send, receive, read, write and delete the SMS messages from the Subscriber Identity Module (SIM).

                  The SMS stack uses the message store called as the reassembly store to store the messages passed by the Telephony System plug-in (TSY). The stored messages are then processed.

                  Stack initialisation

                  The socket server loads the SMS stack. The socket server loads the stack when one of the clients requests a session with the stack. The load the SMS stack, the socket server searches for the smswap.sms.esk file. The ESK files contain the details of the DLL which creates the SMS stack. The smswap.sms.esk file is located at epoc32\data\z\private\101F7989\SOCKET and epoc32\wins\c\private\101f7989.

                  +

                  When a client application requests a service from the SMS stack, the SMS stack is loaded by the socket server. The main SMS stack clients are the messaging application, the WAP stack and the third party applications. The WAP stack binds directly to the SMS stack. The messaging applications and other third party applications access the SMS stack as the clients of the socket server.

                  The SMS stack communicates with the ETel (Telephony) server to send, receive, read, write and delete the SMS messages from the Subscriber Identity Module (SIM).

                  The SMS stack uses the message store called as the reassembly store to store the messages passed by the Telephony System plug-in (TSY). The stored messages are then processed.

                  Stack initialisation

                  The socket server loads the SMS stack. The socket server loads the stack when one of the clients requests a session with the stack. The load the SMS stack, the socket server searches for the smswap.sms.esk file. The ESK files contain the details of the DLL which creates the SMS stack. The smswap.sms.esk file is located at epoc32\data\z\private\101F7989\SOCKET and epoc32\wins\c\private\101f7989.

                  #smswap.sms.esk [sockman] diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita --- a/Symbian3/PDK/Source/GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6971B0A2-F79B-4E05-8AF3-BB1FC1932A22.dita Fri Jul 16 17:23:46 2010 +0100 @@ -10,46 +10,42 @@ Capabilities -

                  Capabilities allow the Symbian platform to control access by applications -to the functionalities provided by the platform APIs. Access to capabilities -is determined by the device configuration and how the application has been -signed. Capabilities can be divided into four categories:

                  +

                  Capabilities allow the Symbian platform to control access by +applications to the functionalities provided by the platform APIs. +Access to capabilities is determined by the device configuration and +how the application has been signed. Capabilities can be divided into +four categories:

                    -
                  • user capabilities: LocalServices, NetworkServices, ReadUserData, WriteUserData, UserEnvironment and, Location

                    -
                  • -
                  • system capabilities: PowerMgmt, ProtServ, ReadDeviceData, SurroundingsDD, SwEvent, TrustedUI, WriteDeviceData

                    -
                  • -
                  • restricted capabilities: CommDD, DiskAdmin, MultimediaDD and NetworkControl

                    -
                  • -
                  • device manufacturer capabilities: AllFiles, DRM and TCB

                    -
                  • +
                  • user capabilities: LocalServices, NetworkServices, ReadUserData, WriteUserData, UserEnvironment and, Location

                  • +
                  • system capabilities: PowerMgmt, ProtServ, ReadDeviceData, SurroundingsDD, SwEvent, TrustedUI, WriteDeviceData

                  • +
                  • restricted capabilities: CommDD, DiskAdmin, MultimediaDD and NetworkControl

                  • +
                  • device manufacturer capabilities: AllFiles, DRM and TCB

                  -

                  Capabilities required by the application are defined in the mmp project -definition file during the build process, and cannot be changed during run -time. For information on the parameters you can use, see capability. -Carbide.c++ has a Capability Scanner tool which can be accessed through the Project -> Run Capability Scanner on Project MMP menu. The tool scans and checks -the project for required capabilities.

                  -

                  During the installation the Software -Installer application in the device checks whether the application -has been certified or signed. It then checks the capabilities requested by -the application. If the application has been certified, it checks that the -root certificate is allowed to grant the required capabilities. If no problems -are encountered, the installation can continue. For information on certifications -required by the capabilities, see Application -signing.

                  -

                  The user can grant the user capabilities to a self-signed application. -For example, the following dialog is shown to the user to grant the LocalServices capability:

                  -Granting LocalServices capability during the installation +

                  Capabilities required by the application are defined in the mmp project definition file during the build process, and +cannot be changed during run time. For information on the parameters +you can use, see Symbian Tools Guide > Building > +Symbian Build System (SBSv1) > Build tools reference > MMP file syntax +> capability. Carbide.c++ has a Capability Scanner tool which +can be accessed through the Project > Run Capability Scanner on +Project MMP menu. The tool scans and checks the project for required +capabilities.

                  +

                  During the installation the Software Installer application in the device checks whether the application has been +certified or signed. It then checks the capabilities requested by +the application. If the application has been certified, it checks +that the root certificate is allowed to grant the required capabilities. +If no problems are encountered, the installation can continue. For +information on certifications required by the capabilities, see Application signing.

                  +

                  The user can grant the user capabilities to a self-signed +application. For example, the following dialog is shown to the user +to grant the LocalServices capability:

                  +Granting LocalServices capability during the installation
                  dll capabilities

                  A dll must have equal or greater set of capabilities -than the loading process, otherwise the process is not allowed to load the dll. -Once loaded, a dll runs at the capability level of the loading -process. A dll that has a higher capability set than the -loading process cannot leak capabilities to the process, but a process can -leak capabilities to the dll.

                  -

                  For more information, see DLL -capability model in a secure platform (TSS000454) in the Forum Nokia -Knowledge Base.

                  +than the loading process, otherwise the process is not allowed to +load the dll. Once loaded, a dll runs at the capability level of the loading process. A dll that has a higher capability set than the loading process cannot +leak capabilities to the process, but a process can leak capabilities +to the dll.

                  +

                  For more information, see DLL capability model in a secure platform (TSS000454) in +the Forum Nokia Knowledge Base.

                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-69831D75-D16D-54CF-A083-0EDB358F3390_d0e110448_href.png Binary file Symbian3/PDK/Source/GUID-69831D75-D16D-54CF-A083-0EDB358F3390_d0e110448_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-69831D75-D16D-54CF-A083-0EDB358F3390_d0e112871_href.png Binary file Symbian3/PDK/Source/GUID-69831D75-D16D-54CF-A083-0EDB358F3390_d0e112871_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-69847989-624F-5119-8AC0-3D95D72AF076_d0e106396_href.png Binary file Symbian3/PDK/Source/GUID-69847989-624F-5119-8AC0-3D95D72AF076_d0e106396_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-69847989-624F-5119-8AC0-3D95D72AF076_d0e108839_href.png Binary file Symbian3/PDK/Source/GUID-69847989-624F-5119-8AC0-3D95D72AF076_d0e108839_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6A482ACB-D39E-578B-B58B-44E4142A5897_d0e578451_href.png Binary file Symbian3/PDK/Source/GUID-6A482ACB-D39E-578B-B58B-44E4142A5897_d0e578451_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6A482ACB-D39E-578B-B58B-44E4142A5897_d0e627739_href.png Binary file Symbian3/PDK/Source/GUID-6A482ACB-D39E-578B-B58B-44E4142A5897_d0e627739_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6A5D0445-5D53-5293-A501-136203C80BEE_d0e261097_href.png Binary file Symbian3/PDK/Source/GUID-6A5D0445-5D53-5293-A501-136203C80BEE_d0e261097_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6A5D0445-5D53-5293-A501-136203C80BEE_d0e267106_href.png Binary file Symbian3/PDK/Source/GUID-6A5D0445-5D53-5293-A501-136203C80BEE_d0e267106_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6A6E5F25-BAA0-5D12-AB93-87A0E8A206BD.dita --- a/Symbian3/PDK/Source/GUID-6A6E5F25-BAA0-5D12-AB93-87A0E8A206BD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6A6E5F25-BAA0-5D12-AB93-87A0E8A206BD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> ArchitectureThis topic describes the architectural relationship between the telephony watcher classes.

                  The telephony watcher is contains two main components:

                  • The watcher framework

                  • Watcher plug-ins

                  Telephony Watcher Framework - Architectural Relationships -

                  In the diagram the core low level functionality is the publish and subscribe mechanism. The client applications must use the RProperty functions to get the notifications. Telephony watcher functionality is the watcher framework.

                  The watcher framework

                  The watcher framework is provided by watcher.exe. The watcher and the plug-in run in the same thread. The telephony watcher framework does the following:

                  • creates and starts the plug-in objects

                  • provides an asynchronous interface for the plug-ins

                  • creates the communication link with the telephony server to get the information

                  • maintains the plug-ins and the watcher framework in the same thread

                  • provides updates to the client applications

                  • provides error corrections in the communication between the watcher framework and the telephony server

                  • uses the comms debug utility to log the events

                  • deletes the plug-in objects

                  Watcher Plug-ins

                  The watcher plug-ins are loaded by the watcher framework. The plug-ins are implemented as DLLs. The primary functions of the watchers are to monitor the telephony activities and publish the information with the publish and subscribe. The two watcher plug-ins are:

                  • Signal Strength Watcher

                  • Call Indicator Watcher

                  Telephony Watchers
                  \ No newline at end of file +

                  In the diagram the core low level functionality is the publish and subscribe mechanism. The client applications must use the RProperty functions to get the notifications. Telephony watcher functionality is the watcher framework.

                  The watcher framework

                  The watcher framework is provided by watcher.exe. The watcher and the plug-in run in the same thread. The telephony watcher framework does the following:

                  • creates and starts the plug-in objects

                  • provides an asynchronous interface for the plug-ins

                  • creates the communication link with the telephony server to get the information

                  • maintains the plug-ins and the watcher framework in the same thread

                  • provides updates to the client applications

                  • provides error corrections in the communication between the watcher framework and the telephony server

                  • uses the comms debug utility to log the events

                  • deletes the plug-in objects

                  Watcher Plug-ins

                  The watcher plug-ins are loaded by the watcher framework. The plug-ins are implemented as DLLs. The primary functions of the watchers are to monitor the telephony activities and publish the information with the publish and subscribe. The two watcher plug-ins are:

                  • Signal Strength Watcher

                  • Call Indicator Watcher

                  Telephony Watchers \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6A783365-3CC3-5D7E-9F1C-D3585C4AE66C.dita --- a/Symbian3/PDK/Source/GUID-6A783365-3CC3-5D7E-9F1C-D3585C4AE66C.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -FEATUREVARIANT

                  All DLLs are variant by default, but they are disabled using -invariant or -inv option in the abld command.

                  A DLL marked as FEATUREVARIANT in its .mmp file remains variant, when -invariant or -inv option is specified in the abld command.

                  FEATUREVARIANT has an effect only when used with -invariant or -inv option in the abld command.

                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6A7F8298-F3E9-513C-8C1F-D057AC62E5E3.dita --- a/Symbian3/PDK/Source/GUID-6A7F8298-F3E9-513C-8C1F-D057AC62E5E3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6A7F8298-F3E9-513C-8C1F-D057AC62E5E3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -124,7 +124,7 @@ with UID KUidECamEventCameraSettingFocusRange2.

                  Autofocus

                  Autofocus support for camera applications is controlled through the CCameraAdvancedSettings class.

                  Implementation of autofocus - +

                  Pressing the camera shutter key on the device halfway down generates additional key events. The key events can be used to activate autofocus if the camera hardware supports the functionality. Shutter release (image capture) diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6A9991B8-CF03-5097-BE7D-FB486D26D41B_d0e497126_href.png Binary file Symbian3/PDK/Source/GUID-6A9991B8-CF03-5097-BE7D-FB486D26D41B_d0e497126_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6A9991B8-CF03-5097-BE7D-FB486D26D41B_d0e504588_href.png Binary file Symbian3/PDK/Source/GUID-6A9991B8-CF03-5097-BE7D-FB486D26D41B_d0e504588_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6A9E486A-6C1B-4E31-832A-FD39AF041817.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-6A9E486A-6C1B-4E31-832A-FD39AF041817.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,117 @@ + + + + + +Publishing the SIF operation progressInstallers must publish the SIF operation progress to notify +clients about the progress of operations (installation or uninstallation). +

                  The installers +must link against Sifnotification.dll . It is +the utility library that provides the APIs to publish the SIF operation +progress.

                  + +Create an +object of CPublishSifOperationInfo. +CPublishSifOperationInfo* sifPublisher = CPublishSifOperationInfo::NewL(); + +Publish +the operation start information. + +Create +a CSifOperationStartData object. +

                  The parameters that need to be initialized are:

                    +
                  • global component id that uniquely identifies the package across +devices. For example, this could be the package uid in case of a native +SIS package or the midlet name for java.

                  • +
                  • name of the software component (can be the same as global component +id)

                  • +
                  • list of applications associated with the software component +(an empty array in case of no applications)

                  • +
                  • list of corresponding application icon names (without path) +for every application (an empty array in case of no applications).

                  • +
                  • total size of the component in bytes

                  • +
                  • path where all application and component icons are found. All +icon files will be checked with respect to this path.

                  • +
                  • name of the component icon (without path)

                  • +
                  • unique software type name of the component

                  • +

                  _LIT(KGlobalCompId, "12345"); +_LIT(KComponentName, "Testcomponent"); +RPointerArray<HBufC> appNameSet; +RPointerArray<HBufC> appIconSet; +TInt componentSize = 1024; +_LIT(KIconPath, "c:\data\test"); +_LIT(KCompIcon, "TestIcon.mbm"); +_LIT(KSoftwareType, "native"); +CSifOperationStartData* startdata = CSifOperationStartData::NewLC(KGlobalCompId, KComponentName, &appNameSet, &appIconSet, componentSize, KIconPath, KCompIcon, KSoftwareType); +
                  +
                  +Invoke +the CPublishSifOperationInfo::PublishStartL(). +sifPublisher->PublishStartL(*startdata); + +
                  +CPublishSifOperationInfo::PublishStartL() can be invoked only once per operation. However, two parallel installations +can be initiated and CPublishSifOperationInfo::PublishStartL() can be invoked by each of the installation. +
                  +Publish +the operation progress information. + +Create +a CSifOperationProgressData object. +The parameters that need to be initialized are:
                    +
                  • global component id that uniquely identifies the package across +devices. For example, this could be the package uid in case of a native +SIS package or the midlet name for java.

                  • +
                  • phase of SIF operation

                  • +
                  • current stage in the type of SIF operation

                  • +
                  • progress of operation completed in current subphase

                  • +
                  • total operation required by this subphase

                  • +
                  // A pointer to the newly allocated object is returned if creation is successful. +TInt phase = TSifOperationPhase::ESifOperationStart; +TInt subPhase = TSifOperationSubPhase::EOCSPCheck; +TInt curProgress = 75; +TInt total = 100; +CSifOperationProgressData* progressdata = CSifOperationProgressData::NewLC(KGlobalCompId, phase, subPhase, curProgress, total); +
                  +
                  +Invoke +the CPublishSifOperationInfo::PublishProgressL(). +sifPublisher->PublishProgressL(*progressdata); + +
                  +

                  CPublishSifOperationInfo::PublishProgressL() can be called iteratively to show the linear progress of the operation.

                  +
                  +Publish +the operation completion information (on success or failure of operation). + +Create +a CSifOperationEndData object. +

                  The parameters that need to be initialized are:

                    +
                  • global component id that uniquely identifies the operation

                  • +
                  • a SIF error category

                  • +
                  • Installer (or runtime) specific error code

                  • +
                  • Installer (or runtime) specific localized error message

                  • +
                  • Installer (or runtime) specific localized error message details

                  • +

                  TInt errCategory = TErrorCategory::ESecurityError; +TInt errCode = -10255; +_LIT(KErrMsg, "Un-trusted package"); +_LIT(KErrMsgDetails, "The package is not signed with a trusted certificate."); +CSifOperationEndData* enddata = CSifOperationEndData::NewLC(KGlobalCompId, errCategory, errCode, KErrMsg, KErrMsgDetails); +
                  +
                  +Invoke +the CPublishSifOperationInfo::PublishCompletionL(). +sifPublisher->PublishCompletionL(*enddata); + +
                  +

                  CPublishSifOperationInfo::PublishCompletionL() can be called only once per operation. Every call to CPublishSifOperationInfo::PublishStartL() by an operation must have a corresponding CPublishSifOperationInfo::PublishCompletionL(), else an +progress place holder is blocked for this operation.

                  +
                  +
                  + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6AAD3BB0-E536-57A2-AEFD-2E22BA2811B4_d0e251541_href.png Binary file Symbian3/PDK/Source/GUID-6AAD3BB0-E536-57A2-AEFD-2E22BA2811B4_d0e251541_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6AAD3BB0-E536-57A2-AEFD-2E22BA2811B4_d0e257552_href.png Binary file Symbian3/PDK/Source/GUID-6AAD3BB0-E536-57A2-AEFD-2E22BA2811B4_d0e257552_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6ABEF478-F3DB-524E-A500-9431B42C6665.dita --- a/Symbian3/PDK/Source/GUID-6ABEF478-F3DB-524E-A500-9431B42C6665.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6ABEF478-F3DB-524E-A500-9431B42C6665.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ shows how to dial or answer one call at a time. It presumes there are no other calls being made.

                  Single Call State Diagram - +

                  The boxes are states. The enumeration value in each box is the status of the voice line. Voice line status describes the states and their meaning. You can also find diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6AD1DA34-EA3D-4EC9-A667-390507B4D6CB.dita --- a/Symbian3/PDK/Source/GUID-6AD1DA34-EA3D-4EC9-A667-390507B4D6CB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6AD1DA34-EA3D-4EC9-A667-390507B4D6CB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,255 +1,251 @@ - - - - - -helloworldbasic.rss -

                  In the Symbian platform, resource files are used to define UI components -such as status panes, CBA -(Control Button Area) buttons, menu -bars, views, -dialogs, strings, and constants used in applications.

                  -

                  For more information about resource files, see Managing -resource files.

                  -// RESOURCE IDENTIFIER -NAME HEWB // 4 letter ID - - -

                  This NAME statement defines the mandatory identifier for this resource -file, which is unique within this application. For more information, see Resource -file structure.

                  -// INCLUDES -#include <eikon.rh> -#include <avkon.rh> - -

                  These are preprocessor statements for EIKON and AVKON files -provided in the ./Epoc32/include sub-folder. They are -required for data structures used in the resource file. For more information -on the available preprocessor statements in resource files, see Resource -file structure.

                  -#include <avkon.rsg> - -

                  These is a preprocessor statement for a generated resource file provided -in the ./Epoc32/include subfolder that provides a list -of symbolic IDs that point to compiled resources. For more on Symbian precompiled -options, see Precompiled -resource values available from the Symbian platform.

                  -#include <appinfo.rh> - -

                  This is a preprocessor statement for an AVKON file -provided in the ./Epoc32/include subfolder that is required -for the data structure used for the localizable information for the application -registration resource file.

                  -#include "HelloWorldBasic.hrh" -

                  This is a preprocessor statement for the HelloWorldBasic custom -command IDs. For more on custom command IDs, see Creating -resource header files.

                  -#include "HelloWorldBasic.rls" - -

                  This is a preprocessor statement for the file used to manage building -the localized strings for the HelloWorldBasic application. For more -on internationalization and localization, see Internationalization -and localization.

                  -// RESOURCE DEFINITIONS -// ----------------------------------------------------------------------------- -// -// Define the resource file signature -// This resource should be empty. -// -// ----------------------------------------------------------------------------- -// -RESOURCE RSS_SIGNATURE - { - } - - -

                  This is the required RESOURCE definition that indicates -the version of this resource file. For this application, no version is defined.

                  -// ----------------------------------------------------------------------------- -// -// Default Document Name -// -// ----------------------------------------------------------------------------- -// -RESOURCE TBUF r_default_document_name - { - buf="HEWB"; - } - - -

                  This is the required RESOURCE definition that defines -the name used if the helloworldbasicdocument class needs -to store a document.

                  -// ----------------------------------------------------------------------------- -// -// Define default menu and CBA key. -// -// ----------------------------------------------------------------------------- -// -RESOURCE EIK_APP_INFO - { - menubar = r_helloworldbasic_menubar; - cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT; - } - -

                  This is the required RESOURCE definition that defines -the resource used for constructing the menu bar and the Control Button Area -(CBA) buttons used in the application. The menu bar is constructed later in -this resource file. The CBA buttons declaration uses a precompiled symbolic -ID from the avkon.rsg file, which in turns points to -a compiled resource that provides an Options text above -the left softkey and an Exit text above the right softkey. -The application framework handles the event generated by selection of the Options softkey -and opens the MENU_PANE resource. Selection of the Exit softkey -generates a EAknSoftkeyExit event that needs to be handled -by your code. For more information on event handling, see Event -handling.

                  -// ----------------------------------------------------------------------------- -// -// r_helloworldbasic_menubar -// Menubar for HelloWorldBasic example -// -// ----------------------------------------------------------------------------- -// -RESOURCE MENU_BAR r_helloworldbasic_menubar - { - titles = - { - MENU_TITLE { menu_pane = r_helloworldbasic_menu; } - }; - } - -

                  This RESOURCE definition defines the r_helloworldbasic_menubar menu -bar declared in EIK_APP_INFO. The MENU_TITLE statement -maps to the Options softkey, which opens the defined MENU_PANE resources -when selected.

                  -// ----------------------------------------------------------------------------- -// -// r_helloworldbasic_menu -// Menu for "Options" -// -// ----------------------------------------------------------------------------- -// -RESOURCE MENU_PANE r_helloworldbasic_menu - { - items = - { - // added the new Options menu command here - MENU_ITEM - { - command = EHelloWorldBasicCommand1; - txt = STRING_hewb_command1; - }, - MENU_ITEM - { - command = EHelloWorldBasicCommand2; - txt = STRING_hewb_command2; - }, - MENU_ITEM - { - command = EHelloWorldBasicCommand3; - txt = STRING_r_hewb_command3; - }, - MENU_ITEM - { - command = EAknSoftkeyExit; - txt = STRING_r_hewb_exit; - } - }; - } - -

                  This RESOURCE definition defines the r_helloworldbasic_menu menu -opened when Option is selected. Four menu items are offered: Hello, Hello -from file, Hello from edit, and Exit. -The command definitions indicate which event is returned -by the application framework when the option is selected and the txt declarations -provide the strings used in the menu. The enumerated command command -IDs here are listed in the helloworldbasic.hrh file, -with the exception of EAknSoftkeyExit, which is a command -ID available from avkon.hrh.

                  -// ----------------------------------------------------------------------------- -// -// Resources for messages. -// -// ----------------------------------------------------------------------------- -// -RESOURCE TBUF32 r_hewb_command1_text { buf=STRING_r_hewb_command1_text; } -RESOURCE TBUF32 r_hewb_file_text { buf=STRING_r_hewb_file_text; } -RESOURCE TBUF32 r_hewb_caption_string { buf=STRING_r_hewb_caption_string; } - -

                  These RESOURCE definitions define TBUF32 resources -that can be read in the application implementation code later with the StringLoader class.

                  -// ---------------------------------------------------------------------------- -// -// r_helloworldbasic_localisable_app_info -// -// ---------------------------------------------------------------------------- -// -RESOURCE LOCALISABLE_APP_INFO r_helloworldbasic_localisable_app_info - { - short_caption = STRING_hewb_caption_string; - caption_and_icon = - CAPTION_AND_ICON_INFO - { - caption = STRING_hewb_caption_string; - - number_of_icons = 1; - icon_file = "\\resource\\apps\\Helloworldbasic_aif.mif"; - }; - } - -

                  This RESOURCE definition defines the localizable -information for the HelloWorldBasic registration file, where:

                  -
                    -
                  • r_helloworldbasic_localisable_app_info is -the resource identifier

                  • -
                  • STRING_hewb_caption_string is the symbolic -ID for HelloWorld, which is used for both the short and -long caption

                  • -
                  • there is one icon for HelloWorldBasic and it is in -the \\resource\\apps\\Helloworldbasic_aif.mif file

                    -
                  • -
                  -// ---------------------------------------------------------------------------- -// -// r_dialog_text_edit_query -// -// ---------------------------------------------------------------------------- -// -RESOURCE DIALOG r_dialog_text_edit_query - { - flags = EGeneralQueryFlags; - buttons = R_AVKON_SOFTKEYS_OK_CANCEL; - items = - { - DLG_LINE - { - type = EAknCtQuery; - id = EGeneralQuery; - control = AVKON_DATA_QUERY - { - layout = EDataLayout; - label = ""; - control = EDWIN - { - width = 32; - maxlength = 32; - lines = 1; - }; - }; - } - }; - } -// End of File - -

                  This RESOURCE definition defines the resource required -for a dialog used in theHelloWorldBasic application. For more information -on defining DIALOG resources, see Using -Dialog API.

                  + + + + + +helloworldbasic.rss +

                  In the Symbian platform, resource files are used to define UI components +such as status panes, CBA +(Control Button Area) buttons, menu +bars, views, +dialogs, strings, and constants used in applications.

                  +

                  For more information about resource files, see Managing +resource files.

                  +// RESOURCE IDENTIFIER +NAME HEWB // 4 letter ID + + +

                  This NAME statement defines the mandatory identifier for this resource +file, which is unique within this application. For more information, see Resource file structure.

                  +// INCLUDES +#include <eikon.rh> +#include <avkon.rh> + +

                  These are preprocessor statements for EIKON and AVKON files +provided in the ./Epoc32/include sub-folder. They are +required for data structures used in the resource file. For more information +on the available preprocessor statements in resource files, see Resource file structure.

                  +#include <avkon.rsg> + +

                  These is a preprocessor statement for a generated resource file provided +in the ./Epoc32/include subfolder that provides a list +of symbolic IDs that point to compiled resources. For more on Symbian precompiled +options, see Precompiled resource values available from the Symbian platform.

                  +#include <appinfo.rh> + +

                  This is a preprocessor statement for an AVKON file +provided in the ./Epoc32/include subfolder that is required +for the data structure used for the localizable information for the application +registration resource file.

                  +#include "HelloWorldBasic.hrh" +

                  This is a preprocessor statement for the HelloWorldBasic custom +command IDs. For more on custom command IDs, see Creating resource header files.

                  +#include "HelloWorldBasic.rls" + +

                  This is a preprocessor statement for the file used to manage building +the localized strings for the HelloWorldBasic application. For more +on internationalization and localization, see Internationalization +and localization.

                  +// RESOURCE DEFINITIONS +// ----------------------------------------------------------------------------- +// +// Define the resource file signature +// This resource should be empty. +// +// ----------------------------------------------------------------------------- +// +RESOURCE RSS_SIGNATURE + { + } + + +

                  This is the required RESOURCE definition that indicates +the version of this resource file. For this application, no version is defined.

                  +// ----------------------------------------------------------------------------- +// +// Default Document Name +// +// ----------------------------------------------------------------------------- +// +RESOURCE TBUF r_default_document_name + { + buf="HEWB"; + } + + +

                  This is the required RESOURCE definition that defines +the name used if the helloworldbasicdocument class needs +to store a document.

                  +// ----------------------------------------------------------------------------- +// +// Define default menu and CBA key. +// +// ----------------------------------------------------------------------------- +// +RESOURCE EIK_APP_INFO + { + menubar = r_helloworldbasic_menubar; + cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT; + } + +

                  This is the required RESOURCE definition that defines +the resource used for constructing the menu bar and the Control Button Area +(CBA) buttons used in the application. The menu bar is constructed later in +this resource file. The CBA buttons declaration uses a precompiled symbolic +ID from the avkon.rsg file, which in turns points to +a compiled resource that provides an Options text above +the left softkey and an Exit text above the right softkey. +The application framework handles the event generated by selection of the Options softkey +and opens the MENU_PANE resource. Selection of the Exit softkey +generates a EAknSoftkeyExit event that needs to be handled +by your code. For more information on event handling, see Event +handling.

                  +// ----------------------------------------------------------------------------- +// +// r_helloworldbasic_menubar +// Menubar for HelloWorldBasic example +// +// ----------------------------------------------------------------------------- +// +RESOURCE MENU_BAR r_helloworldbasic_menubar + { + titles = + { + MENU_TITLE { menu_pane = r_helloworldbasic_menu; } + }; + } + +

                  This RESOURCE definition defines the r_helloworldbasic_menubar menu +bar declared in EIK_APP_INFO. The MENU_TITLE statement +maps to the Options softkey, which opens the defined MENU_PANE resources +when selected.

                  +// ----------------------------------------------------------------------------- +// +// r_helloworldbasic_menu +// Menu for "Options" +// +// ----------------------------------------------------------------------------- +// +RESOURCE MENU_PANE r_helloworldbasic_menu + { + items = + { + // added the new Options menu command here + MENU_ITEM + { + command = EHelloWorldBasicCommand1; + txt = STRING_hewb_command1; + }, + MENU_ITEM + { + command = EHelloWorldBasicCommand2; + txt = STRING_hewb_command2; + }, + MENU_ITEM + { + command = EHelloWorldBasicCommand3; + txt = STRING_r_hewb_command3; + }, + MENU_ITEM + { + command = EAknSoftkeyExit; + txt = STRING_r_hewb_exit; + } + }; + } + +

                  This RESOURCE definition defines the r_helloworldbasic_menu menu +opened when Option is selected. Four menu items are offered: Hello, Hello +from file, Hello from edit, and Exit. +The command definitions indicate which event is returned +by the application framework when the option is selected and the txt declarations +provide the strings used in the menu. The enumerated command command +IDs here are listed in the helloworldbasic.hrh file, +with the exception of EAknSoftkeyExit, which is a command +ID available from avkon.hrh.

                  +// ----------------------------------------------------------------------------- +// +// Resources for messages. +// +// ----------------------------------------------------------------------------- +// +RESOURCE TBUF32 r_hewb_command1_text { buf=STRING_r_hewb_command1_text; } +RESOURCE TBUF32 r_hewb_file_text { buf=STRING_r_hewb_file_text; } +RESOURCE TBUF32 r_hewb_caption_string { buf=STRING_r_hewb_caption_string; } + +

                  These RESOURCE definitions define TBUF32 resources +that can be read in the application implementation code later with the StringLoader class.

                  +// ---------------------------------------------------------------------------- +// +// r_helloworldbasic_localisable_app_info +// +// ---------------------------------------------------------------------------- +// +RESOURCE LOCALISABLE_APP_INFO r_helloworldbasic_localisable_app_info + { + short_caption = STRING_hewb_caption_string; + caption_and_icon = + CAPTION_AND_ICON_INFO + { + caption = STRING_hewb_caption_string; + + number_of_icons = 1; + icon_file = "\\resource\\apps\\Helloworldbasic_aif.mif"; + }; + } + +

                  This RESOURCE definition defines the localizable +information for the HelloWorldBasic registration file, where:

                  +
                    +
                  • r_helloworldbasic_localisable_app_info is +the resource identifier

                  • +
                  • STRING_hewb_caption_string is the symbolic +ID for HelloWorld, which is used for both the short and +long caption

                  • +
                  • there is one icon for HelloWorldBasic and it is in +the \\resource\\apps\\Helloworldbasic_aif.mif file

                    +
                  • +
                  +// ---------------------------------------------------------------------------- +// +// r_dialog_text_edit_query +// +// ---------------------------------------------------------------------------- +// +RESOURCE DIALOG r_dialog_text_edit_query + { + flags = EGeneralQueryFlags; + buttons = R_AVKON_SOFTKEYS_OK_CANCEL; + items = + { + DLG_LINE + { + type = EAknCtQuery; + id = EGeneralQuery; + control = AVKON_DATA_QUERY + { + layout = EDataLayout; + label = ""; + control = EDWIN + { + width = 32; + maxlength = 32; + lines = 1; + }; + }; + } + }; + } +// End of File + +

                  This RESOURCE definition defines the resource required +for a dialog used in theHelloWorldBasic application. For more information +on defining DIALOG resources, see Using +Dialog API.

                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6B231E96-CD4B-5D8E-9AAC-D533784E0E3B_d0e20975_href.jpg Binary file Symbian3/PDK/Source/GUID-6B231E96-CD4B-5D8E-9AAC-D533784E0E3B_d0e20975_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6B231E96-CD4B-5D8E-9AAC-D533784E0E3B_d0e22942_href.jpg Binary file Symbian3/PDK/Source/GUID-6B231E96-CD4B-5D8E-9AAC-D533784E0E3B_d0e22942_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6B8BA8A8-AD56-55BA-9659-15091E988FB7.dita --- a/Symbian3/PDK/Source/GUID-6B8BA8A8-AD56-55BA-9659-15091E988FB7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6B8BA8A8-AD56-55BA-9659-15091E988FB7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,30 +9,27 @@ --> -HTTP -Client ExampleThis example shows how to use HTTP APIs. -
                  Description

                  This -updated C++ application demonstrates simple HTTP GET and POST transactions -using the HTTP Client API. Basic HTTP authentication is also supported.

                  -
                  Download

                  Click -on the following link to download the example: Httpclientexample.zip

                  Click: browse to view the example code.

                  -
                  Building and -configuring

                  To build the example:

                    -
                  • You can build the example -from your IDE or the command line.

                    If you use an IDE, import the bld.inf file -of the example into your IDE, and use the build command of the IDE.

                    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:

                    bldmake -bldfiles

                    abld build

                    How to use bldmake and How to use abld describe -how to use the SBSv1 build tools.

                  • -
                  • For the emulator, the -example builds an executable called httpexampleclient.exe in -the epoc32\release\winscw\<udeb or urel>\ folder.

                  • +HTTP Client ExampleThis example shows how to use HTTP APIs. +
                    Description

                    This updated C++ application demonstrates simple HTTP GET and +POST transactions using the HTTP Client API. Basic HTTP authentication +is also supported.

                    +
                    Download

                    Click on the following link to download the example: Httpclientexample.zip

                    Click: browse to view the example code.

                    +
                    Building +and configuring

                    To build the example:

                      +
                    • You can build +the example from your IDE or the command line.

                      If you use +an IDE, import the bld.inf file of the example +into your IDE, and use the build command of the IDE.

                      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:

                      bldmake bldfiles

                      abld +build

                    • +
                    • For the emulator, +the example builds an executable called httpexampleclient.exe in the epoc32\release\winscw\<udeb or urel>\ folder.

                    -Simple Client -Session guide -HTTP Overview - +Simple +Client Session guide +HTTP +Overview
                    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6B9041F7-79A6-5CCA-9B4D-B8EF377FD378-GENID-1-12-1-17-1-1-8-1-1-9-1-7-1-5-1-7-1.dita --- a/Symbian3/PDK/Source/GUID-6B9041F7-79A6-5CCA-9B4D-B8EF377FD378-GENID-1-12-1-17-1-1-8-1-1-9-1-7-1-5-1-7-1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ - - - - - -Building -ROM Tutorial Describes how to build a ROM that will use demand paging. It assumes -that the configuration files have been suitably modified. -

                    This is the final -step required to build a ROM that can use Writable Data Paging (WDP). The -previous steps required to produce a ROM image that can use Writable Data -Paging (WDP) are:

                      -
                    • Configuration -Tutorial

                    • -
                    • oby -tutorial

                    • -
                    • mmp tutorial

                    • -

                    It is assumed that the both the configuration files and the -media drivers have been modified to use demand paging.

                    - - -If the new OBY file appears before base.iby, then -no change to the configuration of the rombuild command is needed. - - -If the new OBY file appears after base.iby, then USE_DATA_PAGING must -be defined on the command line (along with PAGED_ROM, USE_CODE_PAGING -and CODE_PAGING_FROM_ROFS) - USE_DATA_PAGING, PAGED_ROM, USE_CODE_PAGING and CODE_PAGING_FROM_ROFS are -macros that are used to indicate which types of paging is to be used. If they -are specified in the parameter list for buildrom (with -D in fount of it) -then that type of paging will be implemented. - - -

                    Executing the buildrom -command builds the ROM image with no errors or warnings.

                    -buildrom example

                    An -example of a buildrom command that produces a demand paging ROM is:

                    buildrom –D_NAND2 -DWITH_FLEXIBLE_MM –DPAGED_ROM –DUSE_CODE_PAGING –DCODE_PAGING_FROM_ROFS –DUSE_DATA_PAGING h4hrp techview MyDPConfig
                    -
                    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6B9041F7-79A6-5CCA-9B4D-B8EF377FD378.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-6B9041F7-79A6-5CCA-9B4D-B8EF377FD378.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,45 @@ + + + + + +Building +ROM Tutorial Describes how to build a ROM that will use demand paging. It assumes +that the configuration files have been suitably modified. +

                    This is the final +step required to build a ROM that can use Writable Data Paging (WDP). The +previous steps required to produce a ROM image that can use Writable Data +Paging (WDP) are:

                      +
                    • Configuration +Tutorial

                    • +
                    • oby +tutorial

                    • +
                    • mmp tutorial

                    • +

                    It is assumed that the both the configuration files and the +media drivers have been modified to use demand paging.

                    + + +If the new OBY file appears before base.iby, then +no change to the configuration of the rombuild command is needed. + + +If the new OBY file appears after base.iby, then USE_DATA_PAGING must +be defined on the command line (along with PAGED_ROM, USE_CODE_PAGING +and CODE_PAGING_FROM_ROFS) + USE_DATA_PAGING, PAGED_ROM, USE_CODE_PAGING and CODE_PAGING_FROM_ROFS are +macros that are used to indicate which types of paging is to be used. If they +are specified in the parameter list for buildrom (with -D in fount of it) +then that type of paging will be implemented. + + +

                    Executing the buildrom +command builds the ROM image with no errors or warnings.

                    +buildrom example

                    An +example of a buildrom command that produces a demand paging ROM is:

                    buildrom –D_NAND2 -DWITH_FLEXIBLE_MM –DPAGED_ROM –DUSE_CODE_PAGING –DCODE_PAGING_FROM_ROFS –DUSE_DATA_PAGING h4hrp techview MyDPConfig
                    +
                    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6B97D07F-DF2A-5CF1-84A9-84DBE7CB2115.dita --- a/Symbian3/PDK/Source/GUID-6B97D07F-DF2A-5CF1-84A9-84DBE7CB2115.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6B97D07F-DF2A-5CF1-84A9-84DBE7CB2115.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,7 +17,7 @@

                    See the latest version of the public System Model from the Symbian foundation.

                    System model relationship - +
                    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6B9E5B8D-E2F7-5972-ABFB-49F7F466EBBD_d0e547082_href.png Binary file Symbian3/PDK/Source/GUID-6B9E5B8D-E2F7-5972-ABFB-49F7F466EBBD_d0e547082_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6B9E5B8D-E2F7-5972-ABFB-49F7F466EBBD_d0e554538_href.png Binary file Symbian3/PDK/Source/GUID-6B9E5B8D-E2F7-5972-ABFB-49F7F466EBBD_d0e554538_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6B9F014D-4445-4259-8ED2-1BA70B5800FE-master.jpg Binary file Symbian3/PDK/Source/GUID-6B9F014D-4445-4259-8ED2-1BA70B5800FE-master.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6B9F014D-4445-4259-8ED2-1BA70B5800FE_d0e42963_href.jpg Binary file Symbian3/PDK/Source/GUID-6B9F014D-4445-4259-8ED2-1BA70B5800FE_d0e42963_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6BA9989F-6D45-5D77-BC79-DE4B5DD35A6C_d0e346428_href.png Binary file Symbian3/PDK/Source/GUID-6BA9989F-6D45-5D77-BC79-DE4B5DD35A6C_d0e346428_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6BA9989F-6D45-5D77-BC79-DE4B5DD35A6C_d0e352379_href.png Binary file Symbian3/PDK/Source/GUID-6BA9989F-6D45-5D77-BC79-DE4B5DD35A6C_d0e352379_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6BD861E5-7F33-513D-8B35-CFA47E3E82F3.dita --- a/Symbian3/PDK/Source/GUID-6BD861E5-7F33-513D-8B35-CFA47E3E82F3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6BD861E5-7F33-513D-8B35-CFA47E3E82F3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,7 +21,7 @@ access the functions with the CTelephony class.

                    Telephony API for Applications - Block Diagram - +
                  Description

                  The CTelephony class provides a limited set of telephony functions to client applications. The CTelephony is built on top of the core, multimode diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6C069F43-207C-5C6A-B9F6-3865BE8E70E8.dita --- a/Symbian3/PDK/Source/GUID-6C069F43-207C-5C6A-B9F6-3865BE8E70E8.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,134 +0,0 @@ - - - - - -Variant -configuration file syntax -

                  Purpose

                  A variant configuration file (.var) -defines settings that are specific to a variant. It is used to modify certain -aspects of an existing build platform.

                  -
                  Syntax

                  KEYWORD [OPERATION] -[VALUE]

                  A summary of keywords, operations and values -is given below:

                  Keyword

                  Possible keywords are as follows:

                  - - - -

                  VARIANT

                  -

                  Indicates that VALUE is the name of the variant -configuration.

                  -
                  - -

                  VIRTUAL

                  -

                  Indicates that the variant is meant only for grouping variants and -not to be used as a build configuration.

                  -
                  - -

                  EXTENDS

                  -

                  Indicates that the variant extends an existing variant configuration.

                  -
                  - -

                  VARIANT_HRH

                  -

                  Specifies the pre-included header (.hrh) file -that defines feature macros.

                  -
                  - -

                  BUILD_INCLUDE

                  -

                  Specifies the location of the files to be included when building -the binary.

                  -
                  - -

                  ROM_INCLUDE

                  -

                  Specifies the location of the files to be included when building -the ROM image containing the variant binary.

                  -
                  - - -

                  Note: If VARIANT_HRH keyword is not present, then /epoc32/include/variant/name.hrh is -used.

                  operation

                  The possible operations are set, append and prepend. -These operations provide the flexibility of extending the existing include -paths within the .var file. The operations are applicable -only to the BUILD_INCLUDE and ROM_INCLUDE keywords.

                  Example

                  # default.var -VARIANT default -BUILD_INCLUDE set /epoc32/include -BUILD_INCLUDE append /epoc32/include/variant -ROM_INCLUDE set /epoc32/rom/include # phone.var -VARIANT phone -EXTENDS default -BUILD_INCLUDE append /epoc32/include/variant/phone -ROM_INCLUDE prepend /epoc32/rom/phone

                  For the variant phone the -include lists will be:

                  BUILD (/epoc32/include, /epoc32/include/variant, /epoc32/include/variant/phone) -ROM (/epoc32/rom/phone, /epoc32/rom/include)

                  value

                  Value -can be a variant name, a file name or a directory name. for example, myphone -or /epoc32/tools/variant/name.var.

                    -
                  • Use '/' as the path separator between files and directories.

                  • -
                  • Begin all paths with '/' implying that they are relative to EPOCROOT.

                  • -

                  Example

                  An example of a variant:

                  VARIANT name -VIRTUAL -EXTENDS parent -VARIANT_HRH /epoc32/include/variant/something.hrh -BUILD_INCLUDE set directoryA -BUILD_INCLUDE append directoryB -BUILD_INCLUDE prepend directoryC -ROM_INCLUDE set directoryD -ROM_INCLUDE append directoryE -ROM_INCLUDE prepend directoryF - -

                  Notes

                    -
                  • All .var files -must exist in /epoc32/tools / variant.

                  • -
                  • A default variant configuration -file (default.var) must exist in /epoc32/tools/variant/.

                  • -
                  • The name of the variant -configuration file (.var) must be same as the variant name. For example, if -the variant name is myvar, then the variant configuration file must -be named as myvar.var.

                  • -
                  • Each variant must have -a default <variant_name>.hrh file at /epoc32/include/variant/. -If you want to use any other .hrh file under EPOCROOT, -use the VARIANT_HRH keyword to specify its name along with -the relative path.

                  • -
                  • A default variant cannot -be VIRTUAL.

                  • -
                  -
                  Example

                  An example of a variant:

                  VARIANT name -VIRTUAL -EXTENDS parent -VARIANT_HRH /epoc32/include/variant/something.hrh -BUILD_INCLUDE set directoryA -BUILD_INCLUDE append directoryB -BUILD_INCLUDE prepend directoryC -ROM_INCLUDE set directoryD -ROM_INCLUDE append directoryE -ROM_INCLUDE prepend directoryF - -
                  -
                  Notes
                    -
                  • All .var files -must exist in /epoc32/tools / variant.

                  • -
                  • A default variant configuration -file (default.var) must exist in /epoc32/tools/variant/.

                  • -
                  • The name of the variant -configuration file (.var) must be same as the variant name. For example, if -the variant name is myvar, then the variant configuration file must -be named as myvar.var.

                  • -
                  • Each variant must have -a default <variant_name>.hrh file at /epoc32/include/variant/. -If you want to use any other .hrh file under EPOCROOT, -use the VARIANT_HRH keyword to specify its name along with -the relative path.

                  • -
                  • A default variant cannot -be VIRTUAL.

                  • -
                  - -How to build -feature based variants -How to build -ROMs with variants - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6C1D941B-ADD1-5BD3-9045-53B66253316B.dita --- a/Symbian3/PDK/Source/GUID-6C1D941B-ADD1-5BD3-9045-53B66253316B.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -epocallowdlldata

                  epocallowdlldata

                  epocallowdlldata statement allows you to use global writeable static data in DLLs.

                  See Static data for issues with using the writeable static data.

                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6C2A9928-5E5D-5F41-89C1-49C0EF14F900_d0e171043_href.png Binary file Symbian3/PDK/Source/GUID-6C2A9928-5E5D-5F41-89C1-49C0EF14F900_d0e171043_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6C2A9928-5E5D-5F41-89C1-49C0EF14F900_d0e177111_href.png Binary file Symbian3/PDK/Source/GUID-6C2A9928-5E5D-5F41-89C1-49C0EF14F900_d0e177111_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6C9355AF-80BA-5DBD-81A4-E9475A118C94_d0e464030_href.png Binary file Symbian3/PDK/Source/GUID-6C9355AF-80BA-5DBD-81A4-E9475A118C94_d0e464030_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6C9355AF-80BA-5DBD-81A4-E9475A118C94_d0e469875_href.png Binary file Symbian3/PDK/Source/GUID-6C9355AF-80BA-5DBD-81A4-E9475A118C94_d0e469875_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6CB40FC5-5CBF-592C-B27D-29922C3815DC.dita --- a/Symbian3/PDK/Source/GUID-6CB40FC5-5CBF-592C-B27D-29922C3815DC.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ - - - - - -library

                  abld [ test ] library [-k] [-v] [ platform ] [ program ]

                  This command creates the import libraries for the DLLs in your component by calling the library target provided in makefiles generated by makmake.

                  Import libraries are generated directly from frozen .def files, so exported functions will not be incorporated into import libraries until these functions are frozen with abld - freeze.

                  The import libraries are created implicitly as part of the build activity carried out by abld target (and thus abld build), so it isn’t generally necessary to call this command separately if projects are listed in the component description file in order of dependency—dependent projects appearing after those projects they depend upon.

                  If there are mutual imports between projects within your component then abld library can be called explicitly, though mutual imports are often a sign of poor software design.

                  An import library will not be regenerated if it has a later date stamp than the corresponding frozen .def file.

                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6CDDDD1E-BDB9-5C61-8EFD-8B3369F5A12D.dita --- a/Symbian3/PDK/Source/GUID-6CDDDD1E-BDB9-5C61-8EFD-8B3369F5A12D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6CDDDD1E-BDB9-5C61-8EFD-8B3369F5A12D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,149 +9,134 @@ --> -P.I.P.S. -Overview -

                  P.I.P.S. supplies a new framework of POSIX 'C' APIs to be used by Symbian -developers with RTOS, Linux or Microsoft Windows® knowledge. The new APIs -are packaged into industry standard libraries - libc, libm, libpthread and libdl - and will help reduce development costs.

                  -
                  Purpose

                  The -Symbian platform already provides a library called 'ESTLIB', -which includes a subset of Standard C APIs. This was created to allow the -Java virtual machine to run on the Symbian platform rather than to allow applications -written in C to be ported to the Symbian platform. Furthermore, the functionality -provided by ESTLIB is not fully compliant with the Standard -C and POSIX standards. Symbian intends to deprecate ESTLIB once -P.I.P.S. is mature.

                  The P.I.P.S. libraries are included in ROM on -certain smartphones based on Symbian OS v9.3 onwards. For smartphones based -on earlier versions of Symbian platform, a freely downloadable SIS file is -available from the Symbian Developer Network (specifically http://developer.symbian.org/wiki/index.php/Open_C_and_Open_C%2B%2B_Quick_Start) -and can be installed on any Symbian OS v9.x smartphones.

                  -
                  Required background

                  The -differences between the Symbian platform and other operating systems

                  The -Symbian platform is an operating system designed for mobile devices and comes -in the form of many libraries that contain hundreds of classes and thousands -of member functions.

                  The Symbian platform has been specifically designed -to provide efficient memory and power management.

                  P.I.P.S. has been -introduced to the Symbian platform to make it more attractive to third party -Symbian developers with C/C++ experience and to allow them to port their applications -to the Symbian platform with greater ease.

                  The P.I.P.S. initiative -aims to reduce the development cost of porting software to run on the Symbian -platform. It achieves this by providing a POSIX-like API layer above the Symbian -platform. Given the structure of the Symbian platform, however, it is not -possible to provide a fully compliant API and some functionality, such as, fork() and exec() are -not supported. This guide details such non-compliance and recommended alternatives.

                  Specific -differences between the Symbian platform and Unix-like systems are described -in the relevant sections of this guide.

                  What P.I.P.S. is not

                  The -P.I.P.S. environment is not a UNIX® application environment. You will -not be able to run a UNIX application on the Symbian platform 'as is'. At -a minimum, you will need to create a .mmp file and a bld.inf file -for the application and rebuild the application's source code for the Symbian -platform. For further information, see The -Symbian build process section.

                  If the application does not -work at the first attempt, you may have to modify the application code to -replace missing APIs or port the required APIs to extend the P.I.P.S. environment. -To find out more about porting C libraries to the Symbian platform, see the P.I.P.S. Porting Tutorials sections.

                  The -P.I.P.S. environment is not 100% POSIX compliant and it is not officially -certified as POSIX compatible. However, the implementation is as compliant -as the underlying Symbian platform allows it to be. For example, P.I.P.S. -does not provide the APIs fork() and exec(), -but it does provide popen(), mkfifo() and -so on, which can be used to implement well known alternative patterns. For -further information, see the Process -Creation section.

                  -
                  Architecture

                  P.I.P.S. -provides an API layer above the native Symbian platform APIs that is more -closely aligned with industry standard APIs.

                  The core P.I.P.S. libraries -are:

                    -
                  • libc: -Standard C and POSIX APIs - includes support for files, sockets, pipes, message -queues, shared memory APIs and environment variables

                  • -
                  • libm: -Standard C maths support APIs

                  • -
                  • libpthread: -Standard POSIX threading APIs

                  • -
                  • libdl: -Standard C dynamic loading and symbol lookup APIs (only ordinal lookup is -supported on pre-Symbian OS v9.3 releases).

                  • -

                  The first three libraries listed above are seeded from FreeBSD.

                  The diagram below shows the high -level architecture of the P.I.P.S. environment.

                  +P.I.P.S. Overview +

                  P.I.P.S. supplies a new framework of POSIX 'C' APIs to be used +by Symbian developers with RTOS, Linux or Microsoft Windows® knowledge. +The new APIs are packaged into industry standard libraries - libc, libm, libpthread and libdl - and will help reduce development costs.

                  +
                  Purpose

                  The Symbian platform already provides a library called 'ESTLIB', which includes a subset of Standard C APIs. This +was created to allow the Java virtual machine to run on the Symbian +platform rather than to allow applications written in C to be ported +to the Symbian platform. Furthermore, the functionality provided by ESTLIB is not fully compliant with the Standard C and POSIX +standards. Symbian intends to deprecate ESTLIB once +P.I.P.S. is mature.

                  The P.I.P.S. libraries are included in +ROM on certain smartphones based on Symbian OS v9.3 onwards. For smartphones +based on earlier versions of Symbian platform, a freely downloadable +SIS file is available from the Symbian Developer Network (specifically http://developer.symbian.org/wiki/index.php/Open_C_and_Open_C%2B%2B_Quick_Start) and can be installed on any Symbian OS v9.x smartphones.

                  +
                  Required +background

                  The differences between the Symbian platform +and other operating systems

                  The Symbian platform is an +operating system designed for mobile devices and comes in the form +of many libraries that contain hundreds of classes and thousands of +member functions.

                  The Symbian platform has been specifically +designed to provide efficient memory and power management.

                  P.I.P.S. has been introduced to the Symbian platform to make it more +attractive to third party Symbian developers with C/C++ experience +and to allow them to port their applications to the Symbian platform +with greater ease.

                  The P.I.P.S. initiative aims to reduce +the development cost of porting software to run on the Symbian platform. +It achieves this by providing a POSIX-like API layer above the Symbian +platform. Given the structure of the Symbian platform, however, it +is not possible to provide a fully compliant API and some functionality, +such as, fork() and exec() are +not supported. This guide details such non-compliance and recommended +alternatives.

                  Specific differences between the Symbian platform +and Unix-like systems are described in the relevant sections of this +guide.

                  What P.I.P.S. is not

                  The P.I.P.S. environment +is not a UNIX® application environment. You will not be able +to run a UNIX application on the Symbian platform 'as is'. At a minimum, +you will need to create a .mmp file and a bld.inf file for the application and rebuild the application's +source code for the Symbian platform.

                  If the application does +not work at the first attempt, you may have to modify the application +code to replace missing APIs or port the required APIs to extend the +P.I.P.S. environment. To find out more about porting C libraries to +the Symbian platform, see the P.I.P.S. Porting +Tutorials sections.

                  The P.I.P.S. environment is not +100% POSIX compliant and it is not officially certified as POSIX compatible. +However, the implementation is as compliant as the underlying Symbian +platform allows it to be. For example, P.I.P.S. does not provide the +APIs fork() and exec(), but it does +provide popen(), mkfifo() and +so on, which can be used to implement well known alternative patterns. +For further information, see the Process Creation section.

                  +
                  Architecture

                  P.I.P.S. provides an API layer above the native Symbian platform +APIs that is more closely aligned with industry standard APIs.

                  The core P.I.P.S. libraries are:

                    +
                  • libc: Standard C and POSIX APIs - includes support for files, sockets, +pipes, message queues, shared memory APIs and environment variables

                  • +
                  • libm: Standard C maths support APIs

                  • +
                  • libpthread: Standard POSIX threading APIs

                  • +
                  • libdl: Standard C dynamic loading and symbol lookup APIs (only ordinal +lookup is supported on pre-Symbian OS v9.3 releases).

                  • +

                  The first three libraries listed above are seeded from FreeBSD.

                  The diagram below shows the high level architecture of the P.I.P.S. +environment.

                  P.I.P.S. environment architecture - -

                  This diagram shows how P.I.P.S. fits in with the Symbian platform, -and also how C/C++ applications, additional C shared libraries and hybrid -applications developed by third party Symbian developers using P.I.P.S. fit -in.

                  P.I.P.S. environment is based on industry-standard APIs. These -standards include

                    -
                  • Standard C (stdC) -and

                  • + +

                    This diagram shows how P.I.P.S. fits in with the Symbian +platform, and also how C/C++ applications, additional C shared libraries +and hybrid applications developed by third party Symbian developers +using P.I.P.S. fit in.

                    P.I.P.S. environment is based on industry-standard +APIs. These standards include

                      +
                    • Standard C (stdC) and

                    • POSIX.

                    • -

                    The P.I.P.S. environment is a mandatory part of Symbian OS v9.5 onward.

                    For -devices already in the market, a SIS file is freely downloadable from the -Forum Nokia site (specifically http://www.forum.nokia.com/Technology_Topics/Development_Platforms/Open_C_and_C++/) -and can be installed on any v9.x phone.

                    Components

                    P.I.P.S. -is based on an industry-standard API and system behaviour.  The relevant -industry standards are Open Group standards and include Standard C (stdC), -POSIX, GNU C library (glibc) and Standard C++ (stdC++).

                    The -diagram below shows how the Standard C libraries and exported applications -fit into the native platform.

                    +

                  The P.I.P.S. environment is a mandatory part of Symbian OS +v9.5 onward.

                  For devices already in the market, a SIS file +is freely downloadable from the Forum Nokia site (specifically http://www.forum.nokia.com/Technology_Topics/Development_Platforms/Open_C_and_C++/) and can be installed on any v9.x phone.

                  Components

                  P.I.P.S. is based on an industry-standard API and system +behaviour.  The relevant industry standards are Open Group standards +and include Standard C (stdC), POSIX, GNU C library +(glibc) and Standard C++ (stdC++).

                  The diagram below shows how the Standard C libraries and +exported applications fit into the native platform.

                  The subsystem components - -

                  The System Call Adaptation Layer (SCAL) is not directly accessed -by the developer wishing to export to the Symbian platform, but through calls -in the P.I.P.S. libraries.

                  Traditionally, in Unix-like systems, system -calls are implemented in the kernel, separate from the C libraries. On the -Symbian platform, the 'System Call Adaptation Layer' runs in the context of -the user side but is considered 'kernel-like' code. APIs that belong to this -layer are tagged as @internalComponent and may only be extended -by Symbian.

                  Note that P.I.P.S. is not a Linux application environment -- you cannot simply run an application that you've compiled for your Linux -desktop. At a minimum, you will have to rebuild your application from source.

                  For -more information, see the Build -Process section.

                  Glue -code (CRT0)

                  Executables built for the Symbian platform enter via E32Main(), -whereas Standard C applications expect to be started from main(). -It is therefore necessary to have 'glue code' (formerly known as CRT0) between -these two functions. The glue code is also responsible for allocating any -system resources, obtaining system and environment data, and initialising -the SCAL infrastructure prior to calling the main() function -of the application. There are two versions of the glue code library - libcrt0.lib (for -use by applications that enter via char main()) and libwcrt0.lib (for -use by applications that enter via wide char main()).

                  To -include the glue code library you should explicity link to libcrt0.lib and libwcrt0.lib statically, -however, if you are using the STDEXE or STDDLL target -types, glue code will be added automatically.

                  P.I.P.S. -Core libraries

                  Currently, the C libraries include the libc, libm, -and libpthread (seeded from FreeBSD) and libdl libraries. The -APIs provided by these libraries are defined to be compliant, via compatibility -features, with the POSIX standard. They are not officially certified as POSIX -compatible but they conform to it mostly.

                  The P.I.P.S. libraries include -the following APIs:

                    -
                  • stdio, -including print(), scanf(), and so on

                  • -
                  • stdlib, -including environment variable support, and so on

                  • + +

                    The System Call Adaptation Layer (SCAL) is not directly +accessed by the developer wishing to export to the Symbian platform, +but through calls in the P.I.P.S. libraries.

                    Traditionally, +in Unix-like systems, system calls are implemented in the kernel, +separate from the C libraries. On the Symbian platform, the 'System +Call Adaptation Layer' runs in the context of the user side but is +considered 'kernel-like' code. APIs that belong to this layer are +tagged as @internalComponent and may only be extended +by Symbian.

                    Note that P.I.P.S. is not a Linux application +environment - you cannot simply run an application that you've compiled +for your Linux desktop. At a minimum, you will have to rebuild your +application from source.

                    Glue code (CRT0)

                    Executables built for the Symbian platform enter via E32Main(), whereas Standard C applications expect to be +started from main(). It is therefore necessary to +have 'glue code' (formerly known as CRT0) between these two functions. +The glue code is also responsible for allocating any system resources, +obtaining system and environment data, and initialising the SCAL infrastructure +prior to calling the main() function of the application. +There are two versions of the glue code library - libcrt0.lib (for use by applications that enter via char main()) and libwcrt0.lib (for use by applications +that enter via wide char main()).

                    To include +the glue code library you should explicity link to libcrt0.lib and libwcrt0.lib statically, however, if you +are using the STDEXE or STDDLL target +types, glue code will be added automatically.

                    P.I.P.S. Core libraries

                    Currently, the C libraries include the libc, libm, and libpthread (seeded +from FreeBSD) and libdl libraries. The APIs provided by these +libraries are defined to be compliant, via compatibility features, +with the POSIX standard. They are not officially certified as POSIX +compatible but they conform to it mostly.

                    The P.I.P.S. libraries +include the following APIs:

                      +
                    • stdio, including print(), scanf(), and so on

                    • +
                    • stdlib, including environment variable support, and so on

                    • string manipulation and character APIs

                    • -
                    • locale and system services

                    • -
                    • searching, sort and -pattern matching

                    • -
                    • IPC mechanisms, including -shared memory, pipes, FIFOs and message queues

                    • -
                    • process creation, including popen(), posix_spawn() and system()

                    • -
                    • networking and socket -APIs

                    • -
                    • mathematical and arithmetic -APIs

                    • -
                    • dynamic loading and -symbol lookup

                    • -
                    • thread creation and -synchronisation mechanisms.

                    • -

                    Due to fundamental differences between Linux and the Symbian platform -kernel architecture, there is no support for fork() and exec(). -For more information, see the Process -Creation section.

                    The original seed directory structure (FreeBSD) is preserved -as fully as possible to allow for future catch-ups to be performed more easily. -The table below shows the original seed directory structure in FreeBSD.

                    +
                  • locale and system +services

                  • +
                  • searching, sort +and pattern matching

                  • +
                  • IPC mechanisms, +including shared memory, pipes, FIFOs and message queues

                  • +
                  • process creation, +including popen(), posix_spawn() and system()

                  • +
                  • networking and +socket APIs

                  • +
                  • mathematical +and arithmetic APIs

                  • +
                  • dynamic loading +and symbol lookup

                  • +
                  • thread creation +and synchronisation mechanisms.

                  • +

                    Due to fundamental differences between Linux and the Symbian +platform kernel architecture, there is no support for fork() and exec(). For more information, see the Process Creation section.

                    The original seed directory structure (FreeBSD) is +preserved as fully as possible to allow for future catch-ups to be +performed more easily. The table below shows the original seed directory +structure in FreeBSD.

                    @@ -160,13 +145,13 @@

                    core\libc

                    -

                    Contains Standard C and POSIX APIs as defined by the Standard C -and POSIX standards

                    +

                    Contains Standard C and POSIX APIs as defined by the Standard +C and POSIX standards

                    core\libm

                    -

                    Contains the Standard C Math API as defined by -Standard C

                    +

                    Contains the Standard C Math API as defined +by Standard C

                    core\libpthread

                    @@ -178,29 +163,30 @@
                    -

                    Although P.I.P.S. provides a wide range of APIs, some of the functionality -required in order to complete a porting task might be missing - this could -be some APIs from an existing library or an entire library.

                    Several -options are available to the user:

                      -
                    • Port the missing APIs -using the P.I.P.S. libraries

                    • -
                    • Implement the missing -APIs on top of the Symbian platform native C++ APIs

                    • -
                    • Use a workaround - for -example, use popen() instead of fork().

                    • -

                    Note: The following are the limitations associated with porting -a UNIX® application:

                      -
                    • Limited stack-space: The -default stack size per thread on Unix-like operating systems ranges from 64 -kB to 1 MB. The Symbian platform, however, defines a default stack size of -8 kB per thread. P.I.P.S. Pthreads use this by default. You can use the pthread_attr_setstacksize() function -to modify this before calling pthread_create().

                    • -
                    • Limited threads -per process: Assuming that all threads use the default stack size (8 kB), -Symbian specifies a limit of 128 threads per process. The limit changes depending -on the stack size you use for individual threads. For example, if you create -your threads with a stack size of 16 kB, the OS only supports 64 threads per -process.

                    • +

                      Although P.I.P.S. provides a wide range of APIs, some +of the functionality required in order to complete a porting task +might be missing - this could be some APIs from an existing library +or an entire library.

                      Several options are available to the +user:

                        +
                      • Port the missing +APIs using the P.I.P.S. libraries

                      • +
                      • Implement the +missing APIs on top of the Symbian platform native C++ APIs

                      • +
                      • Use a workaround +- for example, use popen() instead of fork().

                      • +

                      Note: The following are the limitations associated +with porting a UNIX® application:

                        +
                      • Limited +stack-space: The default stack size per thread on Unix-like operating +systems ranges from 64 kB to 1 MB. The Symbian platform, however, +defines a default stack size of 8 kB per thread. P.I.P.S. Pthreads +use this by default. You can use the pthread_attr_setstacksize() function to modify this before calling pthread_create().

                      • +
                      • Limited +threads per process: Assuming that all threads use the default +stack size (8 kB), Symbian specifies a limit of 128 threads per process. +The limit changes depending on the stack size you use for individual +threads. For example, if you create your threads with a stack size +of 16 kB, the OS only supports 64 threads per process.

                  P.I.P.S. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6CE1C2E0-8F57-57D3-9041-929FE30ECEB9_d0e108704_href.png Binary file Symbian3/PDK/Source/GUID-6CE1C2E0-8F57-57D3-9041-929FE30ECEB9_d0e108704_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6CE1C2E0-8F57-57D3-9041-929FE30ECEB9_d0e111147_href.png Binary file Symbian3/PDK/Source/GUID-6CE1C2E0-8F57-57D3-9041-929FE30ECEB9_d0e111147_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6CEE397C-78E3-40AE-8D39-3DC0980A932A_d0e1604_href.png Binary file Symbian3/PDK/Source/GUID-6CEE397C-78E3-40AE-8D39-3DC0980A932A_d0e1604_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6CEE397C-78E3-40AE-8D39-3DC0980A932A_d0e1608_href.png Binary file Symbian3/PDK/Source/GUID-6CEE397C-78E3-40AE-8D39-3DC0980A932A_d0e1608_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6D7A25E2-9C24-5D44-ADAE-8DD5A3F358D5_d0e230847_href.png Binary file Symbian3/PDK/Source/GUID-6D7A25E2-9C24-5D44-ADAE-8DD5A3F358D5_d0e230847_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6D7A25E2-9C24-5D44-ADAE-8DD5A3F358D5_d0e236842_href.png Binary file Symbian3/PDK/Source/GUID-6D7A25E2-9C24-5D44-ADAE-8DD5A3F358D5_d0e236842_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6D7F3D5C-BC1C-5657-993A-4D7E5712CAF5.dita --- a/Symbian3/PDK/Source/GUID-6D7F3D5C-BC1C-5657-993A-4D7E5712CAF5.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ - - - - - -start -stringtable -

                  start stringtable source-file

                  -

                  [exportpath location]

                  -

                  [headeronly]

                  -

                  end

                  -

                  A start stringtable section specifies the source file -for the string table. A string table is a collection of string identifiers -with corresponding values. The source file is a simple text file with the -file extension .st, and is used to generate the .cpp and .h files -which contains the string constants required for the program. The header file -location is added to the list of userinclude directories -so that the source files may include the generated header. The .cpp file -is added to the list of source files, which are built into a component.

                  -

                  For more information on string tables, refer to String -Pools.

                  -

                  Note: The .cpp file need not be added explicitly -into the list of sources, as this will be done implicitly while building the -component.

                  -

                  The optional exportpath location specifies -a directory location for the generated header file.

                  -

                  The optional headeronly keyword causes only the .h file -to be generated, and no .cpp files are generated or included -into the project. If the exportpath is specified, the .h file -is copied to the specified location.

                  -

                  This example will generate HttpStringConstants.cpp and HttpStringConstants.h using -the HttpStringConstants.st file, and export the HttpStringConstants.h to -the \epoc32\include directory.

                  START STRINGTABLE HttpStringConstants.st -EXPORTPATH \epoc32\include -END -
                  -
                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6DA5C169-5143-5DDD-B4A0-004D4571D9B8_d0e583262_href.png Binary file Symbian3/PDK/Source/GUID-6DA5C169-5143-5DDD-B4A0-004D4571D9B8_d0e583262_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6DA5C169-5143-5DDD-B4A0-004D4571D9B8_d0e632550_href.png Binary file Symbian3/PDK/Source/GUID-6DA5C169-5143-5DDD-B4A0-004D4571D9B8_d0e632550_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita --- a/Symbian3/PDK/Source/GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6DAF85AD-E412-5823-81C2-FC1755A90A84.dita Fri Jul 16 17:23:46 2010 +0100 @@ -34,7 +34,7 @@ the behaviour that allows an element to operate with the Comms Database. [See accessing the database or words to that effect.]

                  - +
                  The Element Id

                  The iElementId data member of CMDBElement is @@ -55,7 +55,7 @@ number and a 7 bit number. The 8 bit number is the Table Id and the 7 bit number is the Column Id. The Type Id and the Record Id are in defined locations in the 32 bit number iElementId.

                  - +

                  The header file comsdat.h contains the constants that define the location of these Ids in the 32 bit number:

                  @@ -84,7 +84,7 @@ an element are defined by the bits in the element. The TCDAttributeFlags enum defines the access levels of an element. These bits are stored in the fourth byte of the iElementId member of CMDBElement.

                  - +

                  KCDMaskShowAttributes in the header file comsdat.h defines the location of these access control bits in the 32 bit number.

                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6DE7E0C8-A75E-5F09-BEC1-180602BF2051_d0e244940_href.png Binary file Symbian3/PDK/Source/GUID-6DE7E0C8-A75E-5F09-BEC1-180602BF2051_d0e244940_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6DE7E0C8-A75E-5F09-BEC1-180602BF2051_d0e250951_href.png Binary file Symbian3/PDK/Source/GUID-6DE7E0C8-A75E-5F09-BEC1-180602BF2051_d0e250951_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6DF52DDC-B03C-5971-94C8-0E9BAAB949FD.dita --- a/Symbian3/PDK/Source/GUID-6DF52DDC-B03C-5971-94C8-0E9BAAB949FD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6DF52DDC-B03C-5971-94C8-0E9BAAB949FD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,7 +9,7 @@ --> -Drawing Text

                  This topic provides examples that demonstrate how to draw a line of text and text in a colored box.

                  Text

                  The basic way to draw text is to call CGraphicsContext::DrawText() with a point specifying the bottom left position, as shown below:

                  Before calling, you must use the graphics context to:

                  1. Set the font to use

                  2. Set the pen color for the text

                  // In this example, we use one of the standard font styles +Drawing Text

                  This topic provides examples that demonstrate how to draw a line of text and text in a colored box.

                  Text

                  The basic way to draw text is to call CGraphicsContext::DrawText() with a point specifying the bottom left position, as shown below:

                  Before calling, you must use the graphics context to:

                  1. Set the font to use

                  2. Set the pen color for the text

                  // In this example, we use one of the standard font styles CFont* fontUsed = iEikonEnv->TitleFont(); gc.UseFont(fontUsed); @@ -17,7 +17,7 @@ TPoint pos(50,50); _LIT(KExampleText,"blacktext"); -gc.DrawText(KExampleText,pos);
                  Text in a box

                  To draw text in a box, you must specify:

                  • a rectangle to draw the text in

                  • an offset from the top of the rectangle to the text baseline: to center the text, add half the height of the rectangle to half the height of the font's ascent

                  • the text alignment mode: in the example, left alignment is used

                  • a margin: the left margin for left-aligned text, or the right margin for right-aligned text

                  The following figure show how these fit together:

                  In addition to the font and pen color, you can also set the brush for filling the box.

                  ... +gc.DrawText(KExampleText,pos);
                  Text in a box

                  To draw text in a box, you must specify:

                  • a rectangle to draw the text in

                  • an offset from the top of the rectangle to the text baseline: to center the text, add half the height of the rectangle to half the height of the font's ascent

                  • the text alignment mode: in the example, left alignment is used

                  • a margin: the left margin for left-aligned text, or the right margin for right-aligned text

                  The following figure show how these fit together:

                  In addition to the font and pen color, you can also set the brush for filling the box.

                  ... // Draw some text left justified in a box, // Offset so text is just inside top of box diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6E161670-EBC6-599B-8EB8-2E48C8EA57CC_d0e471461_href.jpg Binary file Symbian3/PDK/Source/GUID-6E161670-EBC6-599B-8EB8-2E48C8EA57CC_d0e471461_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6E161670-EBC6-599B-8EB8-2E48C8EA57CC_d0e477297_href.jpg Binary file Symbian3/PDK/Source/GUID-6E161670-EBC6-599B-8EB8-2E48C8EA57CC_d0e477297_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6E1DE1E4-1B09-541C-8708-9126E69B42CE.dita --- a/Symbian3/PDK/Source/GUID-6E1DE1E4-1B09-541C-8708-9126E69B42CE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6E1DE1E4-1B09-541C-8708-9126E69B42CE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -47,7 +47,7 @@ of resource control at the level of register interface to hardware resource controller (DXXXPowerResourceController)

                  - +
                  Concepts
                  • Power resources

                  • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6E221034-9A01-53AB-8374-315C38CCA21E.dita --- a/Symbian3/PDK/Source/GUID-6E221034-9A01-53AB-8374-315C38CCA21E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6E221034-9A01-53AB-8374-315C38CCA21E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -37,7 +37,7 @@ wait until EProfileCreated event is reported in the observer. When the event is received the profile is created.

                    - +

                    The following code snippet shows how to create and save a profile.

                    /*Client must create an instance of the CSIP class. The API used for this is, here TUid must be an application UID.*/ CSIP* CSIP::NewL(const TUid& aUid, MSIPObserver& aObserver); @@ -111,7 +111,7 @@ wait until it gets a notification through the MSIPProfileRegistryObserver callback interface about the profile registration.

                    - +

                    The following code snippet shows how to enable a SIP profile.

                    /*With the assumption that the profile was created and is saved to the persistent storage. */ //Create an Instance of SIP client @@ -333,7 +333,7 @@
                  • The registration status of the profile is set to Registered.

                  The following sequence diagram shows how to enable a profile to refresh.

                  - +

                  The following code describes how to refresh enable a profile.

                  //Checks if the profile is already enabled and requests the Profile Agent to refresh it. // If the profile is not enabled it leaves with KErrArgument. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6E2F23B0-4765-5E4E-9B15-9F1D0EC5C28B_d0e471337_href.jpg Binary file Symbian3/PDK/Source/GUID-6E2F23B0-4765-5E4E-9B15-9F1D0EC5C28B_d0e471337_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6E2F23B0-4765-5E4E-9B15-9F1D0EC5C28B_d0e477173_href.jpg Binary file Symbian3/PDK/Source/GUID-6E2F23B0-4765-5E4E-9B15-9F1D0EC5C28B_d0e477173_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6E3AF264-6149-51FA-BBA0-68E2DB679048_d0e137909_href.png Binary file Symbian3/PDK/Source/GUID-6E3AF264-6149-51FA-BBA0-68E2DB679048_d0e137909_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6E3AF264-6149-51FA-BBA0-68E2DB679048_d0e140158_href.png Binary file Symbian3/PDK/Source/GUID-6E3AF264-6149-51FA-BBA0-68E2DB679048_d0e140158_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6E4BA263-5A75-5E8F-9E3A-5517C52DF67E_d0e384771_href.png Binary file Symbian3/PDK/Source/GUID-6E4BA263-5A75-5E8F-9E3A-5517C52DF67E_d0e384771_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6E4BA263-5A75-5E8F-9E3A-5517C52DF67E_d0e390624_href.png Binary file Symbian3/PDK/Source/GUID-6E4BA263-5A75-5E8F-9E3A-5517C52DF67E_d0e390624_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6E4CAA18-635E-5476-8CE4-DCA69C05CC07.dita --- a/Symbian3/PDK/Source/GUID-6E4CAA18-635E-5476-8CE4-DCA69C05CC07.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6E4CAA18-635E-5476-8CE4-DCA69C05CC07.dita Fri Jul 16 17:23:46 2010 +0100 @@ -31,13 +31,10 @@
                • The libc.lib file contains the definitions of all functions that are defined in the header files associated with this example.

                • The libcrt0.lib file provides the E32Main() function, which is the entry point for the main() function of the example.

                • -

                  The -Symbian build process describes how to build this example.

                  For the emulator, the example builds an executable +

                  For the emulator, the example builds an executable file called hybridapp.exe in the epoc32\release\winscw\<udeb or urel>\ directory.

                  Hybrid Applications -Build -Process
                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6E52C463-5489-591F-859D-68EAD5BA80FD.dita --- a/Symbian3/PDK/Source/GUID-6E52C463-5489-591F-859D-68EAD5BA80FD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6E52C463-5489-591F-859D-68EAD5BA80FD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,6 +9,90 @@ --> -Multimedia Framework Guide

                  This document introduces the Multimedia Framework (MMF) audio and video client interfaces.

                  Purpose

                  Multimedia Framework (MMF) provides several client interfaces that encapsulate a lightweight plugin framework. These interfaces enable you to manipulate the audio and video features of the Symbian platform.

                  Architectural Relationships

                  The following diagram shows how the MMF client interfaces interact with the Multimedia Controller Framework and the Media Device Framework (MDF).

                  - Multimedia Framework - client utilities -

                  MMF Controller Framework

                  The MMF Controller Framework provides support for multimedia plugins within the Symbian platform. The main type of plugin for the MMF Controller Framework is the controller plugin. Each controller plugin provides support for one or more multimedia formats, for example, MP3 or AVI.

                  Note: In addition to controller plugins, the Multimedia framework can also be extended through format encoder/decoder, codec, and sink/source plugins. For more information about plugins, see How to write Multimedia Framework plugins.

                  The player and recorder interfaces of both audio and video and also the audio converter interface use the controller plugins provided by the MMF Controller Framework. These plugins provide the functionality to convert, interpret, and play audio and video data. The resultant data from the plugins can then be directed to one or more sinks such as a file, or directly to a screen or lower level device driver.

                  The video recorder interface can also interact with the Onboard Camera, through a video controller plugin, to capture video. For more information about capturing video, see Video Capture Tutorial.

                  Note: Tone player and audio streaming are also provided as part of the MMF but do not interact with controller plugins. Input and output is already in a known data format and so does not require a plugin for encoding or decoding. As a result, they bypass the MMF Controller Framework.

                  Media Device Framework

                  Media Device Framework is the layer below the controller plugins and above the hardware. It provides a layer of abstraction for the audio and video hardware. The MDF consists of DevSound, for audio input and output, and DevVideo for video.

                  For more information about DevSound, see DevSound Overview. For more information about DevVideo, see DevVideo Overview.

                  DRM Support

                  The Symbian platform provides support for playback of Digital Rights Management (DRM) protected audio and video content by making use of the Content Access Framework (CAF). For more information about the CAF, see Content Access Framework.

                  Note: In order to access any DRM protected content using Symbian multimedia, the client process must have the DRM capability.

                  Description

                  The features made available by the MMF client interfaces are:

                  • Audio playing, recording, and conversion - An interface consisting of three classes; CMdaAudioPlayerUtility, CMdaAudioRecorderUtility, and CMdaAudioConvertUtility. These classes provide methods to create, play, and manipulate audio data stored in files, descriptors, and URLs.

                  • Audio streaming - An interface consisting of two classes; CMdaAudioInputStream and CMdaAudioOutputStream. These classes provide methods for recording and playing audio streams such as audio from a web address.

                    Note: There are no explicit interfaces for video streaming. However, the Onboard Camera can be used to achieve video input streaming, and direct screen access can be used to achieve video output streaming. For more information about the Onboard Camera, see Onboard Camera Overview.

                  • Tone playing - An interface consisting of a single class CMdaAudioToneUtility. This class provides methods for playing and configuring single and sequenced tones as well as DTMF (Dual Tone Multi-Frequency) strings.

                  • Video playing and recording - An interface consisting of two classes CVideoPlayerUtility and CVideoRecorderUtility. These classes provide methods to create, play, and manipulate video clips with or without audio tracks stored in files, descriptors, and URLs.

                  Observer Classes

                  For each multimedia client interface, there is a corresponding mixin class that must be implemented by the client. For example, to use the audio player utility you must implement the observer mixin class MMdaAudioPlayerCallback.

                  When instantiating any of the MMF interfaces, it is necessary to provide a reference to a class that implements the appropriate mixin class. This allows the MMF to notify the client of events that occur and also to notify the client of errors that may occur.

                  Multimedia Framework Tutorials

                  The following tutorials are provided:

                  • How to use the audio convert utility

                  • How to use the audio record utility

                  • How to use the audio player utility

                  • Audio Input Stream Tutorial

                  • Audio Output Stream Tutorial

                  • Video Client Tutorials

                  See Also

                  Audio Client Overview

                  Audio Input Stream Overview

                  Audio Output Stream Overview

                  Video Client Overview

                  \ No newline at end of file +Multimedia Framework Guide +

                  This document introduces the Multimedia Framework (MMF) audio and +video client interfaces.

                  +
                  Purpose

                  Multimedia Framework (MMF) provides several client interfaces +that encapsulate a lightweight plugin framework. These interfaces +enable you to manipulate the audio and video features of the Symbian +platform.

                  +
                  Architectural +Relationships

                  The following diagram shows how the MMF client +interfaces interact with the Multimedia Controller Framework and the +Media Device Framework (MDF).

                  + Multimedia Framework - client utilities + + +

                  MMF Controller Framework

                  The MMF Controller Framework +provides support for multimedia plugins within the Symbian platform. +The main type of plugin for the MMF Controller Framework is the controller +plugin. Each controller plugin provides support for one or more multimedia +formats, for example, MP3 or AVI.

                  Note: In addition +to controller plugins, the Multimedia framework can also be extended +through format encoder/decoder, codec, and sink/source plugins. For +more information about plugins, see How to write Multimedia +Framework plugins.

                  The player and recorder interfaces +of both audio and video and also the audio converter interface use +the controller plugins provided by the MMF Controller Framework. These +plugins provide the functionality to convert, interpret, and play +audio and video data. The resultant data from the plugins can then +be directed to one or more sinks such as a file, or directly to a +screen or lower level device driver.

                  The video recorder interface +can also interact with the Onboard Camera, through a video controller +plugin, to capture video. For more information about capturing video, +see Video Capture +Tutorial.

                  Note: Tone player and audio streaming +are also provided as part of the MMF but do not interact with controller +plugins. Input and output is already in a known data format and so +does not require a plugin for encoding or decoding. As a result, they +bypass the MMF Controller Framework.

                  Media Device Framework

                  Media Device Framework is the +layer below the controller plugins and above the hardware. It provides +a layer of abstraction for the audio and video hardware. The MDF consists +of DevSound, for audio input and output, and DevVideo for video.

                  For more information about DevSound, see DevSound Overview. For more information about DevVideo, see DevVideo Overview.

                  DRM Support

                  The Symbian platform provides support +for playback of Digital Rights Management (DRM) protected audio and +video content by making use of the Content Access Framework (CAF). +For more information about the CAF, see Content Access Framework.

                  Note: In order to access any DRM protected content +using Symbian multimedia, the client process must have the DRM capability.

                  +
                  Description

                  The features made available by the MMF client interfaces are:

                    +
                  • Audio playing, +recording, and conversion - An interface consisting of three classes; CMdaAudioPlayerUtility, CMdaAudioRecorderUtility, and CMdaAudioConvertUtility. These classes provide +methods to create, play, and manipulate audio data stored in files, +descriptors, and URLs.

                  • +
                  • Audio streaming +- An interface consisting of two classes; CMdaAudioInputStream and CMdaAudioOutputStream. These classes provide +methods for recording and playing audio streams such as audio from +a web address.

                    Note: There are no explicit interfaces +for video streaming. However, the Onboard Camera can be used to achieve +video input streaming, and direct screen access can be used to achieve +video output streaming. For more information about the Onboard Camera, +see Onboard +Camera Overview.

                  • +
                  • Tone playing +- An interface consisting of a single class CMdaAudioToneUtility. This class provides methods for playing and configuring single +and sequenced tones as well as DTMF (Dual Tone Multi-Frequency) strings.

                  • +
                  • Video playing +and recording - An interface consisting of two classes CVideoPlayerUtility and CVideoRecorderUtility. These classes provide +methods to create, play, and manipulate video clips with or without +audio tracks stored in files, descriptors, and URLs.

                  • +

                  Observer Classes

                  For each multimedia client interface, +there is a corresponding mixin class that must be implemented by the +client. For example, to use the audio player utility you must implement +the observer mixin class MMdaAudioPlayerCallback.

                  When instantiating any of the MMF interfaces, it is necessary +to provide a reference to a class that implements the appropriate +mixin class. This allows the MMF to notify the client of events that +occur and also to notify the client of errors that may occur.

                  +
                  Multimedia +Framework Tutorials

                  The following tutorials are provided:

                    +
                  • How to use the audio +convert utility

                  • +
                  • Audio Input +Stream Tutorial

                  • +
                  • Audio Output Stream +Tutorial

                  • +
                  • Video Client Tutorials

                  • +
                  +
                  See +Also

                  Audio Client Overview

                  Audio Input Stream +Overview

                  Audio Output Stream +Overview

                  Video Client Overview

                  +
                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6E5625BF-88E0-579A-B2CA-32F3EBDD83CB_d0e525710_href.png Binary file Symbian3/PDK/Source/GUID-6E5625BF-88E0-579A-B2CA-32F3EBDD83CB_d0e525710_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6E5625BF-88E0-579A-B2CA-32F3EBDD83CB_d0e533170_href.png Binary file Symbian3/PDK/Source/GUID-6E5625BF-88E0-579A-B2CA-32F3EBDD83CB_d0e533170_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6E82BAAC-64B4-59F7-81AC-CF4C76445935_d0e449944_href.png Binary file Symbian3/PDK/Source/GUID-6E82BAAC-64B4-59F7-81AC-CF4C76445935_d0e449944_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6E82BAAC-64B4-59F7-81AC-CF4C76445935_d0e455789_href.png Binary file Symbian3/PDK/Source/GUID-6E82BAAC-64B4-59F7-81AC-CF4C76445935_d0e455789_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6EAC30BC-B8F6-5007-A672-DF1D4895599F_d0e430837_href.png Binary file Symbian3/PDK/Source/GUID-6EAC30BC-B8F6-5007-A672-DF1D4895599F_d0e430837_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6EAC30BC-B8F6-5007-A672-DF1D4895599F_d0e436682_href.png Binary file Symbian3/PDK/Source/GUID-6EAC30BC-B8F6-5007-A672-DF1D4895599F_d0e436682_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6EB38F10-849D-5763-96A0-A0A108982D67_d0e291028_href.png Binary file Symbian3/PDK/Source/GUID-6EB38F10-849D-5763-96A0-A0A108982D67_d0e291028_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6EB38F10-849D-5763-96A0-A0A108982D67_d0e297020_href.png Binary file Symbian3/PDK/Source/GUID-6EB38F10-849D-5763-96A0-A0A108982D67_d0e297020_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6EB98EE9-AEB9-59C1-A1D8-FFD2E96707F2_d0e448231_href.png Binary file Symbian3/PDK/Source/GUID-6EB98EE9-AEB9-59C1-A1D8-FFD2E96707F2_d0e448231_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6EB98EE9-AEB9-59C1-A1D8-FFD2E96707F2_d0e454076_href.png Binary file Symbian3/PDK/Source/GUID-6EB98EE9-AEB9-59C1-A1D8-FFD2E96707F2_d0e454076_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6EF9F8EA-AD61-4AEA-9457-FE645EED2E4D.dita --- a/Symbian3/PDK/Source/GUID-6EF9F8EA-AD61-4AEA-9457-FE645EED2E4D.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ - - - - - -Keypad -functions -

                  This section describes the typical keypad functions. Some application-specific -functions may exist in addition to the typical keypad functions.

                  -
                  Using -keypad functions in applications

                  For implementation -information on keypad functions, see Key -events.

                  -
                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6F1ED7D0-5F41-4587-89AA-8DDE7AEC916F.dita --- a/Symbian3/PDK/Source/GUID-6F1ED7D0-5F41-4587-89AA-8DDE7AEC916F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-6F1ED7D0-5F41-4587-89AA-8DDE7AEC916F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,430 +1,384 @@ - - - - -What's new in Symbian^3 -Symbian^3 introduces a lot of new features that enhance -communication, connectivity, multimedia, graphics, security and the -overall usability of Symbian devices. These features benefit operators, -application developers and device creators by making it easier to -create feature-rich devices and applications. - - - - -

                  If you are moving from a older version of Symbian platform to Symbian^3, -see Porting -applications to Symbian^3.

                  -
                  - - - -Technology Domain -New Features - - - - -Data Communications -
                    -
                  • FreeWay or Three Plane Comms Architecture: The Symbian -platform now supports a new IP networking architecture. The new architecture -significantly improves data flow performance and makes it easier for -third-party developers to integrate new technologies, for example -firewalls and hotspot authenticators. It also implements automatic -roaming between different access points, for example WLAN and GPRS. -For more information, see Goals of the -Comms Architecture.

                  • -
                  • One-Click Connectivity (OCC): The Symbian platform now -provides a new way of managing data connections on the Symbian platform. -OCC builds on the existing Application Level Roaming (ALR) solution. -This feature makes the user's interaction with "connecting" and "select -access point" dialogs significantly simple and easier. For more information, -see Extended -Connection Preferences.

                  • -
                  -
                  - -Device Connectivity -
                    -
                  • MTP Device Services Extension Specification: The Symbian -MTP implementation now supports the MTP device services extension -to the Media Transfer Protocol (MTP). For more information, see MTP Device Services Extension Specification.

                  • -
                  • AVRCP (Audio/Video Remote Control Profile) v1.4 Support: A Symbian device user can now see music track names and browse playlists -directly from the screen of a AVRCP v1.4 enabled Bluetooth headset -or remote control.

                  • -
                  • Centralized AT-command Handling: The Symbian platform -now enables all AT commands to be handled using the same mechanism -regardless of the connection type. For more information, refer to -the AT Extension Plug-in API.

                  • -
                  -
                  - -Device Management -
                    -
                  • Support for Open Mobile Alliance (OMA) Management Objects -(MO): The Symbian platform now supports OMA MO like Software Component -Management Object (SCOMO) v1.0, Device Capability Management Object -(DCMO) v1.0 and Connectivity Management Object (ConnMO). It also supports -Nokia Standard Streaming MO. Some enhancements have been made to Browser -MO and Email MO.

                  • -
                  • Other Device Management Enhancements: The Symbian platform -now provides an improved device Lock with security and an enhanced -firmware update installation experience.

                  • -
                  -
                  - -Location -
                    -
                  • Landmark-based URL Parser: The Symbian platform now -supports a parser that converts between landmark objects and URLs. -The parser supports a URL format that is compliant with Ovi Maps. -For more information, see CPosLandmarkParser.

                  • -
                  • New Management Object (MO) for A-GPS: The Symbian platform -now provides an enhancement to Secure User Plane Location (SUPL) now -allows the service provider to provide two access points for a SUPL -server in the MO. This improves the system stability because it acts -as a fallback mechanism in case one of the access points is unavailable.

                  • -
                  • Support for Application Processor Engine (APE) Centric Location -Architecture: Symbian devices can now use the new architecture -based on the APE that offers standardized session IDs on network privacy -and classes that use the SUPL. The architecture converges technology -from OS, middleware and application software layers.

                  • -
                  • Support for Location Based Services (LBS) SUPL Positioning -Module (PSY): The Symbian platform now enables the LBS SUPL PSY -to allow GPS-enabled devices to handle network-based SUPL location -requests. This includes Cell ID based positioning and assistance data -exchange as part of SUPL v2.0. For more information, see SUPL Protocol -Module.

                  • -
                  • Support for GPSCost5.0D and GPSCost4.0D GPS chipsets: The Symbian platform now uses the APE-centric architecture to support -GPSCost5.0D and GPSCost4.0D chipsets. A new A-GPS Nokia Positioning -Engine (NPE) integration module replaces the OS LBS subsystem reference -A-GPS version.

                  • -
                  • Support for LBS SUPL Radio Resource LCS Protocol (RRLP): The Symbian platform now uses the APE-centric architecture to support -NPE and RRLP on GPS-enabled device.

                  • -
                  • SUPL 2.0 Trigger Support: The Symbian platform now provides -SUPL 2.0 trigger support that allows the requester to receive location -updates periodically, which is both network and device initiated.

                  • -
                  • Location-based Triggering Enhancements: The Symbian -platform now includes key enhancements that enable integration with -an Context framework to develop plug-ins and increase support for -total and active triggers. An enhanced, dedicated common gateway interface -enables the client to provide multiple CGIs to create a trigger, which -is fired on successful matching with at least one CGI.

                  • -
                  • Enhanced Location Acquisition API to support LocationKnownPositionArea.

                  • -
                  • Here and Now: The Symbian platform now includes Here -and now that offers easy-to-use Web services related to the user's -current location. Here and now allows the user to check the local -weather and get other topical information while on the move.

                  • -
                  -
                  - -Multimedia -
                    -
                  • Mobile TV DVB-H Receiver HAI: Mobile TV Receiver is -a small internal system but does so much more than traditional TV. -It is broadcasted in a multi-grounded environment with high speed -by using low battery power and low memory usage. For more information, -see Mobile -TV DVBH Receiver HAI Component.

                  • -
                  • OpenMAX IL: OpenMAX IL is a low-level interface used -in mobile devices that allows the Multimedia Device Framework (MDF) -to load, control, connect and unload audio, video and imaging components. For more information, see OpenMAX IL Collection.

                  • -
                  • Thin Adaptation of A3F DevSound: The A3F DevSound is -one of the key component in the Sound Device collection that provides -access to the hardware accelerator in audio technology. For more information, -see A3F -DevSound Component.

                  • -
                  • Image Processor library: The Image Processor is an independent -and high-level API and framework which is developed for mobile imaging. -The Image Processor has some pluggable advanced image editing libraries -to perform the Panoramic Stitching function and the Speed View function. -For more information, see Image Processor -Library.

                  • -
                  • Camera API Extensions: The Camera API is extended to -support the features such as background processing, continuous digital -zooming, time nudge image capturing and automatic aperture setting. -For more information, see Camera Library.

                  • -
                  • Camera Support for Video Encoding: The Camera supports -mobile device to capture video frames which are encoded in the H264 -format. For more information, see Using the Encoded -H264 Video Frames to Capture Video.

                  • -
                  • 3GP File Format Library: The 3GP Library component is -a Multimedia plug-in which supports for reading and writing 3GP, 3G2, -and MP4 files. The 3GP Library is also extended to support larger -3GP or MP4 files. For more information, see 3GP Library -Component.

                  • -
                  • Video Playback from Non-user Interface Thread: Media -Client Video Display is a standalone library used by the Video Client -library to support video playback. For more information, see Media Client -Video Display Library.

                  • -
                  • Video Subtitle CRP: Displays artwork on a video window -using the Video Subtitle CRP component. The Subtitle Graphic library -displays subtitles artwork on the screen through its interaction with -Client Process, Controller Process and WServ Process. For more information, -see Video -Subtitle CRP Component.

                  • -
                  • Dolby Digital Audio Support: The Symbian platform now -supports codecs that enable support for Dolby Digital Audio on Symbian -devices. For more information, see Supported Audio -Codecs.

                  • -
                  • True Pause in Audio Playback: In the audio playback -request the true pause feature is implemented to stop the audio data -at the physical sound device without stopping the buffer traffic. -For more information, see Pausing and -Resuming Audio Play.

                  • -
                  • Global Surface Updates: The Video Render component is -extended to support the global surface updates. For more information, -see Global -Surface Updates.

                  • -
                  • Metadata Utility Library: The Metadata Utility library -belongs to the Metadata Utility Framework (MUF) component that provides -fast metadata access to audio, video and image media files. For more -information, see the Metadata Utility -Library section.

                  • -
                  • UI Patterns or Thumbnails Enhancement: This is a Multimedia -specific pattern enhancement, which includes many UI (User Interface) -features, listed below:

                      -
                    • Multiple customized Home Screens with 6 different widget enabled -screens.

                    • -
                    • Pinch zoom, kinetic scrolling and single-click features.

                    • -
                    • Good screen view with a new UI theme, and renewed icons.

                    • -
                    • Hardware acceleration with fast and responsive UI that creates -new transition effects.

                    • -
                    • Multitasking with Teleport visual task swapper.

                    • -
                    • Intelligent slide functionality for Hybrid touch and QWERTY -slider devices. Video Graphics Array (VGA) Touch supports for VGA -QWERTY mono blocks.

                    • -
                    • VGA Touch helps to control Music player.

                    • -
                  • -
                  • Mobile TV: Mobile TV uses DVB-H receiver to consume -broadcast digital mobile television. The Symbian platform provides -fast and easy access to all videos and TV media content. One key press -opens videos and TV application suite, and user scrolls and selects -the desired video functionality. This media experience is built with -major components such as Videos and TV, video player and Mobile TV. -Videos and TV support high quality video up to 720 per resolution -at 12 Mbps and 30 frames per second.

                  • -
                  • Image Viewer Application: The Image Viewer application -is used when the client opens an image file for viewing. File Manager, -Messaging, Camcorder and Browser S60 components use the Image Viewer -application. It supports Extended ICL JPEG API, which enables a faster -and less memory-consuming way to rotate and zoom images.

                  • -
                  • FM Radio: The FM Radio application is used to listen -FM radio broadcast over the air. FM radio broadcast is a free service.

                  • -
                  • Video Sharing: Using the video sharing service, both -call users can start sharing their device live camera view or pre-recorded -video clip during a normal circuit switched (CS) voice call. The video -sharing feature allows the user to upgrade and downgrade their call -with one-way video at times of need. The video sharing application -uses the Multimedia Comms Engine API.

                  • -
                  -
                  - -Multimedia Applications -
                    -
                  • High-Definition Multimedia Interface (HDMI): The Symbian -platform now supports HDMI technology. HDMI is supported as an external -accessory for audio and video playback for a great television playback -experience. It provides improved data performance and is ideal for -streaming high definition audio and video. The 720p resolution is -supported in still image and video viewing. 5+1 channel audio is also -supported.

                  • -
                  • Home Music Widgets: The Symbian platform now provides -music information through Home Screen Music Widgets. The Home Music -Widgets controls from the Home Screen menu system enables to play -and pause the playing track. The Music Widget supports the Radio Player -and includes the Music Suite Matrix Menu. This menu is configured -through XML and by default supports to launch the functionality listed -below:

                      -
                    • The last played song

                    • -
                    • The music collection view

                    • -
                    • A music shop, or to open the FM radio

                    • -
                  • -
                  • Fusion Player Application: The Symbian platform now -introduces the Fusion Player, which replaces the existing Media Player -and Video Center applications. It enables access to both online video -services and locally stored videos. If DVB-H device is available, -live TV viewing is also possible. The main features supported by the -Fusion player application are as follows:

                      -
                    • To browse stored videos and to see metadata features of the -video, such as title, thumbnail DRM info, size or play-time.

                    • -
                    • To check videos that are pre-installed with the device.

                    • -
                    • To play stored video file in the device.

                    • -
                  • -
                  -
                  - -OS Base Services -
                    -
                  • Writable Data Paging (WDP): The Symbian platform now -supports WDP. This enables efficient use of memory and allows multiple -applications to run at the same time without physically adding more -RAM to the hardware. This leads to a more responsive system when switching -between a number of running applications. For more information, -see Writable -Data Paging.

                  • -
                  • Symmetric multiprocessor (SMP): The Symbian platform -now supports SMP for multi-core processors, such as the ARM Cortex -A9. This allows device integrators to prototype and prove ARM-based -SMP platforms. For more information, see SMP.

                  • -
                  • 64-bit file server: The Symbian platform now supports -files larger than 2 GB. For more information, see Large File Access.

                  • -
                  -
                  - -Productivity -
                    -
                  • Nokia Messaging for Social Networks: Nokia Messaging -Social Networking service is a Nokia-hosted consumer service that -provides easy and affordable mobile access to popular social networking -communities.

                  • -
                  • Enhanced Calendar UI Architecture: Calendar UI architecture -has changed to improve flexibility of calendar for regional, religious, -custom-tailors and xSP calendar service needs. Multiple storages are -also supported. For more information, see Calendar Guide.

                  • -
                  • CalDAV Protocol: Calendar application now supports the -CalDAV Protocol, which is an open calendar synchronization standard -contributed by SUN Microsystems. This enables a user to access scheduling -information on remote servers.

                  • -
                  • Enhanced Contacts Application: The Contacts application -in this release includes the following changes:

                      -
                    • Integration with social media.

                    • -
                    • Support for Remote Contacts Lookup, for example, from post-installed -Mail for Exchange account.

                    • -
                    • Virtual Phonebook API (supports getting access to the user’s -own contact card).

                    • -
                    • Own contact card.

                    • -
                  • -
                  -
                  - -Runtimes -
                    -
                  • The Symbian platform now supports the Open Source based Java -MIDP 2.1.

                  • -
                  • The Symbian platform now supports Browser Application v7.2 -(with Web Run Time 7.2) that includes the following features:

                      -
                    • Browser Control

                    • -
                    • Browser core features

                    • -
                    • Browser Customization

                    • -
                    • Browser plug-ins

                    • -
                    • Browser with touch screen

                    • -
                    • Content Download

                    • -
                    • URI Schemes

                    • -
                    • Display Resolution Optimizations

                    • -
                    • Optical Finger Navigation (OFN)

                    • -
                    • FlashLite 3.1

                    • -
                    • Search Client Integration

                    • -
                    • Expanding Language and Character Set Support

                    • -
                    • Improved Security Prompting

                    • -
                    • Updated Platform Service APIs

                    • -
                    • Visual Task Swapper Support

                    • -
                    • Performance Optimizations

                    • -
                    • Multiple touch/pinch zooming

                    • -
                  • -
                  -
                  - -Security -The Symbian platform now provides an enhanced Security subsystem -that enables device creators to integrate hardware acceleration modules, -which improves the performance of cryptographic algorithms. This is -particularly valuable in intensive real-time use-cases, such as streaming -audio or video over a secure link, where bulk data needs to be encrypted -and decrypted. - - -User Interface -
                    -
                  • ScreenPlay, also known as the New Graphics Architecture -(NGA): This new graphics architecture enables device creators -to take advantage of improved software performance, hardware acceleration -and third party graphics engines. It makes it possible to combine -UI components, graphics and video to create highly innovative UIs. -For more information, see The ScreenPlay -Graphics Architecture.

                  • -
                  • Extended Bitmaps: The Font and Bitmap Server provides -a framework for device creators to add support for their own types -of bitmap compression. Bitmaps that use compression formats that are -provided by device creators are known as extended bitmaps. For more -information, see Extended Bitmaps.

                  • -
                  • Dynamic Direct Screen Access (DSA) Allocation: The Symbian -platform now supports the dynamic allocation of the DSA buffer. For -more information, see Implementing -Dynamic DSA Allocation.

                  • -
                  • Multiple Touch Support: The ScreenPlay version of the -Window Server has been extended to support multiple advanced pointers, -with support for proximity and pressure. The emulator now also supports -multiple advanced pointers. For more information, see Advanced Pointers.

                  • -
                  • Enhanced Touch UI: The touch UI includes the following -improvements:

                      -
                    • Multi-page Home Screen enables the user to navigate between -widgets with a simple flick gesture

                    • -
                    • Capacitive multiple touch events are supported.

                    • -
                    • Tactile Feedback utilizes advanced haptics effects.

                    • -
                  • -

                  For more information about the new features in Graphics, see What's New in -Graphics in Symbian^3.

                  -
                  - - -
                  - - - -New C++ APIs in Symbian^3 -Porting applications to Symbian^3 -Introduction to Symbian^3 - - - - + + + + + +What's new in Symbian^3Symbian^3 introduces a lot of new features that enhance +communication, connectivity, multimedia, graphics, security and the +overall usability of Symbian devices. These features benefit operators, +application developers and device creators by making it easier to +create feature-rich devices and applications. +

                  If you are moving from a older version of Symbian platform to Symbian^3, +see Porting +applications to Symbian^3.

                  + + + + +Technology Domain +New Features + + + + +Data Communications +
                    +
                  • FreeWay or Three Plane Comms Architecture: The Symbian +platform now supports a new IP networking architecture. The new architecture +significantly improves data flow performance and makes it easier for +third-party developers to integrate new technologies, for example +firewalls and hotspot authenticators. It also implements automatic +roaming between different access points, for example WLAN and GPRS. +For more information, see Goals of the Comms +Architecture.

                  • +
                  • One-Click Connectivity (OCC): The Symbian platform now +provides a new way of managing data connections on the Symbian platform. +OCC builds on the existing Application Level Roaming (ALR) solution. +This feature makes the user's interaction with "connecting" and "select +access point" dialogs significantly simple and easier. For more information, +see Extended +Connection Preferences.

                  • +
                  +
                  + +Device Connectivity +
                    + + + +
                  • MTP Device Services Extension Specification: The Symbian +MTP implementation now supports the MTP device services extension +to the Media Transfer Protocol (MTP). For more information, see MTP Device Services Extension Specification.

                  • +
                  • AVRCP (Audio/Video Remote Control Profile) v1.4 Support: A Symbian device user can now see music track names and browse playlists +directly from the screen of a AVRCP v1.4 enabled Bluetooth headset +or remote control.

                  • +
                  • Centralized AT-command Handling: The Symbian platform +now enables all AT commands to be handled using the same mechanism +regardless of the connection type. For more information, refer to +the AT Extension Plug-in API.

                  • +
                  +
                  + +Device Management +
                    +
                  • Support for Open Mobile Alliance (OMA) Management Objects +(MO): The Symbian platform now supports OMA MO like Software Component +Management Object (SCOMO) v1.0, Device Capability Management Object +(DCMO) v1.0 and Connectivity Management Object (ConnMO). It also supports +Nokia Standard Streaming MO. Some enhancements have been made to Browser +MO and Email MO.

                  • +
                  • Other Device Management Enhancements: The Symbian platform +now provides an improved device Lock with security and an enhanced +firmware update installation experience.

                  • +
                  +
                  + +Location +
                    +
                  • Landmark-based URL Parser: The Symbian platform now +supports a parser that converts between landmark objects and URLs. +The parser supports a URL format that is compliant with Ovi Maps. +For more information, see CPosLandmarkParser.

                  • +
                  • New Management Object (MO) for A-GPS: The Symbian platform +now provides an enhancement to Secure User Plane Location (SUPL) now +allows the service provider to provide two access points for a SUPL +server in the MO. This improves the system stability because it acts +as a fallback mechanism in case one of the access points is unavailable.

                  • +
                  • Support for Application Processor Engine (APE) Centric Location +Architecture: Symbian devices can now use the new architecture +based on the APE that offers standardized session IDs on network privacy +and classes that use the SUPL. The architecture converges technology +from OS, middleware and application software layers.

                  • +
                  • Support for Location Based Services (LBS) SUPL Positioning +Module (PSY): The Symbian platform now enables the LBS SUPL PSY +to allow GPS-enabled devices to handle network-based SUPL location +requests. This includes Cell ID based positioning and assistance data +exchange as part of SUPL v2.0. For more information, see SUPL Protocol Module.

                  • +
                  • Support for GPSCost5.0D and GPSCost4.0D GPS chipsets: The Symbian platform now uses the APE-centric architecture to support +GPSCost5.0D and GPSCost4.0D chipsets. A new A-GPS Nokia Positioning +Engine (NPE) integration module replaces the OS LBS subsystem reference +A-GPS version.

                  • +
                  • Support for LBS SUPL Radio Resource LCS Protocol (RRLP): The Symbian platform now uses the APE-centric architecture to support +NPE and RRLP on GPS-enabled device.

                  • +
                  • SUPL 2.0 Trigger Support: The Symbian platform now provides +SUPL 2.0 trigger support that allows the requester to receive location +updates periodically, which is both network and device initiated.

                  • +
                  • Location-based Triggering Enhancements: The Symbian +platform now includes key enhancements that enable integration with +an Context framework to develop plug-ins and increase support for +total and active triggers. An enhanced, dedicated common gateway interface +enables the client to provide multiple CGIs to create a trigger, which +is fired on successful matching with at least one CGI.

                  • +
                  • Enhanced Location Acquisition API to support LocationKnownPositionArea.

                  • +
                  • Here and Now: The Symbian platform now includes Here +and now that offers easy-to-use Web services related to the user's +current location. Here and now allows the user to check the local +weather and get other topical information while on the move.

                  • +
                  +
                  + +Multimedia +
                    +
                  • Mobile TV DVB-H Receiver HAI: Mobile TV Receiver is +a small internal system but does so much more than traditional TV. +It is broadcasted in a multi-grounded environment with high speed +by using low battery power and low memory usage. For more information, see Mobile TV DVBH Receiver +HAI Component.

                  • +
                  • OpenMAX IL: OpenMAX IL is a low-level interface used +in mobile devices that allows the Multimedia Device Framework (MDF) +to load, control, connect and unload audio, video and imaging components. For more information, see OpenMAX IL Collection.

                  • +
                  • Thin Adaptation of A3F DevSound: The A3F DevSound is +one of the key component in the Sound Device collection that provides +access to the hardware accelerator in audio technology. For more information, +see A3F DevSound +Component.

                  • +
                  • Image Processor library: The Image Processor is an independent +and high-level API and framework which is developed for mobile imaging. +The Image Processor has some pluggable advanced image editing libraries +to perform the Panoramic Stitching function and the Speed View function. +For more information, see Image Processor Library.

                  • +
                  • Camera API Extensions: The Camera API is extended to +support the features such as background processing, continuous digital +zooming, time nudge image capturing and automatic aperture setting. +For more information, see Camera Library.

                  • +
                  • Camera Support for Video Encoding: The Camera supports +mobile device to capture video frames which are encoded in the H264 +format. For more information, see Using the Encoded +H264 Video Frames to Capture Video.

                  • +
                  • 3GP File Format Library: The 3GP Library component is +a Multimedia plug-in which supports for reading and writing 3GP, 3G2, +and MP4 files. The 3GP Library is also extended to support larger +3GP or MP4 files. For more +information, see 3GP Library Component.

                  • +
                  • Video Playback from Non-user Interface Thread: Media +Client Video Display is a standalone library used by the Video Client +library to support video playback. For more information, see Media Client Video +Display Library.

                  • +
                  • Video Subtitle CRP: Displays artwork on a video window +using the Video Subtitle CRP component. The Subtitle Graphic library +displays subtitles artwork on the screen through its interaction with +Client Process, Controller Process and WServ Process. For more information, +see Video Subtitle +CRP Component.

                  • +
                  • Dolby Digital Audio Support: The Symbian platform now +supports codecs that enable support for Dolby Digital Audio on Symbian +devices. For more information, +see Supported +Audio Codecs.

                  • +
                  • True Pause in Audio Playback: In the audio playback +request the true pause feature is implemented to stop the audio data +at the physical sound device without stopping the buffer traffic. +For more information, see Pausing and Resuming +Audio Play.

                  • +
                  • Global Surface Updates: The Video Render component is +extended to support the global surface updates. For more information, +see Global +Surface Updates.

                  • +
                  • Metadata Utility Library: The Metadata Utility library +belongs to the Metadata Utility Framework (MUF) component that provides +fast metadata access to audio, video and image media files. For more +information, see the Metadata Utility +Library section.

                  • +
                  • UI Patterns or Thumbnails Enhancement: This is a Multimedia +specific pattern enhancement, which includes many UI (User Interface) +features, listed below:

                      +
                    • Multiple customized Home Screens with 6 different widget enabled +screens.

                    • +
                    • Pinch zoom, kinetic scrolling and single-click features.

                    • +
                    • Good screen view with a new UI theme, and renewed icons.

                    • +
                    • Hardware acceleration with fast and responsive UI that creates +new transition effects.

                    • +
                    • Multitasking with Teleport visual task swapper.

                    • +
                    • Intelligent slide functionality for Hybrid touch and QWERTY +slider devices. Video Graphics Array (VGA) Touch supports for VGA +QWERTY mono blocks.

                    • +
                    • VGA Touch helps to control Music player.

                    • +
                  • +
                  • Mobile TV: Mobile TV uses DVB-H receiver to consume +broadcast digital mobile television. The Symbian platform provides +fast and easy access to all videos and TV media content. One key press +opens videos and TV application suite, and user scrolls and selects +the desired video functionality. This media experience is built with +major components such as Videos and TV, video player and Mobile TV. +Videos and TV support high quality video up to 720 per resolution +at 12 Mbps and 30 frames per second.

                  • +
                  • Image Viewer Application: The Image Viewer application +is used when the client opens an image file for viewing. File Manager, +Messaging, Camcorder and Browser S60 components use the Image Viewer +application. It supports Extended ICL JPEG API, which enables a faster +and less memory-consuming way to rotate and zoom images.

                  • +
                  • FM Radio: The FM Radio application is used to listen +FM radio broadcast over the air. FM radio broadcast is a free service.

                  • +
                  • Video Sharing: Using the video sharing service, both +call users can start sharing their device live camera view or pre-recorded +video clip during a normal circuit switched (CS) voice call. The video +sharing feature allows the user to upgrade and downgrade their call +with one-way video at times of need. The video sharing application +uses the Multimedia Comms Engine API.

                  • +
                  +
                  + +Multimedia Applications +
                    +
                  • High-Definition Multimedia Interface (HDMI): The Symbian +platform now supports HDMI technology. HDMI is supported as an external +accessory for audio and video playback for a great television playback +experience. It provides improved data performance and is ideal for +streaming high definition audio and video. The 720p resolution is +supported in still image and video viewing. 5+1 channel audio is also +supported.

                  • +
                  • Home Music Widgets: The Symbian platform now provides +music information through Home Screen Music Widgets. The Home Music +Widgets controls from the Home Screen menu system enables to play +and pause the playing track. The Music Widget supports the Radio Player +and includes the Music Suite Matrix Menu. This menu is configured +through XML and by default supports to launch the functionality listed +below:

                      +
                    • The last played song

                    • +
                    • The music collection view

                    • +
                    • A music shop, or to open the FM radio

                    • +
                  • +
                  • Fusion Player Application: The Symbian platform now +introduces the Fusion Player, which replaces the existing Media Player +and Video Center applications. It enables access to both online video +services and locally stored videos. If DVB-H device is available, +live TV viewing is also possible. The main features supported by the +Fusion player application are as follows:

                      +
                    • To browse stored videos and to see metadata features of the +video, such as title, thumbnail DRM info, size or play-time.

                    • +
                    • To check videos that are pre-installed with the device.

                    • +
                    • To play stored video file in the device.

                    • +
                  • +
                  +
                  + +OS Base Services +
                    +
                  • Writable Data Paging (WDP): The Symbian platform now +supports WDP. This enables efficient use of memory and allows multiple +applications to run at the same time without physically adding more +RAM to the hardware. This leads to a more responsive system when switching +between a number of running applications. For more information, see Writable Data Paging.

                  • +
                  • Symmetric multiprocessor (SMP): The Symbian platform +now supports SMP for multi-core processors, such as the ARM Cortex +A9. This allows device integrators to prototype and prove ARM-based +SMP platforms. For more information, +see SMP.

                  • +
                  • 64-bit file server: The Symbian platform now supports +files larger than 2 GB. For +more information, see Large File Access.

                  • +
                  +
                  + +Productivity +
                    +
                  • Nokia Messaging for Social Networks: Nokia Messaging +Social Networking service is a Nokia-hosted consumer service that +provides easy and affordable mobile access to popular social networking +communities.

                  • +
                  • Enhanced Calendar UI Architecture: Calendar UI architecture +has changed to improve flexibility of calendar for regional, religious, +custom-tailors and xSP calendar service needs. Multiple storages are +also supported. For more information, see Calendar Guide.

                  • +
                  • CalDAV Protocol: Calendar application now supports the +CalDAV Protocol, which is an open calendar synchronization standard +contributed by SUN Microsystems. This enables a user to access scheduling +information on remote servers.

                  • +
                  • Enhanced Contacts Application: The Contacts application +in this release includes the following changes:

                      +
                    • Integration with social media.

                    • +
                    • Support for Remote Contacts Lookup, for example, from post-installed +Mail for Exchange account.

                    • +
                    • Virtual Phonebook API (supports getting access to the user’s +own contact card).

                    • +
                    • Own contact card.

                    • +
                  • +
                  +
                  + +Runtimes +
                    +
                  • The Symbian platform now supports the Open Source based Java +MIDP 2.1.

                  • +
                  • The Symbian platform now supports Browser Application v7.2 +(with Web Run Time 7.2) that includes the following features:

                      +
                    • Browser Control

                    • +
                    • Browser core features

                    • +
                    • Browser Customization

                    • +
                    • Browser plug-ins

                    • +
                    • Browser with touch screen

                    • +
                    • Content Download

                    • +
                    • URI Schemes

                    • +
                    • Display Resolution Optimizations

                    • +
                    • Optical Finger Navigation (OFN)

                    • +
                    • FlashLite 3.1

                    • +
                    • Search Client Integration

                    • +
                    • Expanding Language and Character Set Support

                    • +
                    • Improved Security Prompting

                    • +
                    • Updated Platform Service APIs

                    • +
                    • Visual Task Swapper Support

                    • +
                    • Performance Optimizations

                    • +
                    • Multiple touch/pinch zooming

                    • +
                  • +
                  +
                  + +Security +The Symbian platform now provides an enhanced Security subsystem +that enables device creators to integrate hardware acceleration modules, +which improves the performance of cryptographic algorithms. This is +particularly valuable in intensive real-time use-cases, such as streaming +audio or video over a secure link, where bulk data needs to be encrypted +and decrypted. + + +User Interface +
                    +
                  • ScreenPlay, also known as the New Graphics Architecture +(NGA): This new graphics architecture enables device creators +to take advantage of improved software performance, hardware acceleration +and third party graphics engines. It makes it possible to combine +UI components, graphics and video to create highly innovative UIs. +For more information, see The ScreenPlay Graphics +Architecture.

                  • +
                  • Extended Bitmaps: The Font and Bitmap Server provides a framework for device creators +to add support for their own types of bitmap compression. Bitmaps +that use compression formats that are provided by device creators +are known as extended bitmaps. For more information, see Extended Bitmaps.

                  • +
                  • Dynamic Direct Screen +Access (DSA) Allocation: The Symbian platform now supports the +dynamic allocation of the DSA buffer. For more information, see Implementing Dynamic +DSA Allocation.

                  • +
                  • Multiple Touch Support: The ScreenPlay version of the +Window Server has been extended to support multiple advanced pointers, +with support for proximity and pressure. The emulator now also supports +multiple advanced pointers. For more information, see Advanced Pointers.

                  • + +
                  • Enhanced Touch UI: The touch UI includes the following +improvements:

                      +
                    • Multi-page Home Screen enables the user to navigate between +widgets with a simple flick gesture

                    • +
                    • Capacitive multiple touch events are supported.

                    • +
                    • Tactile Feedback utilizes advanced haptics effects.

                    • +
                  • +

                  For more information about the new features in Graphics, see What's New in Graphics +in Symbian^3.

                  +
                  + + +
                  + +New +C++ APIs in Symbian^3 +Porting +applications to Symbian^3 +Introduction +to Symbian^3 + +
                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6FC62A2F-E27F-54A8-A97F-0F42426D1F63_d0e582404_href.png Binary file Symbian3/PDK/Source/GUID-6FC62A2F-E27F-54A8-A97F-0F42426D1F63_d0e582404_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6FC62A2F-E27F-54A8-A97F-0F42426D1F63_d0e631692_href.png Binary file Symbian3/PDK/Source/GUID-6FC62A2F-E27F-54A8-A97F-0F42426D1F63_d0e631692_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6FE79448-5052-46F9-A74E-A128CB367697_d0e80423_href.png Binary file Symbian3/PDK/Source/GUID-6FE79448-5052-46F9-A74E-A128CB367697_d0e80423_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6FE79448-5052-46F9-A74E-A128CB367697_d0e84621_href.png Binary file Symbian3/PDK/Source/GUID-6FE79448-5052-46F9-A74E-A128CB367697_d0e84621_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6FE79448-5052-46F9-A74E-A128CB367697_d0e95436_href.png Binary file Symbian3/PDK/Source/GUID-6FE79448-5052-46F9-A74E-A128CB367697_d0e95436_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6FE79448-5052-46F9-A74E-A128CB367697_d0e99632_href.png Binary file Symbian3/PDK/Source/GUID-6FE79448-5052-46F9-A74E-A128CB367697_d0e99632_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6FFEC753-4006-559C-B8E9-14940CFCD012_d0e218984_href.png Binary file Symbian3/PDK/Source/GUID-6FFEC753-4006-559C-B8E9-14940CFCD012_d0e218984_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-6FFEC753-4006-559C-B8E9-14940CFCD012_d0e225004_href.png Binary file Symbian3/PDK/Source/GUID-6FFEC753-4006-559C-B8E9-14940CFCD012_d0e225004_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-700CD2E2-DBB7-40BD-BC6D-9BC79C5A0BBF_d0e2835_href.png Binary file Symbian3/PDK/Source/GUID-700CD2E2-DBB7-40BD-BC6D-9BC79C5A0BBF_d0e2835_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-700CD2E2-DBB7-40BD-BC6D-9BC79C5A0BBF_d0e2845_href.png Binary file Symbian3/PDK/Source/GUID-700CD2E2-DBB7-40BD-BC6D-9BC79C5A0BBF_d0e2845_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-70202CC9-BC49-539A-8255-4B0B9C24A702.dita --- a/Symbian3/PDK/Source/GUID-70202CC9-BC49-539A-8255-4B0B9C24A702.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-70202CC9-BC49-539A-8255-4B0B9C24A702.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> After Market Application Starter Overview

                  AMA (After Market Application) Starter is a Symbian platform component that manages the launch of AMCs (After Market Components), such as applications and services, at phone boot time.

                  Purpose

                  The main purpose of AMA Starter is to launch AMCs at phone boot time based on the items in a Dynamic Startup Configuration (DSC). A DSC corresponds to a list of items stored in a DSC database. Each item represents an AMC to be launched when the phone is switched on. A DSC can contain zero or more components.

                  The components are launched and monitored (if configured, using System Health Manager) when the DSC list is processed by the System State Manager.

                  Note: DSCs enable the phone boot procedure to be extended after the ROM image has been built. A DSC can include applications installed before or after the ROM is built.

                  Required background

                  To use AMA Starter, familiarity with System State Manager and System State Management Architecture is recommended.

                  Architecture

                  The AMA Starter component is loaded as a DLL and is run by the System State Manager (SSM) component at phone boot time. The launching of AMCs at phone boot time by the AMA Starter component is triggered by the SSM component. Firstly, the EStart component loads the SSM component. Secondly, the SSM passes the DSC defined in the Static Command Lists (SCLs) or policy plug-ins to the AMA Starter component. Thirdly, AMA Starter loads the DSC that results in the launching of the AMCs at phone boot time.

                  Note: Optionally, AMCs can be launched and monitored by the System Health Management component.

                  The following figure illustrates the interactions between AMA Starter and other Symbian platform components:

                  Interaction of AMA Starter and Symbian platform components -
                  APIs API Description

                  RDscStore

                  Provides the client interface for managing the DSC database.

                  CDscItem

                  Contains application/process information required by the AMA Starter to launch an AMA.

                  Typical uses

                  Device creators can use the AMA Starter APIs to manage items in the DSC database. Once a connection has been established with the DSC database, device creators can perform the following tasks:

                  • Add an AMC to the start-up list by adding an item to a DSC using RDscStore::AddItemL().

                  • Modify the start-up behavior of an AMC by modifying the associated item in the DSC using RDscStore::UpdateItemL().

                  • Remove an AMC from the start-up list by removing the associated item from the DSC using RDscStore::DeleteItemL().

                  • Add or remove a DSC from the DSC database using RDscStore::CreateDscL() or RDscStore::DeleteDscL().

                  For more information on how to perform these tasks, see the After Market Application Starter Tutorial section.

                  \ No newline at end of file +
                  APIs API Description

                  RDscStore

                  Provides the client interface for managing the DSC database.

                  CDscItem

                  Contains application/process information required by the AMA Starter to launch an AMA.

                  Typical uses

                  Device creators can use the AMA Starter APIs to manage items in the DSC database. Once a connection has been established with the DSC database, device creators can perform the following tasks:

                  • Add an AMC to the start-up list by adding an item to a DSC using RDscStore::AddItemL().

                  • Modify the start-up behavior of an AMC by modifying the associated item in the DSC using RDscStore::UpdateItemL().

                  • Remove an AMC from the start-up list by removing the associated item from the DSC using RDscStore::DeleteItemL().

                  • Add or remove a DSC from the DSC database using RDscStore::CreateDscL() or RDscStore::DeleteDscL().

                  For more information on how to perform these tasks, see the After Market Application Starter Tutorial section.

                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-70483E81-311F-5247-9F39-3940F20C0EB1_d0e340581_href.png Binary file Symbian3/PDK/Source/GUID-70483E81-311F-5247-9F39-3940F20C0EB1_d0e340581_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-70483E81-311F-5247-9F39-3940F20C0EB1_d0e346532_href.png Binary file Symbian3/PDK/Source/GUID-70483E81-311F-5247-9F39-3940F20C0EB1_d0e346532_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-706263D6-AAE2-40E2-B0B4-D12E253F70A8_d0e103024_href.png Binary file Symbian3/PDK/Source/GUID-706263D6-AAE2-40E2-B0B4-D12E253F70A8_d0e103024_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-706263D6-AAE2-40E2-B0B4-D12E253F70A8_d0e98944_href.png Binary file Symbian3/PDK/Source/GUID-706263D6-AAE2-40E2-B0B4-D12E253F70A8_d0e98944_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7068AB77-5C96-59A3-B975-7923FD843832.dita --- a/Symbian3/PDK/Source/GUID-7068AB77-5C96-59A3-B975-7923FD843832.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7068AB77-5C96-59A3-B975-7923FD843832.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,133 +1,126 @@ - - - - - -Hash -Table - Using Hash Table ClassesThis example application demonstrates some uses of the Hash Table -APIs of the User Library component -

                  Hash table is used to construct the following:

                  -
                    -
                  • Hash Set

                  • -
                  • Hash set of pointers

                  • -
                  • Hash map

                  • -
                  • Hash map of pointers

                  • -
                  -

                  The example also demonstrates performing different operations on these -hash sets/maps, such as, inserting, finding, iterating, and removing items. -A set implements an unordered extensional set of objects and a map implements -an associative array with key and value type using probe sequence hash table.

                  -

                  The overview contains the following sections:

                  -
                    -
                  • Download

                  • -
                  • Description

                  • -
                  • Class summary

                  • -
                  • Build

                  • -
                  -
                  Download

                  Click -on the following link to download the example: HashTableExample.zip

                  Click: browse to view the example code.

                  -
                  Description

                  Hash set

                  The -application constructs a hash set by using the default hash and identity function -for integers and descriptors using the RHashSet template -class, and constructs another hash set by providing a defined custom hash -and identity functions.

                  The application applies the following operations -to the hash set:

                    -
                  • Inserting items using -the RHashSet::Insert() function

                  • -
                  • Finding items using -the RHashSet::Find() function

                  • -
                  • Iterating items using -the RHashSet::TIter class

                  • -
                  • Removing items using -the RHashSet::Remove() function

                  • -

                  Related APIs

                    -
                  • RHashSet::Find()

                  • -
                  • RHashSet::Insert()

                  • -
                  • RHashSet::Remove()

                  • -
                  • RHashSet::TIter - A class which allows iteration -over the elements of a RHashSetclass.

                  • -

                  Hash set of pointers

                  The -application constructs a hash set of pointers using the default hash and identity -function for integers and descriptors using the RPtrHashSet template -class, and constructs another hash set of pointers by providing a defined -custom hash and identity functions.

                  The application applies the following -operations to the hash set of pointers:

                    -
                  • Inserting items using -the RPtrHashSet::Insert() function

                  • -
                  • Finding items using -the RPtrHashSet::Find() function

                  • -
                  • Iterating items using -the RPtrHashSet::TIter class

                  • -
                  • Removing items using -the RPtrHashSet::Remove() function

                  • -

                  Related APIs

                    -
                  • RPtrHashSet::Find()

                  • -
                  • RPtrHashSet::Insert()

                  • -
                  • RPtrHashSet::Remove()

                  • -
                  • RPtrHashSet::TIter - A class which allows iteration -over the elements of a RPtrHashSet class

                  • -

                  Hash map

                  The -application constructs a hash map using the default hash and identity function -for integers and descriptors using the RHashMap template -class, and constructs another hash map by providing a defined custom hash -and identity functions.

                  The application applies the following operations -to the hash map:

                    -
                  • Inserting items using -the RHashMap::Insert() function

                  • -
                  • Finding items using -the RHashMap::Find() function

                  • -
                  • Iterating items using -the RHashMap::TIter class

                  • -
                  • Removing items using -the RHashMap::Remove() function

                  • -
                    -
                  • RHashMap::Find()

                  • -
                  • RHashMap::Insert()

                  • -
                  • RHashMap::Remove()

                  • -
                  • RHashMap::TIter - A class which allows iteration -over the elements of a RHashMap class.

                  • -

                  Hash map of pointers

                  The -application constructs a hash map of pointers using the default hash and identity -function for integers and descriptors using the RPtrHashMap template -class, and constructs another hash map of pointers by providing a defined -custom hash and identity functions.

                  The application applies the following -operations to the hash map of pointers:

                    -
                  • Inserting items using -the RPtrHashMap::Insert() function

                  • -
                  • Finding items using -the RPtrHashMap::Find() function

                  • -
                  • Iterating items using -the RPtrHashMap::TIter class

                  • -
                  • Removing items using -the RPtrHashMap::Remove() function

                  • -

                  Related APIs

                    -
                  • RPtrHashMap::Find()

                  • -
                  • RPtrHashMap::Insert()

                  • -
                  • RPtrHashMap::Remove()

                  • -
                  • RPtrHashMap::TIter - A class which allows iteration -over the elements of a RPtrHashMap class.

                  • -
                  -
                  Class summary
                    -
                  • DefaultHash - A set of common hashing functions -for frequently occurring types.

                  • -
                  • DefaultIdentity - A set of common identity relations -for frequently occurring types.

                  • -
                  • THashFunctions32

                  • -
                  • TIdentityRelation

                  • -
                  • RHashSet

                  • -
                  • RPtrHashMap

                  • -
                  -
                  Build

                  The Symbian build process describes -how to build an application.

                  The HashTableExample builds an executable -called hashtableexample.exe in the standard location -(\epoc32\release\winscw\<build_variant> for CodeWarrior). -After launching the executable, depending on the emulator you are using, you -may need to navigate away from the application launcher/shell screen to view -the console.

                  + + + + + +Hash Table - Using Hash Table ClassesThis example application demonstrates some uses of the +Hash Table APIs of the User Library component +

                  Hash table is used to construct the following:

                  +
                    +
                  • Hash Set

                  • +
                  • Hash set of pointers

                  • +
                  • Hash map

                  • +
                  • Hash map of pointers

                  • +
                  +

                  The example also demonstrates performing different operations on +these hash sets/maps, such as, inserting, finding, iterating, and +removing items. A set implements an unordered extensional set of objects +and a map implements an associative array with key and value type +using probe sequence hash table.

                  +

                  The overview contains the following sections:

                  +
                    +
                  • Download

                  • +
                  • Description

                  • +
                  • Class summary

                  • +
                  • Build

                  • +
                  +
                  Download

                  Click on the following link to download the example: HashTableExample.zip

                  Click: browse to view the example code.

                  +
                  Description

                  Hash set

                  The application constructs a hash set by using the default +hash and identity function for integers and descriptors using the RHashSet template class, and constructs another hash set +by providing a defined custom hash and identity functions.

                  The application applies the following operations to the hash set:

                    +
                  • Inserting items +using the RHashSet::Insert() function

                  • +
                  • Finding items +using the RHashSet::Find() function

                  • +
                  • Iterating items +using the RHashSet::TIter class

                  • +
                  • Removing items +using the RHashSet::Remove() function

                  • +

                  Related APIs

                    +
                  • RHashSet::Find()

                  • +
                  • RHashSet::Insert()

                  • +
                  • RHashSet::Remove()

                  • +
                  • RHashSet::TIter - A class which allows iteration +over the elements of a RHashSetclass.

                  • +

                  Hash set +of pointers

                  The application constructs a hash set of +pointers using the default hash and identity function for integers +and descriptors using the RPtrHashSet template class, +and constructs another hash set of pointers by providing a defined +custom hash and identity functions.

                  The application applies +the following operations to the hash set of pointers:

                    +
                  • Inserting items +using the RPtrHashSet::Insert() function

                  • +
                  • Finding items +using the RPtrHashSet::Find() function

                  • +
                  • Iterating items +using the RPtrHashSet::TIter class

                  • +
                  • Removing items +using the RPtrHashSet::Remove() function

                  • +

                  Related APIs

                    +
                  • RPtrHashSet::Find()

                  • +
                  • RPtrHashSet::Insert()

                  • +
                  • RPtrHashSet::Remove()

                  • +
                  • RPtrHashSet::TIter - A class which allows +iteration over the elements of a RPtrHashSet class

                  • +

                  Hash map

                  The application constructs a hash map using the default +hash and identity function for integers and descriptors using the RHashMap template class, and constructs another hash map +by providing a defined custom hash and identity functions.

                  The application applies the following operations to the hash map:

                    +
                  • Inserting items +using the RHashMap::Insert() function

                  • +
                  • Finding items +using the RHashMap::Find() function

                  • +
                  • Iterating items +using the RHashMap::TIter class

                  • +
                  • Removing items +using the RHashMap::Remove() function

                  • +
                    +
                  • RHashMap::Find()

                  • +
                  • RHashMap::Insert()

                  • +
                  • RHashMap::Remove()

                  • +
                  • RHashMap::TIter - A class which allows +iteration over the elements of a RHashMap class.

                  • +

                  Hash map +of pointers

                  The application constructs a hash map of pointers +using the default hash and identity function for integers and descriptors +using the RPtrHashMap template class, and constructs +another hash map of pointers by providing a defined custom hash and +identity functions.

                  The application applies the following +operations to the hash map of pointers:

                    +
                  • Inserting items +using the RPtrHashMap::Insert() function

                  • +
                  • Finding items +using the RPtrHashMap::Find() function

                  • +
                  • Iterating items +using the RPtrHashMap::TIter class

                  • +
                  • Removing items +using the RPtrHashMap::Remove() function

                  • +

                  Related APIs

                    +
                  • RPtrHashMap::Find()

                  • +
                  • RPtrHashMap::Insert()

                  • +
                  • RPtrHashMap::Remove()

                  • +
                  • RPtrHashMap::TIter - A class which allows +iteration over the elements of a RPtrHashMap class.

                  • +
                  +
                  Class +summary
                    +
                  • DefaultHash - A set of common hashing functions +for frequently occurring types.

                  • +
                  • DefaultIdentity - A set of common identity +relations for frequently occurring types.

                  • +
                  • THashFunctions32

                  • +
                  • TIdentityRelation

                  • +
                  • RHashSet

                  • +
                  • RPtrHashMap

                  • +
                  +
                  Build

                  The Symbian build process describes how to build an application.

                  The HashTableExample builds an executable called hashtableexample.exe in the standard location (\epoc32\release\winscw\<build_variant> for CodeWarrior). +After launching the executable, depending on the emulator you are +using, you may need to navigate away from the application launcher/shell +screen to view the console.

                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-70E1117B-17F0-5CF4-A5D0-35D3BEBB0FEA.dita --- a/Symbian3/PDK/Source/GUID-70E1117B-17F0-5CF4-A5D0-35D3BEBB0FEA.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-70E1117B-17F0-5CF4-A5D0-35D3BEBB0FEA.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,52 +9,49 @@ --> -Position -Area Data ClassesThis document describes the basic and extended position area data -classes that contain information about the accuracy of the position returned -to an application when it calls RPositioner::GetLastKnownPositionArea(). -

                  LBS maintains a cache of previously calculated position fixes. If an application -calls RPositioner::GetLastKnownLocation(), LBS returns -the most recently calculated position. If an application calls RPositioner::GetLastKnownPositionArea(), -LBS returns the position fix that is the best match for the current location -of the mobile device. The current location of the mobile device is estimated -from data received from the network.

                  -

                  The Location Acquisition API defines a set of position area data classes -(figure 1). A client application passes an object of one of these classes -as a parameter when it calls RPositioner::GetLastKnownPositionArea(). -The position area data classes are defined in LbsAreaInfo.h.

                  +Position Area Data ClassesThis document describes the basic and extended position +area data classes that contain information about the accuracy of the +position returned to an application when it calls RPositioner::GetLastKnownPositionArea(). +

                  LBS maintains a cache of previously calculated position fixes. +If an application calls RPositioner::GetLastKnownLocation(), LBS returns the most recently calculated position. If an application +calls RPositioner::GetLastKnownPositionArea(), +LBS returns the position fix that is the best match for the current +location of the mobile device. The current location of the mobile +device is estimated from data received from the network.

                  +

                  The Location Acquisition API defines a set of position area data +classes (figure 1). A client application passes an object of one of +these classes as a parameter when it calls RPositioner::GetLastKnownPositionArea(). The position area data classes are defined in LbsAreaInfo.h.

                  Figure 1. Position Area Data Classes. - + -

                  A brief description of the classes follows. Follow the links to more detailed -reference documentation.

                  +

                  A brief description of the classes follows. Follow the links to +more detailed reference documentation.

                    -
                  • TPositionAreaInfoBase is -the base class of the position area data classes. Applications create an object -of one of the derived classes.

                  • -
                  • TPositionAreaInfo contains -basic information about the accuracy of a returned position. Its defines an -enumerated type TPositionAreaInfo::_TArea that defines -an estimate of how closely the current device position matches the returned -position. The position accuracy estimate can be from country level down to -street level, depending on how much information is available from the network.

                  • -
                  • TPositionAreaExtendedInfo extends TPositionAreaInfo to -provide details about how the accuracy estimate of the returned position was -calculated.

                    An accuracy estimate can be obtained from the network -as some combination of the following:

                      -
                    • Mobile Country Code

                    • -
                    • Mobile Network Code

                    • -
                    • Location Area Code

                    • +
                    • TPositionAreaInfoBase is the base class of the position area data classes. Applications +create an object of one of the derived classes.

                    • +
                    • TPositionAreaInfo contains basic information about the accuracy of a returned position. +Its defines an enumerated type TPositionAreaInfo::_TArea that defines an estimate of how closely the current device position +matches the returned position. The position accuracy estimate can +be from country level down to street level, depending on how much +information is available from the network.

                    • +
                    • TPositionAreaExtendedInfo extends TPositionAreaInfo to provide details about +how the accuracy estimate of the returned position was calculated.

                      An accuracy estimate can be obtained from the network as some +combination of the following:

                        +
                      • Mobile Country +Code

                      • +
                      • Mobile Network +Code

                      • +
                      • Location Area +Code

                      • Cell ID

                      • -

                      LBS uses combinations of the above to derive the accuracy estimate -returned from TPositionAreaInfo::Area(). Your application -can find what types of data were used to calculate the accuracy estimate by -passing an object of class TPositionAreaExtendedInfo to RPositioner::GetLastKnownLocationArea() and -then using the methods shown in figure 1 to check for code and ID matches.

                    • +

                    LBS uses combinations of the above to derive the accuracy +estimate returned from TPositionAreaInfo::Area(). Your application can find what types of data were used to calculate +the accuracy estimate by passing an object of class TPositionAreaExtendedInfo to RPositioner::GetLastKnownLocationArea() and +then using the methods shown in figure 1 to check for code and ID +matches.

                  - -How to Get -Location Information +How +to Get Location Information
                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-70E92884-004F-43B5-B740-B0C95E8E401C_d0e101043_href.png Binary file Symbian3/PDK/Source/GUID-70E92884-004F-43B5-B740-B0C95E8E401C_d0e101043_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-70E92884-004F-43B5-B740-B0C95E8E401C_d0e79397_href.png Binary file Symbian3/PDK/Source/GUID-70E92884-004F-43B5-B740-B0C95E8E401C_d0e79397_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-70E92884-004F-43B5-B740-B0C95E8E401C_d0e83595_href.png Binary file Symbian3/PDK/Source/GUID-70E92884-004F-43B5-B740-B0C95E8E401C_d0e83595_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-70E92884-004F-43B5-B740-B0C95E8E401C_d0e88320_href.png Binary file Symbian3/PDK/Source/GUID-70E92884-004F-43B5-B740-B0C95E8E401C_d0e88320_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-70E92884-004F-43B5-B740-B0C95E8E401C_d0e90989_href.png Binary file Symbian3/PDK/Source/GUID-70E92884-004F-43B5-B740-B0C95E8E401C_d0e90989_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-70E92884-004F-43B5-B740-B0C95E8E401C_d0e92518_href.png Binary file Symbian3/PDK/Source/GUID-70E92884-004F-43B5-B740-B0C95E8E401C_d0e92518_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-70E92884-004F-43B5-B740-B0C95E8E401C_d0e95187_href.png Binary file Symbian3/PDK/Source/GUID-70E92884-004F-43B5-B740-B0C95E8E401C_d0e95187_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-70E92884-004F-43B5-B740-B0C95E8E401C_d0e96964_href.png Binary file Symbian3/PDK/Source/GUID-70E92884-004F-43B5-B740-B0C95E8E401C_d0e96964_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-70FC2D13-493D-433F-9CFB-ACF9F512513F_d0e102231_href.png Binary file Symbian3/PDK/Source/GUID-70FC2D13-493D-433F-9CFB-ACF9F512513F_d0e102231_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-70FC2D13-493D-433F-9CFB-ACF9F512513F_d0e98153_href.png Binary file Symbian3/PDK/Source/GUID-70FC2D13-493D-433F-9CFB-ACF9F512513F_d0e98153_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-711594BD-9B8E-5E8A-A5A9-6C94F65AF064.dita --- a/Symbian3/PDK/Source/GUID-711594BD-9B8E-5E8A-A5A9-6C94F65AF064.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-711594BD-9B8E-5E8A-A5A9-6C94F65AF064.dita Fri Jul 16 17:23:46 2010 +0100 @@ -51,7 +51,7 @@ -

                  IsSupported() returns KErrNone if +

                  IsSupported() returns KErrNone if the feature is supported or else an error message.

                  Querying diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-71271D1C-C385-5687-8A90-46E8B590BB1E_d0e375395_href.png Binary file Symbian3/PDK/Source/GUID-71271D1C-C385-5687-8A90-46E8B590BB1E_d0e375395_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-71271D1C-C385-5687-8A90-46E8B590BB1E_d0e381239_href.png Binary file Symbian3/PDK/Source/GUID-71271D1C-C385-5687-8A90-46E8B590BB1E_d0e381239_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-712DF59D-FAE1-592E-82A6-4E323676F5B8-GENID-1-12-1-26-1-1-11-1-1-5-1-3-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-712DF59D-FAE1-592E-82A6-4E323676F5B8-GENID-1-12-1-26-1-1-11-1-1-5-1-3-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,153 @@ + + + + + +Symmetric +ciphers -- guide +
                    +
                  • What are symmetric ciphers?

                  • +
                  • Block and stream ciphers

                  • +
                  • Types of symmetric algorithms supported

                  • +
                  • Base classes and their derived classes

                  • +
                  +
                  What are symmetric +ciphers?

                  Symmetric algorithms are much faster than asymmetric +algorithms so are used to encrypt and decrypt large amounts of data. In an +informal setting, symmetric ciphers can be thought of as a mapping of some +plaintext to ciphertext, via some well-known transformation function, dependent +on a single secret key. Symmetric algorithms have the property that if a message +is encrypted under a given key, it can only be decrypted using the same key:

                  + The diagram above shows the encryption and decryption process using: +a symmetric algorithm; a plaintext message, M; a symmetric key, K; and the +ciphertext, K(M). + +

                  So it provides secrecy and also some kind of authentication. If +Alice encrypts a secret using a key known only to her, then only she can access +the secrets.

                  It can also be used for communication: if Alice shares +a key with Bob (and only Bob), then she can encrypt her messages with that +key and send it to Bob, and only Bob can decrypt them. In this case the key +is a 'shared secret' enabling private communications.

                  There are two +basic types of symmetric ciphers: block +ciphers and stream ciphers.

                  +
                  Block and stream +ciphers
                    +
                  • Stream ciphers are +essentially functions that are initialized with a key, and output a stream +of pseudorandom bits, this 'keystream' is typically XOR-ed with the plaintext +to generate the ciphertext. So they encrypt a bit of plaintext at a time. +They map an n -bit stream of plaintext to a n -bit stream of +ciphertext.

                  • +
                  • Block ciphers encrypt +several bits at once in a fixed-size block. That is, they map m n -bit +blocks of plaintext to m n -bit blocks of ciphertext. The cipher +and its mode of operation define the block size: the plaintext is split up +into appropriately-sized blocks and each block is fed into the cipher.

                    There +are two issues here that don't occur with stream ciphers:

                      +
                    • padding: the +total size of the input has to be a multiple of the block size, so the plaintext +usually has to be padded to fit (see the class CPadding). +Optionally, instead of padding out a plaintext message to fit in a block, +block ciphers allow buffering of partial input blocks until the remainder +of the block is given as input. (see How +does buffering work within the symmetric cipher framework? and PKCS#7).

                    • +
                    • combining blocks: +if you just encrypt each plaintext block with the cipher and then concatenate +the ciphertext blocks, then an attacker who knows something about the structure +can switch the order of the ciphertext blocks to alter the meaning of the +message. For example, if the plaintext includes instructions like 'pay £XXX +to account holder ABC, reference number YYY', then an attacker could replace +the encryption of XXX with some of the encryption of YYY. This leads to other +techniques for combining blocks, called modes, where, for example, the output +of the last block is fed into the input for the next one. So, the output is +not just a function of that plaintext block and key, but is a function of +that plaintext block, the key, and all preceding ciphertext blocks (see Symmetric +Modes).

                    • +
                  • +

                  Both stream ciphers and block ciphers are provided by the API with +a similar interface. Block ciphers usually need padding for non completed +blocks. The API allows the user to choose the padding to be added at the end +of the last encrypted block or to be checked and removed from the last decrypted +block.

                  +
                  Types of symmetric +algorithms supported

                  The following symmetric algorithms are supported:

                  + + + +Symmetric algorithm +Type +Specified in: + + + + +

                  AES (Advanced Encryption Standard)

                  +

                  Block cipher

                  +

                  FIPS-197

                  +
                  + +

                  DES (Data Encryption Standard)

                  +

                  Block cipher

                  +

                  FIPS 46-3

                  +
                  + +

                  3DES (Triple Data Encryption Standard)

                  +

                  Block cipher

                  +

                  FIPS 46-3

                  +
                  + +

                  RC2-128

                  +

                  Block cipher

                  +

                  RFC +2268

                  +
                  + +

                  ARC4 ('alleged' RC4)

                  +

                  Stream cipher

                  +

                  the internet and a posting to sci.crypt in 1994.

                  +
                  + + +
                  +
                  Base classes +and their derived classes

                  The symmetric cipher API is used by Networking +(TLS/IPSec).

                  CSymmetricCipher is the abstract +base class that allows a client to use the supported symmetric algorithms +listed above. It allows clients to encrypt and decrypt without having to know +anything about which encryption algorithm is currently in use.

                  The +PKCS5 API (the TPKCS5KDF class, also see Password +Based Encryption) offers Key Derivation Support that allows the derivation +of deterministic arbitrary length byte streams from an input string. The output +byte stream is generated using multiple iterations of a SHA-1 message digest +(CSHA1) and is suitable for use as a cryptographic symmetric +key.

                  The diagrams below show the main classes used in symmetric cipher +framework. Blue dotted arrows indicate that a class is contained or used by +another class. The arrows are labelled with the variable(s) through which +the pointed class is accessible. The colour of the boxes indicates the type +of Symbian class, i.e., M, C, R or T class. +For detailed information on each component see the Cryptography API Reference +material.

                  CSymmetricCipher and derived classes

                  +The inheritance diagram shows the <codeph>CSymmetricCipher</codeph> abstract +base class and its derived abstract classes <codeph>CBufferedTransformation</codeph> and <codeph>CStreamCipher</codeph> used +for block and stream ciphers respectively. Also shown are the following derived +classes: <codeph>CBufferedDecryptor</codeph>, <codeph>CBufferedEncryptor</codeph>, <codeph>CARC4</codeph>, +and <codeph>CNullCipher</codeph>. + +

                  CBlockTransformation and derived classes

                  +The inheritance diagram above shows the <xref href="GUID-CFDA5321-EE13-3203-8DED-71E69D4469BD.dita"><apiname>CBlockTransformation</apiname></xref> abstract +base class used for block ciphers. Also shown are the following derived classes: <xref href="GUID-436C3EBE-FC60-3760-A3BA-D8DF8FA5B8AF.dita"><apiname>CBlockChainingMode</apiname></xref>, <xref href="GUID-C65A1F55-A8D2-3393-8DC1-35656017E2B8.dita"><apiname>CModeCBCEncryptor</apiname></xref>, <xref href="GUID-7D5FBD2C-83A0-351A-96B3-C5C54FE525E6.dita"><apiname>CModeCBCDecryptor</apiname></xref>, <xref href="GUID-1C18ED2F-085F-3C3E-A93E-5FD37461E440.dita"><apiname>CDES</apiname></xref>, <xref href="GUID-E7401D77-AD0E-3B8F-A7CC-23ADA5151DB6.dita"><apiname>CDESEncryptor</apiname></xref>, <xref href="GUID-249270AC-907B-3E46-AFDB-131FDC6F612A.dita"><apiname>CDESDecryptor</apiname></xref>, <xref href="GUID-90A671B0-756E-3773-8429-6441D1594F4B.dita"><apiname>C3DES</apiname></xref>, <xref href="GUID-B931DBB9-4484-33FD-9E94-6F256ABD5C68.dita"><apiname>C3DESEncryptor</apiname></xref>, <xref href="GUID-C693C22D-04C5-3C9E-8605-0EA90F723AF3.dita"><apiname>C3DESDecryptor</apiname></xref>, <xref href="GUID-BEE18CDE-CFB6-3116-9FAE-046780D4D006.dita"><apiname>CRC2</apiname></xref>, <xref href="GUID-19F20C86-5722-3A35-B17D-3830D18CC7FC.dita"><apiname>CRC2Encryptor</apiname></xref>, <xref href="GUID-E6FD8DF9-258B-39BC-8C39-ABF7434A29B5.dita"><apiname>CRC2Decryptor</apiname></xref>, <xref href="GUID-B0AEE24A-91A6-335E-AD64-C9DDCC1F81A9.dita"><apiname>CRijndael</apiname></xref>, <xref href="GUID-AE1A9AC0-DB79-3C62-AA23-896812F25F14.dita"><apiname>CAESEncryptor</apiname></xref>, and <xref href="GUID-51666543-0256-3E0D-BF5F-8716753C5921.dita"><apiname>CAESDecryptor</apiname></xref>. + +

                  CPadding and derived +classes

                  +Above is an inheritance diagram showing the CPadding abstract base +class used with block ciphers. Also shown are the following derived classes: <xref href="GUID-B7090C61-ECC7-3E8A-8D19-75C9170B0135.dita"><apiname>CPaddingPKCS7</apiname></xref>, <xref href="GUID-3150ECC9-CF8E-3890-91CD-87F5EBCE550E.dita"><apiname>CPaddingPKCS1Encryption</apiname></xref>, <xref href="GUID-F845CB30-7ABE-3EB6-B1B9-C72581897D0C.dita"><apiname>CRSAPKCS1v15Encryptor</apiname></xref>, <xref href="GUID-57C40DCA-8340-38B5-9777-2863C8F88B59.dita"><apiname>CPaddingNone</apiname></xref>, <xref href="GUID-723F64D1-01C5-3A03-B987-0FB862EE8EDE.dita"><apiname>CPaddingPKCS1Signature</apiname></xref>, +and <xref href="GUID-CC2347BE-3272-3DDF-8BDD-B44F5C0026B3.dita"><apiname>CPaddingSSLv3</apiname></xref> + +
                  +
                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-712DF59D-FAE1-592E-82A6-4E323676F5B8-GENID-1-12-1-26-1-1-9-1-4-1-5-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-712DF59D-FAE1-592E-82A6-4E323676F5B8-GENID-1-12-1-26-1-1-9-1-4-1-5-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,153 @@ + + + + + +Symmetric +ciphers -- guide +
                    +
                  • What are symmetric ciphers?

                  • +
                  • Block and stream ciphers

                  • +
                  • Types of symmetric algorithms supported

                  • +
                  • Base classes and their derived classes

                  • +
                  +
                  What are symmetric +ciphers?

                  Symmetric algorithms are much faster than asymmetric +algorithms so are used to encrypt and decrypt large amounts of data. In an +informal setting, symmetric ciphers can be thought of as a mapping of some +plaintext to ciphertext, via some well-known transformation function, dependent +on a single secret key. Symmetric algorithms have the property that if a message +is encrypted under a given key, it can only be decrypted using the same key:

                  + The diagram above shows the encryption and decryption process using: +a symmetric algorithm; a plaintext message, M; a symmetric key, K; and the +ciphertext, K(M). + +

                  So it provides secrecy and also some kind of authentication. If +Alice encrypts a secret using a key known only to her, then only she can access +the secrets.

                  It can also be used for communication: if Alice shares +a key with Bob (and only Bob), then she can encrypt her messages with that +key and send it to Bob, and only Bob can decrypt them. In this case the key +is a 'shared secret' enabling private communications.

                  There are two +basic types of symmetric ciphers: block +ciphers and stream ciphers.

                  +
                  Block and stream +ciphers
                    +
                  • Stream ciphers are +essentially functions that are initialized with a key, and output a stream +of pseudorandom bits, this 'keystream' is typically XOR-ed with the plaintext +to generate the ciphertext. So they encrypt a bit of plaintext at a time. +They map an n -bit stream of plaintext to a n -bit stream of +ciphertext.

                  • +
                  • Block ciphers encrypt +several bits at once in a fixed-size block. That is, they map m n -bit +blocks of plaintext to m n -bit blocks of ciphertext. The cipher +and its mode of operation define the block size: the plaintext is split up +into appropriately-sized blocks and each block is fed into the cipher.

                    There +are two issues here that don't occur with stream ciphers:

                      +
                    • padding: the +total size of the input has to be a multiple of the block size, so the plaintext +usually has to be padded to fit (see the class CPadding). +Optionally, instead of padding out a plaintext message to fit in a block, +block ciphers allow buffering of partial input blocks until the remainder +of the block is given as input. (see How +does buffering work within the symmetric cipher framework? and PKCS#7).

                    • +
                    • combining blocks: +if you just encrypt each plaintext block with the cipher and then concatenate +the ciphertext blocks, then an attacker who knows something about the structure +can switch the order of the ciphertext blocks to alter the meaning of the +message. For example, if the plaintext includes instructions like 'pay £XXX +to account holder ABC, reference number YYY', then an attacker could replace +the encryption of XXX with some of the encryption of YYY. This leads to other +techniques for combining blocks, called modes, where, for example, the output +of the last block is fed into the input for the next one. So, the output is +not just a function of that plaintext block and key, but is a function of +that plaintext block, the key, and all preceding ciphertext blocks (see Symmetric +Modes).

                    • +
                  • +

                  Both stream ciphers and block ciphers are provided by the API with +a similar interface. Block ciphers usually need padding for non completed +blocks. The API allows the user to choose the padding to be added at the end +of the last encrypted block or to be checked and removed from the last decrypted +block.

                  +
                  Types of symmetric +algorithms supported

                  The following symmetric algorithms are supported:

                  + + + +Symmetric algorithm +Type +Specified in: + + + + +

                  AES (Advanced Encryption Standard)

                  +

                  Block cipher

                  +

                  FIPS-197

                  +
                  + +

                  DES (Data Encryption Standard)

                  +

                  Block cipher

                  +

                  FIPS 46-3

                  +
                  + +

                  3DES (Triple Data Encryption Standard)

                  +

                  Block cipher

                  +

                  FIPS 46-3

                  +
                  + +

                  RC2-128

                  +

                  Block cipher

                  +

                  RFC +2268

                  +
                  + +

                  ARC4 ('alleged' RC4)

                  +

                  Stream cipher

                  +

                  the internet and a posting to sci.crypt in 1994.

                  +
                  + + +
                  +
                  Base classes +and their derived classes

                  The symmetric cipher API is used by Networking +(TLS/IPSec).

                  CSymmetricCipher is the abstract +base class that allows a client to use the supported symmetric algorithms +listed above. It allows clients to encrypt and decrypt without having to know +anything about which encryption algorithm is currently in use.

                  The +PKCS5 API (the TPKCS5KDF class, also see Password +Based Encryption) offers Key Derivation Support that allows the derivation +of deterministic arbitrary length byte streams from an input string. The output +byte stream is generated using multiple iterations of a SHA-1 message digest +(CSHA1) and is suitable for use as a cryptographic symmetric +key.

                  The diagrams below show the main classes used in symmetric cipher +framework. Blue dotted arrows indicate that a class is contained or used by +another class. The arrows are labelled with the variable(s) through which +the pointed class is accessible. The colour of the boxes indicates the type +of Symbian class, i.e., M, C, R or T class. +For detailed information on each component see the Cryptography API Reference +material.

                  CSymmetricCipher and derived classes

                  +The inheritance diagram shows the <codeph>CSymmetricCipher</codeph> abstract +base class and its derived abstract classes <codeph>CBufferedTransformation</codeph> and <codeph>CStreamCipher</codeph> used +for block and stream ciphers respectively. Also shown are the following derived +classes: <codeph>CBufferedDecryptor</codeph>, <codeph>CBufferedEncryptor</codeph>, <codeph>CARC4</codeph>, +and <codeph>CNullCipher</codeph>. + +

                  CBlockTransformation and derived classes

                  +The inheritance diagram above shows the <xref href="GUID-CFDA5321-EE13-3203-8DED-71E69D4469BD.dita"><apiname>CBlockTransformation</apiname></xref> abstract +base class used for block ciphers. Also shown are the following derived classes: <xref href="GUID-436C3EBE-FC60-3760-A3BA-D8DF8FA5B8AF.dita"><apiname>CBlockChainingMode</apiname></xref>, <xref href="GUID-C65A1F55-A8D2-3393-8DC1-35656017E2B8.dita"><apiname>CModeCBCEncryptor</apiname></xref>, <xref href="GUID-7D5FBD2C-83A0-351A-96B3-C5C54FE525E6.dita"><apiname>CModeCBCDecryptor</apiname></xref>, <xref href="GUID-1C18ED2F-085F-3C3E-A93E-5FD37461E440.dita"><apiname>CDES</apiname></xref>, <xref href="GUID-E7401D77-AD0E-3B8F-A7CC-23ADA5151DB6.dita"><apiname>CDESEncryptor</apiname></xref>, <xref href="GUID-249270AC-907B-3E46-AFDB-131FDC6F612A.dita"><apiname>CDESDecryptor</apiname></xref>, <xref href="GUID-90A671B0-756E-3773-8429-6441D1594F4B.dita"><apiname>C3DES</apiname></xref>, <xref href="GUID-B931DBB9-4484-33FD-9E94-6F256ABD5C68.dita"><apiname>C3DESEncryptor</apiname></xref>, <xref href="GUID-C693C22D-04C5-3C9E-8605-0EA90F723AF3.dita"><apiname>C3DESDecryptor</apiname></xref>, <xref href="GUID-BEE18CDE-CFB6-3116-9FAE-046780D4D006.dita"><apiname>CRC2</apiname></xref>, <xref href="GUID-19F20C86-5722-3A35-B17D-3830D18CC7FC.dita"><apiname>CRC2Encryptor</apiname></xref>, <xref href="GUID-E6FD8DF9-258B-39BC-8C39-ABF7434A29B5.dita"><apiname>CRC2Decryptor</apiname></xref>, <xref href="GUID-B0AEE24A-91A6-335E-AD64-C9DDCC1F81A9.dita"><apiname>CRijndael</apiname></xref>, <xref href="GUID-AE1A9AC0-DB79-3C62-AA23-896812F25F14.dita"><apiname>CAESEncryptor</apiname></xref>, and <xref href="GUID-51666543-0256-3E0D-BF5F-8716753C5921.dita"><apiname>CAESDecryptor</apiname></xref>. + +

                  CPadding and derived +classes

                  +Above is an inheritance diagram showing the CPadding abstract base +class used with block ciphers. Also shown are the following derived classes: <xref href="GUID-B7090C61-ECC7-3E8A-8D19-75C9170B0135.dita"><apiname>CPaddingPKCS7</apiname></xref>, <xref href="GUID-3150ECC9-CF8E-3890-91CD-87F5EBCE550E.dita"><apiname>CPaddingPKCS1Encryption</apiname></xref>, <xref href="GUID-F845CB30-7ABE-3EB6-B1B9-C72581897D0C.dita"><apiname>CRSAPKCS1v15Encryptor</apiname></xref>, <xref href="GUID-57C40DCA-8340-38B5-9777-2863C8F88B59.dita"><apiname>CPaddingNone</apiname></xref>, <xref href="GUID-723F64D1-01C5-3A03-B987-0FB862EE8EDE.dita"><apiname>CPaddingPKCS1Signature</apiname></xref>, +and <xref href="GUID-CC2347BE-3272-3DDF-8BDD-B44F5C0026B3.dita"><apiname>CPaddingSSLv3</apiname></xref> + +
                  +
                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-712DF59D-FAE1-592E-82A6-4E323676F5B8.dita --- a/Symbian3/PDK/Source/GUID-712DF59D-FAE1-592E-82A6-4E323676F5B8.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,153 +0,0 @@ - - - - - -Symmetric -ciphers -- guide -
                    -
                  • What are symmetric ciphers?

                  • -
                  • Block and stream ciphers

                  • -
                  • Types of symmetric algorithms supported

                  • -
                  • Base classes and their derived classes

                  • -
                  -
                  What are symmetric -ciphers?

                  Symmetric algorithms are much faster than asymmetric -algorithms so are used to encrypt and decrypt large amounts of data. In an -informal setting, symmetric ciphers can be thought of as a mapping of some -plaintext to ciphertext, via some well-known transformation function, dependent -on a single secret key. Symmetric algorithms have the property that if a message -is encrypted under a given key, it can only be decrypted using the same key:

                  - The diagram above shows the encryption and decryption process using: -a symmetric algorithm; a plaintext message, M; a symmetric key, K; and the -ciphertext, K(M). - -

                  So it provides secrecy and also some kind of authentication. If -Alice encrypts a secret using a key known only to her, then only she can access -the secrets.

                  It can also be used for communication: if Alice shares -a key with Bob (and only Bob), then she can encrypt her messages with that -key and send it to Bob, and only Bob can decrypt them. In this case the key -is a 'shared secret' enabling private communications.

                  There are two -basic types of symmetric ciphers: block -ciphers and stream ciphers.

                  -
                  Block and stream -ciphers
                    -
                  • Stream ciphers are -essentially functions that are initialized with a key, and output a stream -of pseudorandom bits, this 'keystream' is typically XOR-ed with the plaintext -to generate the ciphertext. So they encrypt a bit of plaintext at a time. -They map an n -bit stream of plaintext to a n -bit stream of -ciphertext.

                  • -
                  • Block ciphers encrypt -several bits at once in a fixed-size block. That is, they map m n -bit -blocks of plaintext to m n -bit blocks of ciphertext. The cipher -and its mode of operation define the block size: the plaintext is split up -into appropriately-sized blocks and each block is fed into the cipher.

                    There -are two issues here that don't occur with stream ciphers:

                      -
                    • padding: the -total size of the input has to be a multiple of the block size, so the plaintext -usually has to be padded to fit (see the class CPadding). -Optionally, instead of padding out a plaintext message to fit in a block, -block ciphers allow buffering of partial input blocks until the remainder -of the block is given as input. (see How -does buffering work within the symmetric cipher framework? and PKCS#7).

                    • -
                    • combining blocks: -if you just encrypt each plaintext block with the cipher and then concatenate -the ciphertext blocks, then an attacker who knows something about the structure -can switch the order of the ciphertext blocks to alter the meaning of the -message. For example, if the plaintext includes instructions like 'pay £XXX -to account holder ABC, reference number YYY', then an attacker could replace -the encryption of XXX with some of the encryption of YYY. This leads to other -techniques for combining blocks, called modes, where, for example, the output -of the last block is fed into the input for the next one. So, the output is -not just a function of that plaintext block and key, but is a function of -that plaintext block, the key, and all preceding ciphertext blocks (see Symmetric -Modes).

                    • -
                  • -

                  Both stream ciphers and block ciphers are provided by the API with -a similar interface. Block ciphers usually need padding for non completed -blocks. The API allows the user to choose the padding to be added at the end -of the last encrypted block or to be checked and removed from the last decrypted -block.

                  -
                  Types of symmetric -algorithms supported

                  The following symmetric algorithms are supported:

                  - - - -Symmetric algorithm -Type -Specified in: - - - - -

                  AES (Advanced Encryption Standard)

                  -

                  Block cipher

                  -

                  FIPS-197

                  -
                  - -

                  DES (Data Encryption Standard)

                  -

                  Block cipher

                  -

                  FIPS 46-3

                  -
                  - -

                  3DES (Triple Data Encryption Standard)

                  -

                  Block cipher

                  -

                  FIPS 46-3

                  -
                  - -

                  RC2-128

                  -

                  Block cipher

                  -

                  RFC -2268

                  -
                  - -

                  ARC4 ('alleged' RC4)

                  -

                  Stream cipher

                  -

                  the internet and a posting to sci.crypt in 1994.

                  -
                  - - -
                  -
                  Base classes -and their derived classes

                  The symmetric cipher API is used by Networking -(TLS/IPSec).

                  CSymmetricCipher is the abstract -base class that allows a client to use the supported symmetric algorithms -listed above. It allows clients to encrypt and decrypt without having to know -anything about which encryption algorithm is currently in use.

                  The -PKCS5 API (the TPKCS5KDF class, also see Password -Based Encryption) offers Key Derivation Support that allows the derivation -of deterministic arbitrary length byte streams from an input string. The output -byte stream is generated using multiple iterations of a SHA-1 message digest -(CSHA1) and is suitable for use as a cryptographic symmetric -key.

                  The diagrams below show the main classes used in symmetric cipher -framework. Blue dotted arrows indicate that a class is contained or used by -another class. The arrows are labelled with the variable(s) through which -the pointed class is accessible. The colour of the boxes indicates the type -of Symbian class, i.e., M, C, R or T class. -For detailed information on each component see the Cryptography API Reference -material.

                  CSymmetricCipher and derived classes

                  -The inheritance diagram shows the <codeph>CSymmetricCipher</codeph> abstract -base class and its derived abstract classes <codeph>CBufferedTransformation</codeph> and <codeph>CStreamCipher</codeph> used -for block and stream ciphers respectively. Also shown are the following derived -classes: <codeph>CBufferedDecryptor</codeph>, <codeph>CBufferedEncryptor</codeph>, <codeph>CARC4</codeph>, -and <codeph>CNullCipher</codeph>. - -

                  CBlockTransformation and derived classes

                  -The inheritance diagram above shows the <xref href="GUID-CFDA5321-EE13-3203-8DED-71E69D4469BD.dita"><apiname>CBlockTransformation</apiname></xref> abstract -base class used for block ciphers. Also shown are the following derived classes: <xref href="GUID-436C3EBE-FC60-3760-A3BA-D8DF8FA5B8AF.dita"><apiname>CBlockChainingMode</apiname></xref>, <xref href="GUID-C65A1F55-A8D2-3393-8DC1-35656017E2B8.dita"><apiname>CModeCBCEncryptor</apiname></xref>, <xref href="GUID-7D5FBD2C-83A0-351A-96B3-C5C54FE525E6.dita"><apiname>CModeCBCDecryptor</apiname></xref>, <xref href="GUID-1C18ED2F-085F-3C3E-A93E-5FD37461E440.dita"><apiname>CDES</apiname></xref>, <xref href="GUID-E7401D77-AD0E-3B8F-A7CC-23ADA5151DB6.dita"><apiname>CDESEncryptor</apiname></xref>, <xref href="GUID-249270AC-907B-3E46-AFDB-131FDC6F612A.dita"><apiname>CDESDecryptor</apiname></xref>, <xref href="GUID-90A671B0-756E-3773-8429-6441D1594F4B.dita"><apiname>C3DES</apiname></xref>, <xref href="GUID-B931DBB9-4484-33FD-9E94-6F256ABD5C68.dita"><apiname>C3DESEncryptor</apiname></xref>, <xref href="GUID-C693C22D-04C5-3C9E-8605-0EA90F723AF3.dita"><apiname>C3DESDecryptor</apiname></xref>, <xref href="GUID-BEE18CDE-CFB6-3116-9FAE-046780D4D006.dita"><apiname>CRC2</apiname></xref>, <xref href="GUID-19F20C86-5722-3A35-B17D-3830D18CC7FC.dita"><apiname>CRC2Encryptor</apiname></xref>, <xref href="GUID-E6FD8DF9-258B-39BC-8C39-ABF7434A29B5.dita"><apiname>CRC2Decryptor</apiname></xref>, <xref href="GUID-B0AEE24A-91A6-335E-AD64-C9DDCC1F81A9.dita"><apiname>CRijndael</apiname></xref>, <xref href="GUID-AE1A9AC0-DB79-3C62-AA23-896812F25F14.dita"><apiname>CAESEncryptor</apiname></xref>, and <xref href="GUID-51666543-0256-3E0D-BF5F-8716753C5921.dita"><apiname>CAESDecryptor</apiname></xref>. - -

                  CPadding and derived -classes

                  -Above is an inheritance diagram showing the CPadding abstract base -class used with block ciphers. Also shown are the following derived classes: <xref href="GUID-B7090C61-ECC7-3E8A-8D19-75C9170B0135.dita"><apiname>CPaddingPKCS7</apiname></xref>, <xref href="GUID-3150ECC9-CF8E-3890-91CD-87F5EBCE550E.dita"><apiname>CPaddingPKCS1Encryption</apiname></xref>, <xref href="GUID-F845CB30-7ABE-3EB6-B1B9-C72581897D0C.dita"><apiname>CRSAPKCS1v15Encryptor</apiname></xref>, <xref href="GUID-57C40DCA-8340-38B5-9777-2863C8F88B59.dita"><apiname>CPaddingNone</apiname></xref>, <xref href="GUID-723F64D1-01C5-3A03-B987-0FB862EE8EDE.dita"><apiname>CPaddingPKCS1Signature</apiname></xref>, -and <xref href="GUID-CC2347BE-3272-3DDF-8BDD-B44F5C0026B3.dita"><apiname>CPaddingSSLv3</apiname></xref> - -
                  -
                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-715D065D-4FF7-55D0-882E-3B37F36369C4.dita --- a/Symbian3/PDK/Source/GUID-715D065D-4FF7-55D0-882E-3B37F36369C4.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ - - - - - -Overview of Unified Trace Solution

                  The Unified Trace solution is a framework that includes the UTrace API, a trace configuration tool and various APIs to allow extending the solution further.

                  UTrace API is used to specify traces in the source code to output trace data. It uses a trace configuration tool to send the traces events and trace data.

                  The trace configuration tool enables you to configure and output traces from a device.

                  Purpose

                  The Unified Trace solution provides a platform independent, generic, and unified trace framework for outputting trace data. Trace data can be used to debug difficult run-time behaviour defects at all stages of the device creation cycle.

                  The Unified Trace solution also provides a filtering mechanism to ensure system intrusion is minimised to a maximum extent. Additionally, a user can extend or modify the Unified Trace solution to suit specific requirements.

                  Intended audience

                  This guide is intended to application developers and device creators, who wants to do any or all of the following tasks:

                  • Instrument components to enable tracing

                  • Configure the trace framework optimally for a specific environment

                  • Enable and output traces for post processing

                  • Write input and output plug-ins for a specific environment.

                  Required background

                  Unified Trace solution users should be familiar with the following:

                  • Symbian platform

                  • BTrace.

                  • ECom framework. For more information on ECom, see Using ECom.

                  Key concepts and terms

                  This section briefly explains important concepts of the Unified Trace solution.

                  UTrace

                  The UTrace API is used to output significant information about a component. It is based on BTrace and extends BTrace, a tracer that is present in the kernel that can handle fast tracing both on kernel and user side of the OS.

                  Trace configuration tool

                  A trace configuration tool is required to configure and output traces from a device.

                  The following definitions describe the distinctions between the different types of users of the Unified Trace Solution:

                  Instrumentor

                  Symbian developers who wish to add instrumentation to their user or kernel side components are referred as an Instrumentor.

                  The component could be a device-driver, a communications stack, any other Symbian platform component, a UIQ/S60/MOAP component or an application.

                  An Instrumentor inserts trace points into a component for the following reasons:

                  • debugging the component

                  • debugging some secondary component that interacts with the component

                  • profiling and analysing the performance of the component

                  • recording high-level system characteristics to aid later diagnosis.

                  For more information on inserting and enabling traces, see How to insert trace points in a component and How to enable tracing.

                  Trace Collector

                  Symbian developers, system characteristic analysts, system integrators and testers, who wish to extract trace data from the system by transporting the raw binary output off the device for post process analysis are referred as Trace Collector.

                  Trace Collectors are a superset of Instrumentors.

                  Trace Environment Developers

                  Symbian developers who want to write their own output plug-in specific to their hardware environment.

                  The following definitions describe some important key terms the user needs to be familiar with before using the Unified Trace solution:

                  Instrumenting

                  Inserting traces into the code.

                  Tracing

                  Capturing the trace data in a Symbian device at run-time, transferring it to a PC and storing in a file using UTrace. Trace data can be used to debug difficult run-time behaviour defects at all stages of the device creation cycle.

                  BTrace

                  Collecting traces from various system components.

                  Filters

                  Filters are used to identify and select the traces that have to be logged. They also enable grouping of traces to ease the implementation of host-side trace analysis tools; such as, third party or Symbian log processing viewers.

                  The Unified Trace solution provides a filtering mechanism to ensure system intrusion is minimised as much as possible. Trace points, which have been compiled into the source component by the Instrumentor, are switched off (disabled) on the device at run-time. The Trace Collector then needs to actively set (enable) which trace packets they want to output by changing the configuration filter settings to match the filter identifiers in the relevant trace points (through the trace configuration tool).

                  Types of filters

                  Following are the two types of filters:

                  • Primary filter: Primary filters enable a low intrusion filtering mechanism, which is essential when instrumenting critical sections of the kernel or other key services. There are 256 primary filters available.

                    The 256 primary filters are split into several ranges, each with their own owner and purpose.

                    A number of Symbian primary filters are defined over and above the pre-existing primary filters provided in the kernel for system characteristics. Instrumentors can find the current definition in the epoc32/include/e32btrace.h file and use any of the undefined filters within the ranges allocated to them in it.

                    The undefined primary filter ranges are are intended to be defined by the Symbian developers according to their own requirements. The distinction between Base-Port and UI or Applications is intended as a strong recommendation. It allows fast (primary filtered only) UTrace categories to be used in device drivers and other Base-Port code, without clashing with more general trace frameworks implemented for application layer code.

                  • Secondary filter: Secondary filters allow a finer level of instrumentation and can be optionally applied to traces. It is recommended that secondary filters match the UID3 of the binary emitting the trace. Trace Collector can enable or disable the secondary filtering functionality using the configuration file. If the secondary filtering functionality is disabled, traces will be generated according to the primary filter identifier; regardless of the secondary filters set in the configuration file or assigned to the trace points.

                  Relationship between primary and secondary filters

                  There are six filtering combinations that a Trace Collector can implement for tracing the data, provided in the following table.

                  Scenario Component trace point instrumentation Primary filter (P) Secondary filtering functionality Secondary filter (S) Trace output result

                  1

                  P

                  Disabled

                  Not applicable

                  Not applicable

                  No

                  2

                  P

                  Enabled

                  Not applicable

                  Not applicable

                  Yes

                  3

                  P and S

                  Disabled

                  Not applicable

                  Not applicable

                  No

                  4

                  P and S

                  Enabled

                  Disabled

                  Not applicable

                  Yes

                  5

                  P and S

                  Enabled

                  Enabled

                  Disabled

                  No

                  6

                  P and S

                  Enabled

                  Enabled

                  Enabled

                  Yes

                  Trace record format

                  The trace record format consists of a header and a payload. The minimum trace record consists of four bytes. Note that the trace record and payload must always be four byte aligned. For detailed information on header format, such as, the flags field and ROM build time settings related to timestamp.

                  Note the following important distinctions in UTrace:

                  • The category field in BTrace is referred to as the primary filter in UTrace.

                  • The secondary category field in BTrace is referred to as the secondary filter in UTrace.

                  • The sub-category field in BTrace is referred to as schema in UTrace.

                  - Trace record -
                  Implementation consideration

                  Currently, the Unified Trace solution does not support security. Instrumentors must ensure that the trace points do not contain any sensitive information that can be used to undermine the platform security.

                  Migration issue

                  The trace data available for all Symbian platform versions will not be the same. This is because of increasing instrumentation within Symbian platform with every release.

                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-715E0EA4-8B3D-5DDF-B773-922E367B114F.dita --- a/Symbian3/PDK/Source/GUID-715E0EA4-8B3D-5DDF-B773-922E367B114F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-715E0EA4-8B3D-5DDF-B773-922E367B114F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Audio Input Streaming Overview

                  This document provides an overview of Audio Input Streaming.

                  Purpose

                  Audio Input Streaming is the interface to streaming sampled audio data from the low level audio controller part of the Multimedia Framework (MMF).

                  Audio Input Streaming Library Details

                  The DLL that provides the functionality and the library to which your code must link is identified below.

                  DLL LIB Short Description

                  mediaclientaudioinputstream.dll

                  mediaclientaudioinputstream.lib

                  These files are used for implementing Audio Input Streaming.

                  Architectural Relationship

                  How the Audio Input Streaming classes interact with other components of MMF is shown below:

                  Audio input streaming overview -
                  Description

                  Streamed audio data is sent and received incrementally. This means:

                  • sound clips sent to the low level audio controller (audio play) can be sent as they arrive rather than waiting until the entire clip is received.

                    The user of the API should maintain the data fragments in a queue before sending them to the server. If the user attempts to send data faster than the server can receive it, the excess data fragments are maintained in another client side queue (invisible to the user), whose elements are references to the buffers passed to it. The server notifies the client using a callback each time it has received a data fragment. This indicates to the client that the data fragment can be deleted.

                  • sound clips that are being captured by the low level audio controller (audio record) can be read incrementally without having to wait until audio capture is complete.

                    The low level audio controller maintains the received buffers where it can place the audio data that is being captured. The client uses a read function to read the received data into destination descriptors.

                  The client is also notified (for audio play and record) when the stream is opened and available for use (opening takes place asynchronously), and when the stream is closed.

                  This API can only be used to stream audio data, with the data being stored or sourced from a descriptor. Client applications must ensure that the data is in 16 bit PCM format as this is the only format supported. The API does not support mixing. A priority mechanism is used to control access to the sound device by more than one client.

                  Key Audio Input Streaming Classes

                  The functionality provided by Audio Input Streaming is contained within the CMdaAudioInputStream class.

                  Using Audio Input Streaming

                  Clients can use Audio Input Streaming to:

                  • Open, set audio and mobile equipment properties, read from and close the audio stream.

                  See Also

                  Audio Input Streaming Tutorial

                  \ No newline at end of file +
                  Description

                  Streamed audio data is sent and received incrementally. This means:

                  • sound clips sent to the low level audio controller (audio play) can be sent as they arrive rather than waiting until the entire clip is received.

                    The user of the API should maintain the data fragments in a queue before sending them to the server. If the user attempts to send data faster than the server can receive it, the excess data fragments are maintained in another client side queue (invisible to the user), whose elements are references to the buffers passed to it. The server notifies the client using a callback each time it has received a data fragment. This indicates to the client that the data fragment can be deleted.

                  • sound clips that are being captured by the low level audio controller (audio record) can be read incrementally without having to wait until audio capture is complete.

                    The low level audio controller maintains the received buffers where it can place the audio data that is being captured. The client uses a read function to read the received data into destination descriptors.

                  The client is also notified (for audio play and record) when the stream is opened and available for use (opening takes place asynchronously), and when the stream is closed.

                  This API can only be used to stream audio data, with the data being stored or sourced from a descriptor. Client applications must ensure that the data is in 16 bit PCM format as this is the only format supported. The API does not support mixing. A priority mechanism is used to control access to the sound device by more than one client.

                  Key Audio Input Streaming Classes

                  The functionality provided by Audio Input Streaming is contained within the CMdaAudioInputStream class.

                  Using Audio Input Streaming

                  Clients can use Audio Input Streaming to:

                  • Open, set audio and mobile equipment properties, read from and close the audio stream.

                  See Also

                  Audio Input Streaming Tutorial

                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-718E1B9F-C05D-559A-AF69-BD9CFAF190FB_d0e24740_href.png Binary file Symbian3/PDK/Source/GUID-718E1B9F-C05D-559A-AF69-BD9CFAF190FB_d0e24740_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-718E1B9F-C05D-559A-AF69-BD9CFAF190FB_d0e26707_href.png Binary file Symbian3/PDK/Source/GUID-718E1B9F-C05D-559A-AF69-BD9CFAF190FB_d0e26707_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-71B31715-3B6A-50F0-86C1-8F7F76985802_d0e210702_href.jpg Binary file Symbian3/PDK/Source/GUID-71B31715-3B6A-50F0-86C1-8F7F76985802_d0e210702_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-71B31715-3B6A-50F0-86C1-8F7F76985802_d0e216703_href.jpg Binary file Symbian3/PDK/Source/GUID-71B31715-3B6A-50F0-86C1-8F7F76985802_d0e216703_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9.dita --- a/Symbian3/PDK/Source/GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-71DADA82-3ABC-52D2-8360-33FAEB2E5DE9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,6 +9,6 @@ --> -The Font and Bitmap Server OverviewThe Font and Bitmap Server (FBServ) provides a memory efficient way of using bitmaps and fonts. It stores a single instance of each bitmap in either a shared heap or in eXecute In Place (XIP) ROM and provides clients with read and (when appropriate) write access.

                  RAM-based fonts and bitmaps are reference counted and retained in RAM while they are being used. When they are no longer required they are automatically deleted.

                  Key terms
                  Bitmap

                  A two-dimensional (2D) buffer (in memory) that contains the color values for individual pixels and is encapsulated by the CFbsBitmap class.

                  Extended bitmap

                  A bitmap that contains data compressed using proprietary formats.

                  Raster image

                  A data structure representing a rectangular grid of pixels. Scaling raster images usually leads to a loss of quality.

                  Vector image

                  The use of geometrical primitives such as points, lines, curves and polygons to represent an image. Vector images can be scaled without loss of quality.

                  Rasterization

                  The process of converting vector image drawing instructions into a raster image that can be displayed on the screen.

                  Scan line

                  A row of pixels in a raster image. This use of the term is derived from its original use in a raster scanning pattern, such as a video line on the cathode ray tube (CRT) display of a television.

                  For font-related terms, see Font and Text Services Collection Overview.

                  Architectural relationships

                  The Font and Bitmap Server is tightly integrated with the BitGDI and Window Server components. It provides client-side classes for fonts, bitmaps and the typeface store.

                  In use the Font and Bitmap Server is largely transparent. When a client of the Window Server opens a Window Server session, that session silently creates an RFbsSession and stores it in Thread Local Storage (TLS). Client-side font and bitmap classes such as CFbsFont and CFbsBitmap automatically find the session in TLS when they are constructed. (These are client-side objects that refer to objects in the server. Because they are heap-based classes, they have names beginning with C.)

                  The Font and Bitmap Server contains the font store, which is a separate DLL provided by the Font Store (FntStore) component. Client-side access to the font store is through CFbsTypefaceStore.

                  Description

                  The Font and Bitmap Server is a singleton process that owns fonts and bitmaps. CFbsFont and CFbsBitmap objects are actually client-side handles to the font and bitmap objects, which are stored on a globally accessible heap while they are in use. Bitmap data is stored separately in a globally accessible disconnected chunk.

                  When the reference count of clients using a font or bitmap that is resident in RAM falls to zero, the server can delete it and free the memory. XIP ROM based bitmaps are accessed in place, not copied into RAM.

                  Open fonts, which are stored in font files as vector data, must be rasterized into the Font and Bitmap Server's shared heap. Rasterizers are plug-ins to the Font Store component. There is a performance overhead to rasterizing an open font and a memory overhead for storing it.

                  API summary

                  The Font and Bitmap Server presents a conventional client API through RFbsSession, which represents the handle to a server-side session. The classes CFbsFont and CFbsBitmap are client-side representations of font and bitmap classes.

                  • The CFbsFont class represents fonts managed by the Font and Bitmap Server, both bitmap fonts and OpenType fonts.

                  • The CFbsBitmap class represents bitmaps managed by the Font and Bitmap Server, both RAM and XIP ROM-based bitmaps. For RAM-based bitmaps, this class provides facilities for creating, loading, saving, and resizing bitmaps. RAM-based bitmaps are commonly loaded from a multi-bitmap file (.mbm) file or created as off-screen bitmaps, and then blitted to a window. For XIP ROM-based bitmaps, CFbsBitmap provides facilities for accessing the data.

                  The Font and Bitmap Server is unusual in that the RFbsSession is stored in client-side thread local storage (TLS). The constructors for CFbsFont and CFbsBitmap find this session handle automatically: the client program does not have to pass it as a parameter. Therefore, to most client programs, the client/server nature of using fonts and bitmaps is hidden from the API.

                  The RFbsSession is created for clients by the Window Server’s client-side API when a Window Server session, RWsSession, is constructed. A Window Server client is therefore also a client of the Font and Bitmap Server.

                  When a client calls, for example, the CWindowGc::DrawBitmap() function, the handle number of the bitmap is passed to the Window Server through inter-process communication (IPC). Like all CWindowGc drawing commands, the handle number is stored in a client-side command buffer, which by default is flushed to the server side only when it is full. Once flushed to the server-side, the command buffer is processed by the Window Server rendering loop. Consider the scenario where an application calls CWindowGc::DrawBitmap() and then closes the bitmap before the client-side buffer is flushed. There needs to be some mechanism to prevent the bitmap’s reference count from reaching zero and hence being deleted before the Window Server can render it. For this reason, RFbsSession has a callback, which is invoked whenever a client closes a bitmap handle. The callback causes an immediate flush of the Window Server client-side command buffer. The Window Server then creates on the server side a duplicate CFbsBitmap for the bitmap. This increases the bitmap's reference count and therefore prevents it from being deleted before the Window Server attempts to render it. The same mechanism applies to font handles. This mechanism is transparent to clients of the Window Server.

                  Font and Bitmap Server Collection Heap Locking in the Font and Bitmap +The Font and Bitmap Server OverviewThe Font and Bitmap Server (FBServ) provides a memory efficient way of using bitmaps and fonts. It stores a single instance of each bitmap in either a shared heap or in eXecute In Place (XIP) ROM and provides clients with read and (when appropriate) write access.

                  RAM-based fonts and bitmaps are reference counted and retained in RAM while they are being used. When they are no longer required they are automatically deleted.

                  Key terms
                  Bitmap

                  A two-dimensional (2D) buffer (in memory) that contains the color values for individual pixels and is encapsulated by the CFbsBitmap class.

                  Extended bitmap

                  A bitmap that contains data compressed using proprietary formats.

                  Raster image

                  A data structure representing a rectangular grid of pixels. Scaling raster images usually leads to a loss of quality.

                  Vector image

                  The use of geometrical primitives such as points, lines, curves and polygons to represent an image. Vector images can be scaled without loss of quality.

                  Rasterization

                  The process of converting vector image drawing instructions into a raster image that can be displayed on the screen.

                  Scan line

                  A row of pixels in a raster image. This use of the term is derived from its original use in a raster scanning pattern, such as a video line on the cathode ray tube (CRT) display of a television.

                  For font-related terms, see Font and Text Services Collection Overview.

                  Architectural relationships

                  The Font and Bitmap Server is tightly integrated with the BitGDI and Window Server components. It provides client-side classes for fonts, bitmaps and the typeface store.

                  In use the Font and Bitmap Server is largely transparent. When a client of the Window Server opens a Window Server session, that session silently creates an RFbsSession and stores it in Thread Local Storage (TLS). Client-side font and bitmap classes such as CFbsFont and CFbsBitmap automatically find the session in TLS when they are constructed. (These are client-side objects that refer to objects in the server. Because they are heap-based classes, they have names beginning with C.)

                  The Font and Bitmap Server contains the font store, which is a separate DLL provided by the Font Store (FntStore) component. Client-side access to the font store is through CFbsTypefaceStore.

                  Description

                  The Font and Bitmap Server is a singleton process that owns fonts and bitmaps. CFbsFont and CFbsBitmap objects are actually client-side handles to the font and bitmap objects, which are stored on a globally accessible heap while they are in use. Bitmap data is stored separately in a globally accessible disconnected chunk.

                  When the reference count of clients using a font or bitmap that is resident in RAM falls to zero, the server can delete it and free the memory. XIP ROM based bitmaps are accessed in place, not copied into RAM.

                  Open fonts, which are stored in font files as vector data, must be rasterized into the Font and Bitmap Server's shared heap. Rasterizers are plug-ins to the Font Store component. There is a performance overhead to rasterizing an open font and a memory overhead for storing it.

                  API summary

                  The Font and Bitmap Server presents a conventional client API through RFbsSession, which represents the handle to a server-side session. The classes CFbsFont and CFbsBitmap are client-side representations of font and bitmap classes.

                  • The CFbsFont class represents fonts managed by the Font and Bitmap Server, both bitmap fonts and OpenType fonts.

                  • The CFbsBitmap class represents bitmaps managed by the Font and Bitmap Server, both RAM and XIP ROM-based bitmaps. For RAM-based bitmaps, this class provides facilities for creating, loading, saving, and resizing bitmaps. RAM-based bitmaps are commonly loaded from a multi-bitmap file (.mbm) file or created as off-screen bitmaps, and then blitted to a window. For XIP ROM-based bitmaps, CFbsBitmap provides facilities for accessing the data.

                  The Font and Bitmap Server is unusual in that the RFbsSession is stored in client-side thread local storage (TLS). The constructors for CFbsFont and CFbsBitmap find this session handle automatically: the client program does not have to pass it as a parameter. Therefore, to most client programs, the client/server nature of using fonts and bitmaps is hidden from the API.

                  The RFbsSession is created for clients by the Window Server’s client-side API when a Window Server session, RWsSession, is constructed. A Window Server client is therefore also a client of the Font and Bitmap Server.

                  When a client calls, for example, the CWindowGc::DrawBitmap() function, the handle number of the bitmap is passed to the Window Server through inter-process communication (IPC). Like all CWindowGc drawing commands, the handle number is stored in a client-side command buffer, which by default is flushed to the server side only when it is full. Once flushed to the server-side, the command buffer is processed by the Window Server rendering loop. Consider the scenario where an application calls CWindowGc::DrawBitmap() and then closes the bitmap before the client-side buffer is flushed. There needs to be some mechanism to prevent the bitmap’s reference count from reaching zero and hence being deleted before the Window Server can render it. For this reason, RFbsSession has a callback, which is invoked whenever a client closes a bitmap handle. The callback causes an immediate flush of the Window Server client-side command buffer. The Window Server then creates on the server side a duplicate CFbsBitmap for the bitmap. This increases the bitmap's reference count and therefore prevents it from being deleted before the Window Server attempts to render it. The same mechanism applies to font handles. This mechanism is transparent to clients of the Window Server.

                  Font and Bitmap Server Collection Heap Locking in the Font and Bitmap Server Font and Text Services Collection Overview Font Store Component Overview
                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-71E64F3E-40CB-560B-A482-CA92C7FD1AA2_d0e259612_href.png Binary file Symbian3/PDK/Source/GUID-71E64F3E-40CB-560B-A482-CA92C7FD1AA2_d0e259612_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-71E64F3E-40CB-560B-A482-CA92C7FD1AA2_d0e265621_href.png Binary file Symbian3/PDK/Source/GUID-71E64F3E-40CB-560B-A482-CA92C7FD1AA2_d0e265621_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-71F8553D-04A2-5F59-A469-1D08109C7A28_d0e229925_href.png Binary file Symbian3/PDK/Source/GUID-71F8553D-04A2-5F59-A469-1D08109C7A28_d0e229925_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-71F8553D-04A2-5F59-A469-1D08109C7A28_d0e235920_href.png Binary file Symbian3/PDK/Source/GUID-71F8553D-04A2-5F59-A469-1D08109C7A28_d0e235920_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-721A5765-7A9A-58F9-AFAF-ABC559207D23.dita --- a/Symbian3/PDK/Source/GUID-721A5765-7A9A-58F9-AFAF-ABC559207D23.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-721A5765-7A9A-58F9-AFAF-ABC559207D23.dita Fri Jul 16 17:23:46 2010 +0100 @@ -63,7 +63,7 @@ information requests.

                The class diagram of CDVBHReceiverInfo is shown below:

                - +

                The enhanced functionality of CDvbhReceiverInfo API are provided by a number of additional utilty classes, they are such as:

                • MDvbhNetworkIdObserver : diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7226154E-2387-5D14-A009-2A1A60617970.dita --- a/Symbian3/PDK/Source/GUID-7226154E-2387-5D14-A009-2A1A60617970.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -nostrictdef

                  nostrictdef

                  By default, for wide builds, the build tools expect the .def files for the project to have a u suffix: e.g. myprojectu.def. If the nostrictdef statement is specified, the u suffix will not be applied to the frozen .def file.

                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-72262200-B940-4D0C-8FA0-6628E9894E8F_d0e67904_href.png Binary file Symbian3/PDK/Source/GUID-72262200-B940-4D0C-8FA0-6628E9894E8F_d0e67904_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-72262200-B940-4D0C-8FA0-6628E9894E8F_d0e72117_href.png Binary file Symbian3/PDK/Source/GUID-72262200-B940-4D0C-8FA0-6628E9894E8F_d0e72117_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-72262200-B940-4D0C-8FA0-6628E9894E8F_d0e94853_href.png Binary file Symbian3/PDK/Source/GUID-72262200-B940-4D0C-8FA0-6628E9894E8F_d0e94853_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-72262200-B940-4D0C-8FA0-6628E9894E8F_d0e99051_href.png Binary file Symbian3/PDK/Source/GUID-72262200-B940-4D0C-8FA0-6628E9894E8F_d0e99051_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-722FAAAD-AD14-4139-857E-83B639FDEB58_d0e93155_href.png Binary file Symbian3/PDK/Source/GUID-722FAAAD-AD14-4139-857E-83B639FDEB58_d0e93155_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-722FAAAD-AD14-4139-857E-83B639FDEB58_d0e97353_href.png Binary file Symbian3/PDK/Source/GUID-722FAAAD-AD14-4139-857E-83B639FDEB58_d0e97353_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7233BC33-6060-5D6B-A5D2-01135F059337.dita --- a/Symbian3/PDK/Source/GUID-7233BC33-6060-5D6B-A5D2-01135F059337.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7233BC33-6060-5D6B-A5D2-01135F059337.dita Fri Jul 16 17:23:46 2010 +0100 @@ -119,7 +119,7 @@ Services. Optional components can be included if you require the feature that the component provides.

                  Figure 1. LBS subsystem components. - +

                  The core components of the subsystem are as follows:

                  • Location Server Framework

                  • Positioning Framework

                  • @@ -366,7 +366,7 @@ Server to positioning hardware.

                    -

                    Positioning +

                    Positioning Plug-in (PSY)Information API

                    The PSY Information API consists of a set of Central Repository keys that a PSY developer must use to register the PSY with the LBS subsystem. @@ -542,7 +542,7 @@ groups of related components.

                    Figure 2. Collections and components of the LBS System Model. - +

                    The LBS Integration and Configuration Guide contains information about how to build and configure the components in the LBS subsystem.

                    The following tables diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7235E4E9-0046-4BE1-91CF-BD52CE4489DF.dita --- a/Symbian3/PDK/Source/GUID-7235E4E9-0046-4BE1-91CF-BD52CE4489DF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7235E4E9-0046-4BE1-91CF-BD52CE4489DF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,7 +20,7 @@ Note that there should be no more than three links in a single query.

                    Message query - +
                    Using message queries in applications

                    For implementation information, diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-727E6071-591B-539E-997C-BC0CC5B62A11_d0e175792_href.png Binary file Symbian3/PDK/Source/GUID-727E6071-591B-539E-997C-BC0CC5B62A11_d0e175792_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-727E6071-591B-539E-997C-BC0CC5B62A11_d0e181861_href.png Binary file Symbian3/PDK/Source/GUID-727E6071-591B-539E-997C-BC0CC5B62A11_d0e181861_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7287F1D4-023E-5C90-91E1-6D8DF78D8241.dita --- a/Symbian3/PDK/Source/GUID-7287F1D4-023E-5C90-91E1-6D8DF78D8241.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7287F1D4-023E-5C90-91E1-6D8DF78D8241.dita Fri Jul 16 17:23:46 2010 +0100 @@ -58,10 +58,10 @@ section as the second diagram shows.

                    User process 1's view. - + User process 2's view. - + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7293765E-2B1E-5F0D-B6A8-0E48729DC365_d0e235688_href.png Binary file Symbian3/PDK/Source/GUID-7293765E-2B1E-5F0D-B6A8-0E48729DC365_d0e235688_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7293765E-2B1E-5F0D-B6A8-0E48729DC365_d0e241661_href.png Binary file Symbian3/PDK/Source/GUID-7293765E-2B1E-5F0D-B6A8-0E48729DC365_d0e241661_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7293CFFD-4D5D-58F8-97F9-4906CBEBCC79_d0e51088_href.png Binary file Symbian3/PDK/Source/GUID-7293CFFD-4D5D-58F8-97F9-4906CBEBCC79_d0e51088_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7293CFFD-4D5D-58F8-97F9-4906CBEBCC79_d0e55322_href.png Binary file Symbian3/PDK/Source/GUID-7293CFFD-4D5D-58F8-97F9-4906CBEBCC79_d0e55322_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-72B7B5CC-2E04-53CE-8414-C362DFD40D52_d0e330755_href.png Binary file Symbian3/PDK/Source/GUID-72B7B5CC-2E04-53CE-8414-C362DFD40D52_d0e330755_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-72B7B5CC-2E04-53CE-8414-C362DFD40D52_d0e336732_href.png Binary file Symbian3/PDK/Source/GUID-72B7B5CC-2E04-53CE-8414-C362DFD40D52_d0e336732_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-72DE3EB1-1AF5-4157-8B99-A1C7143DAD2C.dita --- a/Symbian3/PDK/Source/GUID-72DE3EB1-1AF5-4157-8B99-A1C7143DAD2C.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ - - - - - -Navigation -using tabs -

                    The Symbian user interface uses the tab metaphor that allows combining -several pages of related information into a single state when all of it would -not fit into a single screen or list. The user can switch the tabs using the -Arrow left and Arrow right keys as indicated in the Navi -pane.

                    - -Navigation using tabs - - -

                    In this example, state 1-3 uses two tabs to present its information. The -user moves between views 1-3a and 1-3b using the Arrow left and Arrow right -keys. Note that there is no Back function moving between the tab views; Back -from both of them leads to state 1.

                    -

                    Tab-controlled views apply the following rules:

                    -
                      -
                    • A list view from which each of the tabbed views can be accessed should -precede the tabbed views one level higher.

                    • -
                    • Moving from one tab view to another has no effect on the function of -the Back softkey in these views: from all of them, the Back function leads -to the same place, the previous level in the application. In this respect, -tabbed views are interpreted as one state in the application.

                    • -
                    • When a state has tabbed views, one of them is the default view that -is opened when the user enters the state from the previous level.

                    • -
                    • When the user has proceeded from a tabbed view into a deeper hierarchy -level, the Back function returns to the same tabbed view where the user came -from (which is not necessarily the default view described in the previous -bullet).

                    • -
                    • The possibilities to go forward from tab views may differ from one -view to another (although typically they are similar). This means that one -tab view may have other functions available to the user than another tab view -in the same state.

                    • -
                    - - Touch interaction model for tabs - - -Default touch -events for tabs - - - - - - -

                    User action

                    -

                    State change

                    -

                    Feedback

                    -
                    - - - - -

                    Touch down on a tab

                    -

                    No change

                    -

                    Highlight is shown.

                    Tactile: Basic tab effect and audio feedback -are provided with touch down event.

                    -
                    - -

                    Touch down and hold on a tab

                    -

                    Inactive

                    -

                    Tactile: No effect

                    -
                    - -

                    Touch release on a tab

                    -

                    Corresponding view is changed.

                    Activated tab moves to the -middle of the tab view (all the tabs move along) unless it is the first or -the last tab in the application.

                    -

                    Highlight disappears

                    Tactile: Basic tab effect is provided -with touch release event.

                    -
                    - -

                    Touch down and move horizontally on tab area and release

                    -

                    Previous or next tab is opened

                    -

                    Tactile: Basic tab effect and audio feedback are provided with touch -down event.

                    -
                    - - -
                    -
                    Using -tabs in applications

                    The API to use for tabs is the Tabs API. For implementation information, see Using the Tabs API.

                    -
                    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-72F24867-8D67-5BD1-A8C4-93FC7A4290FC_d0e260366_href.png Binary file Symbian3/PDK/Source/GUID-72F24867-8D67-5BD1-A8C4-93FC7A4290FC_d0e260366_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-72F24867-8D67-5BD1-A8C4-93FC7A4290FC_d0e266375_href.png Binary file Symbian3/PDK/Source/GUID-72F24867-8D67-5BD1-A8C4-93FC7A4290FC_d0e266375_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-734588CA-5644-438A-9CC9-77ECBE0C1EEA.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-734588CA-5644-438A-9CC9-77ECBE0C1EEA.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,21 @@ + + + + + +Obsolete +MechanismsThis is an collection of documents that describe mechanisms that +have been rendered obsolete by the introduction of SMP. +SMP Overview + +NKern::Lock() + +Obsolete +NKern Interrupt Methods + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-73491C1D-6C74-5434-B2F3-4AF416AE37B7.dita --- a/Symbian3/PDK/Source/GUID-73491C1D-6C74-5434-B2F3-4AF416AE37B7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-73491C1D-6C74-5434-B2F3-4AF416AE37B7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -82,7 +82,7 @@ main classes used in the hash framework. For information on each class see the Cryptography API Reference material.

                    Inheritance diagram for the Hash API - +

                    The hash API is used internally by the Security components: AppInst, Certman (Certificate Management) and Cryptography. Networking/TLS uses a pseudo-random function (PRF) based on HMAC. Both MD5 and SHA-1 are used in TLS.

                    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-736BB5CF-0E2B-59FC-BC65-E52A7D12EC4A_d0e232725_href.png Binary file Symbian3/PDK/Source/GUID-736BB5CF-0E2B-59FC-BC65-E52A7D12EC4A_d0e232725_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-736BB5CF-0E2B-59FC-BC65-E52A7D12EC4A_d0e238720_href.png Binary file Symbian3/PDK/Source/GUID-736BB5CF-0E2B-59FC-BC65-E52A7D12EC4A_d0e238720_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-736F9C4B-7C70-5927-A9C9-21A127C431AF_d0e58622_href.png Binary file Symbian3/PDK/Source/GUID-736F9C4B-7C70-5927-A9C9-21A127C431AF_d0e58622_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-736F9C4B-7C70-5927-A9C9-21A127C431AF_d0e62856_href.png Binary file Symbian3/PDK/Source/GUID-736F9C4B-7C70-5927-A9C9-21A127C431AF_d0e62856_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7387B16E-1978-5997-ACCB-BEBFD2609C86.dita --- a/Symbian3/PDK/Source/GUID-7387B16E-1978-5997-ACCB-BEBFD2609C86.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -CapImportCheck report - file format

                    Once you have compared the capabilities of a specific binary file with the capabilities of the binary files that may import it, an HTML report is generated.

                    The report first lists all the input files that have been used in the capability check, in other words, the ROM log file, the Symbian Capability List, the dependency data file, and then provides Summary and Details sections of the results, as described below.

                    Summary section

                    This section provides the total number of binaries with mismatched import capabilities.

                    The names of the binaries, the import files containing errors and the missing capabilities are provided in the Details section.

                    Details section

                    This section lists the following.

                    • Imported binary and its existing capabilities

                    • Chains of importers with additional capabilities

                    • Aggregate missing capabilities of imported binary

                    • Aggregate extra capabilities of imported binary.

                    How to use CapImportCheck CapSearch Guide CapCheck Guide
                    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F.dita --- a/Symbian3/PDK/Source/GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-738FADA9-E26F-53F1-A6D6-2E82019DDA1F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -24,7 +24,7 @@ 1

                    Alphabet of the Default GSM7 Turkish Single Converter - +
                  • Turkish Locking GSM7 Extension Converter. The highlighted boxes in Figure 2 show that it supports @@ -35,7 +35,7 @@ 2

                    Alphabet of the Turkish Locking GSM7 Extension Converter - +
                  • Turkish Locking Single Converter. The highlighted boxes in Figure 3 show that it supports the Turkish @@ -46,7 +46,7 @@ 3

                    Alphabet of the Turkish Locking Single Converter - +

                  Note: For all of the converters, any undefined Unicode is converted to a question mark (?)–GSM code 0x37. Any code diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-739556F5-A2F3-5548-943C-7D50785DFB48_d0e587286_href.png Binary file Symbian3/PDK/Source/GUID-739556F5-A2F3-5548-943C-7D50785DFB48_d0e587286_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-739556F5-A2F3-5548-943C-7D50785DFB48_d0e636585_href.png Binary file Symbian3/PDK/Source/GUID-739556F5-A2F3-5548-943C-7D50785DFB48_d0e636585_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-73A431EF-44CA-5E62-AF3F-1601CFD2484F_d0e536212_href.jpg Binary file Symbian3/PDK/Source/GUID-73A431EF-44CA-5E62-AF3F-1601CFD2484F_d0e536212_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-73A431EF-44CA-5E62-AF3F-1601CFD2484F_d0e543672_href.jpg Binary file Symbian3/PDK/Source/GUID-73A431EF-44CA-5E62-AF3F-1601CFD2484F_d0e543672_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-743BFB3C-7B88-4A5C-A655-A50DEB45FC46.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-743BFB3C-7B88-4A5C-A655-A50DEB45FC46.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,87 @@ + + + + + +Creating +an installer as an in-process plug-in + + +

                  Create an ECom plug-in implementation of the CSifPlugin interface. +For detailed information about creating an ECom plug-in interface implementation, +see the Implementing +an Interface section.

                  For example:

                  Class CSamplePlugin : public CSifPlugin + { +public: + static CSamplePlugin* NewL(); + ~CSamplePlugin(); + + //Define all virtual functions of CSifPlugin + ... + + void GetComponentInfo(const TDesC& aFileName, const TSecurityContext& aSecurityContext, + CComponentInfo& aComponentInfo, TRequestStatus& aStatus); + void GetComponentInfo(RFile& aFileHandle, const TSecurityContext& aSecurityContext, + CComponentInfo& aComponentInfo, TRequestStatus& aStatus); + + void Install(const TDesC& aFileName, const TSecurityContext& aSecurityContext, + const COpaqueNamedParams& aInputParams, COpaqueNamedParams& aOutputParams, + TRequestStatus& aStatus); + + ... + +private: + CSamplePlugin() {} + void ConstructL(); + CSamplePlugin(const CSamplePlugin &); + CSamplePlugin & operator =(const CSamplePlugin &); + }; + +Export the implementation factories by declaring an array containing +the ECom implementation and an appropriate exported function. For detailed +information about exporting the implementation factories, see the Exporting +the Implementation Factories section. + + +

                  Publish the properties of your ECom implementation in a registration +resource file. For detailed information publishing the properties in a registration +resource file, see the Providing +registry information section.

                  For example:

                  // ECOM DLL UID: 0x1028634F +// ECOM interface UID: 0x10285BC2 (KUidSifPlugin) +// ECOM Implementation: 0x10286350 + +#include <ecom/registryinfo.rh> + +RESOURCE REGISTRY_INFO so_registry + { + dll_uid = 0x1028634F; + interfaces = + { + INTERFACE_INFO + { + interface_uid = 0x10285BC2; + + implementations = + { + IMPLEMENTATION_INFO + { + implementation_uid = 0x10286350; + version_no = 1; + default_data = ""; + opaque_data = ""; + } + }; + } + }; + }
                  +
                  +Create a DLL with target type as plugin. + + + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7461BD6A-F50B-5E14-8995-CF3F2D8F5F14_d0e596557_href.png Binary file Symbian3/PDK/Source/GUID-7461BD6A-F50B-5E14-8995-CF3F2D8F5F14_d0e596557_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7461BD6A-F50B-5E14-8995-CF3F2D8F5F14_d0e614502_href.png Binary file Symbian3/PDK/Source/GUID-7461BD6A-F50B-5E14-8995-CF3F2D8F5F14_d0e614502_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7461BD6A-F50B-5E14-8995-CF3F2D8F5F14_d0e624451_href.png Binary file Symbian3/PDK/Source/GUID-7461BD6A-F50B-5E14-8995-CF3F2D8F5F14_d0e624451_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-746866CE-809A-5598-BA60-2947763E5EE9.dita --- a/Symbian3/PDK/Source/GUID-746866CE-809A-5598-BA60-2947763E5EE9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-746866CE-809A-5598-BA60-2947763E5EE9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,38 +11,38 @@ PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd"> Network Privacy API ReferenceThis section describes the dynamic behaviour of the Network Privacy API using a set of sequence diagrams.
                  Sequence diagrams

                  The sequence diagrams in this section describe the behaviour of the Network Privacy API when a licensee has installed and configured a Privacy Controller, Privacy Notifiers or Privacy Q&N Notifiers.

                  Startup and shutdown sequences

                  The sequence diagrams in this section describe how the LBS subsystem starts up and shuts down when LBS is built to include a Privacy Protocol Module and privacy requests are received via the Network Privacy API.

                  Startup sequence

                  The first request sent into the LBS subsystem via the Network Privacy API starts the subsystem, as shown in figure 1.1 (which shows startup of a licensee Privacy Controller).

                  Figure 1.1. LBS startup. -

                  Shutdown sequence

                  The LBS subsystem is shutdown either:

                  • When the licensee Network Privacy API client closes its connection and calls the CPosNetworkPrivacy destructor

                  • When a timer expires after the last request is completed

                  Figure 1.2 shows LBS shutdown for the two cases.

                  +

                  Shutdown sequence

                  The LBS subsystem is shutdown either:

                  • When the licensee Network Privacy API client closes its connection and calls the CPosNetworkPrivacy destructor

                  • When a timer expires after the last request is completed

                  Figure 1.2 shows LBS shutdown for the two cases.

                  Figure 1.2. LBS shutdown -

                  Privacy Controller sequences

                  The sequence diagrams in this section illustrate the behaviour of the Network Privacy API when a licensee has installed and configured a privacy controller.

                  Privacy verification with a Privacy Controller (request accepted, rejected or timeout)

                  Figure 2.1 shows privacy verification with a Privacy Controller.

                  +

                  Privacy Controller sequences

                  The sequence diagrams in this section illustrate the behaviour of the Network Privacy API when a licensee has installed and configured a privacy controller.

                  Privacy verification with a Privacy Controller (request accepted, rejected or timeout)

                  Figure 2.1 shows privacy verification with a Privacy Controller.

                  Figure 2.1 Privacy verification with a Privacy Controller. -

                  Privacy notification with a Privacy Controller

                  Figure 2.2 shows location notification with a Privacy Controller.

                  +

                  Privacy notification with a Privacy Controller

                  Figure 2.2 shows location notification with a Privacy Controller.

                  Figure 2.2 Privacy notification with a Privacy Controller. -

                  Privacy verification cancelled with a Privacy Controller

                  Figure 2.3 shows a privacy verification cancelled with a Privacy Controller.

                  +

                  Privacy verification cancelled with a Privacy Controller

                  Figure 2.3 shows a privacy verification cancelled with a Privacy Controller.

                  Figure 2.3. Privacy verification cancelled with Privacy Controller. -

                  Timeout notification with a Privacy Controller

                  Figure 2.4 shows a timeout notification with a Privacy Controller.

                  +

                  Timeout notification with a Privacy Controller

                  Figure 2.4 shows a timeout notification with a Privacy Controller.

                  Figure 2.4. Timeout notification with a Privacy Controller. -

                  Privacy Notifier sequences

                  The sequence diagrams in this section illustrate the behaviour of the Network Privacy API when a licensee has installed and configured privacy notifiers.

                  Privacy verification with a Privacy Notifier (request accepted, rejected or timeout)

                  Figure 3.1 shows verification of a privacy request with a Privacy Notifier.

                  +

                  Privacy Notifier sequences

                  The sequence diagrams in this section illustrate the behaviour of the Network Privacy API when a licensee has installed and configured privacy notifiers.

                  Privacy verification with a Privacy Notifier (request accepted, rejected or timeout)

                  Figure 3.1 shows verification of a privacy request with a Privacy Notifier.

                  Figure 3.1. Privacy verification with a Privacy Notifier. -

                  Privacy notification with a Privacy Notifier

                  Figure 3.2 shows location notification with a Privacy Notifier.

                  +

                  Privacy notification with a Privacy Notifier

                  Figure 3.2 shows location notification with a Privacy Notifier.

                  Figure 3.2. Privacy notification with a Privacy Notifier. -

                  Privacy verification cancelled with Privacy Notifier

                  Figure 3.3 shows a privacy verification cancelled with a Privacy Notifier.

                  +

                  Privacy verification cancelled with Privacy Notifier

                  Figure 3.3 shows a privacy verification cancelled with a Privacy Notifier.

                  Figure 3.3. Privacy verification cancelled with Privacy Notifier. -

                  Timeout notification with Privacy Notifier

                  Figure 3.4 shows a timeout notification with a Privacy Notifier.

                  +

                  Timeout notification with Privacy Notifier

                  Figure 3.4 shows a timeout notification with a Privacy Notifier.

                  Figure 3.4. Timeout notification with a Privacy Notifier. -

                  Privacy Q&N Notifier sequences

                  The sequence diagrams in this section illustrate the behaviour of the Network Privacy API when a licensee has installed and configured privacy Q&N notifiers.

                  Privacy verification with a Privacy Q&N notifier (request accepted, rejected or timeout)

                  Figure 4.1 shows verification of a privacy request with a Privacy Q&N notifier.

                  +

                  Privacy Q&N Notifier sequences

                  The sequence diagrams in this section illustrate the behaviour of the Network Privacy API when a licensee has installed and configured privacy Q&N notifiers.

                  Privacy verification with a Privacy Q&N notifier (request accepted, rejected or timeout)

                  Figure 4.1 shows verification of a privacy request with a Privacy Q&N notifier.

                  Figure 4.1. Privacy verification with a Q&N Privacy Notifier. -

                  Privacy notification with a Privacy Q&N notifier

                  Figure 4.2 shows a privacy notification with a Privacy Q&N notifier.

                  +

                  Privacy notification with a Privacy Q&N notifier

                  Figure 4.2 shows a privacy notification with a Privacy Q&N notifier.

                  Figure 4.2. Privacy notification with a Privacy Q&N Notifier. -

                  Privacy verification cancelled with Privacy Q&N notifier

                  Figure 4.3 shows a privacy verification cancelled with a Privacy Q&N notifier.

                  +

                  Privacy verification cancelled with Privacy Q&N notifier

                  Figure 4.3 shows a privacy verification cancelled with a Privacy Q&N notifier.

                  Figure 4.3. Privacy verification cancelled with Privacy Q&N Notifier. -

                  Timeout notification with Privacy Q&N notifier

                  Figure 4.4 shows a timeout notification with a Privacy Q&N notifier.

                  +

                  Timeout notification with Privacy Q&N notifier

                  Figure 4.4 shows a timeout notification with a Privacy Q&N notifier.

                  Figure 4.4. Timeout notification with a Privacy Q&N Notifier. -
                  Privacy +
                Privacy Protocol Module Overview Network Privacy API \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-749B7949-8731-519E-8948-CA3E1C5D6861_d0e445911_href.png Binary file Symbian3/PDK/Source/GUID-749B7949-8731-519E-8948-CA3E1C5D6861_d0e445911_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-749B7949-8731-519E-8948-CA3E1C5D6861_d0e451756_href.png Binary file Symbian3/PDK/Source/GUID-749B7949-8731-519E-8948-CA3E1C5D6861_d0e451756_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-74B329CD-4640-5636-9D8D-20F0D7E09EB4_d0e236285_href.png Binary file Symbian3/PDK/Source/GUID-74B329CD-4640-5636-9D8D-20F0D7E09EB4_d0e236285_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-74B329CD-4640-5636-9D8D-20F0D7E09EB4_d0e242258_href.png Binary file Symbian3/PDK/Source/GUID-74B329CD-4640-5636-9D8D-20F0D7E09EB4_d0e242258_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-74C1E76A-A749-52D7-838A-238C675B71B0.dita --- a/Symbian3/PDK/Source/GUID-74C1E76A-A749-52D7-838A-238C675B71B0.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-74C1E76A-A749-52D7-838A-238C675B71B0.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,5 +11,5 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> System State Management Architecture OverviewThis document describes the overview of the System State Management Architecture (SSMA) of the Symbian platform.
                Purpose

                SSMA provides a generic an a customizable mechanism to control the state of the system such as the activities to be performed at the start-up of the device, the order in which activities are executed or the actions to be performed at shut-down of the device.

                Architecture

                The following image shows the System State Management Architecture.

                SSMA Architecture -
                Description

                System State Manager and System State Plug-in together constitute the architecture of SSMA.

                • The SSM client sends a state or a system wide-proeprty transition request to the System State Manager server (SysState.exe), SysState.exe loads the policy plug-in using the policy plug-in interfaces. The state policy plug-in consists of command list. The command list has the substates defined. The SysState.exe calls the command list executer using the SSM CLE interface. System Command List Executer (SysCLE) contains a list of commands that are executed by the SSM.

                • System State Manager Utility Server (SUS) receives a request from the SSM client. SUS is responsible to monitor and control the system-wide property changes.

                  SUS loads the utility plug-in using the SSM Utility plug-in interface. The policy DLL will be dynamically loaded and an object will be instantiated that will implement one of the interfaces (M Class).

                • System State Manager Adaptation Server (SAS) receives a request from the SSM client. SAS is responsible for security checks, admission control and multiplexing and de-multiplexing of requests to and from the adaptation plug-in interfaces.

                  The SSM adaptation server will create the adaptation classes by calling the first ordinal in the adaptation.dll. The different types of Adaptation plug-in are Emergency Call RF adaptation, Miscellaneous adaptation, SIM adaptation, state adaptation and RTC adaptation plug-in and use the EmergencyCallRfAdaptation, MiscAdaptation, SimAdaptation, StateAdaptation and RtcAdaptation interfaces respectively.

                  All the interfaces are implemented by the corresponding R classes exposed from the SSM adaptation server. This allows custom commands and other components in the system with appropriate capabilities to access the functionality provided in these adaptation interfaces.

                Components
                • System State Manager: System State Manager (SSM) is a Symbian platform component that manages the state of a system throughout its lifecycle. The SSM extends the existing Generic Start-up Architecture (GSA) to manage the whole system lifecycle.

                • System State plug-in: The system state plug-in framework provides interfaces suitable for interpreting the conditional resource files. It also provides interfaces which allow customisation of the behaviour of state and system wide property changes.

                System +
                Description

                System State Manager and System State Plug-in together constitute the architecture of SSMA.

                • The SSM client sends a state or a system wide-proeprty transition request to the System State Manager server (SysState.exe), SysState.exe loads the policy plug-in using the policy plug-in interfaces. The state policy plug-in consists of command list. The command list has the substates defined. The SysState.exe calls the command list executer using the SSM CLE interface. System Command List Executer (SysCLE) contains a list of commands that are executed by the SSM.

                • System State Manager Utility Server (SUS) receives a request from the SSM client. SUS is responsible to monitor and control the system-wide property changes.

                  SUS loads the utility plug-in using the SSM Utility plug-in interface. The policy DLL will be dynamically loaded and an object will be instantiated that will implement one of the interfaces (M Class).

                • System State Manager Adaptation Server (SAS) receives a request from the SSM client. SAS is responsible for security checks, admission control and multiplexing and de-multiplexing of requests to and from the adaptation plug-in interfaces.

                  The SSM adaptation server will create the adaptation classes by calling the first ordinal in the adaptation.dll. The different types of Adaptation plug-in are Emergency Call RF adaptation, Miscellaneous adaptation, SIM adaptation, state adaptation and RTC adaptation plug-in and use the EmergencyCallRfAdaptation, MiscAdaptation, SimAdaptation, StateAdaptation and RtcAdaptation interfaces respectively.

                  All the interfaces are implemented by the corresponding R classes exposed from the SSM adaptation server. This allows custom commands and other components in the system with appropriate capabilities to access the functionality provided in these adaptation interfaces.

                Components
                • System State Manager: System State Manager (SSM) is a Symbian platform component that manages the state of a system throughout its lifecycle. The SSM extends the existing Generic Start-up Architecture (GSA) to manage the whole system lifecycle.

                • System State plug-in: The system state plug-in framework provides interfaces suitable for interpreting the conditional resource files. It also provides interfaces which allow customisation of the behaviour of state and system wide property changes.

                System State Manager
                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-74D8A4FA-5AB9-5762-BCA6-7686FB5D35DE.dita --- a/Symbian3/PDK/Source/GUID-74D8A4FA-5AB9-5762-BCA6-7686FB5D35DE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-74D8A4FA-5AB9-5762-BCA6-7686FB5D35DE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Post-acquisition Rights

                Post-acquisition rights allows an authenticated user of a device to perform the following operations:

                • Use the broadcast stream data (for example, pay per view or a subscription) without recording it.

                • Record the broadcast stream data with further usage rights, such as viewing it a fixed number of times

                • Record the broadcast and use it free of cost.

                Sequence Diagram

                The following figure shows the sequence diagram of post-acquisition rights of Streaming CAF.

                Post-acquisition sequence diagram -
                CAF Streaming Support Overview
                \ No newline at end of file +
                CAF Streaming Support Overview
                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-74E94DC3-88C7-51BE-9354-C49B3A7A8B03.dita --- a/Symbian3/PDK/Source/GUID-74E94DC3-88C7-51BE-9354-C49B3A7A8B03.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -exportlibrary

                exportlibrary lib-name

                This allows the name of the .lib file generated to be explicitly specified, overriding the default name derived from the TARGET that would otherwise be used.

                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-74F1EBB6-293A-4B33-A08F-46F3C23B37CE.dita --- a/Symbian3/PDK/Source/GUID-74F1EBB6-293A-4B33-A08F-46F3C23B37CE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-74F1EBB6-293A-4B33-A08F-46F3C23B37CE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,7 +20,7 @@ items accordingly.

                Adaptive search - +
                Using adaptive search in applications

                The APIs to use for diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7501D3AC-16FB-58E9-B55C-2598ECCD2FFA_d0e595114_href.png Binary file Symbian3/PDK/Source/GUID-7501D3AC-16FB-58E9-B55C-2598ECCD2FFA_d0e595114_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7501D3AC-16FB-58E9-B55C-2598ECCD2FFA_d0e610062_href.png Binary file Symbian3/PDK/Source/GUID-7501D3AC-16FB-58E9-B55C-2598ECCD2FFA_d0e610062_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7501D3AC-16FB-58E9-B55C-2598ECCD2FFA_d0e623008_href.png Binary file Symbian3/PDK/Source/GUID-7501D3AC-16FB-58E9-B55C-2598ECCD2FFA_d0e623008_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-751F057B-BF6D-5B28-A47A-3E99B25731CF.dita --- a/Symbian3/PDK/Source/GUID-751F057B-BF6D-5B28-A47A-3E99B25731CF.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,21 +0,0 @@ - - - - - -unpaged -

                unpaged

                -

                Use the unpaged statement to specify that the executable -is not paged. This is the same as specifying both unpagedcode and unpageddata keywords -for an executable.

                -

                You can also mark an executable as unpaged using the OBY file keyword file[[HWVD]]. -For more information about the file[[HWVD]] keyword, refer to the ROM Tools -Guide in the Application Development Toolkit available for download at http://developer.symbian.org. -

                - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-75553219-500C-487F-8D7E-0FAF48CF1872.dita --- a/Symbian3/PDK/Source/GUID-75553219-500C-487F-8D7E-0FAF48CF1872.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-75553219-500C-487F-8D7E-0FAF48CF1872.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ menu pop-up window) as a submenu.

                Submenu in the Options menu - +

                The submenu is opened by pressing either the left softkey (Select), the Selection key, or the Arrow right key. In touch enabled device, submenu diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-75AFF4B9-1F95-585E-9354-EAA6271251FA.dita --- a/Symbian3/PDK/Source/GUID-75AFF4B9-1F95-585E-9354-EAA6271251FA.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -How to troubleshoot post-linker (elf2e32) errors

                The post-linker (elf2e32.exe) is a Symbian platform build tool that is run after the compiler and linker when a project is built. Its principal function is to create executables (DLLs and EXEs) in the particular format required by Symbian platform, known as the E32Image format.

                In ordinary use, the post-linker is called by the make files constructed by abld or an IDE. The options with which the tool is called depend on your settings of the project being built (i.e. as specified in the project MMP file). Error and warning messages reported by the tool can indicate a problem with these settings. This page contains some help on interpreting these messages correctly.

                Error

                Action

                DEF File <position> is not in proper format

                This indicates a syntax error in an input DEF file. You need to edit or regenerate the DEF file to correct this.

                ELF File <file> contains initialized writable data

                By default, Symbian platform DLL's may not contain writable static data. You should change the project's source code to remove such items. For suggestions on alternatives, see Static data.

                ELF File <file> contains uninitialized writable data

                By default, Symbian platform DLL's may not contain writable static data. You should change the project's source code to remove such items. For suggestions on alternatives, see Static data.

                Ordinal number is not in sequence

                The symbol is indicates that the input DEF file has been incorrectly edited, so that the symbols are not listed in consecutive ordinal order. You need to edit or regenerate the DEF file to correct this.

                Note that if you intended to remove an export from a frozen DEF file, this should be done by using the ABSENT keyword, for example:

                _ZNK14Foo14BarLER12CStreamStore @ 646 NONAME ABSENT

                Symbol <symbol> missing from ELF File

                The input DEF file, specified by a MMP deffile statement, specifies an export that is not found in the executable.

                If no binary compatibility break was intended, you should either correct your source to export the missing symbol. If a compatibility break was intended, you should fix the DEF file.

                If you are not concerned with maintaining compatibility, use exportunfrozen in the project. This will stop the tool reporting this error.

                Unrecognized capability

                Check that the platform security capabilities, specified by a MMP capability statement, are correctly spelled. Symbian OS v9.0 Security Architecture lists the available capabilities.

                Unsupported Target Type <type>

                Check that the target type, specified by a MMP targettype statement, is correctly specified. The targettype reference page lists the available target types.

                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-75BA4518-45DE-5EB4-937E-46C1CFDD0CEB_d0e451604_href.png Binary file Symbian3/PDK/Source/GUID-75BA4518-45DE-5EB4-937E-46C1CFDD0CEB_d0e451604_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-75BA4518-45DE-5EB4-937E-46C1CFDD0CEB_d0e457449_href.png Binary file Symbian3/PDK/Source/GUID-75BA4518-45DE-5EB4-937E-46C1CFDD0CEB_d0e457449_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-760222AA-59F0-58E6-A494-F9CB6D739960_d0e63456_href.png Binary file Symbian3/PDK/Source/GUID-760222AA-59F0-58E6-A494-F9CB6D739960_d0e63456_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-760222AA-59F0-58E6-A494-F9CB6D739960_d0e67687_href.png Binary file Symbian3/PDK/Source/GUID-760222AA-59F0-58E6-A494-F9CB6D739960_d0e67687_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-762A665F-43D0-53ED-B698-0CBD3AC46391.dita --- a/Symbian3/PDK/Source/GUID-762A665F-43D0-53ED-B698-0CBD3AC46391.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-762A665F-43D0-53ED-B698-0CBD3AC46391.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ can select fonts from the Font Store. Device creators can create and add fonts. The Font and Text Services collection - + Font and diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-763DCEF4-C960-58A2-99DC-7FFD3187BFD4.dita --- a/Symbian3/PDK/Source/GUID-763DCEF4-C960-58A2-99DC-7FFD3187BFD4.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -The native build targets \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7681734D-1291-59A3-B226-BC58403FA8A0.dita --- a/Symbian3/PDK/Source/GUID-7681734D-1291-59A3-B226-BC58403FA8A0.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -targetpath

                targetpath target-path

                Use the targetpath statement to specify where the project should be released.

                • for non-Win32 platforms, or for Win32 platforms when no release path is specified, the target will be released to

                  epoc32\release\ platform \ variant \

                • for Win32 platforms, when a target path is specified, that path will be interpreted as a location on the z: drive, and the release path will therefore be

                  epoc32\release\ platform \ variant \z\ target-path \

                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-768CCC6E-16D2-50E8-8EED-EB2C2AF0E9BE.dita --- a/Symbian3/PDK/Source/GUID-768CCC6E-16D2-50E8-8EED-EB2C2AF0E9BE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-768CCC6E-16D2-50E8-8EED-EB2C2AF0E9BE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -45,7 +45,7 @@ a class derived from CSIPResolvedClient or CSIPResolvedClient2 to receive requests outside the SIP dialogs. If the target client is not running, it must be started to enable it to receive SIP requests.

                - +

                CSIPResolvedClient

                The target clients must implement the CSIPResolvedClient interface to receive SIP requests outside SIP dialogs and enable the client resolution mechanism.

                SIP diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-768D58BA-28A8-5325-A3C3-6A95E1F98578_d0e244637_href.png Binary file Symbian3/PDK/Source/GUID-768D58BA-28A8-5325-A3C3-6A95E1F98578_d0e244637_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-768D58BA-28A8-5325-A3C3-6A95E1F98578_d0e250648_href.png Binary file Symbian3/PDK/Source/GUID-768D58BA-28A8-5325-A3C3-6A95E1F98578_d0e250648_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-76901D63-BDA2-4DCA-A66C-7BAFD7E211EB_d0e101175_href.png Binary file Symbian3/PDK/Source/GUID-76901D63-BDA2-4DCA-A66C-7BAFD7E211EB_d0e101175_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-76901D63-BDA2-4DCA-A66C-7BAFD7E211EB_d0e97096_href.png Binary file Symbian3/PDK/Source/GUID-76901D63-BDA2-4DCA-A66C-7BAFD7E211EB_d0e97096_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-76A30EC4-4B99-5471-9E80-F853C91485BC.dita --- a/Symbian3/PDK/Source/GUID-76A30EC4-4B99-5471-9E80-F853C91485BC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-76A30EC4-4B99-5471-9E80-F853C91485BC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -66,7 +66,7 @@ interrupt sources. These are usually prioritised by connecting the interrupt output of a lower-priority controller to an interrupt input of a higher-priority controller. This is called chaining.

                - +

                An interrupt from a lower priority controller will appear as an interrupt on the highest-priority controller.

                When the interrupt dispatcher of the higher-priority controller detects that it is the chained interrupt @@ -77,7 +77,7 @@

                Multiple interrupt sources and pseudo interrupt sources

                It is possible that a single input to an interrupt controller is shared by several interrupt sources.

                - +

                It appears necessary to bind multiple ISRs to the same interrupt. However, this is not possible. There are two ways of dealing with this:

                • Maintain a list of all @@ -122,7 +122,7 @@ the pure virtual functions: InterruptBind(), InterruptUnbind(), InterruptEnable() etc, all with signatures that are the same for the comparable functions defined by Interrupt, and which are implemented by the Template class.

                  - +
                Spurious interrupts

                In the Kernel Architecture 2, it is a convention that unbound interrupts should @@ -177,7 +177,7 @@ (or at least, different registers) then you will need to arrange the table so that you can determine from the interrupt ID whether the interrupt is an IRQ or FIQ.

                For example:

                - +
                Location of interrupt handling code

                Most of the interrupt dispatching code diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-76B4C4D2-75A5-4139-9186-23443C68CD8F_d0e63682_href.png Binary file Symbian3/PDK/Source/GUID-76B4C4D2-75A5-4139-9186-23443C68CD8F_d0e63682_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-76B4C4D2-75A5-4139-9186-23443C68CD8F_d0e67904_href.png Binary file Symbian3/PDK/Source/GUID-76B4C4D2-75A5-4139-9186-23443C68CD8F_d0e67904_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-76FD2A71-E8A3-4C82-9704-3F7F6AD4DFD8.dita --- a/Symbian3/PDK/Source/GUID-76FD2A71-E8A3-4C82-9704-3F7F6AD4DFD8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-76FD2A71-E8A3-4C82-9704-3F7F6AD4DFD8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,13 +9,12 @@ --> -Navi -pane +Navi pane

                The principal uses of the Navi pane are to display information about the current state and view, and to help the user to navigate in the application.

                - + Navi pane - +

                Depending on the context, the Navi pane contains elements presented in the following table.

                @@ -32,8 +31,9 @@

                Tabs

                Tabs are used to view parallel data views alternatively. Arrow indicators -are used only for navigation texts.

                Each tab has either a graphic or -a text (or both) as a label. The following tab layouts can be used:

                  +are shown at both ends of the pane when there are further tabs to scroll in +the corresponding direction. Each tab has either a graphic or a text (or both) +as a label. The following tab layouts can be used:
                  • Two tabs

                  • Three tabs

                  • Four tabs

                  • @@ -42,13 +42,12 @@
                  The currently active tab is highlighted.

                  More than four tabs can exist simultaneously. They can be scrolled horizontally. However, as a design guideline, the number of tabs should be kept small (the maximum of six tabs -is recommended), and the number should not be dynamic. See Navigation -using tabs for +is recommended), and the number should not be dynamic. See for a description of the effect of tabs on the navigation within an application.

                  Navigation text (icon+text)

                  - +

                  Navigation text is displayed in the Navi pane when similar items can be browsed by scrolling horizontally, such as dates in Calendar. @@ -56,7 +55,7 @@

                  Indicators

                  - +

                  In editors, the Navi pane contains editing indicators. See Indicators for @@ -64,9 +63,9 @@

                  Folder structure indication

                  - +
                  -

                  Opened sub-folders are indicated in the Navi pane.

                  +

                  Opened subfolders are indicated in the Navi pane.

                  Application-specific content

                  @@ -75,61 +74,21 @@

                  Empty pane

                  - +

                  The Navi pane can be empty.

                  -

                  -Default touch -events for ungrouped soft notification - - - -

                  User action

                  -

                  State change

                  -

                  Feedback

                  -
                  - - - -

                  Touch down on navigation text or navigation arrow

                  -

                  Application specific

                  -

                  Tactile: In case of activity, basic button effect and audio feedback -is provided.

                  -
                  - -

                  Touch down and hold on navigation text

                  -

                  Inactive

                  -

                  Tactile: No effect

                  -
                  - -

                  Touch down and hold on arrows

                  -

                  This action performs a “key repeat”, similar to many touch downs -and releases on arrow

                  -

                  Tactile: Sensitive button effect and audio feedback is provided -with key repeat action.

                  -
                  - -

                  Touch release

                  -

                  No effect

                  -

                  Tactile: No effect

                  -
                  - - -
                  -

                  Using -the navi pane in applications

                  The API to use for the Navi pane is -the Navigation pane API. If you use tabs in the Navi pane, -the API for controlling the tabs is the Tabs API. Applications can implement an observer to handle -the touch events in the Navi pane area.

                  For the indicators -in the Navi pane, use the Indicators API.

                  For implementation information -on the Navi pane, see Using the Navigation pane API. For implementation information -on tabs, see Using the Tabs API.

                  The MAknNaviDecoratorObserver class -provides touch support for the tab arrows in the Navi pane. To set the observer, -use the CAknNavigationDecorator::SetNaviDecoratorObserver() method.

                  To -create a tab group in the Navi pane, use the CAknNavigationControlContainer::CreateTabGroupL(). -This is a factory method for a pre-implemented navigation pane tab group control.

                  +
                  Using the navi pane in +C++ applications

                  The API to use for the Navi pane is the Navigation pane API. If you use tabs in the Navi pane, the API for +controlling the tabs is the Tabs +API.

                  For the indicators in the Navi pane, use the Indicators API.

                  For implementation information on the Navi pane, +see Using +the Navigation pane API. For implementation information on tabs, see Using +the Tabs API.

                  The class MAknNaviDecoratorObserver provides touch support for the tab arrows in the Navi pane. To set +the observer, use the method CAknNavigationDecorator::SetNaviDecoratorObserver().

                  To +create a tab group in the Navi pane, use the method CreateTabGroupL() in the class CAknNavigationControlContainer. This is a factory +method for a pre-implemented navigation pane tab group control.

                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7712BAB3-5F48-5A28-9EA9-104D8B4A0431_d0e547718_href.png Binary file Symbian3/PDK/Source/GUID-7712BAB3-5F48-5A28-9EA9-104D8B4A0431_d0e547718_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7712BAB3-5F48-5A28-9EA9-104D8B4A0431_d0e555174_href.png Binary file Symbian3/PDK/Source/GUID-7712BAB3-5F48-5A28-9EA9-104D8B4A0431_d0e555174_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-771AF721-E2D7-41C8-BF97-5BD30D1A28AD.dita --- a/Symbian3/PDK/Source/GUID-771AF721-E2D7-41C8-BF97-5BD30D1A28AD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-771AF721-E2D7-41C8-BF97-5BD30D1A28AD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -32,7 +32,7 @@
                Status pane areas - +

                Status pane items

                A single tap on:

                diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-772DFFA1-4BBC-516F-909D-47CB773760F5.dita --- a/Symbian3/PDK/Source/GUID-772DFFA1-4BBC-516F-909D-47CB773760F5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-772DFFA1-4BBC-516F-909D-47CB773760F5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,31 +1,31 @@ - - - - - -Packages -as type-safe descriptorsDescribes the package function to transfer data in correct structure. -

                Descriptors are often used as the basis of data transfer within Symbian -platform. For example, inter-thread data transfer is specified in terms of -transferring data from a descriptor valid in the context of one thread, to -a descriptor valid in the context of another.

                -

                Data to be transferred almost always has a well defined structure and it -is important that the receiver of the data has some guarantee that the correct -structure has been passed. This is type safety.

                -

                A package is a descriptor and also acts as a wrapper around it. -It allows objects and data structures to be represented by descriptors in -a type safe way. Objects are either contained within a modifiable buffer descriptor -or are represented by pointer descriptors.

                -

                A package class is templated, the template parameter being the type of -the object represented. The use of a template provides the required type safety.

                -
                - -Descriptor concepts - + + + + + +Packages as type-safe descriptorsDescribes the package function to transfer data in correct +structure. +

                Descriptors are often used as the basis of data transfer within +Symbian platform. For example, inter-thread data transfer is specified +in terms of transferring data from a descriptor valid in the context +of one thread, to a descriptor valid in the context of another.

                +

                Data to be transferred almost always has a well defined structure +and it is important that the receiver of the data has some guarantee +that the correct structure has been passed. This is type safety.

                +

                A package is a descriptor and also acts as a wrapper around +it. It allows objects and data structures to be represented by descriptors +in a type safe way. Objects are either contained within a modifiable +buffer descriptor or are represented by pointer descriptors.

                +

                A package class is templated, the template parameter being the +type of the object represented. The use of a template provides the +required type safety.

                +
                + +Descriptor concepts
                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-773A0EDC-F17C-553B-BEC3-DA990F5064B7_d0e316211_href.png Binary file Symbian3/PDK/Source/GUID-773A0EDC-F17C-553B-BEC3-DA990F5064B7_d0e316211_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-773A0EDC-F17C-553B-BEC3-DA990F5064B7_d0e322201_href.png Binary file Symbian3/PDK/Source/GUID-773A0EDC-F17C-553B-BEC3-DA990F5064B7_d0e322201_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7767599C-7B77-5DD1-8E3E-7AD01EC6F6A1.dita --- a/Symbian3/PDK/Source/GUID-7767599C-7B77-5DD1-8E3E-7AD01EC6F6A1.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7767599C-7B77-5DD1-8E3E-7AD01EC6F6A1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -29,7 +29,7 @@ aStream << iData; aStream << *iCompA; aStream << *iCompB; - }

                The stream can be visualised as:

                Storing components out-of-line

                Storing a compound object’s component objects out-of-line means writing all of its component objects to a different stream from that to which it, itself, is written. Each component may be written to its own stream or to its own network of streams. The main advantage of this is that it allows for deferred loading of streams.

                It is important to note that components are stored before the containing object.

                The following code fragment defines an example class, CCompound, having two components, CComponentA and CComponentB. The components are defined as instances of the templated class TSwizzle.

                CCompound class : public CBase + }

                The stream can be visualised as:

                Storing components out-of-line

                Storing a compound object’s component objects out-of-line means writing all of its component objects to a different stream from that to which it, itself, is written. Each component may be written to its own stream or to its own network of streams. The main advantage of this is that it allows for deferred loading of streams.

                It is important to note that components are stored before the containing object.

                The following code fragment defines an example class, CCompound, having two components, CComponentA and CComponentB. The components are defined as instances of the templated class TSwizzle.

                CCompound class : public CBase { ... TInt iDdata; @@ -47,7 +47,7 @@ map->Reset(); CleanupStack::PopAndDestroy(2); return id; - }

                The StoreL() function:

                • writes the CCompound components to their own streams.

                • writes CCompound itself and its components’ stream IDs to a single stream.

                • returns the ID of the top-level stream.

                This can be visualised as:

                CCompound ’s components are stored to their own streams by defining and implementing a StoreComponentsL() member function; this is prototyped as:

                void StoreComponentsL(CStreamStore& aStore,CStoreMap& aMap)

                and implemented as:

                void CCompound::StoreComponentsL(CStreamStore& aStore,CStoreMap& aMap) + }

                The StoreL() function:

                • writes the CCompound components to their own streams.

                • writes CCompound itself and its components’ stream IDs to a single stream.

                • returns the ID of the top-level stream.

                This can be visualised as:

                CCompound ’s components are stored to their own streams by defining and implementing a StoreComponentsL() member function; this is prototyped as:

                void StoreComponentsL(CStreamStore& aStore,CStoreMap& aMap)

                and implemented as:

                void CCompound::StoreComponentsL(CStreamStore& aStore,CStoreMap& aMap) { TStreamId id; diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7767640D-5DD0-563B-8EE7-5C3EAEDBF859.dita --- a/Symbian3/PDK/Source/GUID-7767640D-5DD0-563B-8EE7-5C3EAEDBF859.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7767640D-5DD0-563B-8EE7-5C3EAEDBF859.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,12 +1,20 @@ - - - - - -UIDs

                A UID is a globally unique identifier consisting of a 32-bit number. UIDs are used throughout the Symbian platform to enable various kinds of file identification and association.

                Because UIDs are fundamental to the Symbian platform, it is important that they are used correctly when developing programs. To ensure uniqueness, it is essential that UIDs are properly allocated. Uniqueness is guaranteed by allocating UIDs centrally from a database managed by Symbian at https://www.symbiansigned.com.

                For more information on using UIDs, see How to use UIDs.

                \ No newline at end of file + + + + + +UIDs +

                A UID is a globally unique identifier consisting of a 32-bit number. +UIDs are used throughout the Symbian platform to enable various kinds +of file identification and association.

                +

                Because UIDs are fundamental to the Symbian platform, it is important +that they are used correctly when developing programs. To ensure uniqueness, +it is essential that UIDs are properly allocated. Uniqueness is guaranteed +by allocating UIDs centrally from a database managed by Symbian at https://www.symbiansigned.com.

                +
                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-77AD4D8C-08CA-45C4-B5E7-04B4C7958A1A_d0e104840_href.png Binary file Symbian3/PDK/Source/GUID-77AD4D8C-08CA-45C4-B5E7-04B4C7958A1A_d0e104840_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-77EC9F20-32F4-5A1D-B183-75838EBA30B1_d0e218726_href.png Binary file Symbian3/PDK/Source/GUID-77EC9F20-32F4-5A1D-B183-75838EBA30B1_d0e218726_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-77EC9F20-32F4-5A1D-B183-75838EBA30B1_d0e224746_href.png Binary file Symbian3/PDK/Source/GUID-77EC9F20-32F4-5A1D-B183-75838EBA30B1_d0e224746_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-77F02412-00E1-59F9-A875-3147529F83F5_d0e141273_href.png Binary file Symbian3/PDK/Source/GUID-77F02412-00E1-59F9-A875-3147529F83F5_d0e141273_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-77F02412-00E1-59F9-A875-3147529F83F5_d0e143522_href.png Binary file Symbian3/PDK/Source/GUID-77F02412-00E1-59F9-A875-3147529F83F5_d0e143522_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-78175610-72F4-5CAF-B1E9-9A761347C9DB.dita --- a/Symbian3/PDK/Source/GUID-78175610-72F4-5CAF-B1E9-9A761347C9DB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-78175610-72F4-5CAF-B1E9-9A761347C9DB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,31 +1,58 @@ - - - - - -Hello World: A minimal console applicationThis section describes the steps to build the Hello World project on the emulator. - -

                The code in this section has been taken from the Hello example.

                This example demonstrates the most basic use of STDLIB. It consists of the single source code file, slhello.c whose sole function, main() calls printf().

                The Hello example's project definition file (Hello.mmp) contains the following:

                TTARGET hello.exe -TARGETTYPE exe -UID 0 -SOURCEPATH . -SOURCE slhello.c -SYSTEMINCLUDE \epoc32\include\libc \epoc32\include - -LIBRARY estlib.lib euser.lib -STATICLIBRARY ecrt0.lib
                • The import library estlib.lib is the C standard library.
                • The project also links to ecrt0.lib. This file provides the E32Main() entrypoint for a .exe. It also provides other services including command-line parsing, and it calls main().
                • The SYSTEMINCLUDE path specifies \epoc32\include\libc\, which is the location for STDLIB's header files.
                -

                For more information on the project specification for a .exe see How to build for an EXE target.

                - To build Hello for the Emulator, run bldmake from the directory where the bld.inf file is located: - - bldmake bldfilesThis creates the <file>abld.bat</file> batch file. - Use abld to build the project, for instance:abld build wins udebTo run it, invoke hello.exeTo build Hello for the target machine, invoke bldmake and abld, specifying the appropriate target platform.To install software on the target device create a .sis file using the Symbian Installation system. See the Application Installation Guide - - - -
                How to build for an EXE targetHow to use the Symbian build processApplication Installation Guide
                \ No newline at end of file + + + + + +Hello +World: A minimal console applicationThis section describes the steps to build the Hello World +project on the emulator. +

                The code +in this section has been taken from the Hello example.

                This example demonstrates the most basic use of STDLIB. +It consists of the single source code file, slhello.c whose sole function, main() calls printf().

                The Hello example's project definition +file (Hello.mmp) contains the following:

                TTARGET hello.exe +TARGETTYPE exe +UID 0 +SOURCEPATH . +SOURCE slhello.c +SYSTEMINCLUDE \epoc32\include\libc \epoc32\include + +LIBRARY estlib.lib euser.lib +STATICLIBRARY ecrt0.lib
                  +
                • The import library estlib.lib is the C standard library.
                • +
                • The project also links +to ecrt0.lib. This file provides the E32Main() entrypoint for a .exe. It +also provides other services including command-line parsing, and it +calls main().
                • +
                • The SYSTEMINCLUDE path specifies \epoc32\include\libc\, which +is the location for STDLIB's header files.
                • +
                + +To build Hello for the Emulator, run bldmake from the directory where the bld.inf file is +located: +bldmake bldfiles +This creates the <file>abld.bat</file> batch file. + +Use abld to build the project, for instance: +abld build wins udeb + +To run it, invoke hello.exe + +To build Hello for the target machine, invoke bldmake and abld, specifying the appropriate target platform. + +To install software +on the target device create a .sis file using +the Symbian Installation system. +See the Application Installation +Guide + + +
                +Application +Installation Guide +
                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-781F53F0-0F84-4BF9-A565-C2E7333521CE.dita --- a/Symbian3/PDK/Source/GUID-781F53F0-0F84-4BF9-A565-C2E7333521CE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-781F53F0-0F84-4BF9-A565-C2E7333521CE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -23,7 +23,7 @@ query is launched for password.

                Data query with two input fields - +
                Using data queries with multiple fields in applications

                For implementation diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-782E8D92-0431-50F5-95A0-5B231EBDF391_d0e376930_href.png Binary file Symbian3/PDK/Source/GUID-782E8D92-0431-50F5-95A0-5B231EBDF391_d0e376930_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-782E8D92-0431-50F5-95A0-5B231EBDF391_d0e382774_href.png Binary file Symbian3/PDK/Source/GUID-782E8D92-0431-50F5-95A0-5B231EBDF391_d0e382774_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-783161AE-708E-4FB4-8219-EEC0F9939E9B_d0e83862_href.png Binary file Symbian3/PDK/Source/GUID-783161AE-708E-4FB4-8219-EEC0F9939E9B_d0e83862_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-783161AE-708E-4FB4-8219-EEC0F9939E9B_d0e88060_href.png Binary file Symbian3/PDK/Source/GUID-783161AE-708E-4FB4-8219-EEC0F9939E9B_d0e88060_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-783D0B50-0E8A-5199-A07E-749D4A71E671.dita --- a/Symbian3/PDK/Source/GUID-783D0B50-0E8A-5199-A07E-749D4A71E671.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-783D0B50-0E8A-5199-A07E-749D4A71E671.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,98 +1,136 @@ - - - - - -Processing an Extended Inquiry Response

                This tutorial shows you how to retrieve and process the data from a Bluetooth Extended Inquiry Response (EIR).

                Introduction

                This tutorial shows you how to retrieve the EIR data and how to access the various types of data within it.

                Basic Procedure

                The high level steps to access the EIR are shown here:

                1. Create the EIR object and during construction fill it with the data from the Extended Inquiry Response

                2. Use access functions to retrieve the different types of data.

                Environment

                This tutorial assumes that you have your device correctly configured, active and with Bluetooth enabled and the Bluetooth Stack initialised. iResult is in scope and contains a TNameEntry object as the result of a successful Inquiry request. See Inquiring About Remote Devices.

                Note: When the Inquiry Request is made, set the aDoEIR flag to specify that Extended Inquire Response data is required. The Bluetooth Stack will set the aDoEIR flag if an older version of the API (non-EIR) is used.

                Tutorial

                Create an object to hold the Extended Inquiry Response data

                • TBluetoothNameRecordWrapper eir(iResult());

                Use access functions to retrieve the various kinds of data

                1. Get the Bluetooth device local name

                  Note: The device local name may be truncated if it is too long to fit in the EIR data packet. If the name is not truncated then the isNameComplete flag will be set to TRUE.

                  -TBool isNameComplete; -TInt error = KErrNone; -TInt length = 0; - -// Get name -// This length could be used to create the TBuf to be passed into GetDeviceName() -length = eir.GetDeviceNameLength(); -TBuf<255> name; -if(length >= 0) - { - // name will contain a Unicode encoded 16-bit string - error = eir.GetDeviceName(name, isNameComplete); - } - else - { - error = length; - } -if(error == KErrNone) -// we have name here - { - if(isNameComplete == EFalse) - { - iHROutputConsole->Printf(_L("%d Bytes [Partial] Name: "), length); - } - else - { - iHROutputConsole->Printf(_L("%d Bytes [Complete] Name: "), length); - } - iHROutputConsole->Printf(_L("%S \n"),&name); - } -
                2. Get the Transmission Power level

                  // Get TxPowerLevel -TInt8 txPowerLevel; -error = eir.GetTxPowerLevel(txPowerLevel); -if(error == KErrNone) - // TxPowerLevel present - { - iHROutputConsole->Printf(_L("TxPowerLevel: %ddBm\n"), txPowerLevel); - }
                3. Get the Service Class UUIDs.

                  // Get UUIDs -RExtendedInquiryResponseUUIDContainer uuidContainer; -error = eir.GetServiceClassUuids(uuidContainer); -if(error >= KErrNone) - { - RArray<TUUID> uuids; - TInt uuidCount = uuidContainer.UUIDs().Count(); - if(uuidCount > 0) - { - iHROutputConsole->Printf(_L("*** UUID Count: %d\n"), uuidCount); - TInt i; - for(i=0;i<uuidCount;i++) - { - TInt j; - TPtrC8 uuid(uuidContainer.UUIDs()[i].ShortestForm()); - // Treat it as a big endian - for(j=0;j<uuid.Length();j++) - { - iHROutputConsole->Printf(_L("%02X"), uuid[j]); - } - - iHROutputConsole->Printf(_L(" \n")); - } - } - }
                4. Get Manufacturer Specific data.

                  Note: This data is entirely defined by the individual Manufacturer.

                  // Get Manufacturer Specific Data -length = eir.GetVendorSpecificDataLength(); -TBuf8<255> msd; -if(length > 0) - { - error = eir.GetVendorSpecificData(msd); - } -else - { - error = length; - } -if(error == KErrNone) -// we have Manufacturer Specific Data here - { - // This conversion is for display reason, in a real world this may not be necessary as - // Manufacturer specific data can be just raw 8-bit data, however GetDeviceName() is - // different as it always return Unicode encoded 16-bit string - error = CnvUtfConverter::ConvertToUnicodeFromUtf8(name, msd); - if(error >= KErrNone && length > 0) - { - iHROutputConsole->Printf(_L("%d Bytes Manufacturer Specific Data: %S\n"), length, &name); - } - } -}
                Bluetooth Extended Inquiry - Response \ No newline at end of file + + + + + +Processing an Extended Inquiry Response +

                This tutorial shows you how to retrieve and process the data from +a Bluetooth Extended Inquiry Response (EIR).

                +
                Introduction

                This tutorial shows you how +to retrieve the EIR data and how to access the various types of data +within it.

                Basic Procedure

                The high level steps to access the +EIR are shown here:

                  +
                1. Create the EIR object and during construction fill it with the data +from the Extended Inquiry Response

                2. +
                3. Use access functions +to retrieve the different types of data.

                4. +
                +
                Environment

                This tutorial assumes that +you have your device correctly configured, active and with Bluetooth +enabled and the Bluetooth Stack initialised. iResult is in scope and contains a TNameEntry object +as the result of a successful Inquiry request. See Inquiring About Remote +Devices.

                Note: When the Inquiry Request is +made, set the aDoEIR flag to specify that Extended +Inquire Response data is required. The Bluetooth Stack will set the aDoEIR flag if an older version of the API (non-EIR) is +used.

                +
                Tutorial

                Create an object to hold the Extended Inquiry Response data

                  +
                • TBluetoothNameRecordWrapper eir(iResult());
                • +

                Use access functions to retrieve the various kinds of data

                  +
                1. Get the Bluetooth +device local name

                  Note: The device local name may +be truncated if it is too long to fit in the EIR data packet. If the +name is not truncated then the isNameComplete flag +will be set to TRUE.

                  +TBool isNameComplete; +TInt error = KErrNone; +TInt length = 0; + +// Get name +// This length could be used to create the TBuf to be passed into GetDeviceName() +length = eir.GetDeviceNameLength(); +TBuf<255> name; +if(length >= 0) + { + // name will contain a Unicode encoded 16-bit string + error = eir.GetDeviceName(name, isNameComplete); + } + else + { + error = length; + } +if(error == KErrNone) +// we have name here + { + if(isNameComplete == EFalse) + { + iHROutputConsole->Printf(_L("%d Bytes [Partial] Name: "), length); + } + else + { + iHROutputConsole->Printf(_L("%d Bytes [Complete] Name: "), length); + } + iHROutputConsole->Printf(_L("%S \n"),&name); + } +
                2. +
                3. Get the Transmission +Power level

                  // Get TxPowerLevel +TInt8 txPowerLevel; +error = eir.GetTxPowerLevel(txPowerLevel); +if(error == KErrNone) + // TxPowerLevel present + { + iHROutputConsole->Printf(_L("TxPowerLevel: %ddBm\n"), txPowerLevel); + }
                4. +
                5. Get the Service +Class UUIDs.

                  // Get UUIDs +RExtendedInquiryResponseUUIDContainer uuidContainer; +error = eir.GetServiceClassUuids(uuidContainer); +if(error >= KErrNone) + { + RArray<TUUID> uuids; + TInt uuidCount = uuidContainer.UUIDs().Count(); + if(uuidCount > 0) + { + iHROutputConsole->Printf(_L("*** UUID Count: %d\n"), uuidCount); + TInt i; + for(i=0;i<uuidCount;i++) + { + TInt j; + TPtrC8 uuid(uuidContainer.UUIDs()[i].ShortestForm()); + // Treat it as a big endian + for(j=0;j<uuid.Length();j++) + { + iHROutputConsole->Printf(_L("%02X"), uuid[j]); + } + + iHROutputConsole->Printf(_L(" \n")); + } + } + }
                6. +
                7. Get Manufacturer +Specific data.

                  Note: This data is entirely defined +by the individual Manufacturer.

                  // Get Manufacturer Specific Data +length = eir.GetVendorSpecificDataLength(); +TBuf8<255> msd; +if(length > 0) + { + error = eir.GetVendorSpecificData(msd); + } +else + { + error = length; + } +if(error == KErrNone) +// we have Manufacturer Specific Data here + { + // This conversion is for display reason, in a real world this may not be necessary as + // Manufacturer specific data can be just raw 8-bit data, however GetDeviceName() is + // different as it always return Unicode encoded 16-bit string + error = CnvUtfConverter::ConvertToUnicodeFromUtf8(name, msd); + if(error >= KErrNone && length > 0) + { + iHROutputConsole->Printf(_L("%d Bytes Manufacturer Specific Data: %S\n"), length, &name); + } + } +}
                8. +
                + +
                +Bluetooth Extended Inquiry Response +
                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-785160B9-A6BC-47FA-957E-5BB87E79B4E7_d0e101906_href.png Binary file Symbian3/PDK/Source/GUID-785160B9-A6BC-47FA-957E-5BB87E79B4E7_d0e101906_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-785160B9-A6BC-47FA-957E-5BB87E79B4E7_d0e97828_href.png Binary file Symbian3/PDK/Source/GUID-785160B9-A6BC-47FA-957E-5BB87E79B4E7_d0e97828_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-786D76B7-B827-43B7-8202-BA7A7E5EE03E.dita --- a/Symbian3/PDK/Source/GUID-786D76B7-B827-43B7-8202-BA7A7E5EE03E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-786D76B7-B827-43B7-8202-BA7A7E5EE03E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -37,7 +37,7 @@
                Use cases Tactile feedback client API use cases - +

                To provide tactile feedback for touch events in your applications, implement the following use cases:

                • Using direct diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-78989363-A405-4A1D-8F13-DC52FE6FAD80_d0e103515_href.png Binary file Symbian3/PDK/Source/GUID-78989363-A405-4A1D-8F13-DC52FE6FAD80_d0e103515_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-78989363-A405-4A1D-8F13-DC52FE6FAD80_d0e107535_href.png Binary file Symbian3/PDK/Source/GUID-78989363-A405-4A1D-8F13-DC52FE6FAD80_d0e107535_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-78AAEDF8-6C31-53E3-B411-3463DDAAC902_d0e109991_href.png Binary file Symbian3/PDK/Source/GUID-78AAEDF8-6C31-53E3-B411-3463DDAAC902_d0e109991_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-78AAEDF8-6C31-53E3-B411-3463DDAAC902_d0e112414_href.png Binary file Symbian3/PDK/Source/GUID-78AAEDF8-6C31-53E3-B411-3463DDAAC902_d0e112414_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-78B63C44-7765-5408-A611-DFE8709196F8_d0e242153_href.png Binary file Symbian3/PDK/Source/GUID-78B63C44-7765-5408-A611-DFE8709196F8_d0e242153_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-78B63C44-7765-5408-A611-DFE8709196F8_d0e248164_href.png Binary file Symbian3/PDK/Source/GUID-78B63C44-7765-5408-A611-DFE8709196F8_d0e248164_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-79009102-0490-5C61-9722-C5EE49A1AF2B_d0e228080_href.png Binary file Symbian3/PDK/Source/GUID-79009102-0490-5C61-9722-C5EE49A1AF2B_d0e228080_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-79009102-0490-5C61-9722-C5EE49A1AF2B_d0e234079_href.png Binary file Symbian3/PDK/Source/GUID-79009102-0490-5C61-9722-C5EE49A1AF2B_d0e234079_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita --- a/Symbian3/PDK/Source/GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-79100974-CAE1-5451-9ED7-E06C9B27131B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,8 +9,7 @@ --> -Build -Process +Build Process

                  • Introduction

                  • P.I.P.S. target types

                  • @@ -20,73 +19,62 @@
                  • Using the System Call Adaptation Layer

                -
                Introduction

                Symbian -currently builds its emulator code with the Metrowerks CodeWarrior compiler. -This is known as the WINSCW build target. Binaries built -with this compiler are put in the epoc32\release\winscw and epoc32\winscw directory -trees.

                You can build your programs for the emulator using Metrowerks -CodeWarrior. The build tools also support the Microsoft® Visual Studio .NET -2003 and Microsoft Visual Studio v6 IDEs. For further information, see the Build tools guide section. -Note that licensees or third-parties may supply additional tools, or extend -support to additional compilers, which are not described here.

                The -following sections describe the Symbian platform target types -introduced with P.I.P.S.. For further information see the -native build targets section.

                When using tool chains for pre-Symbian -OS v9.3, the .mmp file has to be manually changed to -link in various libraries.

                For Symbian OS v9.3 onwards the tool chain -supports the new STDEXE and STDDLL target -types for P.I.P.S. EXEs and DLLs. See the Generation -of STDEXE, STDDLL and STDLIB section for further explanation of the -new target types introduced with P.I.P.S..

                -
                P.I.P.S. target -types

                P.I.P.S. EXEs require adaptation logic to set up the C program -environment and the P.I.P.S. run-time C library context - this is performed -by the CRT0 library (also known as glue code, see the Glue -code (CRT0) section for further details).

                P.I.P.S. executables -are implemented using native Symbian platform executables linked statically -to the glue code. The new target types for P.I.P.S. include the glue code -by default. The glue code provides the linking code between the E32Main() entry -point and the main() entry point used in 'C' P.I.P.S. EXEs.

                For -further information see the Target -Types section.

                -
                Symbol information

                When -building a P.I.P.S. DLL (that is, when the target type is STDDLL), -function and data symbols with extern linkage will be exported -or imported by default, without any requirement for IMPORT_C /EXPORT_C declarations -in the header or source files.

                Exporting of symbols with extern linkage -is the assumed default on other platforms and enables the source code to be -easily ported. Although this may normally be undesirable in the embedded world, -it is supported for STDDLL to avoid portable source code -having to include excessive decoration (that is, the IMPORT_C /EXPORT_C macros) -for the Symbian platform.

                STDEXE and STDDLL provide -symbol name information. For more information on the Symbian platform target -types see the Generation -of STDEXE, STDDLL and STDLIB section.

                -
                Mapping POSIX -handles to the Symbian platform resource objects

                Using -non-system calls

                Several P.I.P.S. APIs that directly manipulate -the Symbian platform (native) resources are implemented in the System Call -Adaptation Layer (SCAL). The exceptions to this are pthread s, -and memory maps. The pthread APIs use RThread s -and RMutex es directly from within libpthread. -Similarly, RChunk s that are used to provide support for -memory maps are directly manipulated from within libc. Note -that none of these APIs allow direct access to the underlying native resources. -References to these are wrapped in POSIX-defined data structures. These data -structures are intended to be treated as opaque and no attempt must be made -to dereference or use the underlying resource reference directly.

                All -IPC calls enter the SCAL, but are handled in a separate IPC library. This -is a component distinction. The IPC library is logically still part of the -SCAL.

                Using the -System Call Adaptation Layer

                One of the supports provided by the -System Call Adaptation Layer (SCAL) is the mapping of operations on UNIX® -file descriptors to the corresponding Symbian platform resource objects. The -section below discusses the file descriptors case.

                Creating -a new file descriptor

                The porting of the 'C' POSIX fopen() function, -below, is a good example of mapping POSIX handles to native Symbian platform -resource objects. The mapping is done through a file descriptor table. As -a reminder, every application/process has its own file descriptor table.

                This -example shows a call to the fopen() function:

                //myapp.cpp +
                Introduction

                Symbian currently builds its emulator code with the Metrowerks +CodeWarrior compiler. This is known as the WINSCW build target. Binaries built with this compiler are put in the epoc32\release\winscw and epoc32\winscw directory trees.

                You can build your programs for the emulator +using Metrowerks CodeWarrior. The build tools also support the Microsoft® +Visual Studio .NET 2003 and Microsoft Visual Studio v6 IDEs. Note that licensees or third-parties may supply additional +tools, or extend support to additional compilers, which are not described +here.

                The following sections describe the Symbian platform +target types introduced with P.I.P.S..

                When using tool chains +for pre-Symbian OS v9.3, the .mmp file has to +be manually changed to link in various libraries.

                For Symbian +OS v9.3 onwards the tool chain supports the new STDEXE and STDDLL target types for P.I.P.S. EXEs and DLLs. +See the Generation of STDEXE, STDDLL and STDLIB section for further +explanation of the new target types introduced with P.I.P.S..

                +
                P.I.P.S. +target types

                P.I.P.S. EXEs require adaptation logic to +set up the C program environment and the P.I.P.S. run-time C library +context - this is performed by the CRT0 library (also +known as glue code, see the Glue code (CRT0) section for further details).

                P.I.P.S. +executables are implemented using native Symbian platform executables +linked statically to the glue code. The new target types for P.I.P.S. +include the glue code by default. The glue code provides the linking +code between the E32Main() entry point and the main() entry point used in 'C' P.I.P.S. EXEs.

                For +further information see the Target Types section.

                +
                Symbol +information

                When building a P.I.P.S. DLL (that is, when +the target type is STDDLL), function and data symbols +with extern linkage will be exported or imported +by default, without any requirement for IMPORT_C /EXPORT_C declarations in the header or source +files.

                Exporting of symbols with extern linkage +is the assumed default on other platforms and enables the source code +to be easily ported. Although this may normally be undesirable in +the embedded world, it is supported for STDDLL to +avoid portable source code having to include excessive decoration +(that is, the IMPORT_C /EXPORT_C macros) for the Symbian platform.

                STDEXE and STDDLL provide symbol name information. For +more information on the Symbian platform target types see the Generation of STDEXE, STDDLL and STDLIB section.

                +
                Mapping +POSIX handles to the Symbian platform resource objects

                Using non-system +calls

                Several P.I.P.S. APIs that directly manipulate the +Symbian platform (native) resources are implemented in the System +Call Adaptation Layer (SCAL). The exceptions to this are pthread s, and memory maps. The pthread APIs use RThread s and RMutex es directly from +within libpthread. Similarly, RChunk s that are used to provide support for memory maps are directly +manipulated from within libc. Note that none of these +APIs allow direct access to the underlying native resources. References +to these are wrapped in POSIX-defined data structures. These data +structures are intended to be treated as opaque and no attempt must +be made to dereference or use the underlying resource reference directly.

                All IPC calls enter the SCAL, but are handled in a separate IPC +library. This is a component distinction. The IPC library is logically +still part of the SCAL.

                Using the System +Call Adaptation Layer

                One of the supports provided by +the System Call Adaptation Layer (SCAL) is the mapping of operations +on UNIX® file descriptors to the corresponding Symbian platform resource +objects. The section below discusses the file descriptors case.

                Creating a +new file descriptor

                The porting of the 'C' POSIX fopen() function, below, is a good example of mapping POSIX +handles to native Symbian platform resource objects. The mapping is +done through a file descriptor table. As a reminder, every application/process +has its own file descriptor table.

                This example shows a call +to the fopen() function:

                //myapp.cpp int foo() { //open the test.tx , fd=7 in this example @@ -95,31 +83,30 @@ //writes to file referenced by the file descriptor ret = write (fd, buf, size_t); -}

                When myapp tries to open the file with fopen(), -the application makes a call to the equivalent Symbian platform function, RFile::Open(), -and returns the next free entry in the file descriptor table.

                In each -table, the values 0, 1 and 2 are -reserved for stdin(), sdtout() and stderr(). -The figure below shows an example file descriptor table.

                - -

                According to the descriptor table the file descriptor equals 7, -as this was the next free entry in the table, and the write function will -be writing to the file referenced by 7.

                Note: A -POSIX descriptor is an index in the process open file table and represents, -for example, an open file, socket or pipe. A Symbian descriptor represents -data which can reside in any memory location, either in ROM or RAM. A descriptor -object maintains pointer and length information to describe the data. All -access to the data is made through the descriptor object.

                Descriptors -shared across multiple threads within the same process

                Originally +}

                When myapp tries to open the file with fopen(), the application makes a call to the equivalent +Symbian platform function, RFile::Open(), and returns +the next free entry in the file descriptor table.

                In each +table, the values 0, 1 and 2 are reserved for stdin(), sdtout() and stderr(). The figure below +shows an example file descriptor table.

                + +

                According to the descriptor table the file descriptor equals 7, as this was the next free entry in the table, and the +write function will be writing to the file referenced by 7.

                Note: A POSIX descriptor is an index in the process +open file table and represents, for example, an open file, socket +or pipe. A Symbian descriptor represents data which can reside in +any memory location, either in ROM or RAM. A descriptor object maintains +pointer and length information to describe the data. All access to +the data is made through the descriptor object.

                Descriptors shared +across multiple threads within the same process

                Originally on the Symbian platform, resources were thread specific and multi-tasking -was achieved using servers and active objects. In other operating systems, -such as Linux, resources are process-local and multi-tasking is achieved by -multi-threading. The purpose of the POSIX server in the original STDLIB was -to allow system-wide data, resources and descriptors to be shared across multiple -threads. This means there was context switching between the calling thread -and the server thread which added latency.

                With the introduction of -the EKA2 kernel, session handles can now be shared across multiple threads -and processes.

                P.I.P.S. takes advantage of EKA2 and re-factors the -SCAL to allow descriptors to be shared across multiple threads within the -same process, without the use of the POSIX server.

                +was achieved using servers and active objects. In other operating +systems, such as Linux, resources are process-local and multi-tasking +is achieved by multi-threading. The purpose of the POSIX server in +the original STDLIB was to allow system-wide data, +resources and descriptors to be shared across multiple threads. This +means there was context switching between the calling thread and the +server thread which added latency.

                With the introduction of +the EKA2 kernel, session handles can now be shared across multiple +threads and processes.

                P.I.P.S. takes advantage of EKA2 and +re-factors the SCAL to allow descriptors to be shared across multiple +threads within the same process, without the use of the POSIX server.

                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita --- a/Symbian3/PDK/Source/GUID-793A5EF9-CC16-5EEB-9011-6431EA76EB15.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ - - - - - -How -to use bldmake -

                The bldmake tool processes the component description -file (bld.inf) in the current directory and generates -the batch file abld.bat and several build batch makefiles -(.make). abld can then use the makefiles -to carry out the various stages of building the component.

                -

                The tool supports a number of command line options, however most Symbian -developers will simply use:

                -

                bldmake bldfiles

                -

                bldmake then carries out the following 3-stage process:

                -
                  -
                1. Creates the directory: \epoc32\build\ absolute_path_to_bld.inf_file \

                2. -
                3. Generates makefiles -for the component into this directory

                4. -
                5. Produces a batch file -called abld.bat in the current directory.

                6. -
                -
                -Bldmake syntax - -Bldmake component -definition file syntax -Using abld - -
                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-795B41AF-FBEA-56CE-AE20-EF17BE754723.dita --- a/Symbian3/PDK/Source/GUID-795B41AF-FBEA-56CE-AE20-EF17BE754723.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-795B41AF-FBEA-56CE-AE20-EF17BE754723.dita Fri Jul 16 17:23:46 2010 +0100 @@ -219,7 +219,7 @@

                The following diagram shows the InetProtUtils classes and their relationships.

                Class diagram for InetProtUtils - +
                Typical uses

                Applications that use HTTP transport framework use InetProtUtils API. The utilities may also diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-795DA381-A997-55E6-98D0-436DC250B07E_d0e264665_href.png Binary file Symbian3/PDK/Source/GUID-795DA381-A997-55E6-98D0-436DC250B07E_d0e264665_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-795DA381-A997-55E6-98D0-436DC250B07E_d0e270665_href.png Binary file Symbian3/PDK/Source/GUID-795DA381-A997-55E6-98D0-436DC250B07E_d0e270665_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7971886A-8ED0-5924-9BC0-A163BA499888.dita --- a/Symbian3/PDK/Source/GUID-7971886A-8ED0-5924-9BC0-A163BA499888.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - --debug

                This option generates symbolic debug information for release or debug builds, independent of the compiler optimization level.

                By default, the build system generates symbolic debug information only for the debug builds. With this option, the generation of symbolic debug information is extended to release builds to support debugging of release binaries on ARM ABI compliant platforms.

                The option instructs the makmake tool to generate symbolic debug information for UREL or UDEB variants.

                Note that the option is applicable to the build and makefile commands only.

                Also note that this option cannot be used with the -no_debug option.

                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-79B02562-B6E6-5DF9-BF98-F015C73A448C.dita --- a/Symbian3/PDK/Source/GUID-79B02562-B6E6-5DF9-BF98-F015C73A448C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-79B02562-B6E6-5DF9-BF98-F015C73A448C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -13,7 +13,8 @@
                Purpose

                This example shows how to create and display a digital and analog clock. For more information about the API, see Clock Overview.

                Download

                Click on the following link to download the example: ClockExample.zip

                Click: browse to view the example code.

                -
                Class Summary
                  +
                  Class +Summary
                  • CWsScreenDevice

                  • CFbsFont

                  • TRgb

                  • @@ -32,8 +33,7 @@ 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:

                    bldmake bldfiles

                    abld -build

                    How to use bldmake and How to -use abld describe how to use the SBSv1 build tools.

                    +build

                  • For the emulator, the example builds an executable called clockexample.exe in the epoc32\release\winscw\<udeb or urel>\ folder.

                  • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-79C82F78-471B-521F-A0CA-968C8BF33B48_d0e236155_href.png Binary file Symbian3/PDK/Source/GUID-79C82F78-471B-521F-A0CA-968C8BF33B48_d0e236155_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-79C82F78-471B-521F-A0CA-968C8BF33B48_d0e242128_href.png Binary file Symbian3/PDK/Source/GUID-79C82F78-471B-521F-A0CA-968C8BF33B48_d0e242128_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7A16B6E1-16F7-41EC-ABCC-4A2BEBD66FFF.dita --- a/Symbian3/PDK/Source/GUID-7A16B6E1-16F7-41EC-ABCC-4A2BEBD66FFF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7A16B6E1-16F7-41EC-ABCC-4A2BEBD66FFF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,8 +11,8 @@ PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd"> Converting from local time for the system time zone to UTC - -To convert the local + +To convert the local time in the system time zone to UTC, use CTzConverter::ConvertToUniversalTime(), without specifying the time zone to convert from:

                    TInt errCode = myConverter->ConvertToUniversalTime( myTime );

                    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7A22FBD7-F306-578C-BD54-BCF74B7343CF.dita --- a/Symbian3/PDK/Source/GUID-7A22FBD7-F306-578C-BD54-BCF74B7343CF.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - --keepgoing

                    This option tells a particular abld command to “keep going” even if unrelated build steps report errors.

                    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7A26F69B-D70D-502B-A9A2-918F13D33D6D.dita --- a/Symbian3/PDK/Source/GUID-7A26F69B-D70D-502B-A9A2-918F13D33D6D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7A26F69B-D70D-502B-A9A2-918F13D33D6D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,38 +11,38 @@ PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd"> Privacy Request API ReferenceThis section describes the dynamic behaviour of the Privacy Request API using a set of sequence diagrams.
                    Sequence diagrams

                    The sequence diagrams in this section describe the behaviour of the Privacy Request API when a licensee has installed and configured a Privacy Controller, Privacy Notifiers or Privacy Q&N Notifiers.

                    Startup and shutdown sequences

                    The sequence diagrams in this section describe how the LBS subsystem starts up and shuts down in the Standalone Privacy Mode configuration.

                    Startup sequence

                    The LBS subsystem is started when an API client creates an instance of a CLbsPrivacyRequest class.

                    Figure 1.1. LBS startup. -

                    Shutdown sequence

                    The LBS subsystem is shutdown when the licensee Privacy Request API client closes its connection and calls the CLbsPrivacyRequest destructor.

                    +

                    Shutdown sequence

                    The LBS subsystem is shutdown when the licensee Privacy Request API client closes its connection and calls the CLbsPrivacyRequest destructor.

                    Figure 1.2 LBS shutdown. -

                    Privacy Controller sequences

                    Privacy verification with a Privacy Controller (request accepted, rejected or timeout)

                    +

                    Privacy Controller sequences

                    Privacy verification with a Privacy Controller (request accepted, rejected or timeout)

                    Figure 2.1 Privacy verification with a Privacy Controller. -

                    Privacy notification with a Privacy Controller

                    +

                    Privacy notification with a Privacy Controller

                    Figure 2.2 Privacy notification with a Privacy Controller. -

                    Privacy verification cancelled with a Privacy Controller

                    +

                    Privacy verification cancelled with a Privacy Controller

                    Figure 2.3. Privacy verification cancelled with Privacy Controller. -

                    Timeout notification with a Privacy Controller

                    +

                    Timeout notification with a Privacy Controller

                    Figure 2.4. Timeout notification with a Privacy Controller. -

                    Privacy Notifier sequences

                    Privacy verification with a Privacy Notifier (request accepted, rejected or timeout)

                    +

                    Privacy Notifier sequences

                    Privacy verification with a Privacy Notifier (request accepted, rejected or timeout)

                    Figure 3.1. Privacy verification with a Privacy Notifier. -

                    Privacy notification with a Privacy Notifier

                    +

                    Privacy notification with a Privacy Notifier

                    Figure 3.2. Privacy notification with a Privacy Notifier. -

                    Privacy verification cancelled with Privacy Notifier

                    +

                    Privacy verification cancelled with Privacy Notifier

                    Figure 3.3. Privacy verification cancelled with Privacy Notifier. -

                    Timeout notification with Privacy Notifier

                    +

                    Timeout notification with Privacy Notifier

                    Figure 3.4. Timeout notification with a Privacy Notifier. -

                    Privacy Q&N Notifier sequences

                    Privacy verification with a Privacy Q&N notifier (request accepted, rejected or timeout)

                    +

                    Privacy Q&N Notifier sequences

                    Privacy verification with a Privacy Q&N notifier (request accepted, rejected or timeout)

                    Figure 4.1. Privacy verification with a Privacy Q&N Notifier. -

                    Privacy notification with a Privacy Q&N notifier

                    +

                    Privacy notification with a Privacy Q&N notifier

                    Figure 4.2. Privacy notification with a Privacy Q&N Notifier. -

                    Privacy verification cancelled with Privacy Q&N notifier

                    +

                    Privacy verification cancelled with Privacy Q&N notifier

                    Figure 4.3. Privacy verification cancelled with Privacy Q&N Notifier. -

                    Timeout notification with Privacy Q&N notifier

                    +

                    Timeout notification with Privacy Q&N notifier

                    Figure 4.4. Timeout notification with a Privacy Q&N Notifier. -
                    Privacy +
                  Privacy Protocol Module Overview Privacy Request API \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7A2A9222-7D10-4007-95AB-C9584EC54698_d0e101079_href.png Binary file Symbian3/PDK/Source/GUID-7A2A9222-7D10-4007-95AB-C9584EC54698_d0e101079_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7A2A9222-7D10-4007-95AB-C9584EC54698_d0e79459_href.png Binary file Symbian3/PDK/Source/GUID-7A2A9222-7D10-4007-95AB-C9584EC54698_d0e79459_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7A2A9222-7D10-4007-95AB-C9584EC54698_d0e83480_href.png Binary file Symbian3/PDK/Source/GUID-7A2A9222-7D10-4007-95AB-C9584EC54698_d0e83480_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7A2A9222-7D10-4007-95AB-C9584EC54698_d0e83657_href.png Binary file Symbian3/PDK/Source/GUID-7A2A9222-7D10-4007-95AB-C9584EC54698_d0e83657_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7A2A9222-7D10-4007-95AB-C9584EC54698_d0e87678_href.png Binary file Symbian3/PDK/Source/GUID-7A2A9222-7D10-4007-95AB-C9584EC54698_d0e87678_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7A2A9222-7D10-4007-95AB-C9584EC54698_d0e97000_href.png Binary file Symbian3/PDK/Source/GUID-7A2A9222-7D10-4007-95AB-C9584EC54698_d0e97000_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7A52BD40-E1C1-5C67-AAA0-1B79A34CF24C.dita --- a/Symbian3/PDK/Source/GUID-7A52BD40-E1C1-5C67-AAA0-1B79A34CF24C.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,184 +0,0 @@ - - - - - -Template -extension makefiles -

                  A template extension makefile is a makefile which is integrated into the -Symbian platform build system, such that it can be re-used by providing different -input values as parameters. This facility allows extension makefiles to separate -behaviour of the makefile from its input data. For example, you might want -to copy files from one location to another using a template extension makefile -which represents the required behaviour. The location from where these files -have to be copied is represented by the input data, which can be specified -in the bld.inf file using prj_extensions.

                  -

                  Note that it is recommended to follow GNU make syntax to define template -extension makefiles. For more details on GNU make syntax, refer http://www.gnu.org.

                  -

                  The template extension makefiles are invoked by the build system which -defines a set of standard makefile variables. These variables can have well -defined values and help the makefile writer to locate common directories, -configurations and so on. The proper usage of these variables may result in -achieving platform independence to a certain extent. It is highly recommended -to use these variables wherever it is necessary.

                  -

                  The following is a list of the variables defined:

                  - - - - -Variable name -Description - - - - -

                  $(EPOCROOT)

                  -

                  Location of the epoc32 tree.

                  -
                  - -

                  $(PLATFORM)

                  -

                  The current platform which can be TOOLS, ARMV5, WINSCW etc.

                  -
                  - -

                  $(CFG)

                  -

                  The current configuration either UREL or UDEB.

                  -
                  - -

                  $(TO_ROOT)

                  -

                  Relative path to EPOCROOT.

                  -
                  - -

                  $(TO_BLDINF)

                  -

                  The path to the top-level bld.inf.

                  Note: -if a bld.inf file #includes another bld.inf, this variable will always contain -the directory of that top-level file. If you require the directory of the -bld.inf which actually references the makefile, use $(EXTENSION_ROOT) instead.

                  -
                  - -

                  $(EPOCBLD)

                  -

                  The project’s “working” build directory under \epoc32\build\….

                  -
                  - -

                  $(EXTENSION_ROOT)

                  -

                  The path to the directory containing the bld.inf in -which the extension makefile was called.

                  -
                  - -

                  $(HOST_SHELL)

                  -

                  The path of the host-platform specific (i.e. the shell) makefile -containing the above definitions.

                  -
                  - -

                  $/

                  -

                  Path element separator.

                  -
                  - -

                  $;

                  -

                  PATH environment variable separator.

                  -
                  - -

                  $(RMDIR)

                  -

                  Command for directory removal.

                  -
                  - -

                  $(RM)

                  -

                  Command for file deletion.

                  -
                  - -

                  $(ERASE)

                  -

                  Command for file deletion.

                  -
                  - -

                  $(MKDIR)

                  -

                  Command for directory creation.

                  -
                  - -

                  $(CP)

                  -

                  Command for file copying.

                  -
                  - -

                  $(PLATFORM_PATH)

                  -

                  The current platform in lower case to be used as part of path names.

                  -
                  - -

                  $(CFG_PATH)

                  -

                  The current configuration in lower case to be used as part of path -names.

                  -
                  - - -
                  -

                  The extension makefiles integrated into the build system should support -a number of phony targets which correspond to different phases of the Symbian -platform build process. These phony targets are labels representing a set -of commands to be executed to perform a task. For more information on these -phony targets, refer to Extension -makefile targets.

                  -

                  The commands for a phony target can be platform specific operations such -as creating a directory, removing a directory, copying a file and so on. It -is recommended to use the above listed variables to perform these platform -specific operations, instead of invoking the command directly.

                  -

                  For example, the following will delete the files values.cpp and config.cpp for -the target CLEAN.

                  -CLEAN : - -$(ERASE) $(MDIR)$/values.cpp - -$(ERASE) $(MDIR)$/config.cpp -

                  Note that any path within a template extension makefile is recommended -to use the path separator variable $/ as listed in the above table.

                  -

                  A template extension makefile can be referenced in the bld.inf file -using the prj_extensions keyword. For more information on -how to reference a template extension makefile, see prj_extensions.

                  -

                  Each template extension makefile has an associated meta file which provides -additional information such as the template makefile type, the platform for -which the template can be applied and so on. It is mandatory to have a meta -file with each template extension makefile. For information on meta file syntax, -refer to Meta files.

                  -

                  Note that all the template extension makefiles along with their meta -files need to be located under the \epoc32\tools\makefile_templates\ folder.

                  -

                  This example will copy the source files to a target -path, build the component using the target copy of the source files, and finally -delete the target copy of the source files.

                  # copy_default.mk -# - -SOURCE_COPY=$(EPOCROOT)epoc32$/release$/$(PLATFORM_PATH)$/$(CFG_PATH)$/$(SOURCES) - -TARGET_COPY=$(EPOCROOT)epoc32$/release$/$(PLATFORM_PATH)$/$(CFG_PATH)$/$(TARGET) - -$(TARGET_COPY) : $(SOURCE_COPY) - $(CP) "$?" "$@" - -DO_NOTHING : - @rem do nothing - -MAKMAKE : - -BLD : $(TARGET_COPY) - -SAVESPACE : BLD - -FREEZE : DO_NOTHING - -LIB : DO_NOTHING - -CLEANLIB : DO_NOTHING - -RESOURCE : DO_NOTHING - -CLEAN : - -$(ERASE) $(TARGET_COPY) - -RELEASABLES : - @echo $(TARGET_COPY) - -FINAL : -
                  -
                  -How to write -an extension makefile template -
                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7A552BC6-419F-4FD9-8D63-828E37982FD8.dita --- a/Symbian3/PDK/Source/GUID-7A552BC6-419F-4FD9-8D63-828E37982FD8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7A552BC6-419F-4FD9-8D63-828E37982FD8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -25,7 +25,7 @@ Editing indicators a) in the Navi pane and b) above the editor field in a pop-up window - +
                  Using editing indicators in applications

                  The API to use for diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7A6342C7-DED3-5BE0-AB1C-F2C7BC57D1D2_d0e661760_href.png Binary file Symbian3/PDK/Source/GUID-7A6342C7-DED3-5BE0-AB1C-F2C7BC57D1D2_d0e661760_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7A6342C7-DED3-5BE0-AB1C-F2C7BC57D1D2_d0e674587_href.png Binary file Symbian3/PDK/Source/GUID-7A6342C7-DED3-5BE0-AB1C-F2C7BC57D1D2_d0e674587_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7A6FFAD1-5358-5050-9728-5C51B5B225AF_d0e55187_href.png Binary file Symbian3/PDK/Source/GUID-7A6FFAD1-5358-5050-9728-5C51B5B225AF_d0e55187_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7A6FFAD1-5358-5050-9728-5C51B5B225AF_d0e59421_href.png Binary file Symbian3/PDK/Source/GUID-7A6FFAD1-5358-5050-9728-5C51B5B225AF_d0e59421_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7AC4C1C2-D796-508F-93CF-21F061F49A30_d0e74797_href.png Binary file Symbian3/PDK/Source/GUID-7AC4C1C2-D796-508F-93CF-21F061F49A30_d0e74797_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7AC4C1C2-D796-508F-93CF-21F061F49A30_d0e79010_href.png Binary file Symbian3/PDK/Source/GUID-7AC4C1C2-D796-508F-93CF-21F061F49A30_d0e79010_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7AE4D17F-728A-5B7E-A3F9-A903E64731B1_d0e236293_href.png Binary file Symbian3/PDK/Source/GUID-7AE4D17F-728A-5B7E-A3F9-A903E64731B1_d0e236293_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7AE4D17F-728A-5B7E-A3F9-A903E64731B1_d0e242266_href.png Binary file Symbian3/PDK/Source/GUID-7AE4D17F-728A-5B7E-A3F9-A903E64731B1_d0e242266_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7AE7EAE1-BA90-446E-AAAF-01794EF96576.dita --- a/Symbian3/PDK/Source/GUID-7AE7EAE1-BA90-446E-AAAF-01794EF96576.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7AE7EAE1-BA90-446E-AAAF-01794EF96576.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,6 +17,6 @@

                  Grid item highlighting is a frame over the item in focus.

                  List highlighting (a) and grid highlighting (b) - + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita --- a/Symbian3/PDK/Source/GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7B173E02-9697-51F4-A7E8-795AEF547109.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,17 +9,14 @@ --> -Thread -Priority SchemeExplains the factors involved in allocating thread priority. -

                  At any given time, the thread running on Symbian platform is the one with -the highest priority that is ready to run. The priority of a thread is simply -a number; the value determines the priority; the greater the number, the higher -the priority. We call this the true or absolute priority of -the thread.

                  -

                  The Kernel schedules a fixed amount of time called a quantum for -a thread to run on the CPU, and the scheduler chooses the highest priority -thread that is ready to run. Threads of equal priority are executed on a round -robin basis.

                  +Thread Priority SchemeExplains the factors involved in allocating thread priority. +

                  At any given time, the thread running on Symbian platform is the +one with the highest priority that is ready to run. The priority of +a thread is simply a number; the value determines the priority; the +greater the number, the higher the priority. We call this the true or absolute priority of the thread.

                  +

                  The Kernel schedules a fixed amount of time called a quantum for a thread to run on the CPU, and the scheduler chooses the highest +priority thread that is ready to run. Threads of equal priority are +executed on a round robin basis.

                  The true priority values range from 0 (lowest) to 63 (highest).

                  The priority range divides into four broad categories:

                  @@ -27,17 +24,19 @@

                  0

                  -

                  This is reserved for the null thread, which puts the processor -into idle mode to save power when no other threads are ready to run.

                  +

                  This is reserved for the null thread, which puts +the processor into idle mode to save power when no other threads are +ready to run.

                  1 - 23

                  -

                  Used by kernel side threads and user-side applications and servers

                  +

                  Used by kernel side threads and user-side applications and +servers

                  24 -31

                  -

                  Used by kernel side threads and protected system servers, i.e. servers -with the ProtServ capability.

                  +

                  Used by kernel side threads and protected system servers, +i.e. servers with the ProtServ capability.

                  32 - 63

                  @@ -47,7 +46,7 @@
                  - +
                  • Priority scheme for general user-side threads

                  • @@ -55,53 +54,49 @@
                  • Thread priority value mapping table

                  • Platform security notes

                  -
                  Priority scheme -for general user-side threads

                  User-side threads do not allocate true priority -values directly. Instead, they allocate priorities using symbolic values defined -by enums. Symbian platform maps these values to the true value.

                  There +

                  Priority +scheme for general user-side threads

                  User-side threads +do not allocate true priority values directly. Instead, they +allocate priorities using symbolic values defined by enums. Symbian +platform maps these values to the true value.

                  There are two priority allocation schemes:

                  • Process-relative scheme

                  • Process-independent scheme for general user threads

                  • -

                  Process-relative scheme

                  This -scheme bases the true priority of a thread on the priority of its owning -process and the priority of the thread relative to the process. This means -that changing the process priority results in a change to the true priority -of the thread.

                  A process can be assigned one of eight discrete priorities -represented by the individual enumerators of TProcessPriority, -and range from EPriorityLow, the lowest, to EPrioritySupervisor, -the highest.

                  In practice, user processes can only be assigned -priorities that are one of the values:

                    +

                  Process-relative +scheme

                  This scheme bases the true priority of a +thread on the priority of its owning process and the priority of the +thread relative to the process. This means that changing the process +priority results in a change to the true priority of the thread.

                  A process can be assigned one of eight discrete priorities represented +by the individual enumerators of TProcessPriority, and range from EPriorityLow, the lowest, to EPrioritySupervisor, the highest.

                  In practice, user processes can only be assigned priorities that are one of +the values:

                  • EPriorityLow

                  • EPriorityBackground

                  • EPriorityForeGround

                  • EPriorityHigh

                  • -

                  There are a further four process priorities that a user process is -not permitted to set: EPriorityWindowServer, EPriorityFileServer, EPriorityRealTimeServer and EPrioritySupervisor.

                  A process priority can be assigned:

                    -
                  • when the associated .exe is -built; this is done by specifying the value in the .mmp file -that defines the project.

                  • -
                  • by calling RProcess::SetPriority() and -passing one of the TProcessPriority enum values.

                  • -

                  See also : Using -Makmake in the Build -Tools Guide.

                  The priority of a thread relative to a -process is assigned by calling RThread::SetPriority() and -passing one of the five TThreadPriority enum values:

                    +

                  There are a further four process priorities that a user process +is not permitted to set: EPriorityWindowServer, EPriorityFileServer, EPriorityRealTimeServer and EPrioritySupervisor.

                  A process priority +can be assigned:

                    +
                  • when the associated .exe is built; this is done by specifying the value in +the .mmp file that defines the project.

                  • +
                  • by calling RProcess::SetPriority() and passing one of the TProcessPriority enum values.

                  • +

                  The priority of a thread relative to +a process is assigned by calling RThread::SetPriority() and passing one of the five TThreadPriority enum +values:

                  • EPriorityMuchLess

                  • EPriorityLess

                  • EPriorityNormal

                  • EPriorityMore

                  • EPriorityMuchMore

                  • -

                  The thread -priority value mapping table shows the true priority of a thread -based on the combination of process priority and process-relative thread priority

                  Process-independent scheme -for general user threads

                  In this scheme, the true priority -of a thread is independent of the priority of its owning process. Changing -the priority of the underlying process has no effect on the true priority -of the thread.

                  The priority of a thread is assigned by calling RThread::SetPriority() and -passing one of the TThreadPriority enum values listed below. -Note that the set of enum values splits into two logical groupings based on -their equivalence to process-relative values. See the thread priority value mapping table.

                  +

                  The thread priority value mapping table shows the true priority +of a thread based on the combination of process priority and process-relative +thread priority

                  Process-independent +scheme for general user threads

                  In this scheme, the true priority of a thread is independent of the priority of its +owning process. Changing the priority of the underlying process has +no effect on the true priority of the thread.

                  The priority +of a thread is assigned by calling RThread::SetPriority() and passing one of the TThreadPriority enum values +listed below. Note that the set of enum values splits into two logical +groupings based on their equivalence to process-relative values. See +the thread priority value mapping table.

                  @@ -125,17 +120,14 @@ -

                  The thread -priority value mapping table shows the resulting true priority -of the thread.

                  -
                  Priority scheme -for real-time user-side threads

                  This scheme is the same as the process-independent -scheme for general user threads, but with one essential difference -- the range of TThreadPriority enum values to be passed -to RThread::SetPriority() is as shown below. These priorities -map to the true priority values in the range 24 -31, and can only be -set by executables having the ProtServ capability. This range -is referred to as the real time range.

                    +

                    The thread priority value mapping table shows the resulting true priority of the thread.

                  +
                  Priority +scheme for real-time user-side threads

                  This scheme is the +same as the process-independent scheme for general user threads, but with +one essential difference - the range of TThreadPriority enum values to be passed to RThread::SetPriority() is as shown below. These priorities map to the true priority +values in the range 24 -31, and can only be set by executables having +the ProtServ capability. This range is referred to +as the real time range.

                  • EPriorityAbsoluteRealTime1

                  • EPriorityAbsoluteRealTime2

                  • EPriorityAbsoluteRealTime3

                  • @@ -144,34 +136,32 @@
                  • EPriorityAbsoluteRealTime6

                  • EPriorityAbsoluteRealTime7

                  • EPriorityAbsoluteRealTime8

                  • -

                  The thread -priority value mapping table shows the resulting true priority -of the thread.

                  -
                  Thread priority -value mapping table

                  This table shows the effect of setting priorities, -and the resulting true priority values. You need to be aware that this -may change in the future, and you should never synchronise threads on the -basis of thread priorities. If you need to synchronise threads, use mutexes -or semaphores.

                  Notes

                    -
                  • True priority values -in the shaded region can only be accessed by threads running in processes -with the ProtServ capability.

                  • +

                  The thread priority value mapping table shows the resulting true priority of the thread.

                  +
                  Thread +priority value mapping table

                  This table shows the effect +of setting priorities, and the resulting true priority values. +You need to be aware that this may change in the future, and you should +never synchronise threads on the basis of thread priorities. If you +need to synchronise threads, use mutexes or semaphores.

                  Notes

                    +
                  • True priority +values in the shaded region can only be accessed by threads running +in processes with the ProtServ capability.

                  • The process-priority -values : EPriorityWindowServer, EPriorityFileServer and EPrioritySupervisor all -map to the same range of priorities. Along with EPriorityRealTimeServer, -these have historically been used for system servers and other processes needing -access to high priorities suitable for real-time tasks, and their use requires ProtServ capability.

                  • -
                  • Note that ProtServ capability -will not be granted to general applications for the purpose of gaining access -to the very high thread priorities. This risks breaking important system functionality.

                  • +values : EPriorityWindowServer, EPriorityFileServer and EPrioritySupervisor all map to the same range +of priorities. Along with EPriorityRealTimeServer, these have historically been used for system servers and other +processes needing access to high priorities suitable for real-time +tasks, and their use requires ProtServ capability.

                    +
                  • Note that ProtServ capability will not be granted to general applications +for the purpose of gaining access to the very high thread priorities. +This risks breaking important system functionality.

                  - -

                  Note that we have used E' as an abbreviation for EPriority in -this diagram.

                  -
                  Platform security -notes

                  Platform security restrictions prevent thread and process -priorities from being modified by another user process. There is one exception: -by default, applications have “Priority Control” enabled for them which allows -the window server to switch them between foreground and background process -priorities depending on which has foreground focus.

                  + +

                  Note that we have used E' as an abbreviation for EPriority in this diagram.

                  +
                  Platform +security notes

                  Platform security restrictions prevent thread +and process priorities from being modified by another user process. +There is one exception: by default, applications have “Priority Control” +enabled for them which allows the window server to switch them between +foreground and background process priorities depending on which has +foreground focus.

                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7B20C9EE-8EAB-504D-8DDB-03147E0C2B0C_d0e230595_href.png Binary file Symbian3/PDK/Source/GUID-7B20C9EE-8EAB-504D-8DDB-03147E0C2B0C_d0e230595_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7B20C9EE-8EAB-504D-8DDB-03147E0C2B0C_d0e236590_href.png Binary file Symbian3/PDK/Source/GUID-7B20C9EE-8EAB-504D-8DDB-03147E0C2B0C_d0e236590_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7B2AA498-5E73-4CC4-91DF-5F07F452F0BF.dita --- a/Symbian3/PDK/Source/GUID-7B2AA498-5E73-4CC4-91DF-5F07F452F0BF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7B2AA498-5E73-4CC4-91DF-5F07F452F0BF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -19,6 +19,6 @@ setting types.

                  Example image of a setting in a pop-up - +
                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7B3578A0-7E2E-508A-A355-A39AEE0307AD_d0e512166_href.jpg Binary file Symbian3/PDK/Source/GUID-7B3578A0-7E2E-508A-A355-A39AEE0307AD_d0e512166_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7B3578A0-7E2E-508A-A355-A39AEE0307AD_d0e519628_href.jpg Binary file Symbian3/PDK/Source/GUID-7B3578A0-7E2E-508A-A355-A39AEE0307AD_d0e519628_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7B589949-2784-5B77-959E-99F8733A8853_d0e332332_href.png Binary file Symbian3/PDK/Source/GUID-7B589949-2784-5B77-959E-99F8733A8853_d0e332332_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7B589949-2784-5B77-959E-99F8733A8853_d0e338304_href.png Binary file Symbian3/PDK/Source/GUID-7B589949-2784-5B77-959E-99F8733A8853_d0e338304_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7B5A854B-A9A0-557E-9970-9B13D7EE251E.dita --- a/Symbian3/PDK/Source/GUID-7B5A854B-A9A0-557E-9970-9B13D7EE251E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7B5A854B-A9A0-557E-9970-9B13D7EE251E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ When there is a client request to the AppArc for data type recognition, AppArc internally uses the MIME recognition framework for processing the request.

                  -

                  The client connects +

                  The client connects to AppArc and creates a session using the class RApaLsSession. Apparc provides access to the MIME framework via RApaLsSession APIs. The class provides the APIs for data type recognition.

                  All MIME (data) diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7B6073BF-6D8C-5F00-98EC-966573777677.dita --- a/Symbian3/PDK/Source/GUID-7B6073BF-6D8C-5F00-98EC-966573777677.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7B6073BF-6D8C-5F00-98EC-966573777677.dita Fri Jul 16 17:23:46 2010 +0100 @@ -28,7 +28,7 @@ key status. This is Notifying the Master Key Expiry.

                  The SRTP stack can request for a new master key(ReKey) even before the master key status is identified as stale.This is ReKey request.

                  -

                  An SRTP session +

                  An SRTP session must be created and initialized before an application requests for a RTP/RTCP packet decryption and encryption.

                  The two variants of the API SRTPMasterKeyStaleEvent() must be implemented by the application.

                  diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7C061090-83A8-5E0F-B42B-2D722BE054EE_d0e344560_href.png Binary file Symbian3/PDK/Source/GUID-7C061090-83A8-5E0F-B42B-2D722BE054EE_d0e344560_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7C061090-83A8-5E0F-B42B-2D722BE054EE_d0e350511_href.png Binary file Symbian3/PDK/Source/GUID-7C061090-83A8-5E0F-B42B-2D722BE054EE_d0e350511_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7C1CF86B-5F03-55EE-96C6-79A88A195BEB.dita --- a/Symbian3/PDK/Source/GUID-7C1CF86B-5F03-55EE-96C6-79A88A195BEB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7C1CF86B-5F03-55EE-96C6-79A88A195BEB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,11 +11,11 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Opening a Session - ReferenceThis topic provides additional information with regard to opening a session with Bluetooth GPS PSY.
                  Required background

                  Knowledge of the Location Acquisition API is helpful in understanding this topic.

                  Introduction

                  Steps that describe how to open the default PSY or a Bluetooth GPS PSY Session are provided here. The sections that follow provide information on error codes and Bluetooth GPS PSY behavior during use.

                  Error codes

                  This section describes some of the error codes that can be returned on construction of the Bluetooth GPS PSY. A client must check for error codes when it calls RPositioner::Open() to create a subsession that uses the Bluetooth GPS PSY.

                  Error Code Conditions for code return

                  KErrNone

                  An instance of the Bluetooth GPS PSY was successfully constructed.

                  KErrNoMemory

                  Construction of the PSY fails because the device is out of memory.

                  KErrAlreadyExists

                  The PSY instance is already registered. This means some internal error in the Location Server Framework or in the PSY itself. The client application may need to be restarted to reload the PSY.

                  KErrOverflow

                  One of the parameters set in the PSY Central Repository initialisation file 101FE999.txt (101FE999.cre) is out of range.

                  KErrUnderflow

                  One of the parameters set in the PSY Central Repository initialisation file is out of range.

                  Any other general Symbian platform error code

                  Any other system error.

                  The following sections give more information about the behaviour of the Bluetooth GPS PSY during use.

                  Loading the PSY and device selection

                  The Bluetooth GPS PSY is loaded dynamically when a client makes a request that requires its use (by one of the methods described above).

                  If the mobile device is not already connected to a Bluetooth GPS device the PSY attempts to connect to one as follows:

                  1. The PSY automatically attempts to connect to the GPS device to which it was last successfully connected. The device address used is the one stored in the Central Repository setting KBluetoothGpsPsyDeviceAddress. The user may be queried for a passkey as part of this process in order to pair with the Bluetooth GPS device.

                    Figure 1 shows this procedure, followed by an exchange of NMEA initialisation messages between the PSY and the GPS device.

                  2. If the PSY cannot connect to the GPS device to which it was last connected, it tries to connect to each of the GPS devices in the list managed through the Bluetooth GPS PSY Configuration API.

                  3. If the PSY still cannot connect to a Bluetooth GPS device, the Bluetooth subsystem displays a device selection dialog asking for the Bluetooth GPS device details.

                    If a connection can be made to the device, its address is stored in the Central Repository setting KBluetoothGpsPsyDeviceAddress. The PSY tries to use this GPS device the next time it receives a client request (see [1] above).

                    If a connection cannot be made to the device, or the device selection dialog is cancelled, the PSY remains loaded, but not connected to a Bluetooth GPS device. In this situation the PSY cannot obtain a position fix and must be reloaded. This can be achieved by restarting the application that loaded the PSY.

                  Figure 1. Loading the Bluetooth GPS PSY -
                  Bluetooth GPS Device initialisation

                  After connecting to a Bluetooth GPS device, the PSY does the following:

                  • Attempts to switch the GPS device to NMEA mode.

                    If the device cannot be switched to NMEA mode it cannot be used by the PSY.

                  • Queries if the device supports PNOK NMEA extensions.

                    If it supports PNOK, the PSY sets low power mode. For PNOK capable devices, the PSY is able to receive and report hardware status change messages through the Bluetooth GPS PSY Events API.

                  • Requests that NMEA messages are sent with an interval of 1 second.

                    NMEA messages are sent continuously to the PSY, but these are processed only when a location request is received from the Location Server.

                  • Waits for requests for location from the Location Server.

                  Making a location request

                  When a location request is received from the Location Server, the PSY returns any cached position fix it has if it meets the position quality specified with the request. The position quality includes the horizontal and vertical position accuracy and the age of the position fix. These parameters can be specified by a Location Acquisition API client as part of the location request (see How to Get Location Information for more information).

                  If the cached position does not meet the quality criteria specified with the request, the PSY reads NMEA messages from the Bluetooth GPS device to obtain a position. The position is cached by the PSY and returned to the client.

                  +
                  Bluetooth GPS Device initialisation

                  After connecting to a Bluetooth GPS device, the PSY does the following:

                  • Attempts to switch the GPS device to NMEA mode.

                    If the device cannot be switched to NMEA mode it cannot be used by the PSY.

                  • Queries if the device supports PNOK NMEA extensions.

                    If it supports PNOK, the PSY sets low power mode. For PNOK capable devices, the PSY is able to receive and report hardware status change messages through the Bluetooth GPS PSY Events API.

                  • Requests that NMEA messages are sent with an interval of 1 second.

                    NMEA messages are sent continuously to the PSY, but these are processed only when a location request is received from the Location Server.

                  • Waits for requests for location from the Location Server.

                  Making a location request

                  When a location request is received from the Location Server, the PSY returns any cached position fix it has if it meets the position quality specified with the request. The position quality includes the horizontal and vertical position accuracy and the age of the position fix. These parameters can be specified by a Location Acquisition API client as part of the location request (see How to Get Location Information for more information).

                  If the cached position does not meet the quality criteria specified with the request, the PSY reads NMEA messages from the Bluetooth GPS device to obtain a position. The position is cached by the PSY and returned to the client.

                  Figure 2. Location request using the Bluetooth GPS PSY. -
                  Tracking

                  The term tracking is used to describe the situation where a client specifies that it wants to receive periodic position updates from the Location Server. To start tracking a client calls TPositionUpdateOptions::SetUpdateInterval() before making its first RPositioner::NotifyPositionUpdate() call. See How to Get Location Information for more information about using tracking.

                  An NMEA-compliant Bluetooth GPS device sends periodic NMEA messages containing position fixes to the PSY. This is the required behaviour for tracking and means a client tracking request does not cause major changes to the behaviour of the PSY. A tracking request does prevent the PSY from entering the standby state, so that it is always ready to return the next position update.

                  Cancelling a location request

                  A client cancels a location request by calling RPositioner::CancelRequest(). Calling this method informs the PSY that the position fix is no longer required. However, the PSY still obtains the fix from hardware and caches it for possible future use.

                  +
                  Tracking

                  The term tracking is used to describe the situation where a client specifies that it wants to receive periodic position updates from the Location Server. To start tracking a client calls TPositionUpdateOptions::SetUpdateInterval() before making its first RPositioner::NotifyPositionUpdate() call. See How to Get Location Information for more information about using tracking.

                  An NMEA-compliant Bluetooth GPS device sends periodic NMEA messages containing position fixes to the PSY. This is the required behaviour for tracking and means a client tracking request does not cause major changes to the behaviour of the PSY. A tracking request does prevent the PSY from entering the standby state, so that it is always ready to return the next position update.

                  Cancelling a location request

                  A client cancels a location request by calling RPositioner::CancelRequest(). Calling this method informs the PSY that the position fix is no longer required. However, the PSY still obtains the fix from hardware and caches it for possible future use.

                  Figure 3. Cancelling a location request. -
                  Unloading the Bluetooth GPS PSY

                  The PSY is unloaded when the last client subsession using it is closed by calling RPositioner::Close(). The PSY closes the Bluetooth connection to the GPS device.

                  +
                  Unloading the Bluetooth GPS PSY

                  The PSY is unloaded when the last client subsession using it is closed by calling RPositioner::Close(). The PSY closes the Bluetooth connection to the GPS device.

                  Figure 4. Unloading the Bluetooth GPS PSY. -
                  +
                  Opening a Session with Bluetooth GPS PSY \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7C4A8920-359F-5328-8D28-2AFBA25A6A9E.dita --- a/Symbian3/PDK/Source/GUID-7C4A8920-359F-5328-8D28-2AFBA25A6A9E.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -lang

                  lang language-list

                  Use the lang statement to indicate languages code for the project.

                  If this statement is not specified, the default language code is sc.

                  The language codes should be two-digit codes, and are used to complete the extension of generated resource files, as project.rsc.

                  Each resource file specified with resource or systemresource or start resource is compiled multiple times, once for each language specified. The specification of several languages does not cause several versions of the bitmaps or application information files in your project to be created.

                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7C51BC7A-CB97-5A7E-A5EF-BB3623DFFFED_d0e236804_href.png Binary file Symbian3/PDK/Source/GUID-7C51BC7A-CB97-5A7E-A5EF-BB3623DFFFED_d0e236804_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7C51BC7A-CB97-5A7E-A5EF-BB3623DFFFED_d0e242777_href.png Binary file Symbian3/PDK/Source/GUID-7C51BC7A-CB97-5A7E-A5EF-BB3623DFFFED_d0e242777_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7C6FB773-0F87-5937-BF44-BEB8F4B6A62C_d0e445275_href.png Binary file Symbian3/PDK/Source/GUID-7C6FB773-0F87-5937-BF44-BEB8F4B6A62C_d0e445275_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7C6FB773-0F87-5937-BF44-BEB8F4B6A62C_d0e451120_href.png Binary file Symbian3/PDK/Source/GUID-7C6FB773-0F87-5937-BF44-BEB8F4B6A62C_d0e451120_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7C75642D-C0C9-5392-9354-711F42DC2C61.dita --- a/Symbian3/PDK/Source/GUID-7C75642D-C0C9-5392-9354-711F42DC2C61.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7C75642D-C0C9-5392-9354-711F42DC2C61.dita Fri Jul 16 17:23:46 2010 +0100 @@ -75,7 +75,7 @@ diagram demonstrates that typically the RunL() starts with a GetRedraw() and ends with a call to RedrawReady().

                  Window Server-initiated redraw - +

                  A redrawer's RunL() function must not perform any non-redraw drawing (that is, any drawing operations that are not bracketed within the calls to BeginRedraw() and EndRedraw()). @@ -107,7 +107,7 @@ Application-initiated redrawing, "draw now" scenario - +

                  The "draw deferred" scenario

                  The "draw deferred" redraw scenario is when an application simply marks a window or a rectangle within a window as invalid. This eventually triggers a Window Server-initiated redraw. Typically @@ -115,7 +115,7 @@ However, it is also possible to do this by calling RWindow::Invalidate().

                  Application-initiated redrawing, "draw deferred" scenario - +

                  This approach is useful when the data to be displayed might be updated frequently but it is not necessary to update the display instantaneously.

                  To illustrate how it works, consider a window that has a rectangle that is used @@ -126,14 +126,14 @@ the following diagram.

                  Icons displayed using the "draw now" approach - +

                  However, if you use the "draw deferred" approach when each event occurs, the Window Server may not update the display for each one. For example, the Window Server does not update the display when it is superceded by a later call.

                  Icons displayed using the "draw deferred" approach - +

                  If it is important that the display is updated immediately, you would generally use the "draw now" approach. However, if a short delay in the display being updated is unlikely to inconvenience the user, the "draw diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7C87B04A-1CCC-47D2-9B53-4E341412EFD2_d0e94143_href.png Binary file Symbian3/PDK/Source/GUID-7C87B04A-1CCC-47D2-9B53-4E341412EFD2_d0e94143_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7C87B04A-1CCC-47D2-9B53-4E341412EFD2_d0e98341_href.png Binary file Symbian3/PDK/Source/GUID-7C87B04A-1CCC-47D2-9B53-4E341412EFD2_d0e98341_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7CD8F0E3-68C3-5939-A96D-547740D796E5_d0e172462_href.png Binary file Symbian3/PDK/Source/GUID-7CD8F0E3-68C3-5939-A96D-547740D796E5_d0e172462_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7CD8F0E3-68C3-5939-A96D-547740D796E5_d0e178530_href.png Binary file Symbian3/PDK/Source/GUID-7CD8F0E3-68C3-5939-A96D-547740D796E5_d0e178530_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7CF8DC4A-1BD8-517F-9E96-AFB30EE8F938.dita --- a/Symbian3/PDK/Source/GUID-7CF8DC4A-1BD8-517F-9E96-AFB30EE8F938.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7CF8DC4A-1BD8-517F-9E96-AFB30EE8F938.dita Fri Jul 16 17:23:46 2010 +0100 @@ -25,7 +25,7 @@

                  This section describes the guidelines that are suggested for implementing client and server streaming agents. However, these may not be appropriate for all agents.

                  -
                  Client-side

                  At +

                  Client-side

                  At the client-side, implement the following:

                  • Receive details of the key stream decoder

                  • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7D025BEF-61B9-4EF1-AFF7-604B500A8F2C_d0e92545_href.png Binary file Symbian3/PDK/Source/GUID-7D025BEF-61B9-4EF1-AFF7-604B500A8F2C_d0e92545_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7D025BEF-61B9-4EF1-AFF7-604B500A8F2C_d0e96743_href.png Binary file Symbian3/PDK/Source/GUID-7D025BEF-61B9-4EF1-AFF7-604B500A8F2C_d0e96743_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7D13B61C-0C9E-5098-87F0-BB9D741E9281_d0e435797_href.png Binary file Symbian3/PDK/Source/GUID-7D13B61C-0C9E-5098-87F0-BB9D741E9281_d0e435797_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7D13B61C-0C9E-5098-87F0-BB9D741E9281_d0e441642_href.png Binary file Symbian3/PDK/Source/GUID-7D13B61C-0C9E-5098-87F0-BB9D741E9281_d0e441642_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7D1886D4-24E4-528E-B3F0-2B6AF3E175AB_d0e231694_href.png Binary file Symbian3/PDK/Source/GUID-7D1886D4-24E4-528E-B3F0-2B6AF3E175AB_d0e231694_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7D1886D4-24E4-528E-B3F0-2B6AF3E175AB_d0e237689_href.png Binary file Symbian3/PDK/Source/GUID-7D1886D4-24E4-528E-B3F0-2B6AF3E175AB_d0e237689_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7D3B5008-CB40-504D-90A8-92DE482977CA.dita --- a/Symbian3/PDK/Source/GUID-7D3B5008-CB40-504D-90A8-92DE482977CA.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -bld.inf file syntax \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7D4F429E-FC65-55FC-BD4D-8F351E78AF33.dita --- a/Symbian3/PDK/Source/GUID-7D4F429E-FC65-55FC-BD4D-8F351E78AF33.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7D4F429E-FC65-55FC-BD4D-8F351E78AF33.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ of applications with domains, manages domain-specific power state transitions and system-wide power state transitions.

                    - +
                    • Applications interface diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7D53E323-CF8D-5C4D-ABCD-4D95C7A4A5B5-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-8-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-7D53E323-CF8D-5C4D-ABCD-4D95C7A4A5B5-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-8-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,111 @@ + + + + + +Secure store encryption example support code

                      Below is the supporting code for the secure store example code.

                      <codeblock id="GUID-36F57493-4F6E-559A-B51B-7261F57AF1B1-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-8-1-2-2-2" xml:space="preserve"> +#include "e32std.h" +#include "f32file.h" +#include "s32file.h" +#include "pbe.h" +#include "pbedata.h" +#include "s32crypt.h" + </codeblock> <codeblock id="GUID-EE52D935-4E72-5D4A-809C-BA0FEE19C90F-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-8-1-2-2-3" xml:space="preserve"> +/* + * Class to demonstrate the use of secure store APIs. + */ +class CSecureStoreExample : public CBase + { +public: + static CSecureStoreExample* NewLC(const TDesC& aFilename); + virtual ~CSecureStoreExample(); + + void CreateNewStoreL(const TDesC& aPassword); + TStreamId WriteEncryptedDataL(const TDesC8& aInput); + void OpenExistingStoreL(const TDesC& aPassword); + HBufC8* ReadEncryptedDataLC(TStreamId aStreamId); + void CloseStore(); + void ChangePasswordL(const TDesC& aNewPassword); +private: + CSecureStoreExample(const TDesC& aFilename); + void ConstructL(); +private: + RFs iFs; + const TDesC& iFilename; + CPermanentFileStore* iFileStore; + CPBEncryptSet* iEncryptSet; + CSecureStore* iSecureStore; + }; + </codeblock> <codeblock id="GUID-DB3DBE48-DCEC-5CDD-9066-246AD37A5C12-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-8-1-2-2-4" xml:space="preserve"> +CSecureStoreExample* CSecureStoreExample::NewLC(const TDesC& aFilename) + { + CSecureStoreExample* self = new (ELeave) CSecureStoreExample(aFilename); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CSecureStoreExample::CSecureStoreExample(const TDesC& aFilename) + : iFilename(aFilename) + { + } + +void CSecureStoreExample::ConstructL() + { + User::LeaveIfError(iFs.Connect()); + } + +CSecureStoreExample::~CSecureStoreExample() + { + CloseStore(); + iFs.Close(); + } + </codeblock> <codeblock id="GUID-4485993E-0561-5688-85FA-3914AECDF12B-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-8-1-2-2-5" xml:space="preserve"> +LOCAL_D void RunPBEExampleL() + { + _LIT(KFilename, "c:\\pbe_example_data.dat"); + _LIT8(KInputData, "This is the data to be encrypted."); + _LIT(KPassword, "pa55w0rd"); + _LIT(KNewPassword, "chang3m3"); + + CSecureStoreExample* main = CSecureStoreExample::NewLC(KFilename); + + // Create a secure store and write some data to it + main->CreateNewStoreL(KPassword); + TStreamId streamId = main->WriteEncryptedDataL(KInputData); + main->CloseStore(); + + // Open it again, and read the data back out + main->OpenExistingStoreL(KPassword); + HBufC8* outputData = main->ReadEncryptedDataLC(streamId); + ASSERT(*outputData == KInputData); + CleanupStack::PopAndDestroy(outputData); + + // Change the password + main->ChangePasswordL(KNewPassword); + + // Check we can still read the data + outputData = main->ReadEncryptedDataLC(streamId); + ASSERT(*outputData == KInputData); + main->CloseStore(); + + CleanupStack::PopAndDestroy(2, main); + } + </codeblock> <codeblock id="GUID-7FF91AD3-106A-56EA-9199-0E261B8D044C-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-8-1-2-2-6" xml:space="preserve"> +GLDEF_C TInt E32Main() // main function called by E32 + { + __UHEAP_MARK; + CTrapCleanup* cleanup = CTrapCleanup::New(); // get clean-up stack + TRAPD(error, RunPBEExampleL()); + __ASSERT_ALWAYS(!error,User::Panic(_L("pbe_example_code"),error)); + delete cleanup; // destroy clean-up stack + __UHEAP_MARKEND; + return 0; + } + </codeblock> </section> </conbody></concept> \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7D53E323-CF8D-5C4D-ABCD-4D95C7A4A5B5-GENID-1-12-1-26-1-1-9-1-12-1-8-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-7D53E323-CF8D-5C4D-ABCD-4D95C7A4A5B5-GENID-1-12-1-26-1-1-9-1-12-1-8-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,111 @@ +<?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 xml:lang="en" id="GUID-7D53E323-CF8D-5C4D-ABCD-4D95C7A4A5B5-GENID-1-12-1-26-1-1-9-1-12-1-8-1"><title>Secure store encryption example support code

                      Below is the supporting code for the secure store example code.

                      <codeblock id="GUID-36F57493-4F6E-559A-B51B-7261F57AF1B1-GENID-1-12-1-26-1-1-9-1-12-1-8-1-2-2-2" xml:space="preserve"> +#include "e32std.h" +#include "f32file.h" +#include "s32file.h" +#include "pbe.h" +#include "pbedata.h" +#include "s32crypt.h" + </codeblock> <codeblock id="GUID-EE52D935-4E72-5D4A-809C-BA0FEE19C90F-GENID-1-12-1-26-1-1-9-1-12-1-8-1-2-2-3" xml:space="preserve"> +/* + * Class to demonstrate the use of secure store APIs. + */ +class CSecureStoreExample : public CBase + { +public: + static CSecureStoreExample* NewLC(const TDesC& aFilename); + virtual ~CSecureStoreExample(); + + void CreateNewStoreL(const TDesC& aPassword); + TStreamId WriteEncryptedDataL(const TDesC8& aInput); + void OpenExistingStoreL(const TDesC& aPassword); + HBufC8* ReadEncryptedDataLC(TStreamId aStreamId); + void CloseStore(); + void ChangePasswordL(const TDesC& aNewPassword); +private: + CSecureStoreExample(const TDesC& aFilename); + void ConstructL(); +private: + RFs iFs; + const TDesC& iFilename; + CPermanentFileStore* iFileStore; + CPBEncryptSet* iEncryptSet; + CSecureStore* iSecureStore; + }; + </codeblock> <codeblock id="GUID-DB3DBE48-DCEC-5CDD-9066-246AD37A5C12-GENID-1-12-1-26-1-1-9-1-12-1-8-1-2-2-4" xml:space="preserve"> +CSecureStoreExample* CSecureStoreExample::NewLC(const TDesC& aFilename) + { + CSecureStoreExample* self = new (ELeave) CSecureStoreExample(aFilename); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CSecureStoreExample::CSecureStoreExample(const TDesC& aFilename) + : iFilename(aFilename) + { + } + +void CSecureStoreExample::ConstructL() + { + User::LeaveIfError(iFs.Connect()); + } + +CSecureStoreExample::~CSecureStoreExample() + { + CloseStore(); + iFs.Close(); + } + </codeblock> <codeblock id="GUID-4485993E-0561-5688-85FA-3914AECDF12B-GENID-1-12-1-26-1-1-9-1-12-1-8-1-2-2-5" xml:space="preserve"> +LOCAL_D void RunPBEExampleL() + { + _LIT(KFilename, "c:\\pbe_example_data.dat"); + _LIT8(KInputData, "This is the data to be encrypted."); + _LIT(KPassword, "pa55w0rd"); + _LIT(KNewPassword, "chang3m3"); + + CSecureStoreExample* main = CSecureStoreExample::NewLC(KFilename); + + // Create a secure store and write some data to it + main->CreateNewStoreL(KPassword); + TStreamId streamId = main->WriteEncryptedDataL(KInputData); + main->CloseStore(); + + // Open it again, and read the data back out + main->OpenExistingStoreL(KPassword); + HBufC8* outputData = main->ReadEncryptedDataLC(streamId); + ASSERT(*outputData == KInputData); + CleanupStack::PopAndDestroy(outputData); + + // Change the password + main->ChangePasswordL(KNewPassword); + + // Check we can still read the data + outputData = main->ReadEncryptedDataLC(streamId); + ASSERT(*outputData == KInputData); + main->CloseStore(); + + CleanupStack::PopAndDestroy(2, main); + } + </codeblock> <codeblock id="GUID-7FF91AD3-106A-56EA-9199-0E261B8D044C-GENID-1-12-1-26-1-1-9-1-12-1-8-1-2-2-6" xml:space="preserve"> +GLDEF_C TInt E32Main() // main function called by E32 + { + __UHEAP_MARK; + CTrapCleanup* cleanup = CTrapCleanup::New(); // get clean-up stack + TRAPD(error, RunPBEExampleL()); + __ASSERT_ALWAYS(!error,User::Panic(_L("pbe_example_code"),error)); + delete cleanup; // destroy clean-up stack + __UHEAP_MARKEND; + return 0; + } + </codeblock> </section> </conbody></concept> \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7D53E323-CF8D-5C4D-ABCD-4D95C7A4A5B5.dita --- a/Symbian3/PDK/Source/GUID-7D53E323-CF8D-5C4D-ABCD-4D95C7A4A5B5.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -<?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 xml:lang="en" id="GUID-7D53E323-CF8D-5C4D-ABCD-4D95C7A4A5B5"><title>Secure store encryption example support code

                      Below is the supporting code for the secure store example code.

                      <codeblock id="GUID-36F57493-4F6E-559A-B51B-7261F57AF1B1" xml:space="preserve"> -#include "e32std.h" -#include "f32file.h" -#include "s32file.h" -#include "pbe.h" -#include "pbedata.h" -#include "s32crypt.h" - </codeblock> <codeblock id="GUID-EE52D935-4E72-5D4A-809C-BA0FEE19C90F" xml:space="preserve"> -/* - * Class to demonstrate the use of secure store APIs. - */ -class CSecureStoreExample : public CBase - { -public: - static CSecureStoreExample* NewLC(const TDesC& aFilename); - virtual ~CSecureStoreExample(); - - void CreateNewStoreL(const TDesC& aPassword); - TStreamId WriteEncryptedDataL(const TDesC8& aInput); - void OpenExistingStoreL(const TDesC& aPassword); - HBufC8* ReadEncryptedDataLC(TStreamId aStreamId); - void CloseStore(); - void ChangePasswordL(const TDesC& aNewPassword); -private: - CSecureStoreExample(const TDesC& aFilename); - void ConstructL(); -private: - RFs iFs; - const TDesC& iFilename; - CPermanentFileStore* iFileStore; - CPBEncryptSet* iEncryptSet; - CSecureStore* iSecureStore; - }; - </codeblock> <codeblock id="GUID-DB3DBE48-DCEC-5CDD-9066-246AD37A5C12" xml:space="preserve"> -CSecureStoreExample* CSecureStoreExample::NewLC(const TDesC& aFilename) - { - CSecureStoreExample* self = new (ELeave) CSecureStoreExample(aFilename); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -CSecureStoreExample::CSecureStoreExample(const TDesC& aFilename) - : iFilename(aFilename) - { - } - -void CSecureStoreExample::ConstructL() - { - User::LeaveIfError(iFs.Connect()); - } - -CSecureStoreExample::~CSecureStoreExample() - { - CloseStore(); - iFs.Close(); - } - </codeblock> <codeblock id="GUID-4485993E-0561-5688-85FA-3914AECDF12B" xml:space="preserve"> -LOCAL_D void RunPBEExampleL() - { - _LIT(KFilename, "c:\\pbe_example_data.dat"); - _LIT8(KInputData, "This is the data to be encrypted."); - _LIT(KPassword, "pa55w0rd"); - _LIT(KNewPassword, "chang3m3"); - - CSecureStoreExample* main = CSecureStoreExample::NewLC(KFilename); - - // Create a secure store and write some data to it - main->CreateNewStoreL(KPassword); - TStreamId streamId = main->WriteEncryptedDataL(KInputData); - main->CloseStore(); - - // Open it again, and read the data back out - main->OpenExistingStoreL(KPassword); - HBufC8* outputData = main->ReadEncryptedDataLC(streamId); - ASSERT(*outputData == KInputData); - CleanupStack::PopAndDestroy(outputData); - - // Change the password - main->ChangePasswordL(KNewPassword); - - // Check we can still read the data - outputData = main->ReadEncryptedDataLC(streamId); - ASSERT(*outputData == KInputData); - main->CloseStore(); - - CleanupStack::PopAndDestroy(2, main); - } - </codeblock> <codeblock id="GUID-7FF91AD3-106A-56EA-9199-0E261B8D044C" xml:space="preserve"> -GLDEF_C TInt E32Main() // main function called by E32 - { - __UHEAP_MARK; - CTrapCleanup* cleanup = CTrapCleanup::New(); // get clean-up stack - TRAPD(error, RunPBEExampleL()); - __ASSERT_ALWAYS(!error,User::Panic(_L("pbe_example_code"),error)); - delete cleanup; // destroy clean-up stack - __UHEAP_MARKEND; - return 0; - } - </codeblock> </section> </conbody></concept> \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7D78DFA8-301C-5A0C-9F83-7C4BBEAE34C2_d0e214701_href.jpg Binary file Symbian3/PDK/Source/GUID-7D78DFA8-301C-5A0C-9F83-7C4BBEAE34C2_d0e214701_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7D78DFA8-301C-5A0C-9F83-7C4BBEAE34C2_d0e220721_href.jpg Binary file Symbian3/PDK/Source/GUID-7D78DFA8-301C-5A0C-9F83-7C4BBEAE34C2_d0e220721_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7DAA8384-34A5-5510-9435-CC4A6E0CD13C_d0e439103_href.png Binary file Symbian3/PDK/Source/GUID-7DAA8384-34A5-5510-9435-CC4A6E0CD13C_d0e439103_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7DAA8384-34A5-5510-9435-CC4A6E0CD13C_d0e444948_href.png Binary file Symbian3/PDK/Source/GUID-7DAA8384-34A5-5510-9435-CC4A6E0CD13C_d0e444948_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7DDC1BC6-A100-5B50-ABFE-B4AA466716A6_d0e489613_href.png Binary file Symbian3/PDK/Source/GUID-7DDC1BC6-A100-5B50-ABFE-B4AA466716A6_d0e489613_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7DDC1BC6-A100-5B50-ABFE-B4AA466716A6_d0e495434_href.png Binary file Symbian3/PDK/Source/GUID-7DDC1BC6-A100-5B50-ABFE-B4AA466716A6_d0e495434_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7DDEE87B-7056-5AAA-91A1-33D3D0D50041.dita --- a/Symbian3/PDK/Source/GUID-7DDEE87B-7056-5AAA-91A1-33D3D0D50041.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7DDEE87B-7056-5AAA-91A1-33D3D0D50041.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,7 +21,7 @@ <p>The following diagram illustrates how elements are organised within the array buffer:</p> <fig id="GUID-C36AFFF1-3BE7-5AF3-B852-B1AB3BBA257D"> -<image href="GUID-2472E5E0-C33A-51B4-8210-89D7DEFA87C8_d0e317532_href.png" placement="inline"/> +<image href="GUID-2472E5E0-C33A-51B4-8210-89D7DEFA87C8_d0e323522_href.png" placement="inline"/> </fig> <p>This kind of array is suitable for a small number of objects or for a moderately large but fixed maximum number of objects. It is not suitable for large arrays diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7DFA1B74-5BD1-494D-9BBA-B2D6F258C5F1.dita --- a/Symbian3/PDK/Source/GUID-7DFA1B74-5BD1-494D-9BBA-B2D6F258C5F1.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7DFA1B74-5BD1-494D-9BBA-B2D6F258C5F1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -25,7 +25,7 @@ <row> <entry><p>Left and right arrows</p><fig id="GUID-58FC0E5C-12D5-4B42-8171-37567D139807"> <title>Arrows in the Navi pane - +

                      When horizontal navigation between different main pane views is used, the Navi pane displays the navigation information (tabs or text may @@ -36,7 +36,7 @@

                      Editing indicators

                      Editing indicators in the Navi pane - +

                      When an editor is in use in the main pane, the indicators related to editing parameters are displayed in the Navi pane. They indicate things diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7E6634DC-7F07-5687-AFEE-D5BD268B8E1D_d0e61445_href.png Binary file Symbian3/PDK/Source/GUID-7E6634DC-7F07-5687-AFEE-D5BD268B8E1D_d0e61445_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7E6634DC-7F07-5687-AFEE-D5BD268B8E1D_d0e65679_href.png Binary file Symbian3/PDK/Source/GUID-7E6634DC-7F07-5687-AFEE-D5BD268B8E1D_d0e65679_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7E6DDDBB-FDE2-59ED-A932-AFD4D0BAC3E3.dita --- a/Symbian3/PDK/Source/GUID-7E6DDDBB-FDE2-59ED-A932-AFD4D0BAC3E3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7E6DDDBB-FDE2-59ED-A932-AFD4D0BAC3E3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -22,11 +22,11 @@ word contains 2 pixels.

                      Word diagram representing the EUidPixelFormatRGB_565 format - + Pixel address layout in memory for the EUidPixelFormatRGB_565 format - + @@ -54,11 +54,11 @@ 4 bits. The first 4 bits are unused.

                      Word diagram representing the EUidPixelFormatXRGB_4444 format - + Pixel address layout in memory for the EUidPixelFormatXRGB_4444 format - +
                      @@ -87,11 +87,11 @@ only 24 bits, this format requires 32 bits (1 word) to construct.

                      Word diagram representing the EUidPixelFormatXRGB_8888 format - + Pixel address layout in memory for the EUidPixelFormatXRGB_8888 format - +
                      @@ -119,11 +119,11 @@ each occupy 8 bits.

                      Word diagram representing the EUidPixelFormatARGB_8888 format - + Pixel address layout in memory for the EUidPixelFormatARGB_8888 format - +
                      @@ -154,11 +154,11 @@ alpha blending and compositions.

                      Word diagram representing the EUidPixelFormatARGB_8888_PRE format - + Pixel address layout in memory for the EUidPixelFormatARGB_8888_PRE format - +
                      @@ -186,11 +186,11 @@ 3 and 2 bits, respectively. One word contains 4 bytes.

                      Word diagram representing the EUidPixelFormatRGB_332 format - + Pixel address layout in memory for the EUidPixelFormatRGB_332 format - +
                      @@ -218,7 +218,7 @@ 4 bits.

                      Word diagram representing the EUidPixelFormatARGB_4444 format - +
                      @@ -247,7 +247,7 @@ 32768 possible different colors in total. One word contains 2 pixels.

                      Word diagram representing the EUidPixelFormatARGB_1555 format - +
                      @@ -276,7 +276,7 @@ unused.

                      Word diagram representing the EUidPixelFormatXBGR_8888 format - +
                      @@ -305,7 +305,7 @@ requires 1 word to construct.

                      Word diagram representing the EUidPixelFormatBGRX_8888 format - +
                      @@ -333,7 +333,7 @@ 8 bits.

                      Word diagram representing the EUidPixelFormatBGRA_8888 format - +
                      @@ -361,7 +361,7 @@ 8 bits.

                      Word diagram representing the EUidPixelFormatABGR_8888 format - +
                      @@ -390,7 +390,7 @@ information in the alpha channel.

                      Word diagram representing the EUidPixelFormatABGR_8888_PRE format - +
                      @@ -419,7 +419,7 @@ information in the alpha channel.

                      Word diagram representing the EUidPixelFormatBGRA_8888_PRE format - +
                      @@ -447,7 +447,7 @@ each occupy 10 bits.

                      Word diagram representing the EUidPixelFormatABGR_2101010 format - +
                      @@ -475,7 +475,7 @@ each occupy 10 bits.

                      Word diagram representing the EUidPixelFormatARGB_2101010 format - +
                      @@ -503,7 +503,7 @@ 8 bits. 12 bytes contain 4 pixels as shown in the following diagram.

                      Word diagram representing the EUidPixelFormatBGR_888 format - +
                      @@ -531,7 +531,7 @@ 8 bits. 12 bytes contain 4 pixels as shown in the following diagram.

                      Word diagram representing the EUidPixelFormatRGB_888 format - +
                      @@ -559,7 +559,7 @@ 5 bits.

                      Word diagram representing the EUidPixelFormatXRGB_1555 format - +
                      @@ -587,7 +587,7 @@ 5 bits.

                      Word diagram representing the EUidPixelFormatBGRA_5551 format - +
                      @@ -615,7 +615,7 @@ 5 bits.

                      Word diagram representing the EUidPixelFormatBGRX_5551 format - +
                      @@ -643,7 +643,7 @@ 4 bits.

                      Word diagram representing the EUidPixelFormatBGRA_4444 format - +
                      @@ -671,7 +671,7 @@ 4 bits.

                      Word diagram representing the EUidPixelFormatBGRX_4444 format - +
                      @@ -699,7 +699,7 @@ 4 bits.

                      Word diagram representing the EUidPixelFormatXBGR_4444 format - +
                      @@ -727,7 +727,7 @@ This format supports 65536 possible colors. One word contains 2 pixels.

                      Word diagram representing the EUidPixelFormatBGR_565 format - +
                      @@ -755,7 +755,7 @@ occupy 3, 3 and 2 bits, respectively.

                      Word diagram representing the EUidPixelFormatARGB_8332 format - +
                      @@ -783,7 +783,7 @@ One word contains 4 bytes.

                      Word diagram representing the EUidPixelFormatBGR_332 format - +
                      @@ -810,7 +810,7 @@ with 8 bits of alpha.

                      Word diagram representing the EUidPixelFormatAP_88 format - +
                      @@ -837,14 +837,14 @@ that it has a palette.

                      Word diagram representing the EUidPixelFormatP_8 format - +

                      A little-endian architecture is implicit in the code, because conversions are made between pointers and byte and pointers to (unsigned) integer. (This implies that the lower-order byte of an unsigned integer has the physically lower address, because this is treated as the lower-addressed pixel).

                      Pixel address layout in memory for the EUidPixelFormatP_8 format - +
                      @@ -871,7 +871,7 @@ that it has a palette.

                      Word diagram representing the EUidPixelFormatP_4 format - +

                      It is implicit in the code that pixel addresses within a byte increase from low bit to high bit. A little-endian architecture is also implicit, because conversions are made between pointers to byte and pointers to (unsigned) integer @@ -879,7 +879,7 @@ increase from low to high-order bit.

                      Pixel address layout in memory for the EUidPixelFormatP_4 format - +
                      @@ -906,7 +906,7 @@ that it has a palette.

                      Word diagram representing the EUidPixelFormatP_2 format - +

                      It is implicit in the code that pixel addresses within a byte increase from low bit to high bit. A little-endian architecture is also implicit, because conversions are made between pointers to byte and pointers to (unsigned) integer @@ -914,7 +914,7 @@ increase from low to high-order bit.

                      Pixel address layout in memory for the EUidPixelFormatP_2 format - +
                      @@ -941,7 +941,7 @@ it has a palette.

                      Word diagram representing the EUidPixelFormatP_1 format - +

                      It is implicit in the code that pixel addresses within a byte increase from low bit to high bit. A little-endian architecture is also implicit, because conversions are made between pointers to byte and pointers to (unsigned) integer @@ -949,7 +949,7 @@ increase from low to high-order bit.

                      Pixel address layout in memory for the EUidPixelFormatP_1 format - +
                      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7E7BCC57-E14F-56A4-B948-B9FB9E7AB598_d0e8953_href.png Binary file Symbian3/PDK/Source/GUID-7E7BCC57-E14F-56A4-B948-B9FB9E7AB598_d0e8953_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7E7BCC57-E14F-56A4-B948-B9FB9E7AB598_d0e9075_href.png Binary file Symbian3/PDK/Source/GUID-7E7BCC57-E14F-56A4-B948-B9FB9E7AB598_d0e9075_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7E801A44-4509-5AC0-88D5-7DEA1AF7969D_d0e7653_href.png Binary file Symbian3/PDK/Source/GUID-7E801A44-4509-5AC0-88D5-7DEA1AF7969D_d0e7653_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7E801A44-4509-5AC0-88D5-7DEA1AF7969D_d0e7775_href.png Binary file Symbian3/PDK/Source/GUID-7E801A44-4509-5AC0-88D5-7DEA1AF7969D_d0e7775_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7E8C363C-5908-445D-8595-D53F217186ED_d0e101841_href.png Binary file Symbian3/PDK/Source/GUID-7E8C363C-5908-445D-8595-D53F217186ED_d0e101841_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7E8C363C-5908-445D-8595-D53F217186ED_d0e105861_href.png Binary file Symbian3/PDK/Source/GUID-7E8C363C-5908-445D-8595-D53F217186ED_d0e105861_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7E8DA853-BE41-5C8D-B286-9F5F7992FD2C_d0e551668_href.png Binary file Symbian3/PDK/Source/GUID-7E8DA853-BE41-5C8D-B286-9F5F7992FD2C_d0e551668_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7E8DA853-BE41-5C8D-B286-9F5F7992FD2C_d0e559124_href.png Binary file Symbian3/PDK/Source/GUID-7E8DA853-BE41-5C8D-B286-9F5F7992FD2C_d0e559124_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7F0EC737-F5EE-5B58-B9EB-4D8A058E3A49_d0e242547_href.jpg Binary file Symbian3/PDK/Source/GUID-7F0EC737-F5EE-5B58-B9EB-4D8A058E3A49_d0e242547_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7F0EC737-F5EE-5B58-B9EB-4D8A058E3A49_d0e248558_href.jpg Binary file Symbian3/PDK/Source/GUID-7F0EC737-F5EE-5B58-B9EB-4D8A058E3A49_d0e248558_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7F200AB2-602E-5351-8FA1-1B818F6DE355_d0e245815_href.png Binary file Symbian3/PDK/Source/GUID-7F200AB2-602E-5351-8FA1-1B818F6DE355_d0e245815_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7F200AB2-602E-5351-8FA1-1B818F6DE355_d0e251826_href.png Binary file Symbian3/PDK/Source/GUID-7F200AB2-602E-5351-8FA1-1B818F6DE355_d0e251826_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7F3F89C0-999A-552E-90BB-17D720C53DE6_d0e227935_href.png Binary file Symbian3/PDK/Source/GUID-7F3F89C0-999A-552E-90BB-17D720C53DE6_d0e227935_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7F3F89C0-999A-552E-90BB-17D720C53DE6_d0e233934_href.png Binary file Symbian3/PDK/Source/GUID-7F3F89C0-999A-552E-90BB-17D720C53DE6_d0e233934_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7F5CBA9E-1386-596D-A7FD-34AC1284F0C5_d0e229933_href.png Binary file Symbian3/PDK/Source/GUID-7F5CBA9E-1386-596D-A7FD-34AC1284F0C5_d0e229933_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7F5CBA9E-1386-596D-A7FD-34AC1284F0C5_d0e235928_href.png Binary file Symbian3/PDK/Source/GUID-7F5CBA9E-1386-596D-A7FD-34AC1284F0C5_d0e235928_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7F6283C0-46E8-427C-B6A9-FB274A7D2C15.dita --- a/Symbian3/PDK/Source/GUID-7F6283C0-46E8-427C-B6A9-FB274A7D2C15.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7F6283C0-46E8-427C-B6A9-FB274A7D2C15.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,38 +12,38 @@ Opening a Connection to a SNAP by specifying SNAP TypeExtended Connection Preferences API can be used by applications to set the SNAP type prior to establishing a connection. -

                      Specifying +

                      Specifying SNAP type enables the applications to start a connection to a specific SNAP (For example, Internet SNAP or Intranet SNAP) without iterating through the SNAP list to identify the appropriate type.

                      - -Connect to socket server . + +Connect to socket server . RSocketServ ss; ss.Connect(); - Open a RConnection object. + Open a RConnection object. RConnection conn; conn.Open( ss ); -Create a connection +Create a connection preference list and extended connection preferences object. TConnPrefList prefList; TExtendedConnPref preferences; -Set the SNAP type +Set the SNAP type using TExtendedConnPref::SetSnapPurpose(). preferences.SetSnapPurpose( CMManager::ESnapPurposeInternet ); -Append the extended +Append the extended connection preferences into connection preference list. prefList.AppendL( &preferences ); -Start a connection +Start a connection with connection preferences. conn.Start( prefList ); -

                      The application +

                      The application is connected to Internet SNAP.

                      Additional diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7F69D3CA-6EFC-5576-A00A-F58F36696BA5.dita --- a/Symbian3/PDK/Source/GUID-7F69D3CA-6EFC-5576-A00A-F58F36696BA5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7F69D3CA-6EFC-5576-A00A-F58F36696BA5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Data Source Modules OverviewThe Data Source Modules collection contains components that enable the LBS subsystem to obtain position data.
                      Purpose

                      The LBS subsystem requires a source of position data. The components in the Data Source Modules collection deliver position data to the LBS subsystem.

                      Architecture

                      Figure 1 shows this collection within the context of the LBS system model.

                      Figure 1. Data Source Modules collection in the LBS system model. -
                      Description

                      The Data Source Modules collection contains a set of components that provide position data to the LBS subsystem.

                      Data Source Modules and the Location Server

                      A device creator's LBS subsystem must be built to include the Location Server executable: eposserver.exe. The components in the Data Source Modules collection are Positioning Plug-ins (PSYs) and can only be used with eposserver.exe. A PSY implements the Positioning Plug-in (PSY) API which can be used to develop PSYs that use any positioning technology.

                      Components

                      The Data Source Modules collection contains the following Positioning Modules:

                      • Simulation Positioning Module

                        The Simulation Positioning Module returns simulated position fixes that are read from a data file.

                        This component is useful for application developers who want to test location aware applications in an emulator. It can also be used on hardware.

                      • Bluetooth GPS Positioning Module

                        The Bluetooth GPS Positioning Module enables the LBS subsystem to use Bluetooth GPS hardware that is external to the mobile device.

                      • Default Positioning Module

                        The Default Positioning Module is used by the Location Server variant executable eposserver.exe to choose a Positioning Module to use when the a client application that uses the LBS Location Acquisition API does not specify a preference.

                      • GPS/A-GPS PSY

                        The A-GPS PSY connects the Location Server to the A-GPS Location Manager. It allows the Location Server to use an A-GPS Integration Module to obtain a GPS position fix. See A-GPS Location Data Source API for information about the API that device creators use to develop an A-GPS Integration Module.

                      • Network PSY

                        The Network PSY connects the Location Server to the Network Location Manager. It allows the Location Server to use a Network Protocol Module to obtain a cell-based position fix. See Network Protocol Module API for information about the API that device creators use to develop a Network Protocol Module.

                      Using the Data Source Modules collection

                      A Positioning Module is selected by the Location Server when a client application makes a location request.

                      Each Positioning Module has a UID that can be chosen when an LBS application client application opens a session using the Location Acquisition API.

                      For more information about using each of the components in this collection, follow the links below to the documentation for that component.

                      Simulation +
                      Description

                      The Data Source Modules collection contains a set of components that provide position data to the LBS subsystem.

                      Data Source Modules and the Location Server

                      A device creator's LBS subsystem must be built to include the Location Server executable: eposserver.exe. The components in the Data Source Modules collection are Positioning Plug-ins (PSYs) and can only be used with eposserver.exe. A PSY implements the Positioning Plug-in (PSY) API which can be used to develop PSYs that use any positioning technology.

                      Components

                      The Data Source Modules collection contains the following Positioning Modules:

                      • Simulation Positioning Module

                        The Simulation Positioning Module returns simulated position fixes that are read from a data file.

                        This component is useful for application developers who want to test location aware applications in an emulator. It can also be used on hardware.

                      • Bluetooth GPS Positioning Module

                        The Bluetooth GPS Positioning Module enables the LBS subsystem to use Bluetooth GPS hardware that is external to the mobile device.

                      • Default Positioning Module

                        The Default Positioning Module is used by the Location Server variant executable eposserver.exe to choose a Positioning Module to use when the a client application that uses the LBS Location Acquisition API does not specify a preference.

                      • GPS/A-GPS PSY

                        The A-GPS PSY connects the Location Server to the A-GPS Location Manager. It allows the Location Server to use an A-GPS Integration Module to obtain a GPS position fix. See A-GPS Location Data Source API for information about the API that device creators use to develop an A-GPS Integration Module.

                      • Network PSY

                        The Network PSY connects the Location Server to the Network Location Manager. It allows the Location Server to use a Network Protocol Module to obtain a cell-based position fix. See Network Protocol Module API for information about the API that device creators use to develop a Network Protocol Module.

                      Using the Data Source Modules collection

                      A Positioning Module is selected by the Location Server when a client application makes a location request.

                      Each Positioning Module has a UID that can be chosen when an LBS application client application opens a session using the Location Acquisition API.

                      For more information about using each of the components in this collection, follow the links below to the documentation for that component.

                      Simulation Positioning Module Bluetooth GPS Positioning Module Default Positioning Module Positioning diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7F7A449F-CC19-570C-A6C1-BC470256AA8C_d0e167970_href.png Binary file Symbian3/PDK/Source/GUID-7F7A449F-CC19-570C-A6C1-BC470256AA8C_d0e167970_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7F7A449F-CC19-570C-A6C1-BC470256AA8C_d0e174063_href.png Binary file Symbian3/PDK/Source/GUID-7F7A449F-CC19-570C-A6C1-BC470256AA8C_d0e174063_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7F8F6ABB-8F46-5486-A116-6965787BC539_d0e219745_href.png Binary file Symbian3/PDK/Source/GUID-7F8F6ABB-8F46-5486-A116-6965787BC539_d0e219745_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7F8F6ABB-8F46-5486-A116-6965787BC539_d0e225765_href.png Binary file Symbian3/PDK/Source/GUID-7F8F6ABB-8F46-5486-A116-6965787BC539_d0e225765_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7F9F0EB3-8F0E-55BB-9864-C80FE6FC1528.dita --- a/Symbian3/PDK/Source/GUID-7F9F0EB3-8F0E-55BB-9864-C80FE6FC1528.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ - - - - - -How to set default STRUCT values

                      Default values can be specified for struct members by using an initialiser, for example

                      STRUCT NCEDIT - { - WORD current; - WORD low; - WORD high=65535; - }

                      With this specification, any NCEDIT resource will, by default, have a high member whose value is 65,535. If the RESOURCE statement specifies a different value, it will be used instead.

                      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7FA5898D-8898-53CE-875E-1DE97BE02C81.dita --- a/Symbian3/PDK/Source/GUID-7FA5898D-8898-53CE-875E-1DE97BE02C81.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ - - - - - -prj_testextensions

                      prj_testextensions

                      start extension team/sub-system/ext-template

                      [target target_file_name]

                      [sources source_file_1 .... - source_file_n]

                      [dependencies dependency_file_1 ... - dependency_file_n]

                      [tool toolname]

                      [option key_1 value_1]

                      ...

                      [option key_n value_n]

                      end

                      Note: The value argument in the option statement is optional.

                      In the prj_testextensions section, list the project extensions for the test programs. The options for start extension block are the same as those for prj_extensions, except that prj_testextensions is for test programs.

                      For more information about start extension options, refer to prj_extensions.

                      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7FB63DAA-FBFD-4485-919F-5FEFBBC53B97.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-7FB63DAA-FBFD-4485-919F-5FEFBBC53B97.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,50 @@ + + + + + +SMP Tools OverviewDescribes the tools that are available for debugging on +an SMP platform. +
                      Open +System Trace (OST)

                      This tool is used to monitor the path +of thread execution. It does this by logging of messages and variable +values to a log file for later analysis.

                      For more information, +see Trace and Carbide Tools > Trace in Carbide Help.

                      +
                      Performance +Investigator

                      This tool is used to monitor the performance. +It is very useful for detecting performance bottlenecks. It comes +in the form of a Carbide plugin.

                      For more information, seeHow to use PI Profiler +with PlatSim, the PI wiki and +Performance Investigator User Guide in Carbide Help.

                      +
                      MemSpy

                      This tool is used to monitor memory usage. It is especially useful +for detecting memory leaks.

                      However, the output from the present +version of the Memory Analysis tool does not hold information about +which CPU is accessing the memory.

                      For more information, seeMemSpy, the MemSpy wiki, +and Carbide Tools > MemSpy in Carbide Help.

                      +
                      Standard +Test Framework (STIF)

                      This is the standard test framework +for executing large number of repetitive tests. The framework comes +in the form of test scripts. This tool is used extensively for regression +testing.

                      For more information, see the STIF wiki and +Carbide Tools > STIF in Carbide Help.

                      This tool is for +internal use only.

                      +
                      Crazy +Scheduler

                      This tool is used to test if code will work in +an environment where there is no thread priority. It can also be used +to test the effect of a delay when a thread moves from one state to +another.

                      For more information, see SMP Crazy Scheduler.

                      When executing in crazy delay mode, this tool can +slow the system down.

                      +
                      Load +Generator

                      This tool is used to simulate the effect of heavy +processing on the platform.

                      For more information, see Load Generator and the Load Generator wiki.

                      This tool is for internal +use only.

                      +
                      External +tools

                      In addition to the above tools, both Lauterbach and +ARM produce hardware debugging tools that can be used on an SMP platform.

                      +
                      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7FCFB114-B186-5615-9134-08612BB675EE.dita --- a/Symbian3/PDK/Source/GUID-7FCFB114-B186-5615-9134-08612BB675EE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7FCFB114-B186-5615-9134-08612BB675EE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,45 +9,41 @@ --> -tcharexample: -TChar exampleThis example application demonstrates how to use TChar, TCharF, TCharLC and TCharUC classes. +tcharexample: TChar exampleThis example application demonstrates how to use TChar, TCharF, TCharLC and TCharUC classes.
                      -
                      Purpose

                      TChar represents -a single character. It stores the character's value as a 32-bit unsigned integer -and it provides various functions to manipulate the character and retrieve -its properties.

                      TChar and its derived classes can be used to represent -Unicode values outside plane 0 (that is, Unicode values within the -extended Unicode range from 0x10000 to 0xFFFFF). -This differentiates them from the related class TText, which -can only be used for 16-bit Unicode character values.

                      -
                      Class summary
                        -
                      • TChar - Holds a character value and provides a number -of utility functions to manipulate it and test its properties.

                      • -
                      • TCharF - Folds a specified character and provides -functions to fold additional characters after construction of the object.

                      • -
                      • TCharLC - Converts a specified character to lower -case and provides functions to convert additional characters after construction +

                        Purpose

                        TChar represents a single character. It stores +the character's value as a 32-bit unsigned integer and it provides +various functions to manipulate the character and retrieve its properties.

                        TChar and its derived classes can be used to represent Unicode +values outside plane 0 (that is, Unicode values within the +extended Unicode range from 0x10000 to 0xFFFFF). This differentiates them from the related class TText, which can only be used for 16-bit Unicode character values.

                        +
                        Class +summary
                          +
                        • TChar - Holds a character value and provides +a number of utility functions to manipulate it and test its properties.

                        • +
                        • TCharF - Folds a specified character and +provides functions to fold additional characters after construction of the object.

                        • -
                        • TCharUC - Converts a specified character to upper -case and provides functions to convert additional characters after construction -of the object.

                        • +
                        • TCharLC - Converts a specified character +to lower case and provides functions to convert additional characters +after construction of the object.

                        • +
                        • TCharUC - Converts a specified character +to upper case and provides functions to convert additional characters +after construction of the object.

                        -
                        Download

                        Click -on the following link to download the example: tcharexample.zip.

                        click: browse to view the example code.

                        -
                        Design and -implementation

                        Using TChar

                        The example retrieves -information about a character using:

                          -
                        • various Is...() functions, -for instance its case (e.g. TChar::IsLower()), whether -it is alphabetic (TChar::IsAlpha()), a decimal digit (TChar::IsDigit()), -and whether it is printable (TChar::IsPrint()).

                        • -
                        • various Get...() functions, -for instance its upper, lower and title case versions, e.g. (TChar::GetUpperCase()), -and the character width for Chinese, Japanese and Korean characters (TChar::GetCjkWidth()).

                        • -
                        • the TChar::TCharInfo struct. -This struct holds most of the information about the character, including its -Unicode category, and is populated by calling TChar::GetInfo().

                        • -

                        Using TCharF, TCharLC and TCharUC

                        Related APIs

                          +
                          Download

                          Click on the following link to download the example: tcharexample.zip.

                          click: browse to view the example code.

                          +
                          Design +and implementation

                          Using TChar

                          The example +retrieves information about a character using:

                            +
                          • various Is...() functions, for instance its case (e.g. TChar::IsLower()), whether it is alphabetic (TChar::IsAlpha()), a decimal digit (TChar::IsDigit()), and whether +it is printable (TChar::IsPrint()).

                          • +
                          • various Get...() functions, for instance its upper, lower and title +case versions, e.g. (TChar::GetUpperCase()), and +the character width for Chinese, Japanese and Korean characters (TChar::GetCjkWidth()).

                          • +
                          • the TChar::TCharInfo struct. This struct holds most of the +information about the character, including its Unicode category, and +is populated by calling TChar::GetInfo().

                          • +

                          Using TCharF, TCharLC and TCharUC

                          Related +APIs

                          • TChar::GetCjkWidth()

                          • TChar::GetInfo()

                          • TChar::GetUpperCase()

                          • @@ -57,28 +53,28 @@
                          • TChar::IsPrint()

                          • TChar::TCharInfo - A structure to hold information about a Unicode character.

                          • -

                          TCharF represents a folded character. The example -demonstrates how folding a character removes case and accent distinctions.

                          The -example also demonstrates converting characters between lower and upper case -using TCharLC and TCharUC.

                          -
                          Building and -configuring

                          To build the example:

                            -
                          • You can build the example -from your IDE or the command line.

                            If you use an IDE, import the bld.inf file -of the example into your IDE, and use the build command of the IDE.

                            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:

                            bldmake -bldfiles

                            abld build

                            How to use bldmake and How to use abld describe -how to use the SBSv1 build tools.

                          • -
                          • For the emulator, the -example builds an executable called tcharexample.exe in -the epoc32\release\winscw\<udeb or urel>\ folder.

                          • +

                          TCharF represents a folded character. +The example demonstrates how folding a character removes case and +accent distinctions.

                          The example also demonstrates converting +characters between lower and upper case using TCharLC and TCharUC.

                          +
                          Building +and configuring

                          To build the example:

                            +
                          • You can build +the example from your IDE or the command line.

                            If you use +an IDE, import the bld.inf file of the example +into your IDE, and use the build command of the IDE.

                            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:

                            bldmake bldfiles

                            abld +build

                          • +
                          • For the emulator, +the example builds an executable called tcharexample.exe in the epoc32\release\winscw\<udeb or + urel>\ folder.

                          -
                          Running the -example

                          The example application displays a list of options and -sub options to the user and takes input from the user.

                          +
                          Running +the example

                          The example application displays a list of +options and sub options to the user and takes input from the user.

                          Screenshot for TChar example - +
                          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7FD49142-23DC-44FC-BA7D-C11E0559C8CF.dita --- a/Symbian3/PDK/Source/GUID-7FD49142-23DC-44FC-BA7D-C11E0559C8CF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-7FD49142-23DC-44FC-BA7D-C11E0559C8CF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,16 +15,16 @@

                          Specifying SNAP ID enables the applications to start a connection to a specific SNAP.

                          - -Connect to socket server . + +Connect to socket server . RSocketServ ss; ss.Connect(); - Open a RConnection object. + Open a RConnection object. RConnection conn; conn.Open( ss ); -Create a connection +Create a connection preference list and extended connection preferences object. TConnPrefList prefList; TExtendedConnPref preferences; diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-7FF363B0-B05F-5490-8D9C-59061B905381.dita --- a/Symbian3/PDK/Source/GUID-7FF363B0-B05F-5490-8D9C-59061B905381.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,22 +0,0 @@ - - - - - -How -to build ROMs with variants -

                          A variant will define hundreds of features. Use BUILDROM, -to build a ROM for a variant. BUILDROM is the unified Symbian platform ROM -building tool.

                          -
                          ROM building -specifications

                          A variant configuration will be defined in .var file. -Specify the VAR file name along with the FEATUREVARIANT keyword.

                          For -example, if myvar.var is the VAR file name for variant myvar, -then use:

                          buildrom [options] –DFEATUREVARIANT=myvar <obey1> [<obey2> ...]

                          Note: For more information on BUILDROM, refer to BUILDROM reference.

                          -
                          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-803D895B-E22F-5ADE-9BA6-F2EB20856541_d0e653197_href.png Binary file Symbian3/PDK/Source/GUID-803D895B-E22F-5ADE-9BA6-F2EB20856541_d0e653197_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-803D895B-E22F-5ADE-9BA6-F2EB20856541_d0e666024_href.png Binary file Symbian3/PDK/Source/GUID-803D895B-E22F-5ADE-9BA6-F2EB20856541_d0e666024_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8061E4C1-4E63-53F6-9863-D0D7BB8A2E5D.dita --- a/Symbian3/PDK/Source/GUID-8061E4C1-4E63-53F6-9863-D0D7BB8A2E5D.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Switching between ABI modes

                          Symbian platform natively runs on ARM processors and to build a Symbian platform application, we need a compiler based on the Application Binary Interface (ABI) for ARM Architecture. There are two versions of the ARM ABI, referred to as v1 and v2 respectively. The Symbian platform build toolchain defines a set of native build targets (ARMV5 and ARMV6) that invoke ARM's RealView Compiler Tools (RVCT) to build binaries conforming to these two ABI versions. For more information on differences between ABI v1 and v2 toolchains, refer to ABIv1 to ABIv2 toolchain changes.

                          From Symbian OS v9.4 onwards, the behaviour of these build targets (ARMV5, ARMV5_ABIv2, ARMV6 and ARMV6_ABIv2) can be changed. The following lists the behaviour of these build targets prior to, for and after Symbian OS v9.4:

                          • For Symbian OS v9.3 and earlier versions, the build targets used to create binaries conforming to ABI v1 and ABI v2 are ARMV5 and ARMV5_ABIv2 respectively, and ARMV6 and ARMV6_ABIv2 respectively. By default, the abld build command will create binaries conforming to ARMV5 ABI v1.

                          • For Symbian OS v9.4 and later, the build targets used to create binaries conforming to ABI v2 and ABI v1 are ARMV5 and ARMV5_ABIv1 respectively, and ARMV6 and ARMV6_ABIv1 respectively. By default, the abld build command will create binaries conforming to ARMV5 ABI v2.

                          You can choose to switch between the above listed behaviours using the macro ENABLE_ABIV2_MODE. If you enable this macro, the behaviour of build targets ARMV5 and ARMV6 is changed to create binaries conforming to ABI v2 instead of ABI v1. If you want to create binaries conforming to ABI v1, use the build targets ARMV5_ABIv1 and ARMV6_ABIv1.

                          How to switch to ABI v2 mode

                          To switch to ABI v2 mode from ABI v1 mode, edit the variant.cfg file located at epoc32\tools\variant\ and add the macro ENABLE_ABIV2_MODE.

                          After you add the macro to variant.cfg file, the following abld commands will create binaries conforming to ABI v2 under epoc32\release\ARMV5\ or epoc32\release\ARMV6\ folders:

                          abld build

                          abld build ARMV5

                          abld build ARMV6

                          If you want to create binaries conforming to ABI v1 under epoc32\release\ARMV5_ABIV1\ or epoc32\release\ARMV6_ABIV1\ folders, use the following abld commands:

                          abld build ARMV5_ABIV1

                          abld build ARMV6_ABIV1

                          A summary of the available build targets, their instruction set, compiler version, ABI version and their target location, after you switch to ABI v2 mode is as follows:

                      Target name

                      Instruction set

                      Compiler

                      ABI

                      Target location

                      ARMV5

                      v5

                      RVCT 2.2 Build 616

                      v2

                      epoc32\release\ARMV5\

                      ARMV5_ABIv1

                      v5

                      RVCT 2.2 Build 616

                      v1

                      epoc32\release\ARMV5_ABIV1\

                      ARMV6

                      v6

                      RVCT 2.2 Build 616

                      v2

                      epoc32\release\ARMV6\

                      ARMV6_ABIv1

                      v6

                      RVCT 2.2 Build 616

                      v1

                      epoc32\release\ARMV6_ABIV1\

                      GCCE

                      v5

                      GCCE

                      v2

                      epoc32\release\gcce\

                      How to switch to ABI v1 mode

                      To switch back to ABI v1 mode from ABI v2 mode, disable the ENABLE_ABIV2_MODE macro. You can disable the macro either by commenting it or removing it from the variant.cfg file.

                      After you disable the ENABLE_ABIV2_MODE macro, the following abld commands will create binaries conforming to ABI v1 under epoc32\release\ARMV5\ or epoc32\release\ARMV6\ folders:

                      abld build

                      abld build ARMV5

                      abld build ARMV6

                      If you want to build binaries conforming to ABI v2 under epoc32\release\ARMV5_ABIV2\ or epoc32\release\ARMV6_ABIV2\ folders, use the following abld commands:

                      abld build ARMV5_ABIV2

                      abld build ARMV6_ABIV2

                      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-809D428D-5BF6-57FF-952D-2FDF88E50833.dita --- a/Symbian3/PDK/Source/GUID-809D428D-5BF6-57FF-952D-2FDF88E50833.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -stdcpp

                      stdcpp

                      This keyword must be included in the project specification file (.mmp) to build a Symbian target (EXE, DLL, LIB, and so on) using the standard C++ semantics for global new operator. To know how the global new operator is handled in standard C++ and Symbian C++, refer to Standard C++ Library in the Generic Open Libraries (P.I.P.S.).

                      By default all Symbian targets use the Symbian C++ semantics for global new operator.

                      Note: If an .mmp file includes both stdcpp and nostdcpp keywords, the build system will ignore the keywords and use the Symbian C++ semantics to build the target.

                      See also

                      nostdcpp

                      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-80E0DB93-A96A-54A8-A201-E11935418BE7.dita --- a/Symbian3/PDK/Source/GUID-80E0DB93-A96A-54A8-A201-E11935418BE7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-80E0DB93-A96A-54A8-A201-E11935418BE7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -25,7 +25,7 @@ managing these multiple sequences. This means that each session object has a state machine object, an instance of the TMMCStateMachine class.

                      - +

                      The state machine remembers the next state and child function name, and moves to that state as soon as control returns to the session.

                      @@ -57,7 +57,7 @@ not trapped at any level in the state machine hierarchy leads to the state machine terminating with that error value.

                    - +

                    In general, the overall state of the state machine reflects the state of the current state entry; for example, TMMCStatemachine::State() returns the state held in the current state entry.

                    While the flow of control @@ -66,7 +66,7 @@ is handled by the function PF(). The code decides to pass control to the child function CF(), but ensures that, on completion, the next state in the current stack entry will be Sn+1.

                    - +

                    For example, the DMMCStack::CIMUpdateAcqSM() function implements the CIM_UPDATE_ACQ macro as defined by the MultiMediaCard System Specification, and is a typical state machine function.

                    Most commands @@ -231,6 +231,6 @@ where the card is not yet selected. Note that the lowest level state machine function called is IssueMMCCommandSM(), which is implemented by the base port.

                    - +
                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-80E8BA3A-FDF3-50A5-BF44-181C40C31F09.dita --- a/Symbian3/PDK/Source/GUID-80E8BA3A-FDF3-50A5-BF44-181C40C31F09.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-80E8BA3A-FDF3-50A5-BF44-181C40C31F09.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,5 +9,5 @@ --> -Video Subtitle CRP Overview

                  This document introduces you to the Video Subtitle CRP component.

                  Purpose

                  The Video Subtitle CRP component is used for displaying subtitles artwork on a video window.

                  Architectural relationship

                  Video Subtitle CRP interacts with WServ Process; and Client Process interacts with Controller Process by a client thread and controller thread respectively.

                  CRP is a plug-in framework provided by Window Server (WServ). WServ is the server side process which allows the artwork providers to render content to the application window within the WServ process.

                  Client Process is the client side implementation of subtitle support using CVideoPlayerUtility2 class.

                  Control Process contains Video Player Controller and Subtitle Decoder and Render to process the subtitle artwork on a video window.

                  For information about Video Client API see Video Client Overview and for Multimedia Framework see Multimedia Framework Overview

                  The architectural relationship between WServ Process, Client Process and Controller Process is shown below:

                  Library summary

                  The Video Subtitle CRP component consists of the following libraries:

                  Library Description

                  subtitlegraphic.dll

                  The Subtitle Graphic library is used to add subtitle CRP for MMF. For more information, see Subtitle Graphic Overview.

                  Typical uses

                  The Video Subtitle CRP Component is used to add subtitle for a video.

                  Subtitle Graphic Overview Video Subtitle CRP Support From +Video Subtitle CRP Overview

                  This document introduces you to the Video Subtitle CRP component.

                  Purpose

                  The Video Subtitle CRP component is used for displaying subtitles artwork on a video window.

                  Architectural relationship

                  Video Subtitle CRP interacts with WServ Process; and Client Process interacts with Controller Process by a client thread and controller thread respectively.

                  CRP is a plug-in framework provided by Window Server (WServ). WServ is the server side process which allows the artwork providers to render content to the application window within the WServ process.

                  Client Process is the client side implementation of subtitle support using CVideoPlayerUtility2 class.

                  Control Process contains Video Player Controller and Subtitle Decoder and Render to process the subtitle artwork on a video window.

                  For information about Video Client API see Video Client Overview and for Multimedia Framework see Multimedia Framework Overview

                  The architectural relationship between WServ Process, Client Process and Controller Process is shown below:

                  Library summary

                  The Video Subtitle CRP component consists of the following libraries:

                  Library Description

                  subtitlegraphic.dll

                  The Subtitle Graphic library is used to add subtitle CRP for MMF. For more information, see Subtitle Graphic Overview.

                  Typical uses

                  The Video Subtitle CRP Component is used to add subtitle for a video.

                  Subtitle Graphic Overview Video Subtitle CRP Support From MMF
                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-80EC80E2-E197-50F7-B1FD-720A00AC3B4D.dita --- a/Symbian3/PDK/Source/GUID-80EC80E2-E197-50F7-B1FD-720A00AC3B4D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-80EC80E2-E197-50F7-B1FD-720A00AC3B4D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -126,7 +126,7 @@
                • CCamera::CCameraVideoCaptureControl

                  It controls the operations related to video capture.

                The class diagram of CCamera is shown below:

                - +
                Using Onboard Ecam API

                The clients can use CCamera function to control and acquire image data from the camera.

                diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-80F2A7AC-6E86-54F2-96F0-4417A2AEA017.dita --- a/Symbian3/PDK/Source/GUID-80F2A7AC-6E86-54F2-96F0-4417A2AEA017.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-80F2A7AC-6E86-54F2-96F0-4417A2AEA017.dita Fri Jul 16 17:23:46 2010 +0100 @@ -31,7 +31,7 @@ The RMutex object exists on the user side; the corresponding mutex (a DMutex object) exists on the Kernel side.

                - +

                Here, code running on the user side constructs an RMutex and calls its Create() member function. This causes the Kernel diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-80F2DEC8-152F-4681-A9D0-8EB776131313.dita --- a/Symbian3/PDK/Source/GUID-80F2DEC8-152F-4681-A9D0-8EB776131313.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-80F2DEC8-152F-4681-A9D0-8EB776131313.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,7 +14,7 @@ functionality is called from a Symbian/S60 application, the need for conversions between Symbian descriptors and different string types provided by P.I.P.S. is needed. -

                Symbian +<section id="GUID-A6479BB3-0176-4321-8D33-1465DCCAB049-GENID-1-12-1-14-1-1-5-1-3-1-7-1-10-1-3-1"> <title>Symbian descriptors and C strings compared

                The main difference between Symbian descriptors and C strings is that the Symbian descriptors know how many characters are in a data array. A C string does not know its length, @@ -110,7 +110,7 @@

                -
                How +<section id="GUID-A6479BB3-0176-4321-8D33-1465DCCAB049-GENID-1-12-1-14-1-1-5-1-3-1-7-1-10-1-3-2"> <title>How to convert <codeph>TBuf16</codeph> to a <codeph>char</codeph> buffer

                A TBuf16 buffer can be converted to a char buffer using the wcstombs API. The example below illustrates how @@ -135,7 +135,7 @@ return (1); }

                -
                How +<section id="GUID-A6479BB3-0176-4321-8D33-1465DCCAB049-GENID-1-12-1-14-1-1-5-1-3-1-7-1-10-1-3-3"> <title>How to convert <codeph>TBuf8</codeph> to <codeph>wchar_t</codeph>

                A TBuf8 buffer can be converted to wchar_t using the mbstowcs API.

                #include <e32base.h> @@ -159,7 +159,7 @@ return (1); }
                -
                How +<section id="GUID-A6479BB3-0176-4321-8D33-1465DCCAB049-GENID-1-12-1-14-1-1-5-1-3-1-7-1-10-1-3-4"> <title>How to convert <codeph>TText16</codeph> to <codeph>char</codeph>

                The wcstombs API can be used to convert a TText16 buffer to a char buffer. This is one of the examples of converting @@ -184,7 +184,7 @@ return (1); }

                -
                How +<section id="GUID-A6479BB3-0176-4321-8D33-1465DCCAB049-GENID-1-12-1-14-1-1-5-1-3-1-7-1-10-1-3-5"> <title>How to convert a <codeph>char</codeph> array and a <codeph>wide char</codeph> array

                To use both char and wide char pointers or array in the program, the user must convert buffers from a char to @@ -231,7 +231,7 @@ return (1); }

                -
                How +<section id="GUID-A6479BB3-0176-4321-8D33-1465DCCAB049-GENID-1-12-1-14-1-1-5-1-3-1-7-1-10-1-3-6"> <title>How to declare a <codeph>wide-char</codeph> string

                To declare a wide-char string, prefix the string with 'L' [Capital L].

                #include <wchar.h> diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8105D1FC-DFFE-59F0-A664-3DA44F002F47.dita --- a/Symbian3/PDK/Source/GUID-8105D1FC-DFFE-59F0-A664-3DA44F002F47.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8105D1FC-DFFE-59F0-A664-3DA44F002F47.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,93 +1,90 @@ - - - - - -Enabling -File Server TracingThis document describes how to enable trace points in the file -server client API (EFSRV.DLL), the file system API (*.FSY) , and/or the proxy -drive API. -
                Introduction

                Enabling a trace point -results in trace data being output to the trace buffer.

                Tracing can -be enabled or disabled (i.e. compiled in or out) at build time. By default -file server tracing is enabled in debug builds of EFSRV.DLL and EFILE.EXE -and disabled in release builds. To enable tracing in release builds, there -are two options:

                  -
                • replace the release -builds of EFSRV.DLL /EFILE.EXE with -their debug equivalents.

                • -
                • rebuild EFSRV.DLL /EFILE.EXE using efsrv_instrumented.mmp /efile_instrumented.mmp.

                • -

                Tracing can also be enabled or disabled at run time or at device -startup. For more details, see How -to enable tracing.

                The level of tracing required may be configured -by selecting one or more of the primary filters and one or more of the secondary -filters from the list below:

                //Primary filters -EPanic = 192 // to trace panics -EError = 193 // to trace errors -EBorder = 195, // to trace API calls //Secondary filters -EF32TraceUidEfsrv = 0x100039e4 // (268450276 in decimal) -EF32TraceUidFileSys = 0x10286575 // (271082869 in decimal) -EF32TraceUidProxyDrive = 0x10286576 // (271082870 in decimal)

                For -more details on capturing the trace data see how -to output traces.

                -
                APIs

                The following table lists the classes to -which the trace points have been added. It has been divided into three broad -categories as shown below.

                  -
                • File system

                    -
                  • CFileSystem

                  • -
                  • CMountCB

                  • -
                  • CFileCB

                  • -
                  • CDirCB

                  • -
                  • CFormatCB

                  • -
                • -
                • Proxy drive

                    -
                  • CLocalProxyDrive

                  • -
                  • CBaseExtProxyDrive

                  • -
                • -
                • File server

                    -
                  • RFile

                  • -
                  • RFs

                  • -
                  • RDir

                  • -
                  • RFormat

                  • -
                  • RPlugin

                  • -
                  • CFileMan

                  • -
                  • CDirScan

                  • -
                • -

                Trace points have been added to the public exported functions of -the classes listed above. As an example, the code fragment below illustrates -how the tracepoints have been added and what type of information is output -for the Open function of the RFile class:

                -EFSRV_EXPORT_C TInt RFile::Open(RFs& aFs,const TDesC& aName,TUint aMode) -{ -TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFileOpen, MODULEUID, aFs.Handle(), aMode, aName); - -aMode &= ~EFileBigFile; -TInt r = CreateSubSession(aFs,EFsFileOpen,TIpcArgs(&aName,aMode)); - -TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFileOpenReturn, MODULEUID, r, SubSessionHandle()); - -return r; -}

                A sample trace output is as shown:

                RFile::Open() sess 0x00008000 mode 0x00000100 FileName Z:\SYS\DATA\ESTARTFILESYSTEMS.TXT
                -
                Interpretation of the trace data

                Symbian does not -currently provide a tool for decoding file server trace data (though hopefully -this will change in the near future). The data can, however, be interpreted -by examining the following two publicly exported header files which provides -detail of what fields are output by each tracepoint.

                  -
                • \epoc32\include\utraceefsrv.h

                • -
                • \epoc32\include\utraceefile.h

                • -

                For example:

                -/** @SYMTraceFormatString "RFile::Replace() sess %x mode %x FileName %*S" */ -EFileReplace

                In the above example the trace record will contain -the session RFs handle, the file open mode and the filename.

                -
                -Unified Trace -solution -Kernel Trace -Tool Overview + + + + + +Enabling File Server TracingThis document describes how to enable trace points in the +file server client API (EFSRV.DLL), the file system API (*.FSY) , +and/or the proxy drive API. +
                Introduction

                Enabling a trace point results in trace data being output to +the trace buffer.

                Tracing can be enabled or disabled (i.e. +compiled in or out) at build time. By default file server tracing +is enabled in debug builds of EFSRV.DLL and EFILE.EXE and disabled +in release builds. To enable tracing in release builds, there are +two options:

                  +
                • replace the +release builds of EFSRV.DLL /EFILE.EXE with their debug equivalents.

                • +
                • rebuild EFSRV.DLL /EFILE.EXE using efsrv_instrumented.mmp /efile_instrumented.mmp.

                • +

                Tracing can also be enabled or disabled at run time or at +device startup. For more information, see Symbian^3 Tools Guide +> Debugging.

                The level of tracing required may be configured +by selecting one or more of the primary filters and one or more of +the secondary filters from the list below:

                //Primary filters +EPanic = 192 // to trace panics +EError = 193 // to trace errors +EBorder = 195, // to trace API calls //Secondary filters +EF32TraceUidEfsrv = 0x100039e4 // (268450276 in decimal) +EF32TraceUidFileSys = 0x10286575 // (271082869 in decimal) +EF32TraceUidProxyDrive = 0x10286576 // (271082870 in decimal)

                For more information on capturing the trace data, see Symbian^3 +Tools Guide > Debugging.

                +
                APIs

                The following table lists the classes to which the trace points +have been added. It has been divided into three broad categories as +shown below.

                  +
                • File system

                    +
                  • CFileSystem

                  • +
                  • CMountCB

                  • +
                  • CFileCB

                  • +
                  • CDirCB

                  • +
                  • CFormatCB

                  • +
                • +
                • Proxy drive

                    +
                  • CLocalProxyDrive

                  • +
                  • CBaseExtProxyDrive

                  • +
                • +
                • File server

                    +
                  • RFile

                  • +
                  • RFs

                  • +
                  • RDir

                  • +
                  • RFormat

                  • +
                  • RPlugin

                  • +
                  • CFileMan

                  • +
                  • CDirScan

                  • +
                • +

                Trace points have been added to the public exported functions +of the classes listed above. As an example, the code fragment below +illustrates how the tracepoints have been added and what type of information +is output for the Open function of the RFile class:

                +EFSRV_EXPORT_C TInt RFile::Open(RFs& aFs,const TDesC& aName,TUint aMode) +{ +TRACEMULT3(UTF::EBorder, UTraceModuleEfsrv::EFileOpen, MODULEUID, aFs.Handle(), aMode, aName); + +aMode &= ~EFileBigFile; +TInt r = CreateSubSession(aFs,EFsFileOpen,TIpcArgs(&aName,aMode)); + +TRACERET2(UTF::EBorder, UTraceModuleEfsrv::EFileOpenReturn, MODULEUID, r, SubSessionHandle()); + +return r; +}

                A sample trace output is as shown:

                RFile::Open() sess 0x00008000 mode 0x00000100 FileName Z:\SYS\DATA\ESTARTFILESYSTEMS.TXT
                +
                Interpretation +of the trace data

                Symbian does not currently provide a +tool for decoding file server trace data (though hopefully this will +change in the near future). The data can, however, be interpreted +by examining the following two publicly exported header files which +provides detail of what fields are output by each tracepoint.

                  +
                • \epoc32\include\utraceefsrv.h

                • +
                • \epoc32\include\utraceefile.h

                • +

                For example:

                +/** @SYMTraceFormatString "RFile::Replace() sess %x mode %x FileName %*S" */ +EFileReplace

                In the above example the trace record +will contain the session RFs handle, the file open +mode and the filename.

                +
                +Kernel +Trace Tool Overview
                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8119A243-2EF1-582A-BB94-BA2A18D02D2C.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-8119A243-2EF1-582A-BB94-BA2A18D02D2C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Password Based Encryption (PBE) \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-81767E3E-BE4D-40D9-A4F2-3801BCCC1EA7_d0e101156_href.png Binary file Symbian3/PDK/Source/GUID-81767E3E-BE4D-40D9-A4F2-3801BCCC1EA7_d0e101156_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-81767E3E-BE4D-40D9-A4F2-3801BCCC1EA7_d0e79553_href.png Binary file Symbian3/PDK/Source/GUID-81767E3E-BE4D-40D9-A4F2-3801BCCC1EA7_d0e79553_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-81767E3E-BE4D-40D9-A4F2-3801BCCC1EA7_d0e83751_href.png Binary file Symbian3/PDK/Source/GUID-81767E3E-BE4D-40D9-A4F2-3801BCCC1EA7_d0e83751_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-81767E3E-BE4D-40D9-A4F2-3801BCCC1EA7_d0e92561_href.png Binary file Symbian3/PDK/Source/GUID-81767E3E-BE4D-40D9-A4F2-3801BCCC1EA7_d0e92561_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-81767E3E-BE4D-40D9-A4F2-3801BCCC1EA7_d0e96759_href.png Binary file Symbian3/PDK/Source/GUID-81767E3E-BE4D-40D9-A4F2-3801BCCC1EA7_d0e96759_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-81767E3E-BE4D-40D9-A4F2-3801BCCC1EA7_d0e97077_href.png Binary file Symbian3/PDK/Source/GUID-81767E3E-BE4D-40D9-A4F2-3801BCCC1EA7_d0e97077_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-817D677C-2422-52B1-8D44-D15A0351FDC6_d0e210608_href.jpg Binary file Symbian3/PDK/Source/GUID-817D677C-2422-52B1-8D44-D15A0351FDC6_d0e210608_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-817D677C-2422-52B1-8D44-D15A0351FDC6_d0e216609_href.jpg Binary file Symbian3/PDK/Source/GUID-817D677C-2422-52B1-8D44-D15A0351FDC6_d0e216609_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-81835322-5EF7-5839-9DC1-9A3FD396BD36.dita --- a/Symbian3/PDK/Source/GUID-81835322-5EF7-5839-9DC1-9A3FD396BD36.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -How to build GUI applications \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-81A5784D-A0C6-5108-9E7B-5D39C6743B1A_d0e318567_href.png Binary file Symbian3/PDK/Source/GUID-81A5784D-A0C6-5108-9E7B-5D39C6743B1A_d0e318567_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-81A5784D-A0C6-5108-9E7B-5D39C6743B1A_d0e324557_href.png Binary file Symbian3/PDK/Source/GUID-81A5784D-A0C6-5108-9E7B-5D39C6743B1A_d0e324557_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-81C19443-4925-4949-8473-44370C8ACE90.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-81C19443-4925-4949-8473-44370C8ACE90.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,14 @@ + + + + + +Multimedia +ConceptThis section provides concept material that relates to the Multimedia +module. \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-81D78B71-E108-5AA0-9058-308F1AC12754_d0e231481_href.png Binary file Symbian3/PDK/Source/GUID-81D78B71-E108-5AA0-9058-308F1AC12754_d0e231481_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-81D78B71-E108-5AA0-9058-308F1AC12754_d0e237476_href.png Binary file Symbian3/PDK/Source/GUID-81D78B71-E108-5AA0-9058-308F1AC12754_d0e237476_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-81E33E18-D390-4110-8D85-1FCDA9CC311E.dita --- a/Symbian3/PDK/Source/GUID-81E33E18-D390-4110-8D85-1FCDA9CC311E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-81E33E18-D390-4110-8D85-1FCDA9CC311E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -18,7 +18,7 @@ provided.

                Progress note - +
                Using progress notes in applications

                You can create either a basic diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-821C254A-40C6-45F9-B2F9-2CF28CAEB8CC.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-821C254A-40C6-45F9-B2F9-2CF28CAEB8CC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,106 @@ + + + + + +Interrupt +HandlingDescribes how interrupts are handled in the SMP environment. +

                An interrupt is a signal from a hardware device or from an executable which +causes a CPU to suspend normal execution, enter the interrupt handling state +and jump to an interrupt handler. An interrupt handler, or ISR (interrupt +service routine), schedules a DFC (delayed function call) on a DFC queue.

                +
                SMP-Safe Interrupt +Handling

                Interrupt handlers are used to implement the functionality +of device drivers.

                When a DFC executes on a unicore system, it disables +interrupts to avoid clashing with its own ISR.

                On a multicore system +this is not sufficient to maintain data integrity. To maintain data integrity +on an SMP system the code must:

                  +
                1. acquire a spin lock +on any data to be written, to block other cores from accessing the data.

                2. +
                3. Interrupts must be disabled, +as on unicore, before the spin lock is acquired.

                4. +

                Although these are conceptually two separate tasks, you use the spin +lock API TSpinLock in nkern.h to perform +both tasks at the same time.

                The following macros provide SMP-safe interrupt +handling in most situations.

                  +
                • __SPIN_LOCK_IRQSAVE

                • +
                • __SPIN_LOCK_IRQRESTORE

                • +

                If code using these macros is executed on a unicore system, they will +disable interrupts in the normal way.

                There are several other macros +that can be used in the non standard situations or when you require greater +control over the interaction of interrupt disabling and spin locks.

                  +
                • __SPIN_LOCK_IRQSAVE(lock)

                  Standard SMP-safe +macro

                • +
                • __SPIN_UNLOCK_IRQRESTORE(lock,irq)

                  Standard +SMP-safe macro

                • +
                • __SPIN_FLASH_IRQRESTORE(lock,irq)

                • +
                • __SPIN_LOCK(lock) __SPIN_UNLOCK(lock)

                • +
                • __SPIN_FLASH_PREEMPT(lock)

                • +
                • __SPIN_LOCK_IRQ(lock)

                • +
                • __SPIN_UNLOCK_IRQ(lock)

                • +
                • __SPIN_FLASH_IRQ(lock)

                • +

                To ensure SMP Safety in Symbian^3, the kernel ensures that +device driver, ISR and DFC are all tied to the same CPU. CPU0 has been stipulated +for this purpose.

                +Using a spin lock

                In the following example, a spin +lock protects memory being written by DfcFun() on CPU0 from +corruption by ISRFun() running on a different core.

                This +code runs on CPU0:void DfcFun(TAny* aPtr) + { + … + irq = __SPIN_LOCK_IRQSAVE(iLock); + iState = EProcessed; + __SPIN_UNLOCK_IRQRESTORE(iLock,irq); + + ... + } +

                This code runs on a different core:void ISRFun(TAny* aPtr) + { + __SPIN_LOCK(iLock); + iState = EProcessing; + __SPIN_UNLOCK(iLock); + } +

                +
                Making your +device driver SMP safe

                Once a device driver has been migrated to +be SMP Safe using the advice above, the mmp file of each driver's binaries +must be updated with the keyword SMPSAFE.

                This indicates +to the scheduler that the kernel side threads and associated interrupts can +be can be run and executed according to the kernel SMP policies.

                +
                SMP SafeThis information will be moved to a new topic dealing +with SMP safety during 10T10. -RF

                The SMPSAFE keyword +should only be used if the code is proven to be SMP-Safe.

                Impact of +using the SMPSAFE keyword:

                  +
                • If your code is proven to be SMP-Safe you can identify it is such by +inserting the SMPSAFE keyword into your mmp file. The kernel +will mark your application or service as SMP-safe and use whatever processors +are available according to the policies of that baseport.

                • +
                • If the code is not SMP-Safe do not use the keyword. The kernel will +run your code using the behaviours defined by the appropriate compatibility +mode, ensuring that all threads are run on a single CPU.

                • +

                There are two SMP compatibility modes: basic and enhanced.

                  +
                • In basic mode all threads in unsafe processes are set to CPU0. There +is no chance these threads will run concurrently and therefore they are executed +in priority order, as on a single processor system.

                • +
                • In enhanced mode all the threads of a process are tied together in +a thread group. Only one thread of a thread group can be run at any time, +meaning they are executed in priority order. The benefit of the enhanced mode +is that the entire thread group may be moved from one CPU to another as system +resources and kernel policy demands. The default SMP compatibility mode is +enhanced.

                • +

                The decision to use basic or enhanced SMP-Safe compatibility mode +is made at design time and assigned to the kernel iby/oby file as part of +the baseport. Once set this can not be changed. This is an either or choice +and therefore mutually exclusive.

                + +SMP Overview + +Spin Locks + + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-821FEEDD-81B8-5511-AC4E-B673A96F8CB4_d0e520048_href.png Binary file Symbian3/PDK/Source/GUID-821FEEDD-81B8-5511-AC4E-B673A96F8CB4_d0e520048_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-821FEEDD-81B8-5511-AC4E-B673A96F8CB4_d0e527508_href.png Binary file Symbian3/PDK/Source/GUID-821FEEDD-81B8-5511-AC4E-B673A96F8CB4_d0e527508_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8226320F-2F3A-575F-9950-B98C67472DAD.dita --- a/Symbian3/PDK/Source/GUID-8226320F-2F3A-575F-9950-B98C67472DAD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8226320F-2F3A-575F-9950-B98C67472DAD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,6 +12,6 @@ Privacy Query and Notification Notifiers
                Purpose

                This document describes Privacy Query and Notification (Q&N) Notifiers and the Privacy Query and Notification API: a framework API that licensees can use to create a notifier for LBS privacy requests.

                Note that the Privacy Query and Notification API is deprecated. It is documented here as it is now part of the Symbian platform LBS subsystem (it was formerly part of the S60 Privacy Framework). It is supported in Symbian LBS in order to allow licensees who have previously created Privacy Q&N Notifiers for the S60 Privacy Framework to continue to use them with the Symbian LBS subsystem.

                Licensees who are developing new notifiers for LBS are encouraged to use the Symbian LBS Privacy Notifiers.

                The Privacy Q&N API depends on the Extended Notifier Framework and on the Privacy Data Types to pass data between the notifiers and the LBS subsystem.

                See Privacy Requests Overview for an explanation of privacy request concepts.

                Contents
                • Introduction

                • API description

                  • CPosPrivacyNotifier

                • See also

                Introduction

                Figure 1 shows the Privacy Q&N API and related LBS subsystem components in the Full LBS configuration.

                Figure 1. The Privacy Q&N Notifier API and related LBS subsystem components. -
                API description

                This section describes the classes of the LBS Privacy Q&N Notification API.

                Privacy Query and Notification API class diagram

                Figure 2 shows the CPosPrivacyNotifier class of the Privacy Q&N Notifiers API. This is the only class defined in the API and is the base class for a Privacy Q&N Notifier implementation. CPosPrivacyNotifier contains virtual methods that must be implemented by a notifier implementation in order to receive notifications of privacy requests. Figure 2 also shows the enumerated types from the Privacy Data Types that are used to pass data between the LBS subsystem and a Privacy Q&N Notifier.

                The Privacy Query and Notification API uses the Symbian Extended Notifier Framework. A notifier implementation must be wrapped in an ECOM plug-in class that contains a factory method to register the notifier with the framework. An MEikSrvNotifierBase2 interface can be obtained from CPosPrivacyNotifier that allows the notifier to be registered. This is explained in more detail in How to use the Privacy Query and Notification API.

                +
                API description

                This section describes the classes of the LBS Privacy Q&N Notification API.

                Privacy Query and Notification API class diagram

                Figure 2 shows the CPosPrivacyNotifier class of the Privacy Q&N Notifiers API. This is the only class defined in the API and is the base class for a Privacy Q&N Notifier implementation. CPosPrivacyNotifier contains virtual methods that must be implemented by a notifier implementation in order to receive notifications of privacy requests. Figure 2 also shows the enumerated types from the Privacy Data Types that are used to pass data between the LBS subsystem and a Privacy Q&N Notifier.

                The Privacy Query and Notification API uses the Symbian Extended Notifier Framework. A notifier implementation must be wrapped in an ECOM plug-in class that contains a factory method to register the notifier with the framework. An MEikSrvNotifierBase2 interface can be obtained from CPosPrivacyNotifier that allows the notifier to be registered. This is explained in more detail in How to use the Privacy Query and Notification API.

                Figure 2. Classes and types of the Privacy Q&N Notifiers. -

                Privacy Data Types classes and types

                CPosPrivacyNotifier is the only class of the API and is the base class of Privacy Q&N Notifiers. It is defined in EPos_CPosPrivacyNotifier.h.

                The implementation UID that should be used for licensee Privacy Q&N Notifiers is KPosPrivacyNotifierImplUid and is defined in EPos_PrivacyNotifier.hrh.

                The Privacy Query and Notification API classes and types have publishedPartner interface access.

                Libraries

                CPosPrivacyNotifier is packaged in eposprvqnif.dll. A Privacy Q&N Notifier links to eposprvqnif.lib. It must also link to eposprvtyp.lib to use the Privacy Data Types on which the Privacy Q&N API depends.

                Capabilities

                As for all notifiers that use the Extended Notifier Framework, the licensee notifier ECom plug-in must be built with TrustedUI and ProtServ capabilities. The capabilities are specified in the plug-in's MMP file. See How to use the Privacy Query and Notification API for more details.

                LBS Configuration

                The LBS Administration setting KLbsSettingPrivacyHandler must be set to CLbsAdmin::EPrivacyHandleByAdvancedNotifier to configure LBS to use Privacy Q&N Notifiers. See LBS Administration for details of how to configure this setting either through the LBS Administration API or in the LBS central repository initialisation file.

                Sequential processing of privacy requests

                The LBS subsystem sends privacy requests sequentially to Privacy Notifiers. If multiple privacy requests are received how they are handled depends on the interface via which the privacy request was received:

                • Request received from a Network Protocol Module

                  A second privacy request forces LBS to cancel an outstanding privacy request (but not emergency requests). The Privacy Notifier in use for the first privacy request is cancelled. The Privacy Notifier is then restarted to handle the second privacy request.

                • Request received via the Network Privacy API or the Privacy Request API

                  Privacy notification and verification requests are sent sequentially to Privacy Notifiers. A Privacy Notifier must have responded to one privacy request (or LBS must have sent a timeout response) before the next request can be sent to the notifier. The maximum number of privacy requests that can be outstanding in the LBS subsystem is defined by the LBS administration setting KLbsSettingMaximumExternalLocateRequests. Further requests are rejected by the LBS subsystem if the number of outstanding privacy requests exceeds KLbsSettingMaximumExternalLocateRequests.

                CPosPrivacyNotifier

                Purpose

                CPosPrivacyNotifier is the base class for a Privacy Q&N Notifier. It defines the interface between the LBS subsystem and a Privacy Q&N Notifier. A licensee Privacy Q&N Notifier must derive from this class.

                Note that a licensee should create one single derived notifier class to handle both privacy verification requests and privacy notification requests.

                CPosPrivacyNotifier defines two types of methods:

                1. Pure virtual event methods that must be implemented by the Privacy Q&N Notifier implementation in order to receive information from the LBS subsystem about privacy requests:

                  • CPosPrivacyNotifier::HandleNewRequestL()

                  • CPosPrivacyNotifier::HandleRequestCancelledL()

                  • CPosPrivacyNotifier::HandleAllRequestsCancelled()

                2. Methods for obtaining information about a request and for responding to it.

                Usage

                A licensee creates a single Privacy Q&N Notifier class that derives from CPosPrivacyNotifier to handle both privacy verification requests and privacy notification requests.

                Implementing the virtual event methods

                The following are the pure virtual event methods defined in CPosPrivacyNotifier that a licensee notifier must implement. Links can be followed to API reference documentation for full descriptions of method parameters and return types.

                • CPosPrivacyNotifier::HandleNewRequestL()

                  This method is called when a new privacy request is sent from the LBS subsystem to the notifier. It takes a TPosQNRequestId parameter that specifies the unique ID for the request. The ID can be used to identify the request in other method calls, such as to cancel the request at some later time.

                • CPosPrivacyNotifier::HandleRequestCancelled()

                  This method is called by the LBS subsystem to cancel a specified outstanding request. The method takes a TPosQNRequestId parameter that specifies the ID of the request to be cancelled. It is not necessary to call CPosPrivacyNotifier::CompleteRequest() for a request that was cancelled by calling this method.

                  When this method is called the Privacy Q&N Notifier can check the reason why the request was cancelled by calling CPosPrivacyNotifier::CancelReason().

                • CPosPrivacyNotifier::HandleAllRequestsCancelled()

                  This method is called by the LBS subsystem to cancel all outstanding requests.

                See How to use the Privacy Query and Notification API for examples of how to implement these methods.

                Other methods

                The following is a list of the other (non pure virtual) methods defined by the Privacy Query and Notification API. Links can be followed to API reference documentation for full descriptions of the method parameters and return types.

                • CPosPrivacyNotifier::NotifierBase()

                  This method returns an MEikSrvNotifierBase2 pointer. When a developer writes the notifier ECom plug-in wrapper class factory method, this method should be called to return an MEikSrvNotifierBase2 pointer.

                • CPosPrivacyNotifier::CheckClientSecureId()

                  This method should be used in a notifier implementation to check the SID of the client process that is making the request. The method takes a TSecureId parameter and compares it to the TSecureId of the process that is making the request. It returns true if the two are the same.

                  A licensee notifier should call this method in its implementation of CPosPrivacyNotifier::HandleNewRequestL() as a validation check. The SID of the LBS Network Request Handler process that sends requests to the notifier is 0x10281D45.

                • CPosPrivacyNotifier::CancelReason()

                  This method can be used to check the reason why a request was cancelled. This method can be called while one of the methods CPosPrivacyNotifier::HandleRequestCancelled() or CPosPrivacyNotifier::HandleAllRequestsComplete() is running.

                  The return value is of type TPosVerifyCancelReason and specifies the reason why a request was cancelled. An unknown value should be treated as EPosCancelReasonNotAvailable.

                • CPosPrivacyNotifier::BaseConstructL()

                  This method must be called first in the ConstructL() of the licensee notifier implementation. The method takes a channel UID and a priority as parameters which are used by the Extended Notifier Framework.

                • CPosPrivacyNotifier::GetRequestsL()

                  This method returns a list of all of the outstanding privacy verification requests (query requests) and notification requests.

                • CPosPrivacyNotifier::RequestTypeL()

                  This method is called to find out whether a request is a privacy verification request (a query request) or a notification request. If a privacy request with the specified ID does not exist, the method leaves with the error code KErrNotFound.

                • CPosPrivacyNotifier::SetCurrentRequestL()

                  The current request is the request that is currently being handled.

                  In order to read detailed information (the requesters) about a request, it must be set as current.This is achieved by calling this method. If a request with the specified ID does not exist, the method leaves with the error code KErrNotFound.

                • CPosPrivacyNotifier::CurrentRequest()

                  This method gets the request that is set as current. If no request is set as current, or if the current request has been completed, KPosNullQNRequestId is returned.

                • CPosPrivacyNotifier::QueryTimeoutStrategy()

                  For a privacy verification request, a timeout strategy may be provided. The timeout strategy specifies whether the location request will be accepted or rejected if the privacy request times out. If no timeout strategy is provided, EPosDecisionNotAvailable will be returned.

                  Note that a timeout strategy is only available for privacy queries, never for notifications. If this method is called for a notification, it will always return EPosDecisionNotAvailable.

                • CPosPrivacyNotifier::RequestSource()

                  The notifier can find out the source by calling this method. The request source enumeration TPosRequestSource is defined by the Privacy Data Types.

                  If a request source is not defined, EPosRequestSourceNotAvailable is be returned.

                  Note that TPosRequestSource may be extended in the future. Therefore, any unknown value must be treated as EPosRequestSourceNotAvailable.

                • CPosPrivacyNotifier::LocationRequestDecision()

                  This method returns whether the privacy request was accepted or rejected.

                  This information is mainly used in notification requests. The request decision enumeration TPosRequestDecision is defined by the Privacy Data Types.

                  For privacy verification queries, this method returns EPosDecisionNotAvailable.

                  If the request decision is unknown in a notification request, EPosDecisionNotAvailable is returned.

                • CPosPrivacyNotifier::NotificationReason()

                  For notification requests, this method returns the reason for notification, for example the request verification timed out.

                  The notification reason enumeration TPosNotificationReason is defined by the Privacy Data Types. If the reason for the notification request is not provided, this method returns EPosNotificationReasonNotAvailable.

                  Note that the notification reason enumeration TPosNotificationReason may be extended in the future. Therefore, any unknown value must be treated as EPosNotificationReasonNotAvailable.

                  If the notification reason is unknown by the notifier, the notification request should be completed with the error code KErrNotSupported, i.e. CompleteRequest(KErrNotSupported) should be called.

                • CPosPrivacyNotifier::RequestorCountL()

                  This method returns the number of requesters in the current request. A requester is a contact or service, which is the originator or a proxy for the position request. If no request is set as current, or if the current request has been completed, this method leaves with the error code KErrNotFound.

                  Note that the requester count can be zero if there is no requestor information available. In this case, the notifier should consider showing an alternative message.

                • CPosPrivacyNotifier::RequestorLC()

                  This method reads information about a requester from the request that is set as current by CPosPrivacyNotifier::SetCurrentRequestL().

                  The notifier specifies which requestor to read by index. The index must be a number between 0 and RequestorCountL() – 1. If an invalid index is passed to this method, it leaves with the error code KErrArgument. If no request is set as current, or if the current request has been completed, this method leaves with the error code KErrNotFound.

                • CPosPrivacyNotifier::CompleteRequest()

                  The Privacy UI must call this method when a request has been handled. The ID of the privacy request to complete and the completion code are passed as input parameters. If there is no outstanding privacy request with the specified ID, the call is ignored. The completion code can be any system wide error code.

                  A few completion codes have specific meanings. For query requests, the following completion codes should be noted:

                  • KErrNone if the phone user accepts the query.

                  • KErrAccessDenied if the phone user rejects the query.

                  • KErrTimedOut if the query times out. The notifier should use a timer and abort it if the phone user does not respond to the dialog.

                  For notification requests, the following completion codes should be noted:

                  • KErrNone if the phone user dismisses the dialog.

                  • KErrTimedOut if the notification request times out. The notifier should implement a timeout if the phone user does not respond to the dialog.

                  • KErrNotSupported if the notification reason is not known by the Privacy UI.

                \ No newline at end of file +

                Privacy Data Types classes and types

                CPosPrivacyNotifier is the only class of the API and is the base class of Privacy Q&N Notifiers. It is defined in EPos_CPosPrivacyNotifier.h.

                The implementation UID that should be used for licensee Privacy Q&N Notifiers is KPosPrivacyNotifierImplUid and is defined in EPos_PrivacyNotifier.hrh.

                The Privacy Query and Notification API classes and types have publishedPartner interface access.

                Libraries

                CPosPrivacyNotifier is packaged in eposprvqnif.dll. A Privacy Q&N Notifier links to eposprvqnif.lib. It must also link to eposprvtyp.lib to use the Privacy Data Types on which the Privacy Q&N API depends.

                Capabilities

                As for all notifiers that use the Extended Notifier Framework, the licensee notifier ECom plug-in must be built with TrustedUI and ProtServ capabilities. The capabilities are specified in the plug-in's MMP file. See How to use the Privacy Query and Notification API for more details.

                LBS Configuration

                The LBS Administration setting KLbsSettingPrivacyHandler must be set to CLbsAdmin::EPrivacyHandleByAdvancedNotifier to configure LBS to use Privacy Q&N Notifiers. See LBS Administration for details of how to configure this setting either through the LBS Administration API or in the LBS central repository initialisation file.

                Sequential processing of privacy requests

                The LBS subsystem sends privacy requests sequentially to Privacy Notifiers. If multiple privacy requests are received how they are handled depends on the interface via which the privacy request was received:

                • Request received from a Network Protocol Module

                  A second privacy request forces LBS to cancel an outstanding privacy request (but not emergency requests). The Privacy Notifier in use for the first privacy request is cancelled. The Privacy Notifier is then restarted to handle the second privacy request.

                • Request received via the Network Privacy API or the Privacy Request API

                  Privacy notification and verification requests are sent sequentially to Privacy Notifiers. A Privacy Notifier must have responded to one privacy request (or LBS must have sent a timeout response) before the next request can be sent to the notifier. The maximum number of privacy requests that can be outstanding in the LBS subsystem is defined by the LBS administration setting KLbsSettingMaximumExternalLocateRequests. Further requests are rejected by the LBS subsystem if the number of outstanding privacy requests exceeds KLbsSettingMaximumExternalLocateRequests.

                CPosPrivacyNotifier

                Purpose

                CPosPrivacyNotifier is the base class for a Privacy Q&N Notifier. It defines the interface between the LBS subsystem and a Privacy Q&N Notifier. A licensee Privacy Q&N Notifier must derive from this class.

                Note that a licensee should create one single derived notifier class to handle both privacy verification requests and privacy notification requests.

                CPosPrivacyNotifier defines two types of methods:

                1. Pure virtual event methods that must be implemented by the Privacy Q&N Notifier implementation in order to receive information from the LBS subsystem about privacy requests:

                  • CPosPrivacyNotifier::HandleNewRequestL()

                  • CPosPrivacyNotifier::HandleRequestCancelledL()

                  • CPosPrivacyNotifier::HandleAllRequestsCancelled()

                2. Methods for obtaining information about a request and for responding to it.

                Usage

                A licensee creates a single Privacy Q&N Notifier class that derives from CPosPrivacyNotifier to handle both privacy verification requests and privacy notification requests.

                Implementing the virtual event methods

                The following are the pure virtual event methods defined in CPosPrivacyNotifier that a licensee notifier must implement. Links can be followed to API reference documentation for full descriptions of method parameters and return types.

                • CPosPrivacyNotifier::HandleNewRequestL()

                  This method is called when a new privacy request is sent from the LBS subsystem to the notifier. It takes a TPosQNRequestId parameter that specifies the unique ID for the request. The ID can be used to identify the request in other method calls, such as to cancel the request at some later time.

                • CPosPrivacyNotifier::HandleRequestCancelled()

                  This method is called by the LBS subsystem to cancel a specified outstanding request. The method takes a TPosQNRequestId parameter that specifies the ID of the request to be cancelled. It is not necessary to call CPosPrivacyNotifier::CompleteRequest() for a request that was cancelled by calling this method.

                  When this method is called the Privacy Q&N Notifier can check the reason why the request was cancelled by calling CPosPrivacyNotifier::CancelReason().

                • CPosPrivacyNotifier::HandleAllRequestsCancelled()

                  This method is called by the LBS subsystem to cancel all outstanding requests.

                See How to use the Privacy Query and Notification API for examples of how to implement these methods.

                Other methods

                The following is a list of the other (non pure virtual) methods defined by the Privacy Query and Notification API. Links can be followed to API reference documentation for full descriptions of the method parameters and return types.

                • CPosPrivacyNotifier::NotifierBase()

                  This method returns an MEikSrvNotifierBase2 pointer. When a developer writes the notifier ECom plug-in wrapper class factory method, this method should be called to return an MEikSrvNotifierBase2 pointer.

                • CPosPrivacyNotifier::CheckClientSecureId()

                  This method should be used in a notifier implementation to check the SID of the client process that is making the request. The method takes a TSecureId parameter and compares it to the TSecureId of the process that is making the request. It returns true if the two are the same.

                  A licensee notifier should call this method in its implementation of CPosPrivacyNotifier::HandleNewRequestL() as a validation check. The SID of the LBS Network Request Handler process that sends requests to the notifier is 0x10281D45.

                • CPosPrivacyNotifier::CancelReason()

                  This method can be used to check the reason why a request was cancelled. This method can be called while one of the methods CPosPrivacyNotifier::HandleRequestCancelled() or CPosPrivacyNotifier::HandleAllRequestsComplete() is running.

                  The return value is of type TPosVerifyCancelReason and specifies the reason why a request was cancelled. An unknown value should be treated as EPosCancelReasonNotAvailable.

                • CPosPrivacyNotifier::BaseConstructL()

                  This method must be called first in the ConstructL() of the licensee notifier implementation. The method takes a channel UID and a priority as parameters which are used by the Extended Notifier Framework.

                • CPosPrivacyNotifier::GetRequestsL()

                  This method returns a list of all of the outstanding privacy verification requests (query requests) and notification requests.

                • CPosPrivacyNotifier::RequestTypeL()

                  This method is called to find out whether a request is a privacy verification request (a query request) or a notification request. If a privacy request with the specified ID does not exist, the method leaves with the error code KErrNotFound.

                • CPosPrivacyNotifier::SetCurrentRequestL()

                  The current request is the request that is currently being handled.

                  In order to read detailed information (the requesters) about a request, it must be set as current.This is achieved by calling this method. If a request with the specified ID does not exist, the method leaves with the error code KErrNotFound.

                • CPosPrivacyNotifier::CurrentRequest()

                  This method gets the request that is set as current. If no request is set as current, or if the current request has been completed, KPosNullQNRequestId is returned.

                • CPosPrivacyNotifier::QueryTimeoutStrategy()

                  For a privacy verification request, a timeout strategy may be provided. The timeout strategy specifies whether the location request will be accepted or rejected if the privacy request times out. If no timeout strategy is provided, EPosDecisionNotAvailable will be returned.

                  Note that a timeout strategy is only available for privacy queries, never for notifications. If this method is called for a notification, it will always return EPosDecisionNotAvailable.

                • CPosPrivacyNotifier::RequestSource()

                  The notifier can find out the source by calling this method. The request source enumeration TPosRequestSource is defined by the Privacy Data Types.

                  If a request source is not defined, EPosRequestSourceNotAvailable is be returned.

                  Note that TPosRequestSource may be extended in the future. Therefore, any unknown value must be treated as EPosRequestSourceNotAvailable.

                • CPosPrivacyNotifier::LocationRequestDecision()

                  This method returns whether the privacy request was accepted or rejected.

                  This information is mainly used in notification requests. The request decision enumeration TPosRequestDecision is defined by the Privacy Data Types.

                  For privacy verification queries, this method returns EPosDecisionNotAvailable.

                  If the request decision is unknown in a notification request, EPosDecisionNotAvailable is returned.

                • CPosPrivacyNotifier::NotificationReason()

                  For notification requests, this method returns the reason for notification, for example the request verification timed out.

                  The notification reason enumeration TPosNotificationReason is defined by the Privacy Data Types. If the reason for the notification request is not provided, this method returns EPosNotificationReasonNotAvailable.

                  Note that the notification reason enumeration TPosNotificationReason may be extended in the future. Therefore, any unknown value must be treated as EPosNotificationReasonNotAvailable.

                  If the notification reason is unknown by the notifier, the notification request should be completed with the error code KErrNotSupported, i.e. CompleteRequest(KErrNotSupported) should be called.

                • CPosPrivacyNotifier::RequestorCountL()

                  This method returns the number of requesters in the current request. A requester is a contact or service, which is the originator or a proxy for the position request. If no request is set as current, or if the current request has been completed, this method leaves with the error code KErrNotFound.

                  Note that the requester count can be zero if there is no requestor information available. In this case, the notifier should consider showing an alternative message.

                • CPosPrivacyNotifier::RequestorLC()

                  This method reads information about a requester from the request that is set as current by CPosPrivacyNotifier::SetCurrentRequestL().

                  The notifier specifies which requestor to read by index. The index must be a number between 0 and RequestorCountL() – 1. If an invalid index is passed to this method, it leaves with the error code KErrArgument. If no request is set as current, or if the current request has been completed, this method leaves with the error code KErrNotFound.

                • CPosPrivacyNotifier::CompleteRequest()

                  The Privacy UI must call this method when a request has been handled. The ID of the privacy request to complete and the completion code are passed as input parameters. If there is no outstanding privacy request with the specified ID, the call is ignored. The completion code can be any system wide error code.

                  A few completion codes have specific meanings. For query requests, the following completion codes should be noted:

                  • KErrNone if the phone user accepts the query.

                  • KErrAccessDenied if the phone user rejects the query.

                  • KErrTimedOut if the query times out. The notifier should use a timer and abort it if the phone user does not respond to the dialog.

                  For notification requests, the following completion codes should be noted:

                  • KErrNone if the phone user dismisses the dialog.

                  • KErrTimedOut if the notification request times out. The notifier should implement a timeout if the phone user does not respond to the dialog.

                  • KErrNotSupported if the notification reason is not known by the Privacy UI.

                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8255A186-C1AC-44DA-844C-1FEA029C73BC.dita --- a/Symbian3/PDK/Source/GUID-8255A186-C1AC-44DA-844C-1FEA029C73BC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8255A186-C1AC-44DA-844C-1FEA029C73BC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,36 +1,36 @@ - - - - - -Publish -and Subscribe -

                Publish and Subscribe has replaced System Agent and the usage -of temporary Shared Data keys.

                -

                Publish and Subscribe allows the setting, retrieving and monitoring -of system-wide variables and provides a new inter process communication (IPC) -mechanism for peer to peer communication between threads. Threads may have -the role of the publisher or of the subscriber, while any thread can define -the property to be published. The process that defines a property can specify -access rights for both reading and writing. Rights can be defined in terms -of either requiring a particular capability, -by a process Secure -Identifier, or by a process VID.

                -

                Publish and Subscribe should be considered under any of the following -conditions:

                -
                  -
                • An event should be sent simultaneously to multiple places -over the system.

                • -
                • Only the last value of the property is significant, not the -intermediate values.

                • -
                • The source of the value is not significant. The value may -have been set by any publisher with proper rights.

                • -
                -

                For more information about the use of Publish and Subscribe, see Using Publish and Subscribe.

                + + + + + +Publish and Subscribe +

                Publish and Subscribe has replaced System Agent and the +usage of temporary Shared Data keys.

                +

                Publish and Subscribe allows the setting, retrieving and monitoring +of system-wide variables and provides a new inter process communication +(IPC) mechanism for peer to peer communication between threads. Threads +may have the role of the publisher or of the subscriber, while any +thread can define the property to be published. The process that defines +a property can specify access rights for both reading and writing. +Rights can be defined in terms of either requiring a particular capability, by a process Secure Identifier, or by a process VID.

                +

                Publish and Subscribe should be considered under any of the +following conditions:

                +
                  +
                • An event should be sent simultaneously to multiple +places over the system.

                • +
                • Only the last value of the property is significant, +not the intermediate values.

                • +
                • The source of the value is not significant. The value +may have been set by any publisher with proper rights.

                  +
                • +
                +

                For more information about the use of Publish and Subscribe, +see Using Publish +and Subscribe.

                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-82862A69-5E86-5924-BFF0-F7655FCBFAF0.dita --- a/Symbian3/PDK/Source/GUID-82862A69-5E86-5924-BFF0-F7655FCBFAF0.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-82862A69-5E86-5924-BFF0-F7655FCBFAF0.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,36 +1,33 @@ - - - - - -ContiguousnessDescription of contiguous data in flat and segmented buffers. -

                In flat buffers, all data is contiguous. The Ptr() function -always returns a pointer descriptor from the buffer position specified to -the end of the data, and the BackPtr() function always returns -a pointer descriptor from the beginning of the buffer to the buffer position -specified.

                -

                In segmented buffers, data is contained in segments and the maximum length -of contiguous data is the granularity of the buffer. The extent of contiguous -data contained in a segment may vary between a single byte, and the granularity, -if the insertion and deletion pattern is arbitrary.

                -

                However, the following guarantee is made: if the number of bytes inserted -or deleted in all insertion and deletion operations is a multiple of -some number n, and the granularity is also a multiple of this number n, -then all data extents will be a multiple of n in length. This implies -that the Ptr() function, given a buffer position which is -a multiple of n, will always return a pointer descriptor referring -to at least n bytes.

                -

                This property of segmented descriptors is exploited by the CArrayFixBase, CArrayVarBase and CArrayPakBase derived array classes. In these classes, all insertion or deletion operations -are always done in terms of the (fixed) length of data stored in the buffer. -Therefore, the data for an individual array element is always contiguous.

                -
                - -Dynamic Arrays - + + + + + +ContiguousnessDescription of contiguous data in flat and segmented buffers. +

                In flat buffers, all data is contiguous. The Ptr() function always returns a pointer descriptor from the buffer position +specified to the end of the data, and the BackPtr() function always returns a pointer descriptor from the beginning +of the buffer to the buffer position specified.

                +

                In segmented buffers, data is contained in segments and the maximum +length of contiguous data is the granularity of the buffer. The extent +of contiguous data contained in a segment may vary between a single +byte, and the granularity, if the insertion and deletion pattern is +arbitrary.

                +

                However, the following guarantee is made: if the number of bytes +inserted or deleted in all insertion and deletion operations +is a multiple of some number n, and the granularity is also +a multiple of this number n, then all data extents will be +a multiple of n in length. This implies that the Ptr() function, given a buffer position which is a multiple of n, will always return a pointer descriptor referring to at least n bytes.

                +

                This property of segmented descriptors is exploited by the CArrayFixBase, CArrayVarBase and CArrayPakBase derived array classes. In these classes, all +insertion or deletion operations are always done in terms of the (fixed) +length of data stored in the buffer. Therefore, the data for an individual +array element is always contiguous.

                +
                + +Dynamic Arrays
                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8290AAF0-577C-51D2-8AC1-0D37A10F45CB.dita --- a/Symbian3/PDK/Source/GUID-8290AAF0-577C-51D2-8AC1-0D37A10F45CB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8290AAF0-577C-51D2-8AC1-0D37A10F45CB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -22,7 +22,7 @@ threads and processes easy access to secure random numbers. For an overview of the various APIs by means of which the CSPRNG can be accessed, see APIs for Accessing Random Number Generator.

                -
                Description

                The +

                Description

                The CSPRNG uses Hash_DRBG algorithm to generate pseudo-random number. Hash_DRBG algorithm is a standard recommended by National Institute of Secure Technology (NIST SP800-90), which uses cryptographic hash functions diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-829C15B1-0769-4E90-935D-4DCA58895E81_d0e86283_href.png Binary file Symbian3/PDK/Source/GUID-829C15B1-0769-4E90-935D-4DCA58895E81_d0e86283_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-829C15B1-0769-4E90-935D-4DCA58895E81_d0e90481_href.png Binary file Symbian3/PDK/Source/GUID-829C15B1-0769-4E90-935D-4DCA58895E81_d0e90481_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-82B0B4B9-6BC2-5BEF-B3B0-D57AC57F8D8A.dita --- a/Symbian3/PDK/Source/GUID-82B0B4B9-6BC2-5BEF-B3B0-D57AC57F8D8A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-82B0B4B9-6BC2-5BEF-B3B0-D57AC57F8D8A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -28,7 +28,7 @@

                Key classes

                The following diagram shows the relationships between the key classes.

                Key Graphics Resource component classes - + diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-82B73D69-0176-5CBB-B3ED-5CA7F5CCD5D9.dita --- a/Symbian3/PDK/Source/GUID-82B73D69-0176-5CBB-B3ED-5CA7F5CCD5D9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-82B73D69-0176-5CBB-B3ED-5CA7F5CCD5D9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -32,7 +32,7 @@ classes and cannot be instantiated, However, these types can be passed as arguments to functions.

                - +

                Inheritance relationship between the concrete descriptor classes and their abstract base classes

                diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-82B8C95E-F7E7-59C2-A71A-4C882653D555.dita --- a/Symbian3/PDK/Source/GUID-82B8C95E-F7E7-59C2-A71A-4C882653D555.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-82B8C95E-F7E7-59C2-A71A-4C882653D555.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,7 +9,7 @@ --> -Continuous Digital ZoomingThis tutorial describes how to perform continuous digital zooming using the Ecam API.

                Before you start you should understand the following topics:

                • Overview of the advanced Camera settings functionality.

                • Tutorial of the advanced Camera settings functionality.

                For advanced camera settings, the continuous digital zooming API provides a greater control over continuous zoom by allowing you to specify the speed and acceleration of each continuous zoom operation. The minimum speed for zooming is zero and the minimum acceleration is a negative value (which means deceleration).

                For continuous zooming, you need to provide a concrete implementation of MCameraContinuousZoom.

                Call CCameraAdvancedSettings::NewL(CCamera&) to create a CCameraAdvancedSettings object. Call CCameraAdvancedSettings::GetSupportedContinuousZoomTypeL(TUint&) to retrieve supported continuous zoom options for CCameraAdvancedSettings. Call CCameraAdvancedSettings::CreateContinuousZoomL(MContinuousZoomObserver&, +Continuous Digital ZoomingThis tutorial describes how to perform continuous digital zooming using the Ecam API.

                Before you start you should understand the following topics:

                • Overview of the advanced Camera settings functionality.

                • Tutorial of the advanced Camera settings functionality.

                For advanced camera settings, the continuous digital zooming API provides a greater control over continuous zoom by allowing you to specify the speed and acceleration of each continuous zoom operation. The minimum speed for zooming is zero and the minimum acceleration is a negative value (which means deceleration).

                For continuous zooming, you need to provide a concrete implementation of MCameraContinuousZoom.

                Call CCameraAdvancedSettings::NewL(CCamera&) to create a CCameraAdvancedSettings object. Call CCameraAdvancedSettings::GetSupportedContinuousZoomTypeL(TUint&) to retrieve supported continuous zoom options for CCameraAdvancedSettings. Call CCameraAdvancedSettings::CreateContinuousZoomL(MContinuousZoomObserver&, TContinuousZoomType, CCameraContinuousZoom*&) to create a continuous zoom object. Call CCameraContinuousZoom::GetContinuousZoomSupportInfoL(CCameraAdvancedSettings::TContinuousZoomSupportInfo&) to retrieve information about the supported settings related to continuous zoom. Call CCameraAdvancedSettings::StartContinuousZoomL(CCameraAdvancedSettings::TContinuousZoomParameters) to start the continuous zoom operation. Call the CCameraContinuousZoom::ContinuousZoomProgress(CCameraContinuousZoom&, TInt, TInt) function when a new zoom factor has achieved during the current continuous zoom operation. Call the CCameraAdvancedSettings::GetContinuousZoomId (TInt aZoomId) function when you use more than one continuous zoom operation. This function is used to retrieve a unique ID which you can use to determine the callback function (like ContinuousZoomProgress() or ContinuousZoomCompleted()) is associated with which continuous zoom object. Call CCameraContinuousZoom::ContinuousZoomCompleted() to inform you that the continuous zoom function has either completed successfully or to report an error that has caused the operation to fail. Note: This callback function does not actually stop the continuous zoom. Call CCameraAdvancedSettings::StopContinuousZoom() to stop continuous zooming, if the continuous zoom function has not already completed. Example

                The following example shows you how to perform continuous digital zooming using the Ecam API:

                diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8300FD98-38D7-43EF-A71E-A7BEBFC3F8ED_d0e89623_href.png Binary file Symbian3/PDK/Source/GUID-8300FD98-38D7-43EF-A71E-A7BEBFC3F8ED_d0e89623_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8300FD98-38D7-43EF-A71E-A7BEBFC3F8ED_d0e93821_href.png Binary file Symbian3/PDK/Source/GUID-8300FD98-38D7-43EF-A71E-A7BEBFC3F8ED_d0e93821_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8305F179-8F26-4B38-8523-066D1B0B7A62_d0e283327_href.png Binary file Symbian3/PDK/Source/GUID-8305F179-8F26-4B38-8523-066D1B0B7A62_d0e283327_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8305F179-8F26-4B38-8523-066D1B0B7A62_d0e289318_href.png Binary file Symbian3/PDK/Source/GUID-8305F179-8F26-4B38-8523-066D1B0B7A62_d0e289318_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-830E40D0-7DEE-5EFB-BCC6-EC0AA7FF7A02.dita --- a/Symbian3/PDK/Source/GUID-830E40D0-7DEE-5EFB-BCC6-EC0AA7FF7A02.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-830E40D0-7DEE-5EFB-BCC6-EC0AA7FF7A02.dita Fri Jul 16 17:23:46 2010 +0100 @@ -25,7 +25,7 @@ server. The client/server interface is not to be used directly by applications, but through framework functions in the AppUi (CCoeAppUi).

                View Server architecture - +
                Description

                The API has several key concepts:

                Abstract view interface

                The abstract view interface is implemented by application diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-83510B5B-9725-5272-BF51-23A089178DAC.dita --- a/Symbian3/PDK/Source/GUID-83510B5B-9725-5272-BF51-23A089178DAC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-83510B5B-9725-5272-BF51-23A089178DAC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -53,7 +53,7 @@ component and other key graphics components.

                Key OpenWF-C Support component relationships - +

                The numbers in the diagram show the approximate sequence when a rendering client creates a surface and renders into it. This assumes that the OpenWF-C context has registered the screen with the Surface Update Server diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-83630B57-D842-4B60-8AF0-D2965251DE29.dita --- a/Symbian3/PDK/Source/GUID-83630B57-D842-4B60-8AF0-D2965251DE29.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-83630B57-D842-4B60-8AF0-D2965251DE29.dita Fri Jul 16 17:23:46 2010 +0100 @@ -65,8 +65,8 @@ and ESensrvArrayPropertyInfo as the index to retrieve the property item that contains this information.

                - -Create an instance + +Create an instance of TSensrvProperty. TSensrvProperty property;

                Each channel property is encapsulated by the TSensrvProperty class. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8367DC46-FB9C-554F-8DFF-5C0328F59EF6-GENID-1-12-1-24-1-1-8-1-4-1-4-1-6-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-8367DC46-FB9C-554F-8DFF-5C0328F59EF6-GENID-1-12-1-24-1-1-8-1-4-1-4-1-6-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Secure Sockets ExamplesThis describes the example code for Secure Sockets. \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8367DC46-FB9C-554F-8DFF-5C0328F59EF6-GENID-1-12-1-24-1-1-8-1-5-1-4-1-6-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-8367DC46-FB9C-554F-8DFF-5C0328F59EF6-GENID-1-12-1-24-1-1-8-1-5-1-4-1-6-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Secure Sockets ExamplesThis describes the example code for Secure Sockets. \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8367DC46-FB9C-554F-8DFF-5C0328F59EF6-GENID-1-12-1-24-1-1-9-1-4-1-6-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-8367DC46-FB9C-554F-8DFF-5C0328F59EF6-GENID-1-12-1-24-1-1-9-1-4-1-6-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Secure Sockets ExamplesThis describes the example code for Secure Sockets. \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-83798F82-15FB-4EA6-9AD8-540616CBF6C4.dita --- a/Symbian3/PDK/Source/GUID-83798F82-15FB-4EA6-9AD8-540616CBF6C4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-83798F82-15FB-4EA6-9AD8-540616CBF6C4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -22,10 +22,10 @@ pane section.

                Example images of pop-up components with two softkeys - + Examples images of pop-ups with one softkey - + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8390D842-B8A3-5042-952D-73240DB30D6B.dita --- a/Symbian3/PDK/Source/GUID-8390D842-B8A3-5042-952D-73240DB30D6B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8390D842-B8A3-5042-952D-73240DB30D6B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -31,7 +31,7 @@ by third-parties.

                Logical structure of Messaging Middleware architecture - + No lower-level communication components are shown, as the architecture is designed to be independent of any particular communication protocol. Instead, communication libraries are accessed as needed by Server MTMs. For example, diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-83A4D862-368E-5DCC-998E-90144BE18A22.dita --- a/Symbian3/PDK/Source/GUID-83A4D862-368E-5DCC-998E-90144BE18A22.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-83A4D862-368E-5DCC-998E-90144BE18A22.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> How to Override Default Authentication Handling

                SIP provides a feature to the SIP client to handle authentication handling for services such as registration and session establishment. By default, this authentication challenge handling is handled by the SIP server using the digest mechanism. This mechanism is used by profile plug-ins that implement nondefault SIP behaviour which is also known as extensible Service Provider (xSP).

                These components are used when a SIP client handles authentication challenges independently. When an authentication problem is reported use CSIPAuthorizationHeader and CSIPProxyAuthorizationHeader objects to manipulate the registration or session initiation request headers. Then re-register a profile or reinitiate a session using the updated headers.

                To enable a client to override default authentication handling mechanisms, it must inform the SIP server by disabling the built-in security mechanism of the SIP using the CSIP::SetSecurityHandlingL() function. The client uses CSIP::IsSecurityHandlingEnabled() function to determine what is handling the authentication challenges. This function returns ETrue if the built-in security mechanism of the SIP is used.

                When a SIP client handles authentication challenges independently, it uses CSIPAuthorizationHeader and CSIPProxyAuthorizationHeader objects to manipulate the registration or session initiation request headers when an authentication problem is reported. Re-registration of a profile or reinitiating a session is done using the updated headers.

                In the following illustration the client handles authentication challenges related to the profile registration. All authentication errors are then forwarded to the xSP profile agent plug-in. When an error is reported to the plug-in, it runs a proprietary authentication procedure and tries to re-register the profile.

                The following illustration shows the call flow of handling authentication challenges while registering a SIP profile:

                Call flow for handling 401 challenges using xSP profile agent plug-in -

                In the following illustration the client handles authentication challenges related to the session initiation. All the authentication errors are then forwarded to the xSP provider. When an error is reported to the provider, it runs a proprietary authentication procedure and tries to reinitiate the session.

                The following illustration shows the call flow of handling authentication challenges while establishing a session:

                +

                In the following illustration the client handles authentication challenges related to the session initiation. All the authentication errors are then forwarded to the xSP provider. When an error is reported to the provider, it runs a proprietary authentication procedure and tries to reinitiate the session.

                The following illustration shows the call flow of handling authentication challenges while establishing a session:

                Call flow for handling 401 challenges using xSP provider -
                See also

                How to use the SIP Client API

                \ No newline at end of file +
                See also

                How to use the SIP Client API

                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-83BE15D8-511F-592D-A93B-C71BD6FB1B08.dita --- a/Symbian3/PDK/Source/GUID-83BE15D8-511F-592D-A93B-C71BD6FB1B08.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-83BE15D8-511F-592D-A93B-C71BD6FB1B08.dita Fri Jul 16 17:23:46 2010 +0100 @@ -30,7 +30,7 @@ a Symbian platform defined record.

                You create a table object on the heap. You use the new (Eleave) construction to create this object.

                - +

                The CommsDat API implements the table as an array of records and uses RPointerArray <T> as the array. The CommsDat API implements RPointerArray<T> in diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-83DC4E21-72B3-459F-9AE8-41ED52BF219C_d0e94043_href.png Binary file Symbian3/PDK/Source/GUID-83DC4E21-72B3-459F-9AE8-41ED52BF219C_d0e94043_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-83DC4E21-72B3-459F-9AE8-41ED52BF219C_d0e98241_href.png Binary file Symbian3/PDK/Source/GUID-83DC4E21-72B3-459F-9AE8-41ED52BF219C_d0e98241_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-845F3021-E3ED-4676-916A-75740886DCBD.dita --- a/Symbian3/PDK/Source/GUID-845F3021-E3ED-4676-916A-75740886DCBD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-845F3021-E3ED-4676-916A-75740886DCBD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -52,7 +52,7 @@

                Use cases Choice list API use cases - +

                To use a choice list in your application, implementing the following use cases is mandatory:

                • Creating the diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-84623607-ACCA-5E57-9001-DA56E16C1652_d0e454725_href.png Binary file Symbian3/PDK/Source/GUID-84623607-ACCA-5E57-9001-DA56E16C1652_d0e454725_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-84623607-ACCA-5E57-9001-DA56E16C1652_d0e460570_href.png Binary file Symbian3/PDK/Source/GUID-84623607-ACCA-5E57-9001-DA56E16C1652_d0e460570_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-84897583-A06F-42EE-917D-DF908B095AFF_d0e523913_href.png Binary file Symbian3/PDK/Source/GUID-84897583-A06F-42EE-917D-DF908B095AFF_d0e523913_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-84897583-A06F-42EE-917D-DF908B095AFF_d0e531373_href.png Binary file Symbian3/PDK/Source/GUID-84897583-A06F-42EE-917D-DF908B095AFF_d0e531373_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-84B6389A-55CC-53EB-8725-65F753FD7217.dita --- a/Symbian3/PDK/Source/GUID-84B6389A-55CC-53EB-8725-65F753FD7217.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-84B6389A-55CC-53EB-8725-65F753FD7217.dita Fri Jul 16 17:23:46 2010 +0100 @@ -99,7 +99,7 @@ components provided by Symbian and the blue blocks represent the components that must be implemented by device creators.

                  CAF Architecture - +

                  Note: The F32 agent is a client-side implementation as it is used for accessing unprotected content only.

                Key classes

                The following table summarizes the diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-84E742A8-2D24-55B8-A4DA-A67939A50754_d0e167895_href.png Binary file Symbian3/PDK/Source/GUID-84E742A8-2D24-55B8-A4DA-A67939A50754_d0e167895_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-84E742A8-2D24-55B8-A4DA-A67939A50754_d0e173988_href.png Binary file Symbian3/PDK/Source/GUID-84E742A8-2D24-55B8-A4DA-A67939A50754_d0e173988_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-85058500-87C5-457A-9567-ECAB29708759.dita --- a/Symbian3/PDK/Source/GUID-85058500-87C5-457A-9567-ECAB29708759.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-85058500-87C5-457A-9567-ECAB29708759.dita Fri Jul 16 17:23:46 2010 +0100 @@ -13,7 +13,7 @@ in pop-up windowsVertical lists are used extensively in most applications as part of the pop-up windows, to display the options available for a selected item. - +

                Design Guidelines : Lists do not have permanent highlight in touch. For information on the list navigation, see Dragging diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8526BBD8-CA70-4B3F-B91D-D70AF06440B2_d0e83362_href.png Binary file Symbian3/PDK/Source/GUID-8526BBD8-CA70-4B3F-B91D-D70AF06440B2_d0e83362_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8526BBD8-CA70-4B3F-B91D-D70AF06440B2_d0e87560_href.png Binary file Symbian3/PDK/Source/GUID-8526BBD8-CA70-4B3F-B91D-D70AF06440B2_d0e87560_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-85291DF3-C134-4231-938A-C20DD122AB7D_d0e14048_href.png Binary file Symbian3/PDK/Source/GUID-85291DF3-C134-4231-938A-C20DD122AB7D_d0e14048_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-85291DF3-C134-4231-938A-C20DD122AB7D_d0e14147_href.png Binary file Symbian3/PDK/Source/GUID-85291DF3-C134-4231-938A-C20DD122AB7D_d0e14147_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-85332468-292D-589B-891B-0E7ACBADC7BA_d0e378189_href.png Binary file Symbian3/PDK/Source/GUID-85332468-292D-589B-891B-0E7ACBADC7BA_d0e378189_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-85332468-292D-589B-891B-0E7ACBADC7BA_d0e384042_href.png Binary file Symbian3/PDK/Source/GUID-85332468-292D-589B-891B-0E7ACBADC7BA_d0e384042_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-857A523E-E660-5AFA-98B1-3A5440A8372F_d0e351847_href.jpg Binary file Symbian3/PDK/Source/GUID-857A523E-E660-5AFA-98B1-3A5440A8372F_d0e351847_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-857A523E-E660-5AFA-98B1-3A5440A8372F_d0e357778_href.jpg Binary file Symbian3/PDK/Source/GUID-857A523E-E660-5AFA-98B1-3A5440A8372F_d0e357778_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-859CAA08-59C9-5FD3-98DE-6BDD0D6ED50B.dita --- a/Symbian3/PDK/Source/GUID-859CAA08-59C9-5FD3-98DE-6BDD0D6ED50B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-859CAA08-59C9-5FD3-98DE-6BDD0D6ED50B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -29,7 +29,7 @@ The display is an orthogonal view of a series of layers. - +

                Composition requires:

                  @@ -68,7 +68,7 @@ output which is rendered, composited and displayed.

                  Graphics Composition - +

                  In a device with graphics acceleration hardware (a Graphics Processing Unit or GPU) there might, in addition to the memory managed by the CPU, be @@ -79,7 +79,7 @@ in software and hardware.

                  Hardware rendered graphics - the wrong way! - +

                  The diagram, however, represents a system with several problem areas that would render it unsuitable for any practical implementation

                  @@ -116,7 +116,7 @@ display. The diagram below illustrates how Window Server-rendered UI content and external surfaces are composited using the UI surface.

                  Hardware composition and the Flattened UI - +

                  Although this method of composition is flexible and powerful, it does have some limitations, particularly with respect to semi-transparent hardware-accelerated surfaces.

                  It is not possible, for example, to @@ -128,18 +128,18 @@ green layer displays a hardware rendered surface so it is actually behind the layer on which it appears.

                  The UI surface - +
                Composition Examples

                This illustrations below illustrate the use of hardware accelerated surfaces and the UI surface

                Video rendered to a hardware accelerated surface mapped to a layer behind the UI surface - + As above with a semi-transparent dialog on the UI surface - +
                The ScreenPlay diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-85A84BAA-4FA2-4A26-A8B1-57018D8838C3_d0e16619_href.jpg Binary file Symbian3/PDK/Source/GUID-85A84BAA-4FA2-4A26-A8B1-57018D8838C3_d0e16619_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-85A84BAA-4FA2-4A26-A8B1-57018D8838C3_d0e16677_href.jpg Binary file Symbian3/PDK/Source/GUID-85A84BAA-4FA2-4A26-A8B1-57018D8838C3_d0e16677_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-85A84BAA-4FA2-4A26-A8B1-57018D8838C3_d0e16709_href.jpg Binary file Symbian3/PDK/Source/GUID-85A84BAA-4FA2-4A26-A8B1-57018D8838C3_d0e16709_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-85A84BAA-4FA2-4A26-A8B1-57018D8838C3_d0e16767_href.jpg Binary file Symbian3/PDK/Source/GUID-85A84BAA-4FA2-4A26-A8B1-57018D8838C3_d0e16767_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-85CA1089-3F58-5E82-86A4-4674C893B25F.dita --- a/Symbian3/PDK/Source/GUID-85CA1089-3F58-5E82-86A4-4674C893B25F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-85CA1089-3F58-5E82-86A4-4674C893B25F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -31,11 +31,11 @@ of the SIP Codec API classes.

                Relationships of the SIP Codec classes - Part 1 - + Relationships of the SIP Codec classes - Part 2 - +

                The SIP Codec API defines the functions required to create the SIP headers of a SIP message. CSIPHeaderBase is the base class for all SIP headers. A client creates a new instance of the CSIPXHeader class, where “X” is the diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-860916D1-339F-4D4F-859D-DAE11F7C311E.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-860916D1-339F-4D4F-859D-DAE11F7C311E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,151 @@ + + + + + +Building for an SMP PlatformThis document describes the issues raised when building +code for an SMP platform. +

                The only difference between building for an SMP and non-SMP system, +is the inclusion of the SMPSAFE keyword in the mmp +file.

                +

                However, before the SMPSAFE keyword can be used, +the ROM compatibility mode should be understood and enabled. It is +described below.

                +
                ROM +compatibility mode

                This specifies how the resulting build +will execute code that has not been marked as SMP safe, for example, +existing applications produced by third party developers. However, +ROM compatibility mode does not guarantee that non-SMP code will work. +By default, ROM compatibility is turned off. It is expected that code +will be tested on a SMP platform to verify that it is SMP safe. Which +compatibility mode is to be used will be decided during the ROM integration +stage.

                The ROM compatibility mode takes the form of two new rombuild parameters (only one can be used at any one time).

                There are two parts to using ROM compatibility mode:

                  +
                • Specifying that it is to be turned on and which type of ROM +compatibility is to be used. This is done with a new parameter for +the rombuild tool.

                • +
                • Adding the appropriate macros in the baseport iby and oby files.

                • +

                The arguments of rombuild that relate to +ROM compatibility are:

                + + + +

                rombuild argument

                +

                Description

                +
                + + + +

                -d SMPCOMPATMODE

                +

                Enables regular compatibility mode. This means that all +the threads in unsafe processes (non-SMP safe) are restricted, so +that only the ready thread with the highest priority can run.

                In regular compatibility mode, a thread group is created for each +process. This thread group will have the same priority as the highest +priority thread that it contains. These thread groups can be assigned +to any of the available processors, not just CPU 0.

                +
                + +

                -d SMPCOMPATCPU0

                +

                Enables CPU 0 only mode. This means that all threads in +unsafe processes (non-SMP safe) can only execute on CPU 0.

                +
                + + +

                In order for the ROM compatibility mode arguments to work, +changes have to be made to the iby and oby files of the baseport being +used. This takes the form of setting the appropriate flags:

                + + + +

                Flag

                +

                Description

                +

                Default Value

                +
                + + + +

                SMPUNSAFECOMPAT

                +

                Sets the state of the regular compatibility mode.

                +

                off

                +
                + +

                SMPUNSAFECPU0

                +

                Sets the state of the CPU 0 mode.

                +

                off

                +
                + + +

                The only valid values for these flags are on or off.

                The following line has to be added +to the baseport iby and oby files:

                #include <rom/include/kernel.hby>

                An example of the use of above flags is:

                #ifdef SMP +#if defined(SMPCOMPATMODE) && defined(SMPCOMPATCPU0) +#error "Can't have SMPCOMPATMODE and SMPCOMPATCPU0 at once!" +#endif +#ifdef SMPCOMPATMODE +SMPUNSAFECOMPAT(on) +#endif +#ifdef SMPCOMPATCPU0 +SMPUNSAFECPU0(on) +#endif +#endif //SMP +

                There is no guarantee that the use of compatibility +mode will make SMP unsafe code work correctly. The compatibility mode +is only a temporary migration strategy.

                Now that the +build system has been set up to work with non-SMP safe code, the use +of the SMPSAFE can be described.

                +
                The +SMPSAFE keyword

                The SMPSAFE keyword is +used to tell the system that the project can work correctly in an +SMP environment.

                It is indicated by placing the word SMPSAFE on a single line of the project's mmp file.

                An example of the use of the SMPSAFE keyword is +given below:

                capability all + +VENDORID 0x70000001 + +SMPSAFE + +

                The effect of this keyword is as follows:

                + + + +

                Is the SMPSAFE keyword present?

                +

                State of ROM Compatibility Mode

                +

                Resulting Behavior

                +
                + + + +

                Yes

                +

                N/A

                +

                The code is assumed to be SMP safe and will be executed +accordingly.

                +
                + +

                No

                +

                Disabled

                +

                The code will be executed, but SMP related problems can +occur.

                +
                + +

                No

                +

                Enabled

                +

                The code will be executed.

                How it is executed, depends +on which ROM compatibility mode has been enabled.

                +
                + + +

                The build process for an SMP platform will be described.

                +
                The +build process for an SMP platform

                The build process for +an SMP platform is exactly the same as the build process for a non-SMP +platform.

                The target must be ARMV5SMP. This can be insured +if the bld.inf files specify BASE_DEFAULT in the PRJ_PLATFORMS line.

                For the description of this process, follow the Build Tool Guide link below.

                + +Build +Tools Guide +SMP +Developer Tips + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-860DCACE-4C5A-508F-B94C-12336E96D1C7_d0e597037_href.png Binary file Symbian3/PDK/Source/GUID-860DCACE-4C5A-508F-B94C-12336E96D1C7_d0e597037_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-860DCACE-4C5A-508F-B94C-12336E96D1C7_d0e615421_href.png Binary file Symbian3/PDK/Source/GUID-860DCACE-4C5A-508F-B94C-12336E96D1C7_d0e615421_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-860DCACE-4C5A-508F-B94C-12336E96D1C7_d0e624931_href.png Binary file Symbian3/PDK/Source/GUID-860DCACE-4C5A-508F-B94C-12336E96D1C7_d0e624931_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8617B132-D8C8-5769-95B9-867815B45B18_d0e167817_href.png Binary file Symbian3/PDK/Source/GUID-8617B132-D8C8-5769-95B9-867815B45B18_d0e167817_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8617B132-D8C8-5769-95B9-867815B45B18_d0e173910_href.png Binary file Symbian3/PDK/Source/GUID-8617B132-D8C8-5769-95B9-867815B45B18_d0e173910_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-866B69E6-8D4C-546F-B9C9-244AD8988DE5_d0e167767_href.png Binary file Symbian3/PDK/Source/GUID-866B69E6-8D4C-546F-B9C9-244AD8988DE5_d0e167767_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-866B69E6-8D4C-546F-B9C9-244AD8988DE5_d0e173860_href.png Binary file Symbian3/PDK/Source/GUID-866B69E6-8D4C-546F-B9C9-244AD8988DE5_d0e173860_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8675AC01-E2D8-425C-899F-12BE99345AA9.dita --- a/Symbian3/PDK/Source/GUID-8675AC01-E2D8-425C-899F-12BE99345AA9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8675AC01-E2D8-425C-899F-12BE99345AA9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -83,7 +83,7 @@ // 3 wasted bytes TReal iReal; // offset 8, 8 bytes } // total length = 16 bytes - +

                Structures are regarded as T types: that is they may not own heap-allocated resources such as C type classes.

                An array contains many built-ins or other types

                TInt a[32]; // 32 TInts, = 128 bytes @@ -98,7 +98,7 @@ take the address of an object, then you can refer to it by pointer:

                S* ps; // pointer to an S ps=&s // take address of existing S

                A pointer is a 32-bit machine word, and could point to anything.

                - +

                The specifier is placed next to the type rather than the name.

                There is often a need to refer to memory as anything: for this, a void* pointer is used in C++. In Symbian, a TAny* may be referred to instead. @@ -108,7 +108,7 @@ does two things: firstly, it sets aside six bytes of memory containing the characters 'h', 'e', 'l', 'l', 'o', '\0'. Secondly, it sets the pointer hello to contain the address of the first of those bytes.

                - +

                Functions accessing the string rely on this address as its starting point, and the terminating \0 to indicate its end. Functions which manipulate the string must either deliberately not extend it, or must diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-867B7D4C-34AC-585D-BEED-BDF050A12203_d0e274028_href.png Binary file Symbian3/PDK/Source/GUID-867B7D4C-34AC-585D-BEED-BDF050A12203_d0e274028_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-867B7D4C-34AC-585D-BEED-BDF050A12203_d0e280028_href.png Binary file Symbian3/PDK/Source/GUID-867B7D4C-34AC-585D-BEED-BDF050A12203_d0e280028_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-86A6FAC5-FF3C-5C35-A521-5C4BD3823629_d0e275773_href.png Binary file Symbian3/PDK/Source/GUID-86A6FAC5-FF3C-5C35-A521-5C4BD3823629_d0e275773_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-86A6FAC5-FF3C-5C35-A521-5C4BD3823629_d0e281773_href.png Binary file Symbian3/PDK/Source/GUID-86A6FAC5-FF3C-5C35-A521-5C4BD3823629_d0e281773_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-86AADA3E-B77C-45CC-B523-785B75BAA5AA.dita --- a/Symbian3/PDK/Source/GUID-86AADA3E-B77C-45CC-B523-785B75BAA5AA.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-86AADA3E-B77C-45CC-B523-785B75BAA5AA.dita Fri Jul 16 17:23:46 2010 +0100 @@ -22,7 +22,7 @@ Menu with a 3 x 4 grid in portrait (left) and 4 x 3 grid in landscape (right) - +

                For more details on the landscape orientation, see Symbian UI with rotation.

                diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-86AB2626-27F1-5761-85F7-5644C5D0A675.dita --- a/Symbian3/PDK/Source/GUID-86AB2626-27F1-5761-85F7-5644C5D0A675.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-86AB2626-27F1-5761-85F7-5644C5D0A675.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,71 +1,65 @@ - - - - - -Creating -a Control Panel Application -
                Introduction

                A control panel application is used -to modify system settings. To create a control panel application a registration -resource file is required which contains information about the application -UID and the name of the application’s executable.

                Note: You -need to create the registration resource file and specify its source and destination -path in the mmp file.

                -
                Procedure

                The following procedure describes how -to prepare the registration resource file and create a control panel application:

                  -
                1. Define the attributes -of the control panel application in the registration resource file.

                  The -attributes of the APP_REGISTRATION_INFO resource must have -the KAppIsControlPanelItem attribute as shown in the code -snippet:

                  #include <appinfo.rh> -UID2 KUidAppRegistrationResourceFile -UID3 0x23256ADE -RESOURCE APP_REGISTRATION_INFO - { - app_file = app_CTRL2; - attributes=KAppIsControlPanelItem; - }
                2. -
                3. In the source code of -the application, create an instance of the CApaSystemControlList class -using the CApaSystemControlList::NewL() function to create -and initialize a control panel application list as shown in the code snippet. -The CApaSystemControlList class provides a list of all -the available control panel applications present on the device.

                  -// Create a file server session by creating an RFs object. - -RFs fs; -fs.Connect(); -CApaSystemControlList* cControlList; - -TRAP(ret,cControlList=CApaSystemControlList::NewL(fs)); -if( ret==KErrNone ) - { - //success scenario , implementation... - }
                4. -
                5. Also in the application's -source code, create a control panel application in either of the following -ways:

                  // Using UID -const TInt KsimpleAppUidValue = 0x23256ADE; - -// Create the control panel application in the list using the specified UID - -CApaSystemControl* Control = cControlList->Control(TUid(KsimpleAppUidValue)); -

                  //Using Index -// Create a control panel application using the index ID -TInt indexID = 2; - -CApaSystemControl* control=cControlList->Control(indexID); -
                6. -
                -
                -Application -Architecture Overview -Application -resource tools guide + + + + + +Creating a Control Panel Application +
                Introduction

                A control panel application +is used to modify system settings. To create a control panel application +a registration resource file is required which contains information +about the application UID and the name of the application’s executable.

                Note: You need to create the registration resource file +and specify its source and destination path in the mmp file.

                +
                Procedure

                The following procedure describes +how to prepare the registration resource file and create a control +panel application:

                  +
                1. Define the attributes +of the control panel application in the registration resource file.

                  The attributes of the APP_REGISTRATION_INFO resource +must have the KAppIsControlPanelItem attribute as +shown in the code snippet:

                  #include <appinfo.rh> +UID2 KUidAppRegistrationResourceFile +UID3 0x23256ADE +RESOURCE APP_REGISTRATION_INFO + { + app_file = app_CTRL2; + attributes=KAppIsControlPanelItem; + }
                2. +
                3. In the source +code of the application, create an instance of the CApaSystemControlList class using the CApaSystemControlList::NewL() function to create and initialize a control panel application list +as shown in the code snippet. The CApaSystemControlList class provides a list of all the available control panel applications +present on the device.

                  +// Create a file server session by creating an RFs object. + +RFs fs; +fs.Connect(); +CApaSystemControlList* cControlList; + +TRAP(ret,cControlList=CApaSystemControlList::NewL(fs)); +if( ret==KErrNone ) + { + //success scenario , implementation... + }
                4. +
                5. Also in the +application's source code, create a control panel application in either +of the following ways:

                  // Using UID +const TInt KsimpleAppUidValue = 0x23256ADE; + +// Create the control panel application in the list using the specified UID + +CApaSystemControl* Control = cControlList->Control(TUid(KsimpleAppUidValue)); +

                  //Using Index +// Create a control panel application using the index ID +TInt indexID = 2; + +CApaSystemControl* control=cControlList->Control(indexID); +
                6. +
                +
                +Application +Architecture Overview
                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-86AD79A5-E18D-56C6-997A-5E2B24FEE80D.dita --- a/Symbian3/PDK/Source/GUID-86AD79A5-E18D-56C6-997A-5E2B24FEE80D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-86AD79A5-E18D-56C6-997A-5E2B24FEE80D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,5 +9,5 @@ --> -Positioning Plug-in API Tutorial OverviewThis document describes how to use the Positioning Plug-in API.

                Read the Positioning Plug-in API document before reading this tutorial.

                To implement a Positioning Plug-in, a device creator must implement a sub-class of the CPositioner base class, and package the module as an ECOM plug-in.

                Create an MMP file for the PSY Implement a subclass of CPositioner Provide ECOM registry information for the PSY Define PSY attributes using the Positioning Plug-in Information API Test the PSY using the PSY tester application.
                Positioning +Positioning Plug-in API Tutorial OverviewThis document describes how to use the Positioning Plug-in API.

                Read the Positioning Plug-in API document before reading this tutorial.

                To implement a Positioning Plug-in, a device creator must implement a sub-class of the CPositioner base class, and package the module as an ECOM plug-in.

                Create an MMP file for the PSY Implement a subclass of CPositioner Provide ECOM registry information for the PSY Define PSY attributes using the Positioning Plug-in Information API Test the PSY using the PSY tester application.
                Positioning Plug-in API
                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-86C21C9B-9F08-579F-84E9-CBE46F756373_d0e378153_href.png Binary file Symbian3/PDK/Source/GUID-86C21C9B-9F08-579F-84E9-CBE46F756373_d0e378153_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-86C21C9B-9F08-579F-84E9-CBE46F756373_d0e384006_href.png Binary file Symbian3/PDK/Source/GUID-86C21C9B-9F08-579F-84E9-CBE46F756373_d0e384006_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-873186CE-9723-558F-9C7E-0CEE607F076C_d0e681992_href.png Binary file Symbian3/PDK/Source/GUID-873186CE-9723-558F-9C7E-0CEE607F076C_d0e681992_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-873186CE-9723-558F-9C7E-0CEE607F076C_d0e694819_href.png Binary file Symbian3/PDK/Source/GUID-873186CE-9723-558F-9C7E-0CEE607F076C_d0e694819_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-875D74D3-5663-42E3-A4B9-294F82FF5486.dita --- a/Symbian3/PDK/Source/GUID-875D74D3-5663-42E3-A4B9-294F82FF5486.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-875D74D3-5663-42E3-A4B9-294F82FF5486.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ every kind of successful action).

                Confirmation note - +
                Guidelines for using confirmation notes

                Use a confirmation note when:

                  diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8761F82E-5DC4-5BD5-A422-2EC45A92925B_d0e597320_href.png Binary file Symbian3/PDK/Source/GUID-8761F82E-5DC4-5BD5-A422-2EC45A92925B_d0e597320_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8761F82E-5DC4-5BD5-A422-2EC45A92925B_d0e625214_href.png Binary file Symbian3/PDK/Source/GUID-8761F82E-5DC4-5BD5-A422-2EC45A92925B_d0e625214_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-876EE000-01B7-4457-AE9C-CE56E48CFF11_d0e99556_href.png Binary file Symbian3/PDK/Source/GUID-876EE000-01B7-4457-AE9C-CE56E48CFF11_d0e99556_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8792CCC3-B70F-53FC-B394-B0069AF90349.dita --- a/Symbian3/PDK/Source/GUID-8792CCC3-B70F-53FC-B394-B0069AF90349.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8792CCC3-B70F-53FC-B394-B0069AF90349.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,18 +9,20 @@ --> -InterpretSIS

                  The InterpretSIS tool is a PC-side command-line -tool. It can be used by device creators to install SIS files to a data drive -image that can be flashed to a device internal drive or removable media.

                  InterpretSIS can -be invoked either through BUILDROM while creating a data drive image or as -a stand-alone tool. If invoking the tool through BUILDROM, the SIS files to -be installed are listed in the OBEY file using the SISfile keyword. For an -example OBEY file, see ROM Tools Guide > ROM Tools Guide > Using ROM Tools -> Building a Data Drive Image.

                  -
                  Syntax

                  interpretsis [OPTIONS] <ARGS>

                  The following table lists the options supported by -the InterpretSIS tool:

                  -Interpretsis tool options - +InterpretSIS

                  The InterpretSIS tool is a PC-side +command-line tool. It can be used by device creators to install SIS +files to a data drive image that can be flashed to a device internal +drive or removable media.

                  InterpretSIS can +be invoked either through BUILDROM while creating a data drive image +or as a stand-alone tool. If invoking the tool through BUILDROM, the +SIS files to be installed are listed in the OBEY file using the SISfile +keyword. For an example OBEY file, see ROM Tools Guide > ROM Tools +Guide > Using ROM Tools > Building a Data Drive Image.

                  +
                  Syntax

                  interpretsis [OPTIONS] <ARGS>

                  The following table lists +the options supported by the InterpretSIS tool:

                  Interpretsis +tool options + + Options @@ -46,14 +48,14 @@

                  -z

                  -

                  The directory representing the Z drive on the -device.

                  +

                  The directory representing the Z drive +on the device.

                  interpretsis -[z dir]

                  -c

                  -

                  (Mandatory). The directory representing the system drive on the -device.

                  +

                  (Mandatory). The directory representing the system drive +on the device.

                  interpretsis [-c dir] [-d drive] [-t romstubdir]

                  @@ -63,10 +65,10 @@

                  -r

                  -

                  List of ROM or ROFS build log files. For example, see Configuring the content of ROM drive.

                  This option must not -be used with -z option or define the Z drive -in the configuration file.

                  -

                  interpretsis [-r rofsbuild_log_file1,rofsbuild_log _file2,...]

                  +

                  List of ROM or ROFS build log files. For example, see Configuring the content of ROM drive.

                  This option +must not be used with -z option or define the Z drive in the configuration file.

                  +

                  interpretsis [-r rofsbuild_log_file1,rofsbuild_log +_file2,...]

                  -t

                  @@ -75,29 +77,27 @@

                  -e

                  -

                  Disables eclipsing and SID checks using Z drive. -The -z or -r is not required when this option -is used.

                  +

                  Disables eclipsing and SID checks using Z drive. The -z or -r is not required +when this option is used.

                  interpretsis [-e]

                  -i

                  -

                  Configuration file with HAL attribute values for installation. For -example, see Supporting -device variant creation.

                  +

                  Configuration file with HAL attribute values for installation. +For example, see Supporting device variant creation.

                  interpretsis [-i config_file]

                  -k

                  Specifies the SISRegistry version to be generated. For example, -see Configuring -the registry version.

                  -

                  interpretsis [-k [4.0 | 5.0 | 5.1 | 5.2 | 5.3 | 5.4]]

                  +see Configuring the registry version.

                  +

                  interpretsis [-k [4.0 | 5.0 | 5.1 | 5.2 | 5.3 +| 5.4]]

                  -l

                  -

                  The log file in which the diagnostic information is stored. By default, -the information is stored in stderr.

                  +

                  The log file in which the diagnostic information is stored. +By default, the information is stored in stderr.

                  interpretsis [-l logfile]

                  @@ -108,21 +108,20 @@

                  -p

                  -

                  Specifies the file containing additional parameters. Command line -arguments specified after the file overrides the file contents.

                  +

                  Specifies the file containing additional parameters. Command +line arguments specified after the file overrides the file contents.

                  interpretsis [-p param_file]

                  -s

                  -

                  Specifies the SIS files to install.

                  This option can be used -to override the drive specified in the PKG file. For example, see Overriding the installation drive specified in the PKG file.

                  The +sucert option -can be used with this option to indicate that the file is signed by a SU certificate. -For example, see Installing -system upgrade packages.

                  For more information about the options, -see additional -options.

                  -

                  interpretsis [-s [sisfile | dir] [+drive [+mcard | +mcardnr -| +mcardalone | + mcardalonenr | +nonremovablepkg] [+sucert]]] [-s ...]

                  +

                  Specifies the SIS files to install.

                  This option can +be used to override the drive specified in the PKG file. For example, +see Overriding the installation drive specified in the PKG file.

                  The +sucert option can be used with this +option to indicate that the file is signed by a SU certificate. For example, see Installing system upgrade packages.

                  For more information +about the options, see additional options.

                  +

                  interpretsis [-s [sisfile | dir] [+drive [+mcard +| +mcardnr | +mcardalone | + mcardalonenr | +nonremovablepkg] [+sucert]]] +[-s ...]

                  -w

                  @@ -131,13 +130,21 @@

                  -x

                  -

                  Removes the files installed for a package. For example, see Uninstalling -preinstalled packages.

                  This option must not be used with -s option.

                  +

                  Removes the files installed for a package. For example, +see Uninstalling preinstalled packages.

                  This option must +not be used with -s option.

                  interpretsis [-x pkgUID[,pkgUID2,...]]

                  + +

                  -a

                  + + +
                  -

                  The following table lists the additional options that can be used:

                  Additional options +

                  The following table lists the additional options that +can be used:

                  +Additional options @@ -148,32 +155,31 @@

                  mcard

                  -

                  Generates stub SIS file for the installation package. This is required -for package propagation.

                  +

                  Generates stub SIS file for the installation package. This +is required for package propagation.

                  mcardnr

                  -

                  Generates non-removable stub SIS file for the installation package.

                  +

                  Generates non-removable stub SIS file for the installation +package.

                  mcardalone

                  -

                  Generates stub SIS file for the installation package and does not -generate the SIS Registry entry in the $:\sys\install\sisregistry\<package -UID>\ directory. It just creates a preinstalled package on the -media card.

                  +

                  Generates stub SIS file for the installation package and +does not generate the SIS Registry entry in the $:\sys\install\sisregistry\<package +UID>\ directory. It just creates a preinstalled package +on the media card.

                  mcardalonenr

                  -

                  Generates non-removable stub SIS file for the installation package -and does not generating the SIS Registry entry in $:\sys\install\sisregistry\<package -UID>\ directory.

                  +

                  Generates non-removable stub SIS file for the installation +package and does not generating the SIS Registry entry in $:\sys\install\sisregistry\<package UID>\ directory.

                  nonremovablepkg

                  -

                  Generates a non-removable installation package.

                  This option -converts a removable SIS file to non-removable SIS file at install time. It -reduces the effort of creating a new SIS file with the NR flag -during device creation.
                  +

                  Generates a non-removable installation package.

                  This option converts a removable SIS file to non-removable SIS file +at install time. It reduces the effort of creating a new SIS file +with the NR flag during device creation.

                  sucert

                  @@ -192,8 +198,8 @@

                  pkgUID

                  -

                  The installed package UID either in Hexadecimal or Decimal format -(for example, 0x12345678, 305419896).

                  +

                  The installed package UID either in Hexadecimal or Decimal +format (for example, 0x12345678, 305419896).

                  sisfile

                  diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8798F896-E0CB-4B9B-8F88-3C8B58574213.dita --- a/Symbian3/PDK/Source/GUID-8798F896-E0CB-4B9B-8F88-3C8B58574213.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8798F896-E0CB-4B9B-8F88-3C8B58574213.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,6 +21,6 @@ define the physical channel class.

                  Device driver physical channel classes - + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-87A1B62D-4C89-52B8-8BF3-BDE0AC53916C_d0e373341_href.png Binary file Symbian3/PDK/Source/GUID-87A1B62D-4C89-52B8-8BF3-BDE0AC53916C_d0e373341_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-87A1B62D-4C89-52B8-8BF3-BDE0AC53916C_d0e379189_href.png Binary file Symbian3/PDK/Source/GUID-87A1B62D-4C89-52B8-8BF3-BDE0AC53916C_d0e379189_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-87E45FA9-C1F9-5E4D-A5A1-25B62E508F35.dita --- a/Symbian3/PDK/Source/GUID-87E45FA9-C1F9-5E4D-A5A1-25B62E508F35.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Introduction to Capability Management tools
                  Overview

                  The Capability Management tool suite is useful to anyone involved in assigning or managing capabilities for Symbian platform ROM images and applications.

                  The suite is a set of command line tools that allows you to compare capabilities of binaries that have been developed against Symbian platform, with a pre-defined list of capabilities within a standard Symbian platform ROM image. This is to make sure that your applications have been assigned the correct access rights.

                  The results are shown in an HTML report.

                  The Capability Management tool suite includes the following three tools:

                  • CapSearch - allows you to list binary files with a specified capability, using the ROM log file as input.

                  • CapCheck - allows you to compare actual capabilities found in a ROM log with a list of expected capabilities for binaries.

                  • CapImportCheck - allows you to check whether the capabilities of a binary listed in your ROM log file are the same as the capabilities of the binaries that may import that particular binary.

                  The Capability Management tools are installed as part of the Symbian platform Customization or Development Kit and can be found in <EPOCRoot>\epoc32\tools\CapTools.

                  \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-87E9656E-CBB4-5023-B6BC-148A2957AFFC.dita --- a/Symbian3/PDK/Source/GUID-87E9656E-CBB4-5023-B6BC-148A2957AFFC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-87E9656E-CBB4-5023-B6BC-148A2957AFFC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,7 +9,7 @@ --> -Quality Profiles OverviewA quality profile defines the minimum acceptable horizontal and vertical accuracy required for a location fix and the maximum acceptable time to obtain the fix. A quality profile is used when the client that requests a position fix does not specify any position quality criteria.

                  Sets of acceptable quality parameters are stored in lbsprofile.ini. The Quality Profile API enables LBS subsystem components to read the quality profile data stored in that file.

                  An LBS administration setting determines which quality profile is used for different types of location request (MO-LR self locate, MO-LR transfer to third party and MT-LR).

                  lbsprofile.ini

                  A typical quality profile file lbsprofile.ini is shown below.

                  # +Quality Profiles OverviewA quality profile defines the minimum acceptable horizontal and vertical accuracy required for a location fix and the maximum acceptable time to obtain the fix. A quality profile is used when the client that requests a position fix does not specify any position quality criteria.

                  Sets of acceptable quality parameters are stored in lbsprofile.ini. The Quality Profile API enables LBS subsystem components to read the quality profile data stored in that file.

                  An LBS administration setting determines which quality profile is used for different types of location request (MO-LR self locate, MO-LR transfer to third party and MT-LR).

                  lbsprofile.ini

                  A typical quality profile file lbsprofile.ini is shown below.

                  # # Quality Profiles for LBS services # diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-881C353C-6482-4DFE-9D43-CFB80DEB77A5_d0e2926_href.png Binary file Symbian3/PDK/Source/GUID-881C353C-6482-4DFE-9D43-CFB80DEB77A5_d0e2926_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-881C353C-6482-4DFE-9D43-CFB80DEB77A5_d0e2936_href.png Binary file Symbian3/PDK/Source/GUID-881C353C-6482-4DFE-9D43-CFB80DEB77A5_d0e2936_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8862E271-ABA4-5A25-8990-C0B3931E370D_d0e658895_href.png Binary file Symbian3/PDK/Source/GUID-8862E271-ABA4-5A25-8990-C0B3931E370D_d0e658895_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8862E271-ABA4-5A25-8990-C0B3931E370D_d0e671722_href.png Binary file Symbian3/PDK/Source/GUID-8862E271-ABA4-5A25-8990-C0B3931E370D_d0e671722_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-89185EBD-223F-5F52-B1CA-9F9692F7D21F_d0e237470_href.png Binary file Symbian3/PDK/Source/GUID-89185EBD-223F-5F52-B1CA-9F9692F7D21F_d0e237470_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-89185EBD-223F-5F52-B1CA-9F9692F7D21F_d0e243443_href.png Binary file Symbian3/PDK/Source/GUID-89185EBD-223F-5F52-B1CA-9F9692F7D21F_d0e243443_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-893737B2-4863-5BB9-8AA1-6AB5045FADC9.dita --- a/Symbian3/PDK/Source/GUID-893737B2-4863-5BB9-8AA1-6AB5045FADC9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-893737B2-4863-5BB9-8AA1-6AB5045FADC9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,8 +9,8 @@ --> -Positioning Plug-in API (PSY API)

                  The Positioning Plug-in API defines the framework classes needed to implement Positioning Plug-ins (PSYs).

                  This API is intended for device creators who develop their own PSYs.

                  API description

                  The Positioning Plug-in API provides framework classes for developing PSYs.

                  The Location Server (eposserver.exe) loads and uses a PSY implementation to obtain position information.

                  In order to implement a PSY, a licensee must define new subclasses of the main API class CPositioner.

                  A PSY must also implement the Positioning Plug-in Information API to publish information about its capabilities to the Location Framework.

                  API summary

                  Figure 1 shows the classes of the PSY API.

                  +<concept xml:lang="en" id="GUID-893737B2-4863-5BB9-8AA1-6AB5045FADC9"><title>Positioning Plug-in API (PSY API)

                  The Positioning Plug-in API defines the framework classes needed to implement Positioning Plug-ins (PSYs).

                  This API is intended for device creators who develop their own PSYs.

                  API description

                  The Positioning Plug-in API provides framework classes for developing PSYs.

                  The Location Server (eposserver.exe) loads and uses a PSY implementation to obtain position information.

                  In order to implement a PSY, a licensee must define new subclasses of the main API class CPositioner.

                  A PSY must also implement the Positioning Plug-in Information API to publish information about its capabilities to the Location Framework.

                  API summary

                  Figure 1 shows the classes of the PSY API.

                  Figure 1. PSY API class diagram. -

                  The following table gives a brief description of the API classes.

                  Class Name Description Header file

                  CPositioner

                  CPositioner is the main class in the Positioning Plug-in API.

                  A PSY must implement a CPositioner subclass to handle positioning requests.

                  CPositioner defines two pure virtual functions:

                  • CPositioner::NotifyPositionUpdate()

                  • CPositioner::CancelNotifyPositionUpdate()

                  A PSY must implement these two functions.

                  This class also defines advanced features, such as for location tracking, for which it provides a default implementation.

                  EPos_CPositioner.h

                  MPositionerStatus

                  MPositionerStatus provides an interface through which a PSY reports its status.

                  Class TPositionModuleStatus of the Location Acquisition API defines the states that a PSY can report.

                  EPos_MPositionerStatus.h

                  Libraries

                  API classes are packaged in epospluginfw.dll. Clients link with epospluginfw.lib

                  Capabilities

                  PSYs are ECOM plug-ins loaded by the LBS Location Framework. They must be declared as having the capability ALL -TCB.

                  Positioning - Plug-in API Tutorial Positioning Plug-in +

                  The following table gives a brief description of the API classes.

                  Class Name Description Header file

                  CPositioner

                  CPositioner is the main class in the Positioning Plug-in API.

                  A PSY must implement a CPositioner subclass to handle positioning requests.

                  CPositioner defines two pure virtual functions:

                  • CPositioner::NotifyPositionUpdate()

                  • CPositioner::CancelNotifyPositionUpdate()

                  A PSY must implement these two functions.

                  This class also defines advanced features, such as for location tracking, for which it provides a default implementation.

                  EPos_CPositioner.h

                  MPositionerStatus

                  MPositionerStatus provides an interface through which a PSY reports its status.

                  Class TPositionModuleStatus of the Location Acquisition API defines the states that a PSY can report.

                  EPos_MPositionerStatus.h

                Libraries

                API classes are packaged in epospluginfw.dll. Clients link with epospluginfw.lib

                Capabilities

                PSYs are ECOM plug-ins loaded by the LBS Location Framework. They must be declared as having the capability ALL -TCB.

                Positioning + Plug-in API Tutorial Positioning Plug-in Information API
                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-894AB487-C127-532D-852B-37CB0DEA1440.dita --- a/Symbian3/PDK/Source/GUID-894AB487-C127-532D-852B-37CB0DEA1440.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-894AB487-C127-532D-852B-37CB0DEA1440.dita Fri Jul 16 17:23:46 2010 +0100 @@ -150,7 +150,7 @@ on which it is to be shown.

                Each window has a parent window group which is associated with a screen - +

                When you create a window surface in EGL using eglCreateWindowSurface, you pass in the RWindow as an argument. The window surface is then displayed on the screen associated with that window's parent window group. Currently a window can exist on only one screen.

                diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8983A095-3F5A-5262-8920-8A13ADD045DC_d0e322660_href.png Binary file Symbian3/PDK/Source/GUID-8983A095-3F5A-5262-8920-8A13ADD045DC_d0e322660_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8983A095-3F5A-5262-8920-8A13ADD045DC_d0e328646_href.png Binary file Symbian3/PDK/Source/GUID-8983A095-3F5A-5262-8920-8A13ADD045DC_d0e328646_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-89ADFC64-AF9F-51B1-AC5F-493897226270.dita --- a/Symbian3/PDK/Source/GUID-89ADFC64-AF9F-51B1-AC5F-493897226270.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,168 +0,0 @@ - - - - - -STRUCT -member types -<struct-member> -struct-member ::= -<member-declaration> [ = <initialiser> ]; <member-declaration> -member-declaration ::= -<type-name> <member-name> | [ LEN [ BYTE ] ] <type-name> <member-name> [ ( <length-limit> ) ] [ [ [ <array-size> ] ] ] <type-name> -type-name ::= -BYTE | WORD | LONG | TEXT | DOUBLE | LTEXT | BUF | BUF8 | BUF<n> | LINK | SRLINK | STRUCT -

                Member declaration

                -

                Each member of a struct is identified by a member-declaration followed -by an optional initialiser, and then a semi-colon.

                -

                The simplest form of member-declaration is to specify -a type-name and a member-name only:

                -STRUCT TEST - { - WORD length; - } -

                Type name

                -

                The type-name must be in upper case (WORD in -this example).

                -

                These are the valid types:

                - - - - -

                BYTE

                -

                A single byte.

                Can be treated as a signed integer (–128 -to +127) or unsigned integer (0 to 255).

                -
                - -

                WORD

                -

                Two bytes.

                Can be treated as a signed integer (–32,768 to -+32,767) or unsigned integer (0 to 65,535).

                -
                - -

                LONG

                -

                Four bytes.

                Can be treated as a signed integer (–2,147,483,648 -to 2147483647) or an unsigned integer (0 to 4,294,967,295).

                -
                - -

                DOUBLE

                -

                Eight byte real for double precision floating point numbers (approximately -±1.7E±308).

                -
                - -

                TEXT

                -

                A string, terminated by a null.

                This is deprecated: use LTEXT instead.

                -
                - -

                LTEXT

                -

                A Unicode string with a leading byte which holds the length of the -string, and no terminating null.

                -
                - -

                BUF

                -

                A Unicode string with no terminating null and no leading byte.

                -
                - -

                BUF8

                -

                A string of 8-bit characters, with no terminating null and no leading -byte. Used for putting 8-bit data into a resource.

                -
                - -

                BUF<n>

                -

                A Unicode string with no terminating null and no leading byte but -which has a maximum length n.

                This type is an alternative -to using the length-limit with BUF types.

                -
                - -

                LINK

                -

                The ID of another resource (16 bits), rather like a pointer to that -resource.

                -
                - -

                LLINK

                -

                The ID of another resource (32 bits).

                -
                - -

                SRLINK

                -

                A self-referencing link. This is a 32 bit link which contains the -resource ID of the resource it is defined in.

                An SRLINK member -may not have an initialiser since it is self-referencing -and, therefore, only takes the value of the resource ID the struct is declared -in. This is assigned automatically by the resource compiler.

                -
                - -

                STRUCT

                -

                Any struct, rather like including that struct as a member in this -struct.

                STRUCT members are useful because it means -that once a struct has been defined it can be re-used for a variety of resources.

                -
                - - -
                -

                Note that:

                -
                  -
                • Numbers more than one -byte long are stored little-endian: that is, their least significant byte -is stored first.

                • -
                • LINK and STRUCT are -not type-safe: it is the responsibility of the user of a struct to ensure -that the correct resource type is linked or included. The definer of a struct -should give some idea, perhaps using a comment:

                  STRUCT TEST - { - WORD length; - STRUCT text; // should be a STRING - }
                • -
                -

                Length limits

                -

                A length limit may be specified for members of string type (BUF, TEXT and LTEXT). -The length limit is enclosed in parentheses after the member name, for instance:

                -STRUCT TEST - { - TEXT string1(9); - LTEXT string2(MAX); - BUF string3; - } -
                  -
                • string1 has -a maximum of 9 characters, string2 a maximum of MAX characters -(where MAX has been #defined elsewhere) -and string3 has no maximum length. Note that this maximum -applies only to the actual characters and does not take account of the terminating -zero (for TEXT members) or leading byte (for LTEXT members).

                • -
                • Note that from v5 onwards, TEXT is -deprecated.

                • -
                • An alternative method -to using length-limit with a BUF type -is to use the type BUF<n>. For example, see the definition -of TEST and the resource definitions for test1, test2 and test3 in -the examples below.

                • -
                -

                Member name

                -

                The member-name must be in lower case.

                -STRUCT TEST - { - BUF<4> string; - }RESOURCE TEST test1 - { - string="abcd"; - }RESOURCE TEST test2 - { - string="ab"; - }RESOURCE TEST test3 - { - string="abcdef"; - }
                  -
                • test1 generates 0x61 -0x00 0x62 0x00 0x63 0x00 0x64 0x00

                • -
                • test2 generates 0x61 -0x00 0x62 0x00

                • -
                • but test3 generates -an error because the maximum length of string permitted by -the definition of the STRUCT is 4.

                • -
                -
                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-89C5B56D-0846-4D32-94E5-CEF8BFA47D4E.dita --- a/Symbian3/PDK/Source/GUID-89C5B56D-0846-4D32-94E5-CEF8BFA47D4E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-89C5B56D-0846-4D32-94E5-CEF8BFA47D4E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,8 +20,8 @@

                To migrate from C Standard Library (ESTLIB) to P.I.P.S., perform the following steps:

                - - + +

                Replace the LIBRARY entry in the .MMP file from estlib.lib to libc.lib libm.lib libpthread.lib.

                @@ -29,7 +29,7 @@

                Replace the LIBRARY entry in the .MMP file from ecrt0.lib to libcrt0.lib.

                - +

                Replace the SYSTEMINCLUDE path from \epoc32\include\libc to \epoc32\include\stdapis.

                Important: If any non-POSIX worked around code (written to satisfy POSIX-deviated ESTLIB return codes) is present in your existing diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-89D8ECA6-23C3-5573-8DC6-10F7FF7B491F.dita --- a/Symbian3/PDK/Source/GUID-89D8ECA6-23C3-5573-8DC6-10F7FF7B491F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-89D8ECA6-23C3-5573-8DC6-10F7FF7B491F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,15 +11,15 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Types of Email

                This section describes the types of email that Messaging Middleware supports and the structure of email messages.

                The following are the types of email that are supported. The diagrams represent the structure of the message entries in the Message Server.

                Plain text messages

                Non-MIME emails are the simplest type of mail message and contain only a plain text message body.

                Plain text messages -
                UUEncoded messages

                To allow for binary files to be ‘attached’ to non-MIME emails, it is possible to UUEncode the binary data and include it as text within the message. A typical message would consist of some text, followed by the UUEncoded data, followed by more text and UUEncoded data.

                +
                UUEncoded messages

                To allow for binary files to be ‘attached’ to non-MIME emails, it is possible to UUEncode the binary data and include it as text within the message. A typical message would consist of some text, followed by the UUEncoded data, followed by more text and UUEncoded data.

                UUEncoded messages -
                Multipart messages

                The multipart messages are the most popular form of modern emails. Multipart messages contain a sequence of body parts which can in turn contain additional nested body parts. The simplest example would be a text message with a single binary attachment. Binary data is typically encoded using BASE64 encoding.

                +
                Multipart messages

                The multipart messages are the most popular form of modern emails. Multipart messages contain a sequence of body parts which can in turn contain additional nested body parts. The simplest example would be a text message with a single binary attachment. Binary data is typically encoded using BASE64 encoding.

                Multipart messages -
                HTML text messages

                HTML text messages contain an HTML representation of the message body text (complete with all text formatting) and a corresponding plain text version. The email client can then decide which to display to the user based in its capabilities.

                +
                HTML text messages

                HTML text messages contain an HTML representation of the message body text (complete with all text formatting) and a corresponding plain text version. The email client can then decide which to display to the user based in its capabilities.

                HTML text messages -
                HTML messages with attachments

                As with HTML text messages, these contain plain and HTML versions of the body text, as well as additional body parts containing potentially encoded attachment data.

                +
                HTML messages with attachments

                As with HTML text messages, these contain plain and HTML versions of the body text, as well as additional body parts containing potentially encoded attachment data.

                HTML messages with attachments -
                HTML messages with embedded message

                Messages can contain embedded messages within their body parts. This example shows a message with parts consisting of plain text, an attachment, and an embedded message. The embedded message in turn contains an attachment as well a plain and html versions of the body text.

                +
                HTML messages with embedded message

                Messages can contain embedded messages within their body parts. This example shows a message with parts consisting of plain text, an attachment, and an embedded message. The embedded message in turn contains an attachment as well a plain and html versions of the body text.

                HTML messages with embedded message -
                Storage of email parts

                The majority of the message data is stored within a single file. This contain separate streams for header information, MIME headers, attachment information and the rich text store. If the message contained attachments, a corresponding folder exists that stores each attachment as a separate decoded file.

                Message Server and Store Message Type Module IMAP4 +
                Storage of email parts

                The majority of the message data is stored within a single file. This contain separate streams for header information, MIME headers, attachment information and the rich text store. If the message contained attachments, a corresponding folder exists that stores each attachment as a separate decoded file.

                Message Server and Store Message Type Module IMAP4 MTM POP3 MTM SMTP MTM \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8A00E047-3DCE-5D02-9ECE-1396DC99DA4B.dita --- a/Symbian3/PDK/Source/GUID-8A00E047-3DCE-5D02-9ECE-1396DC99DA4B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8A00E047-3DCE-5D02-9ECE-1396DC99DA4B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -39,7 +39,7 @@ user side code, such as the user library, and the device hardware:

                Kernel architectural relationships - +

                The implementation of these parts is split into code that is hardware independent, and code that is dependent on the hardware platform. Hardware dependent code @@ -55,7 +55,7 @@

              Kernel source layers - +

              The following is a brief description of each layer and its purpose.

              Layer 1: Independent

              This diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8A1B6104-4B13-5200-AF3D-64B3929707BB_d0e381849_href.png Binary file Symbian3/PDK/Source/GUID-8A1B6104-4B13-5200-AF3D-64B3929707BB_d0e381849_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8A1B6104-4B13-5200-AF3D-64B3929707BB_d0e387702_href.png Binary file Symbian3/PDK/Source/GUID-8A1B6104-4B13-5200-AF3D-64B3929707BB_d0e387702_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8A5054C9-7556-5153-8CEE-FA8E5F4155AE.dita --- a/Symbian3/PDK/Source/GUID-8A5054C9-7556-5153-8CEE-FA8E5F4155AE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8A5054C9-7556-5153-8CEE-FA8E5F4155AE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -90,7 +90,7 @@ Explicit binding example

              Client A creates a socket with explicit binding using the specified interface connection.

              sock1 = RSocket.Open(srv,conn);

              ESock creates the socket within the default connection and subconnection.

              - +

              A socket can also be opened over a sub-connection using RSubConnection. When the socket is opened, a new Service Access Point (SAP) is created for diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8A7B837D-4069-5364-A596-686EEBAE351D.dita --- a/Symbian3/PDK/Source/GUID-8A7B837D-4069-5364-A596-686EEBAE351D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8A7B837D-4069-5364-A596-686EEBAE351D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,8 +9,150 @@ --> -Plug-In Framework Overview

              The Plug-in (ECom) framework is a generic framework that provides a single mechanism to register and discover plug-ins and load an appropriate plug-in.

              Purpose

              In early versions of Symbian platform, plug-ins were provided by polymorphic interface DLLs. All the frameworks within the Symbian platform that needed to use plug-ins had to provide their own mechanisms for the clients to discover and instantiate the implementations. This resulted in duplication of functionality.

              The Plug-In framework is intended to provide a common and system-wide mechanism for instantiating a dynamically determined component.

              Three distinct users of the plug-in framework are:

              • Framework or Application designers

                These users need to understand interface definition design and platform security implications.

              • Plug-in writers

                These users need to understand interface implementation, DLL creation and platform security implementation issue.

              • Plug-in users

                These users need to understand that the plug-in framework helps in selecting the plug-in but sometimes may need to specify which implementation the framework should choose.

              Required background

              Run-time Binding: This is called dynamic binding or late binding. The linking of a routine or object is performed during runtime based on the requirements.

              DLL (Dynamic Link Library): Is a piece of code (a library) that is linked to a program at runtime rather than during the build process. The code inside a DLL can be shared by several clients at the same time without being duplicated in the mobile memory.

              In addition , the user should be aware of the Platform Security Considerations of the plug-in framework architecture.

              Key concepts and terms
              Plug-in

              In computing, a plug-in(extension) consists of a computer program that interacts with a host application(a web browser or an email client) to provide a very specific function on demand.

              Applications support plugins to:

              • Enable third-party developers to create capabilities to extend an application.

              • Reduce the size of an application.

              • Separate source code from an application.

              Plug-in System

              A client wishes to access a plug-in. The plug-in details are known only at run-time. The general characteristics of the plug-in are defined in an interface. Multiple variants of the plug-in can co-exist.

              The four clearly-defined roles of a plug-in system are:

              • The Client that wishes to access services.

              • The Interface Definition that defines how to request services.

              • The Interface Implementation/Plug-in that provides the required processing.

              • The Framework that provides the clients with the required access to the implementations.

              The relationships can be represented as follows:

              - Plug-in relationships -

              The instantiation mechanism is responsible for providing the services that identify, and load the correct implementation at run-time.

              Interface

              Is an abstraction that an entity provides of itself to the outside. This separates the methods of external communication from internal operation. It allows internal modification and this modification does not affect the outside entities interaction with the interface. An interface can provide multiple abstractions.

              Interface API / Interface Definition

              Is a template for an interface implementation.

              Interface Client/Client

              Is an application that uses the interface definition.

              Interface Implementation Collection

              Is a collection of interface implementations/plug-ins.

              Registry

              Is a collection of plug-ins registered with the framework.

              Architecture

              The plug-in framework employs the client server architecture. The client session is a singleton per process thread.

              - Plug-in framework architecture -

              The functional components of the plug-in framework are:

              • The Client /Interface Client that invokes the available services via the interface definition.

              • The Server / Framework controls access to a registry of available implementations that is used for interface implementation resolution and loading.

                The server facilitates:

                • Addition and removal of interface implementations.

                  The addition, removal or modifications to an implementation is notified to the server. The server updates the changes in the registry.

                • Search/Access mechanisms.

                  The registry data is maintained as a hierarchical arrangement of implementations. The complete data is scanned and matching interface implementation list is produced as a result of search.

                • Resolution mechanisms.

                  The best fit implementation from the resultant search is identified.

                • Load control.

                  Controls access to a single instance of the available implementations. The implementation identification information is used to load the appropriate collection.

              APIs API Description

              REComSession

              Resolves, instantiates, and destroys interface class implementations requested by the plug-in framework clients.

              Typical uses

              The plug-in framework allows:

              • Framework developers to write interface definitions and extend interfaces.

              • Plug-in writer to implement the interfaces.

              • Plug-in user to use the interfaces.

              Framework Developer Tutorials Plug-in Writer's Tutorials Plug-in User's Tutorials \ No newline at end of file +Plug-In Framework Overview +

              The Plug-in (ECom) framework is a generic framework that provides +a single mechanism to register and discover plug-ins and load an appropriate +plug-in.

              +
              Purpose

              In early versions of Symbian platform, +plug-ins were provided by polymorphic interface DLLs. +All the frameworks within the Symbian platform that needed to use +plug-ins had to provide their own mechanisms for the clients to discover +and instantiate the implementations. This resulted in duplication +of functionality.

              The Plug-In framework is intended to provide +a common and system-wide mechanism for instantiating a dynamically +determined component.

              Three distinct users of the plug-in +framework are:

                +
              • Framework or +Application designers

                These users need to understand interface +definition design and platform security implications.

              • +
              • Plug-in writers

                These users need to understand interface implementation, DLL +creation and platform security implementation issue.

              • +
              • Plug-in users

                These users need to understand that the plug-in framework helps +in selecting the plug-in but sometimes may need to specify which implementation +the framework should choose.

              • +
              +
              Required background

              Run-time Binding: This is called dynamic binding or late binding. The linking of +a routine or object is performed during runtime based on the requirements.

              DLL (Dynamic Link Library): Is a piece of code (a library) +that is linked to a program at runtime rather than during the build +process. The code inside a DLL can be shared by several clients at +the same time without being duplicated in the mobile memory.

              In addition , the user should be aware of the Platform Security +Considerations of the plug-in framework architecture.

              +
              Key concepts and terms
              + +
              Plug-in
              +

              In computing, a plug-in(extension) consists of a computer program +that interacts with a host application(a web browser or an email client) +to provide a very specific function on demand.

              Applications +support plugins to:

                +
              • Enable third-party +developers to create capabilities to extend an application.

              • +
              • Reduce the size +of an application.

              • +
              • Separate source +code from an application.

              • +
              +
              + +
              Plug-in System
              +

              A client wishes to access a plug-in. The plug-in details are +known only at run-time. The general characteristics of the plug-in +are defined in an interface. Multiple variants of the plug-in can +co-exist.

              The four clearly-defined roles of a plug-in system +are:

                +
              • The Client that wishes to access services.

              • +
              • The Interface +Definition that defines how to request services.

              • +
              • The Interface +Implementation/Plug-in that provides the required processing.

              • +
              • The Framework that provides the clients with the required access to the implementations.

              • +

              The relationships can be represented as follows:

              + Plug-in relationships + +

              The instantiation mechanism is responsible for providing +the services that identify, and load the correct implementation at +run-time.

              +
              + +
              Interface
              +

              Is an abstraction that an entity provides of itself to the +outside. This separates the methods of external communication from +internal operation. It allows internal modification and this modification +does not affect the outside entities interaction with the interface. +An interface can provide multiple abstractions.

              +
              + +
              Interface API / Interface Definition
              +

              Is a template for an interface implementation.

              +
              + +
              Interface Client/Client
              +

              Is an application that uses the interface definition.

              +
              + +
              Interface Implementation Collection
              +

              Is a collection of interface implementations/plug-ins.

              +
              + +
              Registry
              +

              Is a collection of plug-ins registered with the framework.

              +
              +
              +
              Architecture

              The plug-in framework employs +the client server architecture. The client session is a singleton +per process thread.

              + Plug-in framework architecture + +

              The functional components of the plug-in framework are:

                +
              • The Client +/Interface Client that invokes the available services via the +interface definition.

              • +
              • The Server +/ Framework controls access to a registry of available implementations +that is used for interface implementation resolution and loading.

                The server facilitates:

                  +
                • Addition and +removal of interface implementations.

                  The addition, removal +or modifications to an implementation is notified to the server. The +server updates the changes in the registry.

                • +
                • Search/Access +mechanisms.

                  The registry data is maintained as a hierarchical +arrangement of implementations. The complete data is scanned and matching +interface implementation list is produced as a result of search.

                • +
                • Resolution mechanisms.

                  The best fit implementation from the resultant search is identified.

                • +
                • Load control.

                  Controls access to a single instance of the available implementations. +The implementation identification information is used to load the +appropriate collection.

                • +
              • +
              +
              APIs + + + +API +Description + + + + +

              REComSession

              +

              Resolves, instantiates, and destroys interface class implementations +requested by the plug-in framework clients.

              +
              + + +
              +
              Typical uses

              The plug-in framework allows:

                +
              • Framework developers +to write interface definitions and extend interfaces.

              • +
              • Plug-in writer +to implement the interfaces.

              • +
              • Plug-in user +to use the interfaces.

              • +
              +
              +Framework +Developer Tutorials +Plug-in +Writer's Tutorials +Plug-in +User's Tutorials +
              \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8A8FA00B-58FA-4D4E-A018-70D5558BCBFE_d0e271578_href.png Binary file Symbian3/PDK/Source/GUID-8A8FA00B-58FA-4D4E-A018-70D5558BCBFE_d0e271578_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8A8FA00B-58FA-4D4E-A018-70D5558BCBFE_d0e277578_href.png Binary file Symbian3/PDK/Source/GUID-8A8FA00B-58FA-4D4E-A018-70D5558BCBFE_d0e277578_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8AB9527A-1C7E-5D3A-9AB2-A3FA1F5A2D5B-GENID-1-12-1-26-1-1-11-1-1-3-1-6-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-8AB9527A-1C7E-5D3A-9AB2-A3FA1F5A2D5B-GENID-1-12-1-26-1-1-11-1-1-3-1-6-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,675 @@ + + + + + +UIDs +
              Symmetric cipher +algorithm UIDs + + + +UID +Description +Value +RFC standard + + + + +

              KDesUid

              +

              DES (Data Encryption Standard) algorithm

              +

              0x10283179

              +

              RFC +2406

              +
              + +

              K3DesUid

              +

              3DES (Triple Data Encryption Standard) algorithm

              +

              0x1028317a

              +

              RFC +2405

              RFC +2420

              +
              + +

              KRc2Uid

              +

              RC2 algorithm

              +

              0x1028317b

              +

              RFC +2268

              +
              + +

              KArc4Uid

              +

              ARC4 ('alleged' RC4) algorithm (strong random number generator)

              +

              0x1028317c

              +

              RFC +2144

              +
              + +

              KAesUid

              +

              AES (Advanced Encryption Standard)

              +

              0x1028317d

              +

              RFC +3268

              +
              + +

              KMisty1Uid

              +

              Misty1 algorithm

              +

              0x102831be

              +

              RFC +2994

              +
              + +

              KMisty2Uid

              +

              Misty2 algorithm

              +

              0x102831bf

              + +
              + +

              KKasumiUid

              +

              Kasumi algorithm

              +

              0x102831c0

              +

              RFC +3711

              +
              + + +

              The symmetric cipher algorithm UIDs are used by the following +CryptoSPI APIs:

                +
              • CSymmetricCipherFactory::CreateSymmetricCipherL()

              • +
              • CRuleSelector::CreateSymmetricCipherL()

              • +
              • CCryptoPluginEntry::CreateSymmetricCipherL()

              • +
              • CAsymmetricCipherFactory::CreateAsymmetricCipherL()

              • +
              • CRuleSelector::CreateAsymmetricCipherL()

              • +
              • CCryptoPluginEntry::CreateAsymmetricCipherL()

              • +
              +
              Asymmetric +cipher algorithm UIDs + + + +UID +Description +Value +RFC standard + + + + +

              KRsaCipherUid

              +

              RSA

              +

              0x1028317e

              +

              RFC +2437: PKCS #1: RSA Cryptography Specifications Version 2.0

              RFC 2313 - PKCS +#1: RSA Encryption Version 1.5

              +
              + + +

              The asymmetric cipher algorithm UIDs are used by the following + CryptoSPI APIs:

                +
              • CAsymmetricCipherFactory::CreateAsymmetricCipherL()

              • +
              • CRuleSelector::CreateAsymmetricCipherL()

              • +
              • CCryptoPluginEntry::CreateAsymmetricCipherL()

              • +
              • CAsymmetricCipherFactory::CreateAsyncAsymmetricCipherL()

              • +
              • CRuleSelector::CreateAsyncAsymmetricCipherL()

              • +
              +
              Signer algorithm +UIDs + + + +UID +Description +Value +RFC standard + + + + +

              KRsaSignerUid

              +

              RSA Signer algorithm

              +

              0x1028317f

              +

              RFC +4853

              +
              + +

              KDsaSignerUid

              +

              DSA Signer algorithm

              +

              0x10283180

              +

              RFC +3279

              +
              + + +

              The signer algorithm UIDs are used by the following CryptoSPI +APIs:

                +
              • CSignatureFactory::CreateSignerL()

              • +
              • CRuleSelector::CreateSignerL()

              • +
              • CSignatureFactory::CreateAsyncSignerL()

              • +
              • CRuleSelector::CreateAsyncSignerL()

              • +
              +
              Verifier algorithm +UIDs + + + +UID +Description +Value +RFC standard + + + + +

              KRsaVerifierUid

              +

              RSA Verifier algorithm

              +

              0x10283181

              +

              RFC +4853

              +
              + +

              KDsaVerifierUid

              +

              DSA Verifier algorithm

              +

              0x10283182

              +

              RFC +3279

              +
              + + +

              The verifier algorithm UIDs are used by the following CryptoSPI +APIs:

                +
              • CSignatureFactory::CreateVerifierL()

              • +
              • MPluginSelector::CreateVerifierL()

              • +
              • CSignatureFactory::CreateAsyncVerifierL()

              • +
              • CRuleSelector::CreateAsyncVerifierL()

              • +
              +
              Key Agreement +algorithm UIDs + + + +UID +Description +Value +RFC standard + + + + +

              KDHAgreementUid

              +

              Diffie-Hellman Key Agreement algorithm

              +

              0x10283183

              +

              RFC +2631

              +
              + + +

              The Key Agreement algorithm UIDs are used by the following CryptoSPI +APIs:

                +
              • CKeyAgreementFactory::CreateKeyAgreementL()

              • +
              • CRuleSelector::CreateKeyAgreementL()

              • +
              • CCryptoPluginEntry::CreateKeyAgreementL()

              • +
              • CKeyAgreementFactory::CreateAsyncKeyAgreementL()

              • +
              • CRuleSelector::CreateAsyncKeyAgreementL()

              • +
              +
              Key Pair Generator +algorithm UIDs + + + +UID +Description +Value +RFC standard + + + + +

              KDHKeyPairGeneratorUid

              +

              DH Key Pair Generator algorithm

              +

              0x10283184

              +

              RFC +2539

              +
              + +

              KRSAKeyPairGeneratorUid

              +

              RSA Key Pair Generator algorithm

              +

              0x10283185

              +

              RFC +4055

              +
              + +

              KDSAKeyPairGeneratorUid

              +

              DSA Key Pair Generator algorithm

              +

              0x10283186

              + +
              + + +

              The Key Pair Generator algorithm UIDs are used by the following +CryptoSPI APIs:

                +
              • CKeyPairGeneratorFactory::CreateAsyncKeyPairGeneratorL()

              • +
              • CRuleSelector::CreateAsyncKeyPairGeneratorL()

              • +
              +
              Padding modes + + + +UID +Description +Value + + + + +

              KPaddingModeNoneUid

              +

              Padding Mode None Uid

              +

              0x10283188

              +
              + +

              KPaddingModeSSLv3Uid

              +

              SSLv3 Padding Mode Uid

              +

              0x10283189

              +
              + +

              KPaddingModePKCS7Uid

              +

              PKCS7 Padding Mode Uid

              +

              0x1028318a

              +
              + +

              KPaddingModePkcs1_v1_5_EncryptionUid

              +

              Pkcs1 v1.5 Encryption Padding mode Uid

              +

              0x1028318b

              +
              + +

              KPaddingModePkcs1_v1_5_SignatureUid

              +

              Pkcs1 v1.5 Signature Padding mode Uid

              +

              0x1028318c

              +
              + + +

              The padding modes are used by the following CryptoSPI APIs:

                +
              • CAsymmetricCipherFactory::CreateAsymmetricCipherL()

              • +
              • CAsymmetricCipherFactory::CreateAsyncAsymmetricCipherL()

              • +
              +
              Cryptography +modes + + + +UID +Description +Value + + + + +

              KCryptoModeEncryptUid

              +

              Crypto Encrypt Mode Uid

              +

              0x1028318d

              +
              + +

              KCryptoModeDecryptUid

              +

              Crypto Decrypt Mode Uid

              +

              0x1028318e

              +
              + +

              KCryptoModeNoneUid

              +

              Crypto None Mode Uid

              +

              0x1028318f

              +
              + + +

              The cryptography modes are used by the following CryptoSPI APIs:

                +
              • CAsymmetricCipherFactory::CreateAsymmetricCipherL()

              • +
              • CAsymmetricCipherFactory::CreateAsyncAsymmetricCipherL()

              • +
              +
              Hash algorithm UIDs + + + +UID +Description +Value +RFC standard + + + + +

              KMd2Uid

              +

              MD2, Message-Digest Algorithm

              +

              0x10283173

              +

              RFC +1319

              +
              + +

              KMd4Uid

              +

              MD4, Message-Digest Algorithm (Output: 128 bit message digest)

              +

              0x2000B341

              +

              RFC +1320

              +
              + +

              KMd5Uid

              +

              MD5 ,Message-Digest Algorithm (output:128-bit "fingerprint" or "message +digest)

              +

              0x10283174

              +

              RFC +1321

              +
              + +

              KSha1Uid

              +

              Secure Hash Algorithm(output: 160-bit message digest)

              +

              0x10283175

              +

              FIPS +180-1 and RFC +3174

              +
              + +

              KSha224Uid

              +

              Sha224 algorithm

              +

              0x2000E258

              +

              FIPS 180-2 (with change notice), RFC3874 and FIPS 180-3

              +
              + +

              KSha256Uid

              +

              Sha256 algorithm

              +

              0x2000E259

              +

              FIPS 180-2 and RFC 4634

              +
              + +

              KSha384Uid

              +

              Sha384 algorithm

              +

              0x2000E25A

              +

              FIPS 180-2 and RFC 4634

              +
              + +

              KSha512Uid

              +

              Sha512 algorithm

              +

              0x2000E25B

              +

              FIPS 180-2 and RFC 4634

              +
              + + +

              The hash algorithm UIDs are used by the following APIs:

                +
              • CryptoSpi::CHashFactory::CreateHashL()

              • +
              • CryptoSpi::CRuleSelector::CreateHashL()

              • +
              • CryptoSpi::CCryptoPluginEntry::CreateHashL()

              • +
              • CryptoSpi::CHashFactory::CreateAsyncHashL()

              • +
              • CryptoSpi::CRuleSelector::CreateAsyncHashL()

              • +
              +
              Random algorithm UIDs + + + +UID +Description +Value + + + + +

              KRandomUid

              +

              Random algorithm UID

              +

              0x10283178

              +
              + + +

              The random algorithm UIDs are used by the following APIs:

                +
              • CryptoSpi::CRandomFactory::CreateRandomL()

              • +
              • CryptoSpi::CRuleSelector::CreateRandomL()

              • +
              • CryptoSpi::CRandomFactory::CreateAsyncRandomL()

              • +
              • CryptoSpi::CRuleSelector::CreateAsyncRandomL()

              • +
              +
              Symmetric key algorithm UIDs + + + +UID +Description +Value + + + + +

              KDesUid

              +

              Des algorithm UID

              +

              0x10283179

              +
              + +

              K3DesUid

              +

              3Des algorithm UID

              +

              0x1028317a

              +
              + +

              KRc2Uid

              +

              RC2 algorithm UID

              +

              0x1028317b

              +
              + +

              KArc4Uid

              +

              ARC4 algorithm UID

              +

              0x1028317c

              +
              + +

              KAesUid

              +

              AES algorithm UID

              +

              0x1028317d

              +
              + +

              KMisty1Uid

              +

              Misty1 algorithm UID

              +

              0x102831be

              +
              + +

              KMisty2Uid

              +

              Misty2 algorithm UID

              +

              0x102831bf

              +
              + +

              KKasumiUid

              +

              Kasumi algorithm UID

              +

              0x102831c0

              +
              + + +

              The symmetric key algorithm UIDs are used by the following API:

                +
              • CryptoSpi::CSymmetricCipher::CSymmetricCipher()

              • +
              +
              Asymmetric key algorithm UIDs + + + +UID +Description +Value + + + + +

              KRsaCipherUid

              +

              RSA Cipher algorithm UID

              +

              0x1028317e

              +
              + +

              KRsaSignerUid

              +

              RSA Signer algorithm UID

              +

              0x1028317f

              +
              + +

              KRsaVerifierUid

              +

              RSA Verifier algorithm UID

              +

              0x10283181

              +
              + +

              KRSAKeyPairGeneratorUid

              +

              RSA Key Pair Generator algorithm UID

              +

              0x10283185

              +
              + +

              KDsaSignerUid

              +

              DSA Signer algorithm UID

              +

              0x10283180

              +
              + +

              KDsaVerifierUid

              +

              DSA Verifier algorithm UID

              +

              0x10283182

              +
              + +

              KDSAKeyPairGeneratorUid

              +

              DSA Key Pair Generator algorithm UID

              +

              0x10283186

              +
              + +

              KDHAgreementUid

              +

              DH Agreement algorithm UID

              +

              0x10283183

              +
              + +

              KDHKeyPairGeneratorUid

              +

              DH Key Pair Generator algorithm UID

              +

              0x10283184

              +
              + +

              KEccCipherUid

              +

              ECC Key Cipher algorithm UID

              +

              0x20024482

              +
              + +

              KEccSignerUid

              +

              ECC Key Signer algorithm UID

              +

              0x20024483

              +
              + +

              KEccVerifierUid

              +

              ECC Key Verifier algorithm UID

              +

              0x20024486

              +
              + +

              KEccKeyPairGeneratorUid

              +

              ECC Key Pair Generator algorithm UID

              +

              0x20024487

              +
              + + +

              Note: The ECC key UIDs are enabled only if the macros SYMBIAN_ENABLE_SDP_ECC and SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT are enabled.

              The asymmetric key algorithm UIDs are used by the following +API:

                +
              • CryptoSpi::CAsymmetricCipher::CAsymmetricCipher()

              • +
              +
              Other UIDs + + + +UID +Description +Value + + + + +

              KPassedHandleToKeyUid

              +

              Use this UID as CKey key parameter, +whenever the CryptoSPI user has just the handle and not the actual key. The +CryptoSPI plug-in searches for this ID and invokes the appropriate APIs for +providing access to the key.

              Note: This UID is enabled only +if the SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT macro is enabled.

              +

              0x20025161

              +
              + + +

              Example usage of KPassedHandleToKeyUid

              The following +sequence of steps explains the use of KPassedHandleToKeyUid in +the key parameter, which, along with the key property creates a CKey object. +This CKey object is one of the parameters +in the creation of a signer object, which can be used for performing signing +operations.

                +
              1. Define the key property.

                Create +a CCryptoParams object for the key parameter. Add the key +handle and KPassedHandleToKeyUid to the CCryptoParams object +by using CCryptoParams::AddL().

              2. +
              3. Create a CKey object +by passing instance of the key property and the CCryptoParams object +containing KPassedHandleToKeyUid.

              4. +
              5. Create a signer object +by using the CKey object as one of the +parameters. This signer object can be used for performing signing operations.

              6. +

              The following code snippet demonstrates the use of KPassedHandleToKeyUid:

              +. +. +. +// Define the key property +TKeyProperty keyProperty; +keyProperty.iAlgorithmUid = KRsaSignerUid; + +// Create the key parameter object +CCryptoParams* keyParameters = CCryptoParams::NewLC(); + +// iHandle is of type TCTTokenObjectHandle. It contains handle to the key +keyParameters->AddL(iHandle.iObjectId, KPassedHandleToKeyUid); + +// Create a CKey object +CKey* newKey = CKey::NewL(keyProperty, *keyParameters); + +// Create a signer plug-in object +CSigner * implsig = NULL; + +// Create the signer object +CSignatureFactory::CreateSignerL(implsig, KRsaSignerUid, *newKey, KPaddingModePkcs1_v1_5_SignatureUid, NULL); +. +. +. +
              +
              Operation modes + + + +UID +Description +Value + + + + +

              KOperationModeNoneUid

              +

              None Mode UID

              +

              0x10283190

              +
              + +

              KOperationModeECBUid

              +

              ECB Mode UID

              +

              0x10283191

              +
              + +

              KOperationModeCBCUid

              +

              CBC Mode UID

              +

              0x10283192

              +
              + +

              KOperationModeOFBUid

              +

              OFB Mode UID

              +

              0x10283193

              +
              + +

              KOperationModeCFBUid

              +

              CFB Mode UID

              +

              0x10283194

              +
              + +

              KOperationModeCTRUid

              +

              CTR Mode UID

              +

              0x10283195

              +
              + + +

              The operation modes are used by the following APIs:

                +
              • CryptoSpi::CHashFactory::CreateHashL()

              • +
              • CryptoSpi::CHashFactory::CreateAsyncHashL()

              • +
              +
              \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8AB9527A-1C7E-5D3A-9AB2-A3FA1F5A2D5B-GENID-1-12-1-26-1-1-9-1-11-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-8AB9527A-1C7E-5D3A-9AB2-A3FA1F5A2D5B-GENID-1-12-1-26-1-1-9-1-11-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,675 @@ + + + + + +UIDs +
              Symmetric cipher +algorithm UIDs + + + +UID +Description +Value +RFC standard + + + + +

              KDesUid

              +

              DES (Data Encryption Standard) algorithm

              +

              0x10283179

              +

              RFC +2406

              +
              + +

              K3DesUid

              +

              3DES (Triple Data Encryption Standard) algorithm

              +

              0x1028317a

              +

              RFC +2405

              RFC +2420

              +
              + +

              KRc2Uid

              +

              RC2 algorithm

              +

              0x1028317b

              +

              RFC +2268

              +
              + +

              KArc4Uid

              +

              ARC4 ('alleged' RC4) algorithm (strong random number generator)

              +

              0x1028317c

              +

              RFC +2144

              +
              + +

              KAesUid

              +

              AES (Advanced Encryption Standard)

              +

              0x1028317d

              +

              RFC +3268

              +
              + +

              KMisty1Uid

              +

              Misty1 algorithm

              +

              0x102831be

              +

              RFC +2994

              +
              + +

              KMisty2Uid

              +

              Misty2 algorithm

              +

              0x102831bf

              + +
              + +

              KKasumiUid

              +

              Kasumi algorithm

              +

              0x102831c0

              +

              RFC +3711

              +
              + + +

              The symmetric cipher algorithm UIDs are used by the following +CryptoSPI APIs:

                +
              • CSymmetricCipherFactory::CreateSymmetricCipherL()

              • +
              • CRuleSelector::CreateSymmetricCipherL()

              • +
              • CCryptoPluginEntry::CreateSymmetricCipherL()

              • +
              • CAsymmetricCipherFactory::CreateAsymmetricCipherL()

              • +
              • CRuleSelector::CreateAsymmetricCipherL()

              • +
              • CCryptoPluginEntry::CreateAsymmetricCipherL()

              • +
              +
              Asymmetric +cipher algorithm UIDs + + + +UID +Description +Value +RFC standard + + + + +

              KRsaCipherUid

              +

              RSA

              +

              0x1028317e

              +

              RFC +2437: PKCS #1: RSA Cryptography Specifications Version 2.0

              RFC 2313 - PKCS +#1: RSA Encryption Version 1.5

              +
              + + +

              The asymmetric cipher algorithm UIDs are used by the following + CryptoSPI APIs:

                +
              • CAsymmetricCipherFactory::CreateAsymmetricCipherL()

              • +
              • CRuleSelector::CreateAsymmetricCipherL()

              • +
              • CCryptoPluginEntry::CreateAsymmetricCipherL()

              • +
              • CAsymmetricCipherFactory::CreateAsyncAsymmetricCipherL()

              • +
              • CRuleSelector::CreateAsyncAsymmetricCipherL()

              • +
              +
              Signer algorithm +UIDs + + + +UID +Description +Value +RFC standard + + + + +

              KRsaSignerUid

              +

              RSA Signer algorithm

              +

              0x1028317f

              +

              RFC +4853

              +
              + +

              KDsaSignerUid

              +

              DSA Signer algorithm

              +

              0x10283180

              +

              RFC +3279

              +
              + + +

              The signer algorithm UIDs are used by the following CryptoSPI +APIs:

                +
              • CSignatureFactory::CreateSignerL()

              • +
              • CRuleSelector::CreateSignerL()

              • +
              • CSignatureFactory::CreateAsyncSignerL()

              • +
              • CRuleSelector::CreateAsyncSignerL()

              • +
              +
              Verifier algorithm +UIDs + + + +UID +Description +Value +RFC standard + + + + +

              KRsaVerifierUid

              +

              RSA Verifier algorithm

              +

              0x10283181

              +

              RFC +4853

              +
              + +

              KDsaVerifierUid

              +

              DSA Verifier algorithm

              +

              0x10283182

              +

              RFC +3279

              +
              + + +

              The verifier algorithm UIDs are used by the following CryptoSPI +APIs:

                +
              • CSignatureFactory::CreateVerifierL()

              • +
              • MPluginSelector::CreateVerifierL()

              • +
              • CSignatureFactory::CreateAsyncVerifierL()

              • +
              • CRuleSelector::CreateAsyncVerifierL()

              • +
              +
              Key Agreement +algorithm UIDs + + + +UID +Description +Value +RFC standard + + + + +

              KDHAgreementUid

              +

              Diffie-Hellman Key Agreement algorithm

              +

              0x10283183

              +

              RFC +2631

              +
              + + +

              The Key Agreement algorithm UIDs are used by the following CryptoSPI +APIs:

                +
              • CKeyAgreementFactory::CreateKeyAgreementL()

              • +
              • CRuleSelector::CreateKeyAgreementL()

              • +
              • CCryptoPluginEntry::CreateKeyAgreementL()

              • +
              • CKeyAgreementFactory::CreateAsyncKeyAgreementL()

              • +
              • CRuleSelector::CreateAsyncKeyAgreementL()

              • +
              +
              Key Pair Generator +algorithm UIDs + + + +UID +Description +Value +RFC standard + + + + +

              KDHKeyPairGeneratorUid

              +

              DH Key Pair Generator algorithm

              +

              0x10283184

              +

              RFC +2539

              +
              + +

              KRSAKeyPairGeneratorUid

              +

              RSA Key Pair Generator algorithm

              +

              0x10283185

              +

              RFC +4055

              +
              + +

              KDSAKeyPairGeneratorUid

              +

              DSA Key Pair Generator algorithm

              +

              0x10283186

              + +
              + + +

              The Key Pair Generator algorithm UIDs are used by the following +CryptoSPI APIs:

                +
              • CKeyPairGeneratorFactory::CreateAsyncKeyPairGeneratorL()

              • +
              • CRuleSelector::CreateAsyncKeyPairGeneratorL()

              • +
              +
              Padding modes + + + +UID +Description +Value + + + + +

              KPaddingModeNoneUid

              +

              Padding Mode None Uid

              +

              0x10283188

              +
              + +

              KPaddingModeSSLv3Uid

              +

              SSLv3 Padding Mode Uid

              +

              0x10283189

              +
              + +

              KPaddingModePKCS7Uid

              +

              PKCS7 Padding Mode Uid

              +

              0x1028318a

              +
              + +

              KPaddingModePkcs1_v1_5_EncryptionUid

              +

              Pkcs1 v1.5 Encryption Padding mode Uid

              +

              0x1028318b

              +
              + +

              KPaddingModePkcs1_v1_5_SignatureUid

              +

              Pkcs1 v1.5 Signature Padding mode Uid

              +

              0x1028318c

              +
              + + +

              The padding modes are used by the following CryptoSPI APIs:

                +
              • CAsymmetricCipherFactory::CreateAsymmetricCipherL()

              • +
              • CAsymmetricCipherFactory::CreateAsyncAsymmetricCipherL()

              • +
              +
              Cryptography +modes + + + +UID +Description +Value + + + + +

              KCryptoModeEncryptUid

              +

              Crypto Encrypt Mode Uid

              +

              0x1028318d

              +
              + +

              KCryptoModeDecryptUid

              +

              Crypto Decrypt Mode Uid

              +

              0x1028318e

              +
              + +

              KCryptoModeNoneUid

              +

              Crypto None Mode Uid

              +

              0x1028318f

              +
              + + +

              The cryptography modes are used by the following CryptoSPI APIs:

                +
              • CAsymmetricCipherFactory::CreateAsymmetricCipherL()

              • +
              • CAsymmetricCipherFactory::CreateAsyncAsymmetricCipherL()

              • +
              +
              Hash algorithm UIDs + + + +UID +Description +Value +RFC standard + + + + +

              KMd2Uid

              +

              MD2, Message-Digest Algorithm

              +

              0x10283173

              +

              RFC +1319

              +
              + +

              KMd4Uid

              +

              MD4, Message-Digest Algorithm (Output: 128 bit message digest)

              +

              0x2000B341

              +

              RFC +1320

              +
              + +

              KMd5Uid

              +

              MD5 ,Message-Digest Algorithm (output:128-bit "fingerprint" or "message +digest)

              +

              0x10283174

              +

              RFC +1321

              +
              + +

              KSha1Uid

              +

              Secure Hash Algorithm(output: 160-bit message digest)

              +

              0x10283175

              +

              FIPS +180-1 and RFC +3174

              +
              + +

              KSha224Uid

              +

              Sha224 algorithm

              +

              0x2000E258

              +

              FIPS 180-2 (with change notice), RFC3874 and FIPS 180-3

              +
              + +

              KSha256Uid

              +

              Sha256 algorithm

              +

              0x2000E259

              +

              FIPS 180-2 and RFC 4634

              +
              + +

              KSha384Uid

              +

              Sha384 algorithm

              +

              0x2000E25A

              +

              FIPS 180-2 and RFC 4634

              +
              + +

              KSha512Uid

              +

              Sha512 algorithm

              +

              0x2000E25B

              +

              FIPS 180-2 and RFC 4634

              +
              + + +

              The hash algorithm UIDs are used by the following APIs:

                +
              • CryptoSpi::CHashFactory::CreateHashL()

              • +
              • CryptoSpi::CRuleSelector::CreateHashL()

              • +
              • CryptoSpi::CCryptoPluginEntry::CreateHashL()

              • +
              • CryptoSpi::CHashFactory::CreateAsyncHashL()

              • +
              • CryptoSpi::CRuleSelector::CreateAsyncHashL()

              • +
              +
              Random algorithm UIDs + + + +UID +Description +Value + + + + +

              KRandomUid

              +

              Random algorithm UID

              +

              0x10283178

              +
              + + +

              The random algorithm UIDs are used by the following APIs:

                +
              • CryptoSpi::CRandomFactory::CreateRandomL()

              • +
              • CryptoSpi::CRuleSelector::CreateRandomL()

              • +
              • CryptoSpi::CRandomFactory::CreateAsyncRandomL()

              • +
              • CryptoSpi::CRuleSelector::CreateAsyncRandomL()

              • +
              +
              Symmetric key algorithm UIDs + + + +UID +Description +Value + + + + +

              KDesUid

              +

              Des algorithm UID

              +

              0x10283179

              +
              + +

              K3DesUid

              +

              3Des algorithm UID

              +

              0x1028317a

              +
              + +

              KRc2Uid

              +

              RC2 algorithm UID

              +

              0x1028317b

              +
              + +

              KArc4Uid

              +

              ARC4 algorithm UID

              +

              0x1028317c

              +
              + +

              KAesUid

              +

              AES algorithm UID

              +

              0x1028317d

              +
              + +

              KMisty1Uid

              +

              Misty1 algorithm UID

              +

              0x102831be

              +
              + +

              KMisty2Uid

              +

              Misty2 algorithm UID

              +

              0x102831bf

              +
              + +

              KKasumiUid

              +

              Kasumi algorithm UID

              +

              0x102831c0

              +
              + + +

              The symmetric key algorithm UIDs are used by the following API:

                +
              • CryptoSpi::CSymmetricCipher::CSymmetricCipher()

              • +
              +
              Asymmetric key algorithm UIDs + + + +UID +Description +Value + + + + +

              KRsaCipherUid

              +

              RSA Cipher algorithm UID

              +

              0x1028317e

              +
              + +

              KRsaSignerUid

              +

              RSA Signer algorithm UID

              +

              0x1028317f

              +
              + +

              KRsaVerifierUid

              +

              RSA Verifier algorithm UID

              +

              0x10283181

              +
              + +

              KRSAKeyPairGeneratorUid

              +

              RSA Key Pair Generator algorithm UID

              +

              0x10283185

              +
              + +

              KDsaSignerUid

              +

              DSA Signer algorithm UID

              +

              0x10283180

              +
              + +

              KDsaVerifierUid

              +

              DSA Verifier algorithm UID

              +

              0x10283182

              +
              + +

              KDSAKeyPairGeneratorUid

              +

              DSA Key Pair Generator algorithm UID

              +

              0x10283186

              +
              + +

              KDHAgreementUid

              +

              DH Agreement algorithm UID

              +

              0x10283183

              +
              + +

              KDHKeyPairGeneratorUid

              +

              DH Key Pair Generator algorithm UID

              +

              0x10283184

              +
              + +

              KEccCipherUid

              +

              ECC Key Cipher algorithm UID

              +

              0x20024482

              +
              + +

              KEccSignerUid

              +

              ECC Key Signer algorithm UID

              +

              0x20024483

              +
              + +

              KEccVerifierUid

              +

              ECC Key Verifier algorithm UID

              +

              0x20024486

              +
              + +

              KEccKeyPairGeneratorUid

              +

              ECC Key Pair Generator algorithm UID

              +

              0x20024487

              +
              + + +

              Note: The ECC key UIDs are enabled only if the macros SYMBIAN_ENABLE_SDP_ECC and SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT are enabled.

              The asymmetric key algorithm UIDs are used by the following +API:

                +
              • CryptoSpi::CAsymmetricCipher::CAsymmetricCipher()

              • +
              +
              Other UIDs + + + +UID +Description +Value + + + + +

              KPassedHandleToKeyUid

              +

              Use this UID as CKey key parameter, +whenever the CryptoSPI user has just the handle and not the actual key. The +CryptoSPI plug-in searches for this ID and invokes the appropriate APIs for +providing access to the key.

              Note: This UID is enabled only +if the SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT macro is enabled.

              +

              0x20025161

              +
              + + +

              Example usage of KPassedHandleToKeyUid

              The following +sequence of steps explains the use of KPassedHandleToKeyUid in +the key parameter, which, along with the key property creates a CKey object. +This CKey object is one of the parameters +in the creation of a signer object, which can be used for performing signing +operations.

                +
              1. Define the key property.

                Create +a CCryptoParams object for the key parameter. Add the key +handle and KPassedHandleToKeyUid to the CCryptoParams object +by using CCryptoParams::AddL().

              2. +
              3. Create a CKey object +by passing instance of the key property and the CCryptoParams object +containing KPassedHandleToKeyUid.

              4. +
              5. Create a signer object +by using the CKey object as one of the +parameters. This signer object can be used for performing signing operations.

              6. +

              The following code snippet demonstrates the use of KPassedHandleToKeyUid:

              +. +. +. +// Define the key property +TKeyProperty keyProperty; +keyProperty.iAlgorithmUid = KRsaSignerUid; + +// Create the key parameter object +CCryptoParams* keyParameters = CCryptoParams::NewLC(); + +// iHandle is of type TCTTokenObjectHandle. It contains handle to the key +keyParameters->AddL(iHandle.iObjectId, KPassedHandleToKeyUid); + +// Create a CKey object +CKey* newKey = CKey::NewL(keyProperty, *keyParameters); + +// Create a signer plug-in object +CSigner * implsig = NULL; + +// Create the signer object +CSignatureFactory::CreateSignerL(implsig, KRsaSignerUid, *newKey, KPaddingModePkcs1_v1_5_SignatureUid, NULL); +. +. +. +
              +
              Operation modes + + + +UID +Description +Value + + + + +

              KOperationModeNoneUid

              +

              None Mode UID

              +

              0x10283190

              +
              + +

              KOperationModeECBUid

              +

              ECB Mode UID

              +

              0x10283191

              +
              + +

              KOperationModeCBCUid

              +

              CBC Mode UID

              +

              0x10283192

              +
              + +

              KOperationModeOFBUid

              +

              OFB Mode UID

              +

              0x10283193

              +
              + +

              KOperationModeCFBUid

              +

              CFB Mode UID

              +

              0x10283194

              +
              + +

              KOperationModeCTRUid

              +

              CTR Mode UID

              +

              0x10283195

              +
              + + +

              The operation modes are used by the following APIs:

                +
              • CryptoSpi::CHashFactory::CreateHashL()

              • +
              • CryptoSpi::CHashFactory::CreateAsyncHashL()

              • +
              +
              \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8AB9527A-1C7E-5D3A-9AB2-A3FA1F5A2D5B.dita --- a/Symbian3/PDK/Source/GUID-8AB9527A-1C7E-5D3A-9AB2-A3FA1F5A2D5B.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,675 +0,0 @@ - - - - - -UIDs -
              Symmetric cipher -algorithm UIDs - - - -UID -Description -Value -RFC standard - - - - -

              KDesUid

              -

              DES (Data Encryption Standard) algorithm

              -

              0x10283179

              -

              RFC -2406

              -
              - -

              K3DesUid

              -

              3DES (Triple Data Encryption Standard) algorithm

              -

              0x1028317a

              -

              RFC -2405

              RFC -2420

              -
              - -

              KRc2Uid

              -

              RC2 algorithm

              -

              0x1028317b

              -

              RFC -2268

              -
              - -

              KArc4Uid

              -

              ARC4 ('alleged' RC4) algorithm (strong random number generator)

              -

              0x1028317c

              -

              RFC -2144

              -
              - -

              KAesUid

              -

              AES (Advanced Encryption Standard)

              -

              0x1028317d

              -

              RFC -3268

              -
              - -

              KMisty1Uid

              -

              Misty1 algorithm

              -

              0x102831be

              -

              RFC -2994

              -
              - -

              KMisty2Uid

              -

              Misty2 algorithm

              -

              0x102831bf

              - -
              - -

              KKasumiUid

              -

              Kasumi algorithm

              -

              0x102831c0

              -

              RFC -3711

              -
              - - -

              The symmetric cipher algorithm UIDs are used by the following -CryptoSPI APIs:

                -
              • CSymmetricCipherFactory::CreateSymmetricCipherL()

              • -
              • CRuleSelector::CreateSymmetricCipherL()

              • -
              • CCryptoPluginEntry::CreateSymmetricCipherL()

              • -
              • CAsymmetricCipherFactory::CreateAsymmetricCipherL()

              • -
              • CRuleSelector::CreateAsymmetricCipherL()

              • -
              • CCryptoPluginEntry::CreateAsymmetricCipherL()

              • -
              -
              Asymmetric -cipher algorithm UIDs - - - -UID -Description -Value -RFC standard - - - - -

              KRsaCipherUid

              -

              RSA

              -

              0x1028317e

              -

              RFC -2437: PKCS #1: RSA Cryptography Specifications Version 2.0

              RFC 2313 - PKCS -#1: RSA Encryption Version 1.5

              -
              - - -

              The asymmetric cipher algorithm UIDs are used by the following - CryptoSPI APIs:

                -
              • CAsymmetricCipherFactory::CreateAsymmetricCipherL()

              • -
              • CRuleSelector::CreateAsymmetricCipherL()

              • -
              • CCryptoPluginEntry::CreateAsymmetricCipherL()

              • -
              • CAsymmetricCipherFactory::CreateAsyncAsymmetricCipherL()

              • -
              • CRuleSelector::CreateAsyncAsymmetricCipherL()

              • -
              -
              Signer algorithm -UIDs - - - -UID -Description -Value -RFC standard - - - - -

              KRsaSignerUid

              -

              RSA Signer algorithm

              -

              0x1028317f

              -

              RFC -4853

              -
              - -

              KDsaSignerUid

              -

              DSA Signer algorithm

              -

              0x10283180

              -

              RFC -3279

              -
              - - -

              The signer algorithm UIDs are used by the following CryptoSPI -APIs:

                -
              • CSignatureFactory::CreateSignerL()

              • -
              • CRuleSelector::CreateSignerL()

              • -
              • CSignatureFactory::CreateAsyncSignerL()

              • -
              • CRuleSelector::CreateAsyncSignerL()

              • -
              -
              Verifier algorithm -UIDs - - - -UID -Description -Value -RFC standard - - - - -

              KRsaVerifierUid

              -

              RSA Verifier algorithm

              -

              0x10283181

              -

              RFC -4853

              -
              - -

              KDsaVerifierUid

              -

              DSA Verifier algorithm

              -

              0x10283182

              -

              RFC -3279

              -
              - - -

              The verifier algorithm UIDs are used by the following CryptoSPI -APIs:

                -
              • CSignatureFactory::CreateVerifierL()

              • -
              • MPluginSelector::CreateVerifierL()

              • -
              • CSignatureFactory::CreateAsyncVerifierL()

              • -
              • CRuleSelector::CreateAsyncVerifierL()

              • -
              -
              Key Agreement -algorithm UIDs - - - -UID -Description -Value -RFC standard - - - - -

              KDHAgreementUid

              -

              Diffie-Hellman Key Agreement algorithm

              -

              0x10283183

              -

              RFC -2631

              -
              - - -

              The Key Agreement algorithm UIDs are used by the following CryptoSPI -APIs:

                -
              • CKeyAgreementFactory::CreateKeyAgreementL()

              • -
              • CRuleSelector::CreateKeyAgreementL()

              • -
              • CCryptoPluginEntry::CreateKeyAgreementL()

              • -
              • CKeyAgreementFactory::CreateAsyncKeyAgreementL()

              • -
              • CRuleSelector::CreateAsyncKeyAgreementL()

              • -
              -
              Key Pair Generator -algorithm UIDs - - - -UID -Description -Value -RFC standard - - - - -

              KDHKeyPairGeneratorUid

              -

              DH Key Pair Generator algorithm

              -

              0x10283184

              -

              RFC -2539

              -
              - -

              KRSAKeyPairGeneratorUid

              -

              RSA Key Pair Generator algorithm

              -

              0x10283185

              -

              RFC -4055

              -
              - -

              KDSAKeyPairGeneratorUid

              -

              DSA Key Pair Generator algorithm

              -

              0x10283186

              - -
              - - -

              The Key Pair Generator algorithm UIDs are used by the following -CryptoSPI APIs:

                -
              • CKeyPairGeneratorFactory::CreateAsyncKeyPairGeneratorL()

              • -
              • CRuleSelector::CreateAsyncKeyPairGeneratorL()

              • -
              -
              Padding modes - - - -UID -Description -Value - - - - -

              KPaddingModeNoneUid

              -

              Padding Mode None Uid

              -

              0x10283188

              -
              - -

              KPaddingModeSSLv3Uid

              -

              SSLv3 Padding Mode Uid

              -

              0x10283189

              -
              - -

              KPaddingModePKCS7Uid

              -

              PKCS7 Padding Mode Uid

              -

              0x1028318a

              -
              - -

              KPaddingModePkcs1_v1_5_EncryptionUid

              -

              Pkcs1 v1.5 Encryption Padding mode Uid

              -

              0x1028318b

              -
              - -

              KPaddingModePkcs1_v1_5_SignatureUid

              -

              Pkcs1 v1.5 Signature Padding mode Uid

              -

              0x1028318c

              -
              - - -

              The padding modes are used by the following CryptoSPI APIs:

                -
              • CAsymmetricCipherFactory::CreateAsymmetricCipherL()

              • -
              • CAsymmetricCipherFactory::CreateAsyncAsymmetricCipherL()

              • -
              -
              Cryptography -modes - - - -UID -Description -Value - - - - -

              KCryptoModeEncryptUid

              -

              Crypto Encrypt Mode Uid

              -

              0x1028318d

              -
              - -

              KCryptoModeDecryptUid

              -

              Crypto Decrypt Mode Uid

              -

              0x1028318e

              -
              - -

              KCryptoModeNoneUid

              -

              Crypto None Mode Uid

              -

              0x1028318f

              -
              - - -

              The cryptography modes are used by the following CryptoSPI APIs:

                -
              • CAsymmetricCipherFactory::CreateAsymmetricCipherL()

              • -
              • CAsymmetricCipherFactory::CreateAsyncAsymmetricCipherL()

              • -
              -
              Hash algorithm UIDs - - - -UID -Description -Value -RFC standard - - - - -

              KMd2Uid

              -

              MD2, Message-Digest Algorithm

              -

              0x10283173

              -

              RFC -1319

              -
              - -

              KMd4Uid

              -

              MD4, Message-Digest Algorithm (Output: 128 bit message digest)

              -

              0x2000B341

              -

              RFC -1320

              -
              - -

              KMd5Uid

              -

              MD5 ,Message-Digest Algorithm (output:128-bit "fingerprint" or "message -digest)

              -

              0x10283174

              -

              RFC -1321

              -
              - -

              KSha1Uid

              -

              Secure Hash Algorithm(output: 160-bit message digest)

              -

              0x10283175

              -

              FIPS -180-1 and RFC -3174

              -
              - -

              KSha224Uid

              -

              Sha224 algorithm

              -

              0x2000E258

              -

              FIPS 180-2 (with change notice), RFC3874 and FIPS 180-3

              -
              - -

              KSha256Uid

              -

              Sha256 algorithm

              -

              0x2000E259

              -

              FIPS 180-2 and RFC 4634

              -
              - -

              KSha384Uid

              -

              Sha384 algorithm

              -

              0x2000E25A

              -

              FIPS 180-2 and RFC 4634

              -
              - -

              KSha512Uid

              -

              Sha512 algorithm

              -

              0x2000E25B

              -

              FIPS 180-2 and RFC 4634

              -
              - - -

              The hash algorithm UIDs are used by the following APIs:

                -
              • CryptoSpi::CHashFactory::CreateHashL()

              • -
              • CryptoSpi::CRuleSelector::CreateHashL()

              • -
              • CryptoSpi::CCryptoPluginEntry::CreateHashL()

              • -
              • CryptoSpi::CHashFactory::CreateAsyncHashL()

              • -
              • CryptoSpi::CRuleSelector::CreateAsyncHashL()

              • -
              -
              Random algorithm UIDs - - - -UID -Description -Value - - - - -

              KRandomUid

              -

              Random algorithm UID

              -

              0x10283178

              -
              - - -

              The random algorithm UIDs are used by the following APIs:

                -
              • CryptoSpi::CRandomFactory::CreateRandomL()

              • -
              • CryptoSpi::CRuleSelector::CreateRandomL()

              • -
              • CryptoSpi::CRandomFactory::CreateAsyncRandomL()

              • -
              • CryptoSpi::CRuleSelector::CreateAsyncRandomL()

              • -
              -
              Symmetric key algorithm UIDs - - - -UID -Description -Value - - - - -

              KDesUid

              -

              Des algorithm UID

              -

              0x10283179

              -
              - -

              K3DesUid

              -

              3Des algorithm UID

              -

              0x1028317a

              -
              - -

              KRc2Uid

              -

              RC2 algorithm UID

              -

              0x1028317b

              -
              - -

              KArc4Uid

              -

              ARC4 algorithm UID

              -

              0x1028317c

              -
              - -

              KAesUid

              -

              AES algorithm UID

              -

              0x1028317d

              -
              - -

              KMisty1Uid

              -

              Misty1 algorithm UID

              -

              0x102831be

              -
              - -

              KMisty2Uid

              -

              Misty2 algorithm UID

              -

              0x102831bf

              -
              - -

              KKasumiUid

              -

              Kasumi algorithm UID

              -

              0x102831c0

              -
              - - -

              The symmetric key algorithm UIDs are used by the following API:

                -
              • CryptoSpi::CSymmetricCipher::CSymmetricCipher()

              • -
              -
              Asymmetric key algorithm UIDs - - - -UID -Description -Value - - - - -

              KRsaCipherUid

              -

              RSA Cipher algorithm UID

              -

              0x1028317e

              -
              - -

              KRsaSignerUid

              -

              RSA Signer algorithm UID

              -

              0x1028317f

              -
              - -

              KRsaVerifierUid

              -

              RSA Verifier algorithm UID

              -

              0x10283181

              -
              - -

              KRSAKeyPairGeneratorUid

              -

              RSA Key Pair Generator algorithm UID

              -

              0x10283185

              -
              - -

              KDsaSignerUid

              -

              DSA Signer algorithm UID

              -

              0x10283180

              -
              - -

              KDsaVerifierUid

              -

              DSA Verifier algorithm UID

              -

              0x10283182

              -
              - -

              KDSAKeyPairGeneratorUid

              -

              DSA Key Pair Generator algorithm UID

              -

              0x10283186

              -
              - -

              KDHAgreementUid

              -

              DH Agreement algorithm UID

              -

              0x10283183

              -
              - -

              KDHKeyPairGeneratorUid

              -

              DH Key Pair Generator algorithm UID

              -

              0x10283184

              -
              - -

              KEccCipherUid

              -

              ECC Key Cipher algorithm UID

              -

              0x20024482

              -
              - -

              KEccSignerUid

              -

              ECC Key Signer algorithm UID

              -

              0x20024483

              -
              - -

              KEccVerifierUid

              -

              ECC Key Verifier algorithm UID

              -

              0x20024486

              -
              - -

              KEccKeyPairGeneratorUid

              -

              ECC Key Pair Generator algorithm UID

              -

              0x20024487

              -
              - - -

              Note: The ECC key UIDs are enabled only if the macros SYMBIAN_ENABLE_SDP_ECC and SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT are enabled.

              The asymmetric key algorithm UIDs are used by the following -API:

                -
              • CryptoSpi::CAsymmetricCipher::CAsymmetricCipher()

              • -
              -
              Other UIDs - - - -UID -Description -Value - - - - -

              KPassedHandleToKeyUid

              -

              Use this UID as CKey key parameter, -whenever the CryptoSPI user has just the handle and not the actual key. The -CryptoSPI plug-in searches for this ID and invokes the appropriate APIs for -providing access to the key.

              Note: This UID is enabled only -if the SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT macro is enabled.

              -

              0x20025161

              -
              - - -

              Example usage of KPassedHandleToKeyUid

              The following -sequence of steps explains the use of KPassedHandleToKeyUid in -the key parameter, which, along with the key property creates a CKey object. -This CKey object is one of the parameters -in the creation of a signer object, which can be used for performing signing -operations.

                -
              1. Define the key property.

                Create -a CCryptoParams object for the key parameter. Add the key -handle and KPassedHandleToKeyUid to the CCryptoParams object -by using CCryptoParams::AddL().

              2. -
              3. Create a CKey object -by passing instance of the key property and the CCryptoParams object -containing KPassedHandleToKeyUid.

              4. -
              5. Create a signer object -by using the CKey object as one of the -parameters. This signer object can be used for performing signing operations.

              6. -

              The following code snippet demonstrates the use of KPassedHandleToKeyUid:

              -. -. -. -// Define the key property -TKeyProperty keyProperty; -keyProperty.iAlgorithmUid = KRsaSignerUid; - -// Create the key parameter object -CCryptoParams* keyParameters = CCryptoParams::NewLC(); - -// iHandle is of type TCTTokenObjectHandle. It contains handle to the key -keyParameters->AddL(iHandle.iObjectId, KPassedHandleToKeyUid); - -// Create a CKey object -CKey* newKey = CKey::NewL(keyProperty, *keyParameters); - -// Create a signer plug-in object -CSigner * implsig = NULL; - -// Create the signer object -CSignatureFactory::CreateSignerL(implsig, KRsaSignerUid, *newKey, KPaddingModePkcs1_v1_5_SignatureUid, NULL); -. -. -. -
              -
              Operation modes - - - -UID -Description -Value - - - - -

              KOperationModeNoneUid

              -

              None Mode UID

              -

              0x10283190

              -
              - -

              KOperationModeECBUid

              -

              ECB Mode UID

              -

              0x10283191

              -
              - -

              KOperationModeCBCUid

              -

              CBC Mode UID

              -

              0x10283192

              -
              - -

              KOperationModeOFBUid

              -

              OFB Mode UID

              -

              0x10283193

              -
              - -

              KOperationModeCFBUid

              -

              CFB Mode UID

              -

              0x10283194

              -
              - -

              KOperationModeCTRUid

              -

              CTR Mode UID

              -

              0x10283195

              -
              - - -

              The operation modes are used by the following APIs:

                -
              • CryptoSpi::CHashFactory::CreateHashL()

              • -
              • CryptoSpi::CHashFactory::CreateAsyncHashL()

              • -
              -
              \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8AEE1966-D348-41BB-8513-61C379945DB8_d0e101007_href.png Binary file Symbian3/PDK/Source/GUID-8AEE1966-D348-41BB-8513-61C379945DB8_d0e101007_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8AEE1966-D348-41BB-8513-61C379945DB8_d0e102743_href.png Binary file Symbian3/PDK/Source/GUID-8AEE1966-D348-41BB-8513-61C379945DB8_d0e102743_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8AEE1966-D348-41BB-8513-61C379945DB8_d0e106763_href.png Binary file Symbian3/PDK/Source/GUID-8AEE1966-D348-41BB-8513-61C379945DB8_d0e106763_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8AEE1966-D348-41BB-8513-61C379945DB8_d0e79123_href.png Binary file Symbian3/PDK/Source/GUID-8AEE1966-D348-41BB-8513-61C379945DB8_d0e79123_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8AEE1966-D348-41BB-8513-61C379945DB8_d0e80068_href.png Binary file Symbian3/PDK/Source/GUID-8AEE1966-D348-41BB-8513-61C379945DB8_d0e80068_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8AEE1966-D348-41BB-8513-61C379945DB8_d0e83321_href.png Binary file Symbian3/PDK/Source/GUID-8AEE1966-D348-41BB-8513-61C379945DB8_d0e83321_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8AEE1966-D348-41BB-8513-61C379945DB8_d0e84266_href.png Binary file Symbian3/PDK/Source/GUID-8AEE1966-D348-41BB-8513-61C379945DB8_d0e84266_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8AEE1966-D348-41BB-8513-61C379945DB8_d0e96928_href.png Binary file Symbian3/PDK/Source/GUID-8AEE1966-D348-41BB-8513-61C379945DB8_d0e96928_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8AF21373-E51E-5B9D-ACC1-243752C9BB5B_d0e583950_href.png Binary file Symbian3/PDK/Source/GUID-8AF21373-E51E-5B9D-ACC1-243752C9BB5B_d0e583950_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8AF21373-E51E-5B9D-ACC1-243752C9BB5B_d0e633238_href.png Binary file Symbian3/PDK/Source/GUID-8AF21373-E51E-5B9D-ACC1-243752C9BB5B_d0e633238_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8B137691-7C9E-4085-BFFE-4CFE4A64A091.dita --- a/Symbian3/PDK/Source/GUID-8B137691-7C9E-4085-BFFE-4CFE4A64A091.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8B137691-7C9E-4085-BFFE-4CFE4A64A091.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ labels associated with the softkeys.

              Control pane - + In landscape orientation, a part of the status pane (the clock and indicator pane) is inside the control pane. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8B1C7778-0C6D-5DEE-90FD-3B016EC0E3CE_d0e581990_href.png Binary file Symbian3/PDK/Source/GUID-8B1C7778-0C6D-5DEE-90FD-3B016EC0E3CE_d0e581990_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8B1C7778-0C6D-5DEE-90FD-3B016EC0E3CE_d0e631278_href.png Binary file Symbian3/PDK/Source/GUID-8B1C7778-0C6D-5DEE-90FD-3B016EC0E3CE_d0e631278_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8B37A2C7-B4DB-5826-B6C2-3C21012EF9EA_d0e73123_href.png Binary file Symbian3/PDK/Source/GUID-8B37A2C7-B4DB-5826-B6C2-3C21012EF9EA_d0e73123_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8B37A2C7-B4DB-5826-B6C2-3C21012EF9EA_d0e77336_href.png Binary file Symbian3/PDK/Source/GUID-8B37A2C7-B4DB-5826-B6C2-3C21012EF9EA_d0e77336_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8B3AFB07-3CD7-590D-9791-84CB1C3AAED6.dita --- a/Symbian3/PDK/Source/GUID-8B3AFB07-3CD7-590D-9791-84CB1C3AAED6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8B3AFB07-3CD7-590D-9791-84CB1C3AAED6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,7 +12,7 @@ Location Request Management OverviewThis document describes the Location Request Management collection.
              Purpose

              The Location Request Management collection contains components for handling location requests from installed applications and from the network.

              The collection contains the Location Server component that handles location requests from installed applications and the Network Request Handler component that handles location requests from the network.

              Architecture

              Figure 1 shows this collection within the context of the LBS system model.

              Figure 1. Location Request Management collection in the LBS system model. -
              Description

              The components in this collection support location request management on behalf of client applications that may be installed on the device or remotely across the network.

              Components
              • Location Server

                The Location Server manages location requests from installed applications.

                The Location Server uses the A-GPS Location Manager and Network Location Manager components of the Location Management collection to process the location requests.

              • Network Request Handler

                The Network Request Handler manages location requests from the network.

                The Network Request Handler uses the A-GPS Location Manager component of the Location Management collection to process the location requests.

              Using the Location Management collection

              See Location Server and Network Request Handler for more information.

              Location +
              Description

              The components in this collection support location request management on behalf of client applications that may be installed on the device or remotely across the network.

              Components
              • Location Server

                The Location Server manages location requests from installed applications.

                The Location Server uses the A-GPS Location Manager and Network Location Manager components of the Location Management collection to process the location requests.

              • Network Request Handler

                The Network Request Handler manages location requests from the network.

                The Network Request Handler uses the A-GPS Location Manager component of the Location Management collection to process the location requests.

              Using the Location Management collection

              See Location Server and Network Request Handler for more information.

              Location Server Network Request Handler Location Management \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8B4CC1A0-1A39-4AF0-826B-8DDB9A837A27.dita --- a/Symbian3/PDK/Source/GUID-8B4CC1A0-1A39-4AF0-826B-8DDB9A837A27.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8B4CC1A0-1A39-4AF0-826B-8DDB9A837A27.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ server defines a plug-in interface for adding sensor plug-ins for any type of sensor hardware. The channel APIs enable client applications to interact with the sensor hardware. -
              Key Concepts +<section id="GUID-AB7AB8C8-DEB2-445C-A216-1FE142592C7D-GENID-1-12-1-11-1-1-8-1-4-1-3-1-3-1"><title>Key Concepts and Terms
              Sensor Channel
              @@ -56,7 +56,7 @@

            -
            Description

            The +

            Description

            The sensor server provides a plug-in interface (Sensor Definitions APIs) that enables platform developers to create sensor plug-ins for required sensors hardware. The sensor plug-ins enable the interaction between a client application @@ -71,7 +71,7 @@ of data from one sensor hardware to multiple clients simultaneously. It also resolves any contention between client applications for opening channels or configuring a sensor device.

            -
            APIs +
            APIs @@ -125,7 +125,7 @@
            - +

            A physical sensor can supply data to several sensor channels (CSensrvChannel) . A sensor channel provides data to an application in a channel-specific data format (for example, TSensrvXyzData) through a callback to the MSensrvDataListener::DataReceived() interface. A diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8B8CAEED-A89D-53B3-A311-51CF45B334B1.dita --- a/Symbian3/PDK/Source/GUID-8B8CAEED-A89D-53B3-A311-51CF45B334B1.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8B8CAEED-A89D-53B3-A311-51CF45B334B1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -132,7 +132,7 @@ } Interrupt sources - +

            • The second level dispatcher, SecondLevelIrqDispatch(), is itself an ISR, and takes a TAny * parameter, but is diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8B91B12A-2275-52BF-B747-914550E225D0.dita --- a/Symbian3/PDK/Source/GUID-8B91B12A-2275-52BF-B747-914550E225D0.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8B91B12A-2275-52BF-B747-914550E225D0.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,22 +21,22 @@ the S60 emulator and enter swiconsole /i c:\simple.sis. The following screenshot appears which displays the application details and provides the following options:

              - +
            • Press y, the signature is validated and installation continues only if the signature is valid. The following screenshot shows that the signature has been validated successfully and allows the user to continue with the installation.

              - +
            • Press y to continue installation and select the drive you want to install.

              - +
            • Press n to continue with the installation. The following screenshot shows that the installation is completed successfully.

              - +
            • Result: The simple.sis file is successfully installed on the device.

            diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e101217_href.png Binary file Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e101217_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e64551_href.png Binary file Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e64551_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e68774_href.png Binary file Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e68774_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e79333_href.png Binary file Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e79333_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e83531_href.png Binary file Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e83531_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e88084_href.png Binary file Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e88084_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e88713_href.png Binary file Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e88713_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e92282_href.png Binary file Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e92282_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e92911_href.png Binary file Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e92911_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e97138_href.png Binary file Symbian3/PDK/Source/GUID-8BA0D643-5ED1-4DC4-82EC-C8AA392DCBC4_d0e97138_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8BC13552-7C7D-52AC-AF91-1BB7476912AF.dita --- a/Symbian3/PDK/Source/GUID-8BC13552-7C7D-52AC-AF91-1BB7476912AF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8BC13552-7C7D-52AC-AF91-1BB7476912AF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> System Health Manager Overview

            The System Health Manager (SHMA) was previously known as the System Monitor (SysMon). It monitors running processes (system servers) and attempts to restart them if they fail unexpectedly. It may restart the device if it is unable to restart the process.

            A application may use the SysMon API to request monitoring for itself or other applications. Only an application with ProtServ capability, however, may request that the device be restarted.

            Purpose

            Certain applications and background process are essential for the device or for certain applications to function correctly. The System Health Manager ensures that the device remains completely functional by restarting applications or processes, or the device itself, if they stop unexpectedly.

            Background

            SHMA uses System State Manager (SSM) for process monitoring. SSM provides the required information such as number of restart attempts that can be made, start-up modes and properties. See System State Manager.

            Key concepts and terms
            Relaunch policy

            Specifies the behaviour when a process fails unexpectedly. See Relaunch policy.

            Retry Failure policy

            Specifies the behaviour when a failed process fails to restart. See Retry Failure policy.

            Architecture

            The SHMA is simple and self explanatory. A client must instantiate an RSysMonSession to open a session for monitoring.

            Monitoring is started with a call to RSysMonSession::MonitorL() or RSysMonSession::MonitorSelfL(). Before calling one of these functions, however, the client must create and populate a CSsmStartupProperties object containing the required monitoring and restart configurations. CSsmStartupProperties has a series of Set...() functions which are used to determine the monitoring and restart behaviour for the process to be monitored.

            System Health Manager Architecture -

            Process monitoring can also be set up using a resource file. CResourceFile accesses a resource file and reads the resource data into a buffer and the data is interpreted using RResourceReader class.

            Process monitoring is normally configured for processes using SSM_START_PROCESS_INFO and SSM_START_APP_INFO resources in a static command list. These are defined in ssmcmd.rh. Note that these structures add monitor, startup mode and a localisable error message to SSM_START_PROCESS_INFO and SSM_START_APP_INFO. See Examples.

            APIs

            SysMon API has the following classes:

            Class Description

            RSysMonSession

            Client-side SysMon session API

            CSsmStartupProperties

            Contains process starter information.

            TSsmMonitorInfo

            Convenience class combining restart property information.

            Typical uses

            System Health Manager is used for requesting and cancelling monitoring for a process.

            System Health Manager +

            Process monitoring can also be set up using a resource file. CResourceFile accesses a resource file and reads the resource data into a buffer and the data is interpreted using RResourceReader class.

            Process monitoring is normally configured for processes using SSM_START_PROCESS_INFO and SSM_START_APP_INFO resources in a static command list. These are defined in ssmcmd.rh. Note that these structures add monitor, startup mode and a localisable error message to SSM_START_PROCESS_INFO and SSM_START_APP_INFO. See Examples.

            APIs

            SysMon API has the following classes:

            Class Description

            RSysMonSession

            Client-side SysMon session API

            CSsmStartupProperties

            Contains process starter information.

            TSsmMonitorInfo

            Convenience class combining restart property information.

            Typical uses

            System Health Manager is used for requesting and cancelling monitoring for a process.

            System Health Manager Concepts Requesting and cancelling monitoring for a process \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8BFC185E-91FD-5E04-A26C-728B06F31FDD-GENID-1-12-1-26-1-1-4-1-3-1-6-1-6-1.dita --- a/Symbian3/PDK/Source/GUID-8BFC185E-91FD-5E04-A26C-728B06F31FDD-GENID-1-12-1-26-1-1-4-1-3-1-6-1-6-1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,116 +0,0 @@ - - - - - -Creating -Transfer TypesTo transfer data between the Backup Engine and the backup server, -a particular type of conn::CSBGenericTransferType must be -created. -
            Introduction

            The conn::CSBEClient uses conn::CSBGenericTransferType to -request (for backup) or supply (for restore) data. One of the following three -derived classes must be created to transfer data.

              -
            • conn::CSBSIDTransferType transfers -data of the owner whose type is conn::ESIDDerivedType. -Data owners of this type are the common applications or servers built into -the ROM.

              You can specify the creation of passive data, active data -or snapshot data transfer type by passing a conn::TTransferDataType parameter -value to the CSBSIDTransferType::NewL() function. For example, -passing EActiveSnapshotData to CSBSIDTransferType:NewL() creates -an active snapshot transfer type.

            • -
            • conn::CSBPackageTransferType transfers -data of the owner whose type is conn::EPackageDerivedType. -Data owners of this type are usually installed through SIS files. Installing -a package may install may install several applications (data owners). Each -package is identified by a package ID while each data owner is identified -by a package ID, a package name and an SID.

              Packages are often installed -to a system drive, their data and snapshots are referred to as system data -and system data snapshots.

            • -
            • conn::CSBJavaId transfers -data of the owner whose type is conn::EJavaDerivedType. -Data owners of this type are Java applications.

            • -
            -
            Procedure

            Create -an array of a particular type, for example passive data for all data owners. -Then go through the array to create the transfer types.

            The following -example shows how to create the conn::CSBPackageTransferType. -You can further specify to create the data or snapshots.

            /** -Each data owner in iDataOwners is a CDataOwnerInfo object, the following creates -CSBGenericTransferTypes based on the TPackageDataType passed. -@param aTransferTypes - Array of package transfer types. -@param aPkgDataType - system data or system data snapshot. -*/ - -void::GeneratePIDTransferTypesL( - RPointerArray<CSBGenericTransferType>& aTransferTypes, - TPackageDataType aPkgDataType) -{ - - aTransferTypes.ResetAndDestroy(); - TUid id; - - //need array to avoid duplications - RArray<TUid> uidArray; - CleanupClosePushL(uidArray); - - //One transfer type is created for each drive - //on which the data owner has data. - TInt length = iDriveList.Length(); - for (TInt driveCount = 0; driveCount < length; driveCount++) - { - if (iDriveList[driveCount]) - { - TInt count = iDataOwners.Count(); - for (TInt i = 0; i < count; i++) - { - switch (iDataOwners[i]->Identifier().DerivedTypeL()) - { - case EPackageDerivedType: - if (iDataOwners[i]->CommonSettings() & EHasSystemFiles) - { - //Create CSBPackageId for each data owner in the package - CSBPackageId* pkgId = - CSBPackageId::NewL(&(iDataOwners[i]->Identifier())); - CleanupStack::PushL(pkgId); - - id = pkgId->PackageIdL(); - if (uidArray.Find(id) == KErrNotFound) - { - - //Create the package transfer type based on the - //aPkgDataType parameter value passed in, - //system data or snapshot. - CSBPackageTransferType* idType = - CSBPackageTransferType::NewL( - id, - TDriveNumber(driveCount), - aPkgDataType - ); - CleanupStack::PushL(idType); - aTransferTypes.AppendL(idType); - CleanupStack::Pop(idType); - - //add to uid array - uidArray.AppendL(id); - } - CleanupStack::PopAndDestroy(pkgId); - } //if - break; - } // switch - } //for - } //if - } //for - -CleanupStack::PopAndDestroy(&uidArray); -} -
            -
            -Writing a -Backup Engine Client (CSBEClient) -
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8BFC185E-91FD-5E04-A26C-728B06F31FDD-GENID-1-12-1-28-1-1-4-1-3-1-6-1-6-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-8BFC185E-91FD-5E04-A26C-728B06F31FDD-GENID-1-12-1-28-1-1-4-1-3-1-6-1-6-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,116 @@ + + + + + +Creating +Transfer TypesTo transfer data between the Backup Engine and the backup server, +a particular type of conn::CSBGenericTransferType must be +created. +
            Introduction

            The conn::CSBEClient uses conn::CSBGenericTransferType to +request (for backup) or supply (for restore) data. One of the following three +derived classes must be created to transfer data.

              +
            • conn::CSBSIDTransferType transfers +data of the owner whose type is conn::ESIDDerivedType. +Data owners of this type are the common applications or servers built into +the ROM.

              You can specify the creation of passive data, active data +or snapshot data transfer type by passing a conn::TTransferDataType parameter +value to the CSBSIDTransferType::NewL() function. For example, +passing EActiveSnapshotData to CSBSIDTransferType:NewL() creates +an active snapshot transfer type.

            • +
            • conn::CSBPackageTransferType transfers +data of the owner whose type is conn::EPackageDerivedType. +Data owners of this type are usually installed through SIS files. Installing +a package may install may install several applications (data owners). Each +package is identified by a package ID while each data owner is identified +by a package ID, a package name and an SID.

              Packages are often installed +to a system drive, their data and snapshots are referred to as system data +and system data snapshots.

            • +
            • conn::CSBJavaId transfers +data of the owner whose type is conn::EJavaDerivedType. +Data owners of this type are Java applications.

            • +
            +
            Procedure

            Create +an array of a particular type, for example passive data for all data owners. +Then go through the array to create the transfer types.

            The following +example shows how to create the conn::CSBPackageTransferType. +You can further specify to create the data or snapshots.

            /** +Each data owner in iDataOwners is a CDataOwnerInfo object, the following creates +CSBGenericTransferTypes based on the TPackageDataType passed. +@param aTransferTypes - Array of package transfer types. +@param aPkgDataType - system data or system data snapshot. +*/ + +void::GeneratePIDTransferTypesL( + RPointerArray<CSBGenericTransferType>& aTransferTypes, + TPackageDataType aPkgDataType) +{ + + aTransferTypes.ResetAndDestroy(); + TUid id; + + //need array to avoid duplications + RArray<TUid> uidArray; + CleanupClosePushL(uidArray); + + //One transfer type is created for each drive + //on which the data owner has data. + TInt length = iDriveList.Length(); + for (TInt driveCount = 0; driveCount < length; driveCount++) + { + if (iDriveList[driveCount]) + { + TInt count = iDataOwners.Count(); + for (TInt i = 0; i < count; i++) + { + switch (iDataOwners[i]->Identifier().DerivedTypeL()) + { + case EPackageDerivedType: + if (iDataOwners[i]->CommonSettings() & EHasSystemFiles) + { + //Create CSBPackageId for each data owner in the package + CSBPackageId* pkgId = + CSBPackageId::NewL(&(iDataOwners[i]->Identifier())); + CleanupStack::PushL(pkgId); + + id = pkgId->PackageIdL(); + if (uidArray.Find(id) == KErrNotFound) + { + + //Create the package transfer type based on the + //aPkgDataType parameter value passed in, + //system data or snapshot. + CSBPackageTransferType* idType = + CSBPackageTransferType::NewL( + id, + TDriveNumber(driveCount), + aPkgDataType + ); + CleanupStack::PushL(idType); + aTransferTypes.AppendL(idType); + CleanupStack::Pop(idType); + + //add to uid array + uidArray.AppendL(id); + } + CleanupStack::PopAndDestroy(pkgId); + } //if + break; + } // switch + } //for + } //if + } //for + +CleanupStack::PopAndDestroy(&uidArray); +} +
            +
            +Writing a +Backup Engine Client (CSBEClient) +
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8C5A65E6-D753-472F-B885-FD0409589036.dita --- a/Symbian3/PDK/Source/GUID-8C5A65E6-D753-472F-B885-FD0409589036.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8C5A65E6-D753-472F-B885-FD0409589036.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ Class relationship between MHTTPDataOptimiser and RHTTPSession - +

            For more information about MHTTPTransactionCallback, see A simple HTTP Client diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8C5F32CC-CA2A-586A-B3B1-339494255042_d0e21001_href.jpg Binary file Symbian3/PDK/Source/GUID-8C5F32CC-CA2A-586A-B3B1-339494255042_d0e21001_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8C5F32CC-CA2A-586A-B3B1-339494255042_d0e22968_href.jpg Binary file Symbian3/PDK/Source/GUID-8C5F32CC-CA2A-586A-B3B1-339494255042_d0e22968_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8C826292-C8DC-55CA-A79F-3254A417BF64_d0e21014_href.jpg Binary file Symbian3/PDK/Source/GUID-8C826292-C8DC-55CA-A79F-3254A417BF64_d0e21014_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8C826292-C8DC-55CA-A79F-3254A417BF64_d0e22981_href.jpg Binary file Symbian3/PDK/Source/GUID-8C826292-C8DC-55CA-A79F-3254A417BF64_d0e22981_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8C8D6B06-E794-4269-B4DF-D2BE4DDB9E8B_d0e65866_href.png Binary file Symbian3/PDK/Source/GUID-8C8D6B06-E794-4269-B4DF-D2BE4DDB9E8B_d0e65866_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8C8D6B06-E794-4269-B4DF-D2BE4DDB9E8B_d0e70089_href.png Binary file Symbian3/PDK/Source/GUID-8C8D6B06-E794-4269-B4DF-D2BE4DDB9E8B_d0e70089_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8C9F26BC-2579-545C-9A86-9C45E06679F0_d0e408635_href.png Binary file Symbian3/PDK/Source/GUID-8C9F26BC-2579-545C-9A86-9C45E06679F0_d0e408635_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8C9F26BC-2579-545C-9A86-9C45E06679F0_d0e414488_href.png Binary file Symbian3/PDK/Source/GUID-8C9F26BC-2579-545C-9A86-9C45E06679F0_d0e414488_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8CCA308A-5302-4D95-8E60-DA75D8B6DC41_d0e101197_href.png Binary file Symbian3/PDK/Source/GUID-8CCA308A-5302-4D95-8E60-DA75D8B6DC41_d0e101197_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8CCA308A-5302-4D95-8E60-DA75D8B6DC41_d0e79607_href.png Binary file Symbian3/PDK/Source/GUID-8CCA308A-5302-4D95-8E60-DA75D8B6DC41_d0e79607_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8CCA308A-5302-4D95-8E60-DA75D8B6DC41_d0e83805_href.png Binary file Symbian3/PDK/Source/GUID-8CCA308A-5302-4D95-8E60-DA75D8B6DC41_d0e83805_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8CCA308A-5302-4D95-8E60-DA75D8B6DC41_d0e85341_href.png Binary file Symbian3/PDK/Source/GUID-8CCA308A-5302-4D95-8E60-DA75D8B6DC41_d0e85341_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8CCA308A-5302-4D95-8E60-DA75D8B6DC41_d0e89539_href.png Binary file Symbian3/PDK/Source/GUID-8CCA308A-5302-4D95-8E60-DA75D8B6DC41_d0e89539_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8CCA308A-5302-4D95-8E60-DA75D8B6DC41_d0e97118_href.png Binary file Symbian3/PDK/Source/GUID-8CCA308A-5302-4D95-8E60-DA75D8B6DC41_d0e97118_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8CF0C00C-0FDF-517E-96FB-84F718237F61_d0e354356_href.jpg Binary file Symbian3/PDK/Source/GUID-8CF0C00C-0FDF-517E-96FB-84F718237F61_d0e354356_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8CF0C00C-0FDF-517E-96FB-84F718237F61_d0e360267_href.jpg Binary file Symbian3/PDK/Source/GUID-8CF0C00C-0FDF-517E-96FB-84F718237F61_d0e360267_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8D046AD9-1D28-52AE-8B69-2CBF6441F733_d0e237727_href.png Binary file Symbian3/PDK/Source/GUID-8D046AD9-1D28-52AE-8B69-2CBF6441F733_d0e237727_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8D046AD9-1D28-52AE-8B69-2CBF6441F733_d0e243700_href.png Binary file Symbian3/PDK/Source/GUID-8D046AD9-1D28-52AE-8B69-2CBF6441F733_d0e243700_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8D4AD37E-6B96-5B82-8313-F88D97531DEC.dita --- a/Symbian3/PDK/Source/GUID-8D4AD37E-6B96-5B82-8313-F88D97531DEC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8D4AD37E-6B96-5B82-8313-F88D97531DEC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,8 +9,7 @@ --> -Types -of packageDescribes the three types of package descriptors. +Types of packageDescribes the three types of package descriptors.

            Three types of package are available:

            • a packaged modifiable @@ -20,36 +19,37 @@

            • a packaged modifiable pointer descriptor

            -
            Packaged modifiable buffer descriptor

            This is an -object of type TPckgBuf and is a modifiable buffer descriptor. -The class is templated; the template parameter defines the type of object -that this descriptor can contain.

            For example, a package descriptor -of type TPckgBuf<TExample> is a modifiable buffer descriptor -that only contains objects of type TExample.

            The package -class also allows functions to be called on the contained class.

            - +
            Packaged +modifiable buffer descriptor

            This is an object of type TPckgBuf and is a modifiable buffer descriptor. The class +is templated; the template parameter defines the type of object that +this descriptor can contain.

            For example, a package descriptor +of type TPckgBuf<TExample> is a modifiable buffer +descriptor that only contains objects of type TExample.

            The package class also allows functions to be called on +the contained class.

            +
            -
            Packaged non-modifiable pointer descriptor

            This -is an object of type TPckgC and is a non-modifiable pointer -descriptor. The class is templated; the template parameter defines the type -of object that this descriptor can represent.

            For example, a package -descriptor of type TPckgC<TExample> is a non- modifiable -pointer descriptor that only represents objects of type TExample.

            The -package class also allows functions to be called on the contained class.

            - +
            Packaged +non-modifiable pointer descriptor

            This is an object of +type TPckgC and is a non-modifiable pointer descriptor. +The class is templated; the template parameter defines the type of +object that this descriptor can represent.

            For example, a package +descriptor of type TPckgC<TExample> is a non- +modifiable pointer descriptor that only represents objects of type TExample.

            The package class also allows functions +to be called on the contained class.

            +
            -
            Packaged modifiable pointer descriptor

            This is -an object of type TPckg and is a modifiable pointer descriptor. -The class is templated; the template parameter defines the type of object -that this descriptor can represent.

            For example, a package descriptor -of type TPckg<TExample> is a modifiable pointer descriptor -that only represents objects of type TExample.

            The -package class also allows functions to be called on the contained class.

            - +
            Packaged +modifiable pointer descriptor

            This is an object of type TPckg and is a modifiable pointer descriptor. The class +is templated; the template parameter defines the type of object that +this descriptor can represent.

            For example, a package descriptor +of type TPckg<TExample> is a modifiable pointer +descriptor that only represents objects of type TExample.

            The package class also allows functions to be called on +the contained class.

            +
            -
            See also

            TBuf

            TPtrC

            TPtr

            +
            See +also

            TBuf

            TPtrC

            TPtr

            - -Descriptor concepts - + +Descriptor concepts \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8D4F44CB-0B4D-51EE-A2D7-A1BBB3DD326A.dita --- a/Symbian3/PDK/Source/GUID-8D4F44CB-0B4D-51EE-A2D7-A1BBB3DD326A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8D4F44CB-0B4D-51EE-A2D7-A1BBB3DD326A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -26,7 +26,7 @@

          Device creators can use the interfaces provided by the framework to implement keystore for managing keys.

          Symbian Keystore Implementation - + @@ -76,7 +76,7 @@ Hellman (DH) key exchange protocol.

          Keystore Framework Interfaces - + Unified Keystore diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8D51B706-6941-5043-B435-1CAFBAE5A8F2_d0e641387_href.jpg Binary file Symbian3/PDK/Source/GUID-8D51B706-6941-5043-B435-1CAFBAE5A8F2_d0e641387_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8D51B706-6941-5043-B435-1CAFBAE5A8F2_d0e654209_href.jpg Binary file Symbian3/PDK/Source/GUID-8D51B706-6941-5043-B435-1CAFBAE5A8F2_d0e654209_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8D5FFAE9-7E8A-5144-B0CC-B56A34D42A3F_d0e322416_href.png Binary file Symbian3/PDK/Source/GUID-8D5FFAE9-7E8A-5144-B0CC-B56A34D42A3F_d0e322416_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8D5FFAE9-7E8A-5144-B0CC-B56A34D42A3F_d0e328402_href.png Binary file Symbian3/PDK/Source/GUID-8D5FFAE9-7E8A-5144-B0CC-B56A34D42A3F_d0e328402_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8D72AE33-AF61-5AD7-A40D-A2918474DD0D_d0e551612_href.png Binary file Symbian3/PDK/Source/GUID-8D72AE33-AF61-5AD7-A40D-A2918474DD0D_d0e551612_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8D72AE33-AF61-5AD7-A40D-A2918474DD0D_d0e559068_href.png Binary file Symbian3/PDK/Source/GUID-8D72AE33-AF61-5AD7-A40D-A2918474DD0D_d0e559068_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8D7AEB5A-9A88-5B6D-B6B0-7126A56AA495.dita --- a/Symbian3/PDK/Source/GUID-8D7AEB5A-9A88-5B6D-B6B0-7126A56AA495.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8D7AEB5A-9A88-5B6D-B6B0-7126A56AA495.dita Fri Jul 16 17:23:46 2010 +0100 @@ -128,7 +128,7 @@ with other App-Services components. The diagram below gives an abstract illustration of the internal dependencies of the Versit components themselves.

          Abstraction of Versit deliverables - +

          As the diagram above illustrates, it is possible to make use of the Versit.dll library on its own. If vCard or vCalendar support is required then the Versit library must be included as both vCard.dll and vCal.dll depend @@ -144,7 +144,7 @@

          API summary Relationship between different classes of the Versit component - +
          diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8D9FE811-3F8A-5C2A-B76A-5C0248179590_d0e550876_href.jpg Binary file Symbian3/PDK/Source/GUID-8D9FE811-3F8A-5C2A-B76A-5C0248179590_d0e550876_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8D9FE811-3F8A-5C2A-B76A-5C0248179590_d0e558332_href.jpg Binary file Symbian3/PDK/Source/GUID-8D9FE811-3F8A-5C2A-B76A-5C0248179590_d0e558332_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8DB1C618-597C-560C-95A2-C0AB2CEBB027.dita --- a/Symbian3/PDK/Source/GUID-8DB1C618-597C-560C-95A2-C0AB2CEBB027.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8DB1C618-597C-560C-95A2-C0AB2CEBB027.dita Fri Jul 16 17:23:46 2010 +0100 @@ -24,7 +24,7 @@ calculates the bounding rectangles of the "Hello!" text and the red line (B). For each one, the application passes the rectangle to RWindow::BeginRedraw(const TRect &), then calls the draw commands and afterwards calls RWindow::EndRedraw().

          - +

          This has the advantage that the Window Server knows that the area of the window that has the "Hello!" text is not affected by the drawing of the red line. There are also advantages when some @@ -41,7 +41,7 @@ application must then perform a full window redraw, as shown in the next diagram.

          Non-redraw drawing sequence - +

          This is less efficient than the Window Server replaying the draw operations for the affected area.

          Symbian recommends that all drawing is now performed as redraw drawing. Typically this @@ -49,7 +49,7 @@ different aspects of the user interface—for example, as shown in the following diagram. If anything spoils the screen, the Window Server then only needs to redraw the corresponding portions of the user interface.

          - +

          In earlier versions of Symbian, before the introduction of the CCoeControl::DrawNow(const TRect &)const overload, developers sometimes used non-redraw drawing to update a small part of a control. This technique has often been used for diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8DB5E558-9774-5CC3-AF8C-6C50D9FE0496.dita --- a/Symbian3/PDK/Source/GUID-8DB5E558-9774-5CC3-AF8C-6C50D9FE0496.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ - - - - - -How -to use makmake -

          Symbian projects are defined by an .mmp file which -specifies the essential elements of the project. The makmake tool -then uses this environment-neutral file to build makefiles for use in various -environments. These makefiles are then used for project development.

          -

          Some makefiles are built for use in building the project from the command-line, -while others are for use with an IDE. Command-line makefiles created by makmake contain -syntax which it is not possible to incorporate into makefiles intended for -an IDE: these are discussed below.

          -
          Building and running a project for WINSCW

          Starting -with hello.mmp, you can build the makefile file hello.winscw using:

          makmake -hello winscw

          You then build the project from the command -line by running:

          make -f hello.winscw

          -
          Building debug and release variants

          A command line -makefile produced by makmake allows the executable (an -EXE or any type of DLL) to be produced in one of two -variants:

            -
          • udeb: -debug mode

          • -
          • urel: -release mode

          • -

          which may be selected by specifying the variant as a target.

          For -example, to build the udeb variant of the executable, -you can do:

          make -f hello.armi udeb

          If make /nmake is -invoked with no target specified, then the following default targets will -be built: the default for ARM is release mode; the default for WINSCW, and -WINC is debug mode.

          You may use path specifications to locate the .mmp file -in any directory.

          For example:

          makmake ..\..epoc32ex\e32\hello -armv5

          or

          makmake ..\..epoc32ex\e32\hello -cw_ide

          will locate the specified .mmp file. -However, the generated makmake files are always written -into the current directory.

          -
          Command line makefile utilities

          Command-line makefiles -provide extra makefile targets which enable you to use make or nmake to -create work directories and erase non-source files for a particular build -variant of a project.

          For example,

            -
          • make --f hello.winscw clean attempts to delete the non-source files -created during a build of all variants of the project hello

          • -
          • make --f hello.winscw makework will create the work directories for -a build of all variants of the project hello, while nmake - -f hello.wins makeworkurel will create the work directories -for a wide release build of the project.

          • -

          The build-specific makework targets are listed as -dependencies of the main build-specific targets in command-line makefiles, -so work directories will automatically be created when a target is built with -a command-line makefile if these directories do not already exist.

          - -mmp file -syntax - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E218D40-9668-51F9-99CE-4DE1AED64793_d0e604950_href.jpg Binary file Symbian3/PDK/Source/GUID-8E218D40-9668-51F9-99CE-4DE1AED64793_d0e604950_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E218D40-9668-51F9-99CE-4DE1AED64793_d0e644112_href.jpg Binary file Symbian3/PDK/Source/GUID-8E218D40-9668-51F9-99CE-4DE1AED64793_d0e644112_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E2303E9-DB60-5F38-A4D4-8BF8F7A1EF9F_d0e512314_href.jpg Binary file Symbian3/PDK/Source/GUID-8E2303E9-DB60-5F38-A4D4-8BF8F7A1EF9F_d0e512314_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E2303E9-DB60-5F38-A4D4-8BF8F7A1EF9F_d0e519776_href.jpg Binary file Symbian3/PDK/Source/GUID-8E2303E9-DB60-5F38-A4D4-8BF8F7A1EF9F_d0e519776_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E322085-07E7-542C-B0FD-54431F7B4BB7_d0e471447_href.jpg Binary file Symbian3/PDK/Source/GUID-8E322085-07E7-542C-B0FD-54431F7B4BB7_d0e471447_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E322085-07E7-542C-B0FD-54431F7B4BB7_d0e477283_href.jpg Binary file Symbian3/PDK/Source/GUID-8E322085-07E7-542C-B0FD-54431F7B4BB7_d0e477283_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E3F3745-7875-51A2-BDA1-AA537C7B220E_d0e637916_href.png Binary file Symbian3/PDK/Source/GUID-8E3F3745-7875-51A2-BDA1-AA537C7B220E_d0e637916_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E3F3745-7875-51A2-BDA1-AA537C7B220E_d0e650738_href.png Binary file Symbian3/PDK/Source/GUID-8E3F3745-7875-51A2-BDA1-AA537C7B220E_d0e650738_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E6FD3FD-64C8-51E0-AFE7-76DC5AB6A254_d0e141096_href.png Binary file Symbian3/PDK/Source/GUID-8E6FD3FD-64C8-51E0-AFE7-76DC5AB6A254_d0e141096_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E6FD3FD-64C8-51E0-AFE7-76DC5AB6A254_d0e143345_href.png Binary file Symbian3/PDK/Source/GUID-8E6FD3FD-64C8-51E0-AFE7-76DC5AB6A254_d0e143345_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E759F53-8DA7-5AA3-B004-7D989CCF8755_d0e154245_href.jpg Binary file Symbian3/PDK/Source/GUID-8E759F53-8DA7-5AA3-B004-7D989CCF8755_d0e154245_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E759F53-8DA7-5AA3-B004-7D989CCF8755_d0e160346_href.jpg Binary file Symbian3/PDK/Source/GUID-8E759F53-8DA7-5AA3-B004-7D989CCF8755_d0e160346_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E794D5A-9C83-54EB-AD5A-6A74BB155223.dita --- a/Symbian3/PDK/Source/GUID-8E794D5A-9C83-54EB-AD5A-6A74BB155223.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8E794D5A-9C83-54EB-AD5A-6A74BB155223.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,7 +12,7 @@ JPEG Image Transform Extension Guide

          This document introduces you to the JPEG image transform extensions.

          -
          Purpose

          The +

          Purpose

          The Image Transform framework supports standard extensions for advanced JPEG functions.

          The functions are,

          • Orientation (Rotation and Mirror over horizontal and vertical Axis)

          • @@ -78,7 +78,7 @@ of the use of COverlayTransformExtension include adding timestamp or place-stamp, some text or inserting a company logo. The images below show an example of overlay functionality:

            - +

            The image overlay transformation can, depending on its implementation, be very fast eliminating the need to decode the whole image making it very useful, for example a camera application. The types of image that can be overlaid diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E7CCFD7-F820-596E-BACB-AE43878C6CD8.dita --- a/Symbian3/PDK/Source/GUID-8E7CCFD7-F820-596E-BACB-AE43878C6CD8.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -final

            This command allows extension makefiles to be used to carry out any commands required to complete the build.

            abld [ test ] final [-k] [-v] [ platform ] [ build [ program ] ]

            The command has no effect for makefiles generated by makmake. It is provided only for extension makefiles.

            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E8F1999-4DE0-5CA0-9656-C54127FDB3D4_d0e552767_href.png Binary file Symbian3/PDK/Source/GUID-8E8F1999-4DE0-5CA0-9656-C54127FDB3D4_d0e552767_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E8F1999-4DE0-5CA0-9656-C54127FDB3D4_d0e560223_href.png Binary file Symbian3/PDK/Source/GUID-8E8F1999-4DE0-5CA0-9656-C54127FDB3D4_d0e560223_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E8FE99A-5F4D-5B0F-87AB-A58EB4BEB6E9.dita --- a/Symbian3/PDK/Source/GUID-8E8FE99A-5F4D-5B0F-87AB-A58EB4BEB6E9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8E8FE99A-5F4D-5B0F-87AB-A58EB4BEB6E9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,11 +11,11 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Surface Update Component OverviewEach graphics composition surface has at least two interested stakeholders: the process responsible for drawing and maintaining the content and the composition engine, which uses the surface for creating the display. When one of the stakeholders does something to the surface, it usually means that another stakeholder needs to do something too. The Surface Update component provides a channel for the stakeholders to inform each other of changes.

            Variant: ScreenPlay. Target audience: Device creators.

            Purpose

            The Surface Update component provides a communication channel interface for use by components that render graphics content to composition surfaces. Examples of such components are EGL, the video renderer (DevVideo), the camera viewfinder (ECam) and render stages. This is illustrated in the following diagram.

            Surface Update component use case model -

            The client renders the graphics content to a buffer within the surface and then sends a request for composition. The request includes the surface ID, the ID of the current buffer within the surface and optionally the following:

            • The number of the screen on which the surface is to be displayed. Alternatively, the KAllScreens constant can be used to indicate that the request should be broadcast to all screens. This is called a global surface update and its use is encouraged. It makes the client code simpler because it does not need to be concerned with which screen a surface is currently visible on. Note that you must not mix global updates with updates to specific screens within a single session.

            • The region of the surface that has changed. This is sometimes referred to as the dirty rectangle. If the client does not specify this, the whole surface is recomposed.

            The client can request notification of the following composition-related events:

            • The buffer has become available for rendering.

            • The buffer has been displayed for the first time after the update was submitted. This notification is accompanied by timestamp information.

            • The buffer has been displayed a certain number of times. This can be used to ensure that each frame gets displayed for at least a given period of time.

            Architecture

            The Surface Update component is an adaptation component, which means that it can be replaced by device creators to suit the exact hardware. The reference implementation consists of the Surface Update Server and its client-side API. The Surface Update Server runs within the Window Server process along with the composition engine. The Surface Update Server uses the standard Symbian client/server model for Inter Process Communication (IPC) to communicate with clients and Inter Thread Communication (using active objects and semaphores) to communicate with the composition engine.

            The client sends requests for composition through the command channel and the composition engine sends notification messages through the notification channel.

            The following diagram shows communication between the client, Surface Update server and composition engine. The composition engine is shown as a single component, although it can be implemented as multiple components. For example, the OpenWF-C implementation consists of the OpenWF-C Support component and the OpenWF-C Engine component. The Surface Update Server in fact communicates with the OpenWF-C Support component, which in turn communicates with the OpenWF-C Engine.

            +

            The client renders the graphics content to a buffer within the surface and then sends a request for composition. The request includes the surface ID, the ID of the current buffer within the surface and optionally the following:

            • The number of the screen on which the surface is to be displayed. Alternatively, the KAllScreens constant can be used to indicate that the request should be broadcast to all screens. This is called a global surface update and its use is encouraged. It makes the client code simpler because it does not need to be concerned with which screen a surface is currently visible on. Note that you must not mix global updates with updates to specific screens within a single session.

            • The region of the surface that has changed. This is sometimes referred to as the dirty rectangle. If the client does not specify this, the whole surface is recomposed.

            The client can request notification of the following composition-related events:

            • The buffer has become available for rendering.

            • The buffer has been displayed for the first time after the update was submitted. This notification is accompanied by timestamp information.

            • The buffer has been displayed a certain number of times. This can be used to ensure that each frame gets displayed for at least a given period of time.

            Architecture

            The Surface Update component is an adaptation component, which means that it can be replaced by device creators to suit the exact hardware. The reference implementation consists of the Surface Update Server and its client-side API. The Surface Update Server runs within the Window Server process along with the composition engine. The Surface Update Server uses the standard Symbian client/server model for Inter Process Communication (IPC) to communicate with clients and Inter Thread Communication (using active objects and semaphores) to communicate with the composition engine.

            The client sends requests for composition through the command channel and the composition engine sends notification messages through the notification channel.

            The following diagram shows communication between the client, Surface Update server and composition engine. The composition engine is shown as a single component, although it can be implemented as multiple components. For example, the OpenWF-C implementation consists of the OpenWF-C Support component and the OpenWF-C Engine component. The Surface Update Server in fact communicates with the OpenWF-C Support component, which in turn communicates with the OpenWF-C Engine.

            The Surface Update Server, showing IPC and ITC -

            Some key points to note include:

            • The composition engine is a device-specific adaptation that may delegate some of its functionality (such as composing hardware-rendered surfaces) to a GPU or display controller.

            • There is a composition engine instance for each internal screen and external screen connection point on the device. Each composition engine must be registered with the Surface Update Server at startup.

            • Each composition engine instance has a unique 32-bit priority number, which represents the relative priority of its associated screen. The higher the number, the higher the priority of the screen. The composition engine instance passes this to the Surface Update Server at registration. The Surface Update Server adds the priority value to its priority list. After it is set up, the priority list is fixed and does not change when a screen becomes unavailable—for example, because it is put on standby or an external screen is disconnected.

            • Each composition engine instance incorporates its own thread within the Window Server process. However, the external interface is accessed directly from the thread that makes the call. This means that MCompositionSurfaceUpdate::ContentUpdated() is called from the Surface Update Server thread.

            • The Window Server's main thread is a client of the Surface Update Server. Although it is running in the same process as the Surface Update Server, it uses RSurfaceUpdateSession in exactly the same way as a client in a separate process.

            The following diagram provides a more detailed view of the architecture. Notice that there is a composition engine thread for each screen.

            +

            Some key points to note include:

            • The composition engine is a device-specific adaptation that may delegate some of its functionality (such as composing hardware-rendered surfaces) to a GPU or display controller.

            • There is a composition engine instance for each internal screen and external screen connection point on the device. Each composition engine must be registered with the Surface Update Server at startup.

            • Each composition engine instance has a unique 32-bit priority number, which represents the relative priority of its associated screen. The higher the number, the higher the priority of the screen. The composition engine instance passes this to the Surface Update Server at registration. The Surface Update Server adds the priority value to its priority list. After it is set up, the priority list is fixed and does not change when a screen becomes unavailable—for example, because it is put on standby or an external screen is disconnected.

            • Each composition engine instance incorporates its own thread within the Window Server process. However, the external interface is accessed directly from the thread that makes the call. This means that MCompositionSurfaceUpdate::ContentUpdated() is called from the Surface Update Server thread.

            • The Window Server's main thread is a client of the Surface Update Server. Although it is running in the same process as the Surface Update Server, it uses RSurfaceUpdateSession in exactly the same way as a client in a separate process.

            The following diagram provides a more detailed view of the architecture. Notice that there is a composition engine thread for each screen.

            Surface Update Server class diagram -

            Do not confuse the Surface Update Server with the Surface Manager. The Surface Manager creates, deletes and manages access to the surface data, whereas the Surface Update Server is concerned with communicating the fact that surface data has changed.

            The Surface Update client API

            Here is a simplified RSurfaceUpdateSession declaration showing only the key functions.

            class RSurfaceUpdateSession : public RSessionBase +

            Do not confuse the Surface Update Server with the Surface Manager. The Surface Manager creates, deletes and manages access to the surface data, whereas the Surface Update Server is concerned with communicating the fact that surface data has changed.

            The Surface Update client API

            Here is a simplified RSurfaceUpdateSession declaration showing only the key functions.

            class RSurfaceUpdateSession : public RSessionBase { public: IMPORT_C RSurfaceUpdateSession(); @@ -49,12 +49,12 @@ User::WaitForRequest( statusDisplayedXTimes ) ;

            Notes:

            • Because this is test code and to avoid complexity, this example calls User::WaitForRequest() directly rather than using active objects.

            • In some hardware configurations where composition and display are fast, the buffer available and first displayed notifications may occur very close together for single-buffered surfaces. You should then use only one of these notifications at a time.

            Sequence diagrams

            These sequence diagrams primarily illustrate the protocol linking the sending of the buffers and notification. For simplicity some detail is omitted. For example, the client typically renders to the buffer before sending it to the composition engine. This is not shown. Similarly the diagrams omit detail from the composition engine and some omit the Surface Update Server altogether. In addition, they assume that a specific screen number is specified. When global surface updates are in use, the sequence is more complex and is described in Global Surface Updates.

            Surface buffer availability: single-buffered surface

            When using a single-buffered surface, the client typically does the following:

            1. Render the graphics content to the buffer.

            2. Call RSurfaceUpdateSession::NotifyWhenAvailable().

            3. Call RSurfaceUpdateSession::SubmitUpdate().

            4. Wait for notification that the buffer is available before rendering further content to it and repeating the cycle for as long as necessary.

            This is shown in the following diagram.

            Single-buffered surface availability -

            Notice that the notification signal is issued to the client immediately after the buffer has been consumed by the composition engine. When single buffers are used, tearing artefacts are always a risk. Therefore double-buffered surfaces are often used.

            Surface buffer availability: double-buffered surface

            When double-buffering is used, the client renders to one buffer (called A in this example) while the other buffer (B) is on the screen and vice versa. In order for this to work correctly and to be free of tearing artefacts, the client must use the following sequence:

            1. Render the graphics content to buffer A, and call NotifyWhenAvailable() followed by SubmitUpdate() for buffer A.

            2. Render the graphics content to buffer B, and call NotifyWhenAvailable() followed by SubmitUpdate() for buffer B.

            3. Wait for notification that buffer A is available. When it becomes available, render further content to it and call NotifyWhenAvailable() followed by SubmitUpdate() for buffer A.

            4. Wait for notification that buffer B is available. When it becomes available, render further content to it and call NotifyWhenAvailable() followed by SubmitUpdate() for buffer B.

            5. Repeat steps 3 and 4 for as long as required.

            This is shown in the next diagram. After sending the first two buffers to the composition engine, the client waits for notification before sending a further buffer. The composition engine always returns notification after receiving a new buffer even if an error condition is detected.

            +

            Notice that the notification signal is issued to the client immediately after the buffer has been consumed by the composition engine. When single buffers are used, tearing artefacts are always a risk. Therefore double-buffered surfaces are often used.

            Surface buffer availability: double-buffered surface

            When double-buffering is used, the client renders to one buffer (called A in this example) while the other buffer (B) is on the screen and vice versa. In order for this to work correctly and to be free of tearing artefacts, the client must use the following sequence:

            1. Render the graphics content to buffer A, and call NotifyWhenAvailable() followed by SubmitUpdate() for buffer A.

            2. Render the graphics content to buffer B, and call NotifyWhenAvailable() followed by SubmitUpdate() for buffer B.

            3. Wait for notification that buffer A is available. When it becomes available, render further content to it and call NotifyWhenAvailable() followed by SubmitUpdate() for buffer A.

            4. Wait for notification that buffer B is available. When it becomes available, render further content to it and call NotifyWhenAvailable() followed by SubmitUpdate() for buffer B.

            5. Repeat steps 3 and 4 for as long as required.

            This is shown in the next diagram. After sending the first two buffers to the composition engine, the client waits for notification before sending a further buffer. The composition engine always returns notification after receiving a new buffer even if an error condition is detected.

            Double-buffered surface availability -

            Notes:

            • The buffer that is on the screen is called the front buffer and the one that is being rendered into is called the back buffer.

            • Although double-buffering is shown, three or more buffers can be used.

            Frame update

            The following diagram shows the sequence when a client submits a request to be notified when the buffer has been displayed three times. However, the exact details depend on how the composition engine is implemented. If the composition engine knows the screen refresh rate, it can post the composed buffer to the Display Driver and wait for notification that the buffer is on the screen. It could then uses a timer to wait for three frames to be displayed, before it sends the notification.

            +

            Notes:

            • The buffer that is on the screen is called the front buffer and the one that is being rendered into is called the back buffer.

            • Although double-buffering is shown, three or more buffers can be used.

            Frame update

            The following diagram shows the sequence when a client submits a request to be notified when the buffer has been displayed three times. However, the exact details depend on how the composition engine is implemented. If the composition engine knows the screen refresh rate, it can post the composed buffer to the Display Driver and wait for notification that the buffer is on the screen. It could then uses a timer to wait for three frames to be displayed, before it sends the notification.

            Frame update sequence -

            If the client sends a new request for update while the previous one is still in progress, the previous request is cancelled with the KErrOverflow error code. This is illustrated in the next diagram.

            +

            If the client sends a new request for update while the previous one is still in progress, the previous request is cancelled with the KErrOverflow error code. This is illustrated in the next diagram.

            A second request when the first is still in progress -

            Cancelling of all outstanding requests

            If the client is waiting for a notification when you need to remove the active object that is handling the notification and close the thread, you must call CancelAllUpdateNotifiations() first—otherwise the client thread panics.

            However, CancelAllUpdateNotifiations() only cancels the notifications and not the associated command request. The notifications complete immediate with the KErrCancel error code.

            +

            Cancelling of all outstanding requests

            If the client is waiting for a notification when you need to remove the active object that is handling the notification and close the thread, you must call CancelAllUpdateNotifiations() first—otherwise the client thread panics.

            However, CancelAllUpdateNotifiations() only cancels the notifications and not the associated command request. The notifications complete immediate with the KErrCancel error code.

            Cancel all notifications before closing the connection -
            Global Surface Updates Graphics Composition Surfaces Surface Manager Overview Graphics Composition Collection
            \ No newline at end of file +
          Global Surface Updates Graphics Composition Surfaces Surface Manager Overview Graphics Composition Collection \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E907968-E6F8-5792-9B04-664971762FFF_d0e332203_href.png Binary file Symbian3/PDK/Source/GUID-8E907968-E6F8-5792-9B04-664971762FFF_d0e332203_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E907968-E6F8-5792-9B04-664971762FFF_d0e338175_href.png Binary file Symbian3/PDK/Source/GUID-8E907968-E6F8-5792-9B04-664971762FFF_d0e338175_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E995178-F3F2-4391-B99D-7A3451880F53_d0e100971_href.png Binary file Symbian3/PDK/Source/GUID-8E995178-F3F2-4391-B99D-7A3451880F53_d0e100971_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E995178-F3F2-4391-B99D-7A3451880F53_d0e79085_href.png Binary file Symbian3/PDK/Source/GUID-8E995178-F3F2-4391-B99D-7A3451880F53_d0e79085_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E995178-F3F2-4391-B99D-7A3451880F53_d0e79950_href.png Binary file Symbian3/PDK/Source/GUID-8E995178-F3F2-4391-B99D-7A3451880F53_d0e79950_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E995178-F3F2-4391-B99D-7A3451880F53_d0e83283_href.png Binary file Symbian3/PDK/Source/GUID-8E995178-F3F2-4391-B99D-7A3451880F53_d0e83283_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E995178-F3F2-4391-B99D-7A3451880F53_d0e84148_href.png Binary file Symbian3/PDK/Source/GUID-8E995178-F3F2-4391-B99D-7A3451880F53_d0e84148_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8E995178-F3F2-4391-B99D-7A3451880F53_d0e96892_href.png Binary file Symbian3/PDK/Source/GUID-8E995178-F3F2-4391-B99D-7A3451880F53_d0e96892_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8ECEF376-CB27-52FC-A9DD-933ACC24FDDC_d0e515731_href.png Binary file Symbian3/PDK/Source/GUID-8ECEF376-CB27-52FC-A9DD-933ACC24FDDC_d0e515731_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8ECEF376-CB27-52FC-A9DD-933ACC24FDDC_d0e523193_href.png Binary file Symbian3/PDK/Source/GUID-8ECEF376-CB27-52FC-A9DD-933ACC24FDDC_d0e523193_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8EE40A1A-7905-522B-A1A1-3F4ED053B042.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-8EE40A1A-7905-522B-A1A1-3F4ED053B042.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,32 @@ + + + + + + Using the Application Management Functions +

          Universal Software Install Framework (USIF) provides +APIs to perform the following:

          +
            +
          • Listing +software components installed on a device

          • +
          • Uninstalling +software component from a device

          • +
          • Extracting +package information

          • +
          +
          +SIF +Overview +Creating +an Installer +Retrieving +application information using application UID +Retrieving +application information using filters +
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8EE8E38C-7CA1-5F1B-86D0-1A0B03AAC5F2_d0e191459_href.png Binary file Symbian3/PDK/Source/GUID-8EE8E38C-7CA1-5F1B-86D0-1A0B03AAC5F2_d0e191459_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8EE8E38C-7CA1-5F1B-86D0-1A0B03AAC5F2_d0e197517_href.png Binary file Symbian3/PDK/Source/GUID-8EE8E38C-7CA1-5F1B-86D0-1A0B03AAC5F2_d0e197517_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8EF8CDD3-9FFE-5C39-8303-67A661C67F6B_d0e552887_href.jpg Binary file Symbian3/PDK/Source/GUID-8EF8CDD3-9FFE-5C39-8303-67A661C67F6B_d0e552887_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8EF8CDD3-9FFE-5C39-8303-67A661C67F6B_d0e560343_href.jpg Binary file Symbian3/PDK/Source/GUID-8EF8CDD3-9FFE-5C39-8303-67A661C67F6B_d0e560343_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8F04D882-B846-4A0D-B858-15FDA85758FA.dita --- a/Symbian3/PDK/Source/GUID-8F04D882-B846-4A0D-B858-15FDA85758FA.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8F04D882-B846-4A0D-B858-15FDA85758FA.dita Fri Jul 16 17:23:46 2010 +0100 @@ -10,7 +10,7 @@ Displaying -commands in a stylus pop-up menu +commands in a context menu

          To use a stylus pop-up menu in your application, implement the following use cases:

            @@ -36,8 +36,8 @@
          • Hiding and showing stylus pop-up menu items

          -
          Implementation -file

          The implementation file for the Stylus pop-up menu API is aknstyluspopupmenu.h.

          +
          Implementation file

          The implementation file for +the Stylus pop-up menu API is aknstyluspopupmenu.h.

          Stylus pop-up menu API description diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8F1567B4-6957-5B93-9499-35489AD610F5.dita --- a/Symbian3/PDK/Source/GUID-8F1567B4-6957-5B93-9499-35489AD610F5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8F1567B4-6957-5B93-9499-35489AD610F5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -50,7 +50,7 @@ at the chunk's base address and a size that is a multiple of the MMU page size. The following diagram is an example of this kind of chunk:

          Normal chunks - +

          Double-ended chunks

          These chunks have a committed region consisting of a single contiguous range starting at arbitrary lower and upper endpoints within the reserved region. The only @@ -58,14 +58,14 @@ MMU page size. Both the bottom and top of the committed region can be altered dynamically. The following diagram shows an example of this kind of chunk:

          Double-ended chunks - +

          Disconnected chunks

          These chunks have a committed region consisting of an arbitrary set of MMU pages within the reserved region. Each page-sized address range within the reserved region starting on a page boundary can be committed independently. The following diagram shows an example of this kind of chunk:

          Disconnected chunks - +
          Shared chunks

          A shared chunk is a mechanism that allows kernel-side code to share memory buffers diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8F19C257-9A41-5D38-BC8A-285D0EB16E1B_d0e653407_href.png Binary file Symbian3/PDK/Source/GUID-8F19C257-9A41-5D38-BC8A-285D0EB16E1B_d0e653407_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8F19C257-9A41-5D38-BC8A-285D0EB16E1B_d0e666234_href.png Binary file Symbian3/PDK/Source/GUID-8F19C257-9A41-5D38-BC8A-285D0EB16E1B_d0e666234_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8F29E5C9-0EEA-569C-ADB2-82FD61D87378_d0e535642_href.jpg Binary file Symbian3/PDK/Source/GUID-8F29E5C9-0EEA-569C-ADB2-82FD61D87378_d0e535642_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8F29E5C9-0EEA-569C-ADB2-82FD61D87378_d0e543102_href.jpg Binary file Symbian3/PDK/Source/GUID-8F29E5C9-0EEA-569C-ADB2-82FD61D87378_d0e543102_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8F4C626F-3490-50BC-A97F-FD1972FFF65B_d0e240752_href.png Binary file Symbian3/PDK/Source/GUID-8F4C626F-3490-50BC-A97F-FD1972FFF65B_d0e240752_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8F4C626F-3490-50BC-A97F-FD1972FFF65B_d0e246762_href.png Binary file Symbian3/PDK/Source/GUID-8F4C626F-3490-50BC-A97F-FD1972FFF65B_d0e246762_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8F6627A5-5DDE-5F30-86BF-CFD507DE876B_d0e455002_href.png Binary file Symbian3/PDK/Source/GUID-8F6627A5-5DDE-5F30-86BF-CFD507DE876B_d0e455002_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8F6627A5-5DDE-5F30-86BF-CFD507DE876B_d0e460847_href.png Binary file Symbian3/PDK/Source/GUID-8F6627A5-5DDE-5F30-86BF-CFD507DE876B_d0e460847_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8F6F6C2C-C00E-4412-A880-5EEBF7270265.dita --- a/Symbian3/PDK/Source/GUID-8F6F6C2C-C00E-4412-A880-5EEBF7270265.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8F6F6C2C-C00E-4412-A880-5EEBF7270265.dita Fri Jul 16 17:23:46 2010 +0100 @@ -18,7 +18,7 @@

          The generic button can have properties such as ON/OFF button, Mode toggle button and Command button. For more details, see Toolbar:

          - +

          Buttons can have the following states:

          • Unavailable / dimmed when button function is not available

          • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8F78705E-CD82-5039-A7CB-7C963F7FBA83_d0e296533_href.png Binary file Symbian3/PDK/Source/GUID-8F78705E-CD82-5039-A7CB-7C963F7FBA83_d0e296533_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8F78705E-CD82-5039-A7CB-7C963F7FBA83_d0e302525_href.png Binary file Symbian3/PDK/Source/GUID-8F78705E-CD82-5039-A7CB-7C963F7FBA83_d0e302525_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8F8E3814-7ED6-4218-BEEF-741AE0E9366F.dita --- a/Symbian3/PDK/Source/GUID-8F8E3814-7ED6-4218-BEEF-741AE0E9366F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-8F8E3814-7ED6-4218-BEEF-741AE0E9366F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,7 +12,7 @@ Changing the PriorityThis section describes how an application (internal or third-party) can change its priority by using OOM Monitor APIs. -

            An application +

            An application which is processing a task in the background can change its priority at runtime to protect itself from being closed by the OOM Monitor. For example:

            • Music Player playing music in the background

            • @@ -23,15 +23,15 @@ itself to be Busy using ROomMonitorSession::SetOomPriority(EOomPriorityBusy) method. When the application finishes its background job and becomes idle, it should change its priority to Normal.

              - -Create an OOM Monitor + +Create an OOM Monitor session ROomMonitorSession ioomMonitorSession; CleanUpClosePushL(ioomMonitorSession); User::LeaveIfError(ioomMonitorSession.Connect()); -Set the priority +Set the priority for the application to Busy before performing the background task iOomMonitorSession.SetOomPriority(ROomMonitorSession::EOomPriorityBusy); @@ -43,7 +43,7 @@ iOomMonitorSession.SetOomPriority(ROomMonitorSession::EOomPriorityNormal); -Close the session. +Close the session. iOomMonitorSession.Close(); diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8FB9A16A-15B4-59C0-842B-2B70169E2E95_d0e231607_href.png Binary file Symbian3/PDK/Source/GUID-8FB9A16A-15B4-59C0-842B-2B70169E2E95_d0e231607_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8FB9A16A-15B4-59C0-842B-2B70169E2E95_d0e237602_href.png Binary file Symbian3/PDK/Source/GUID-8FB9A16A-15B4-59C0-842B-2B70169E2E95_d0e237602_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-8FF4D117-920A-5AFA-ABB3-C0101EE2B7AA.dita --- a/Symbian3/PDK/Source/GUID-8FF4D117-920A-5AFA-ABB3-C0101EE2B7AA.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - --no_debug

              This option does not generate symbolic debug information for release or debug builds.

              The option instructs the makmake tool to not generate the symbolic debug information for UREL or UDEB variants. It supports only ARM ABI compliant platforms.

              Note that the option is applicable to the build and makefile commands only.

              Also note that this option cannot be used with the -debug option.

              \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-90076A13-E062-5A7B-BB0F-168F7C8A96DD_d0e106581_href.png Binary file Symbian3/PDK/Source/GUID-90076A13-E062-5A7B-BB0F-168F7C8A96DD_d0e106581_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-90076A13-E062-5A7B-BB0F-168F7C8A96DD_d0e109024_href.png Binary file Symbian3/PDK/Source/GUID-90076A13-E062-5A7B-BB0F-168F7C8A96DD_d0e109024_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-90094016-7DAA-5643-9470-36DF324D5884.dita --- a/Symbian3/PDK/Source/GUID-90094016-7DAA-5643-9470-36DF324D5884.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-90094016-7DAA-5643-9470-36DF324D5884.dita Fri Jul 16 17:23:46 2010 +0100 @@ -49,5 +49,5 @@ // Use Location Acquisition API as normal... ... - The Default PSY has a list of all available PSYs. If the Network PSY is installed it can be used by the Default PSY. The choice of which PSY is used is based on the priority and availability of the PSYs. See Positioning Plug-in Information API for more information about PSY settings. See Default PSY for information about how a PSY is selected.
              Default - PSY Positioning Plug-in Information API Location Acquisition API \ No newline at end of file + The Default PSY has a list of all available PSYs. If the Network PSY is installed it can be used by the Default PSY. The choice of which PSY is used is based on the priority and availability of the PSYs. See Positioning Plug-in Information API for more information about PSY settings. See Default PSY for information about how a PSY is selected.
              Default + PSY Positioning Plug-in Information API Location Acquisition API \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9022E900-2BDD-5B64-9802-4EBA5BFEB4B2_d0e141412_href.png Binary file Symbian3/PDK/Source/GUID-9022E900-2BDD-5B64-9802-4EBA5BFEB4B2_d0e141412_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9022E900-2BDD-5B64-9802-4EBA5BFEB4B2_d0e143661_href.png Binary file Symbian3/PDK/Source/GUID-9022E900-2BDD-5B64-9802-4EBA5BFEB4B2_d0e143661_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9045FC43-162E-52B8-ABE2-5EC1EC88BD99_d0e247853_href.png Binary file Symbian3/PDK/Source/GUID-9045FC43-162E-52B8-ABE2-5EC1EC88BD99_d0e247853_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9045FC43-162E-52B8-ABE2-5EC1EC88BD99_d0e253864_href.png Binary file Symbian3/PDK/Source/GUID-9045FC43-162E-52B8-ABE2-5EC1EC88BD99_d0e253864_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-904C9C5A-5FDB-5978-88CF-E30D6C0DBB61_d0e379715_href.png Binary file Symbian3/PDK/Source/GUID-904C9C5A-5FDB-5978-88CF-E30D6C0DBB61_d0e379715_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-904C9C5A-5FDB-5978-88CF-E30D6C0DBB61_d0e385568_href.png Binary file Symbian3/PDK/Source/GUID-904C9C5A-5FDB-5978-88CF-E30D6C0DBB61_d0e385568_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-905EA9A9-C72C-5632-A95E-B4ED0BD10316_d0e443688_href.png Binary file Symbian3/PDK/Source/GUID-905EA9A9-C72C-5632-A95E-B4ED0BD10316_d0e443688_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-905EA9A9-C72C-5632-A95E-B4ED0BD10316_d0e449533_href.png Binary file Symbian3/PDK/Source/GUID-905EA9A9-C72C-5632-A95E-B4ED0BD10316_d0e449533_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita --- a/Symbian3/PDK/Source/GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-90644B52-69D7-595C-95E3-D6F7A30C060D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -118,7 +118,7 @@ Figure 1: Handwriting simulation might use different glyphs for the letter p depending on its position in a word - +

              Contextual shaping is an essential feature of some scripts, including Arabic and many Indian and East Asian scripts, such as Devanagari, Kannada, Telugu, Tamil, Bengali, Malayalam and Gurmukhi. For this reason, support for @@ -144,7 +144,7 @@ Figure 2: The Graphics Device and Context Architecture.

              Note that the names of the BitGDI classes begin with CFbs.

              - +

              Applications access font services through the Font and Bitmap Server (FBSERV) which caches font bitmaps in a shared heap. The Font and Bitmap Server ensures that there is only ever a single instance diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9070E54B-8E3E-5968-AC78-1F2478FDCBA1_d0e450887_href.png Binary file Symbian3/PDK/Source/GUID-9070E54B-8E3E-5968-AC78-1F2478FDCBA1_d0e450887_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9070E54B-8E3E-5968-AC78-1F2478FDCBA1_d0e456732_href.png Binary file Symbian3/PDK/Source/GUID-9070E54B-8E3E-5968-AC78-1F2478FDCBA1_d0e456732_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-90B593E2-F38B-5B38-9367-E2BF344A2834_d0e665495_href.png Binary file Symbian3/PDK/Source/GUID-90B593E2-F38B-5B38-9367-E2BF344A2834_d0e665495_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-90B593E2-F38B-5B38-9367-E2BF344A2834_d0e678322_href.png Binary file Symbian3/PDK/Source/GUID-90B593E2-F38B-5B38-9367-E2BF344A2834_d0e678322_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-90DF40EF-7D3F-551D-9957-A3756317A254.dita --- a/Symbian3/PDK/Source/GUID-90DF40EF-7D3F-551D-9957-A3756317A254.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-90DF40EF-7D3F-551D-9957-A3756317A254.dita Fri Jul 16 17:23:46 2010 +0100 @@ -59,7 +59,7 @@ (in this case, the OCSP server), which replies with a single response. The following figure illustrates the interaction between the OCSP client and a single destination responder.

              - +
            • Multiple OCSP responders using an intermediate OCSP server

              Multiple OCSP responders use @@ -69,14 +69,14 @@ and one response is sent back to the client. The following figure shows the interaction between an OCSP client and multiple destination responders by using an intermediate responder.

              - +
            • Multiple OCSP responders without an intermediate server

              The client does the work of sending each request to the appropriate responder. The client collates the responses received. The following figure shows the interaction between the client and multiple destination responders.

              - +

            The choice of the correct method of interaction between the client and the responders depends on the nature of the Public Key Infrastructure diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-91224821-8094-59ED-A100-4174193A25EE_d0e366563_href.png Binary file Symbian3/PDK/Source/GUID-91224821-8094-59ED-A100-4174193A25EE_d0e366563_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-91224821-8094-59ED-A100-4174193A25EE_d0e372411_href.png Binary file Symbian3/PDK/Source/GUID-91224821-8094-59ED-A100-4174193A25EE_d0e372411_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-912643B5-0B8D-5836-B864-9A2DBAC86B00_d0e265062_href.png Binary file Symbian3/PDK/Source/GUID-912643B5-0B8D-5836-B864-9A2DBAC86B00_d0e265062_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-912643B5-0B8D-5836-B864-9A2DBAC86B00_d0e271062_href.png Binary file Symbian3/PDK/Source/GUID-912643B5-0B8D-5836-B864-9A2DBAC86B00_d0e271062_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9126A296-0301-4077-A183-3D703F77C548.dita --- a/Symbian3/PDK/Source/GUID-9126A296-0301-4077-A183-3D703F77C548.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9126A296-0301-4077-A183-3D703F77C548.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,113 +1,91 @@ - - - - -Support for Multiple Pointers in the Emulator Overview -This topic provides an overview of support for multiple -pointers in the emulator. Two mice are used to provide two independent -pointer positions. The emulator responds to the mice’s individual -button-clicks, moves, and mouse wheel scrolls as if two human fingers -are moving, touching or hovering over the screen. - - - - -

            The emulator can be extended to support more than two mice or other -pointer devices.

            -

            Variant: ScreenPlay. Target audience: Application developers.

            -

            The following figure shows two Windows pointers on the emulator -screen, each representing a mouse device. The ordinal integer (starting -from 0) beside each pointer is the unique device identifier. The position -of each mouse on the screen is represented by the X and Y coordinates. -The pressure (a positive value) and proximity (a negative value) information -captured by the mouse wheel is represented by the Z coordinate. Notice -that the status bar shows the identifier and the dynamic X, Y and -Z values of each pointer.

            - -Two pointers are displayed in the emulator - -

            The delivery of pointer events from the emulator driver to the -Window Server is the same when there are multiple pointers as in the -single pointer environment. This means the raw events for a mouse -move, button click and mouse wheel movement are delivered to the Window -Server as usual. Each mouse has a unique device identifier, which -makes it possible to ascertain which mouse the events relate to. The -raw events for each individual mouse include the following:

            -
              -
            • TRawEvent::EPointerMove indicates a mouse -move or a mouse wheel movement event.

            • -
            • TRawEvent::EButton1Down indicates that the -left mouse button is pressed down.

            • -
            • TRawEvent::EButton1Up indicates that the left -mouse button is released.

            • -
            • TRawEvent::EPointerOutOfRange indicates that -the proximity of a mouse is out of range. This means that the Z coordinate -value of the mouse has reached HALData::EPointer3DMaxProximity.

            • -
            -
            Pressure and proximity emulation

            The Z coordinate -value is used to represent the pressure and proximity to the screen. -In the emulator, the Z value is captured and tuned by the mouse wheel -movement.

              -
            • Z < 0 indicates the proximity of the device from the screen.

            • -
            • Z > 0 indicates pressure.

            • -

            See Advanced Pointer Overview for more information about pressure -and proximity.

            The mouse wheel combines the features of a wheel -and a mouse button. The wheel has discrete, evenly spaced notches. -Rotating the wheel backwards or forwards has the effect of changing -the pressure or proximity.

              -
            • When the mouse wheel is rotated, a device-specific message -is sent to the emulator window that has focus as each notch is encountered.

            • -
            • The Z coordinate is initiated as 0. Then when the wheel is -moved forward, the Z value enters the pressure range and increases -by one pressure step. When the wheel is moved backward, the Z value -enters the proximity range and decreases by one proximity step.

              The pressure or proximity step can be customized in the epoc.ini file. See Enabling Multiple -Pointers in the Emulator Tutorial for more information.

            • -
            • When the Z value is in the pressure range (Z > 0), moving the -wheel forward by one notch increases Z by one pressure step. Moving -the wheel backward by one notch decreases Z by one pressure step, -until Z returns to 0.

            • -
            • When the Z value is in the proximity range (Z < 0), moving -the wheel backward by one notch decreases Z by one proximity step. -Moving the wheel forward by one notch increases Z by one proximity -step, until Z returns to 0.

            • -
            • There are limits to the values of the Z coordinate. This means -that the Symbian emulator does not allow Z to exceed the upper boundary HALData::EPointer3DMaxPressure (a positive -value) and lower boundary HALData::EPointer3DMaxProximity (a negative -value). If Z is at the lower boundary, when the mouse wheel is moved -backward next time, Z does not change. A new Out of Range pointer event is generated and sent to the Window Server. Similarly -when Z is at the upper boundary, Z does not change when the mouse -wheel is moved forward.

            • -
            • When the mouse button down or up event (TRawEvent::EButton1Down or TRawEvent::EButton1Up) is generated, Z is reset -to 0.

            • -
            - - -Advanced Pointers -Enabling Multiple Pointers in the Emulator Tutorial - - - - + + + + + +Support for Multiple Pointers in the Emulator OverviewThis topic provides an overview of support for multiple +pointers in the emulator. Two mice are used to provide two independent +pointer positions. The emulator responds to the mice’s individual +button-clicks, moves, and mouse wheel scrolls as if two human fingers +are moving, touching or hovering over the screen. +

            The emulator can be extended to support more than two mice or other +pointer devices.

            +

            Variant: ScreenPlay. Target audience: Application developers.

            +

            The following figure shows two Windows pointers on the emulator +screen, each representing a mouse device. The ordinal integer (starting +from 0) beside each pointer is the unique device identifier. The position +of each mouse on the screen is represented by the X and Y coordinates. +The pressure (a positive value) and proximity (a negative value) information +captured by the mouse wheel is represented by the Z coordinate. Notice +that the status bar shows the identifier and the dynamic X, Y and +Z values of each pointer.

            + +Two pointers are displayed in the emulator + + +

            The delivery of pointer events from the emulator driver to the +Window Server is the same when there are multiple pointers as in the +single pointer environment. This means the raw events for a mouse +move, button click and mouse wheel movement are delivered to the Window +Server as usual. Each mouse has a unique device identifier, which +makes it possible to ascertain which mouse the events relate to. The +raw events for each individual mouse include the following:

            +
              +
            • TRawEvent::EPointerMove indicates a mouse +move or a mouse wheel movement event.

            • +
            • TRawEvent::EButton1Down indicates that the +left mouse button is pressed down.

            • +
            • TRawEvent::EButton1Up indicates that the left +mouse button is released.

            • +
            • TRawEvent::EPointerOutOfRange indicates that +the proximity of a mouse is out of range. This means that the Z coordinate +value of the mouse has reached HALData::EPointer3DMaxProximity.

            • +
            +
            Pressure and proximity emulation

            The Z coordinate value +is used to represent the pressure and proximity to the screen. In +the emulator, the Z value is captured and tuned by the mouse wheel +movement.

              +
            • Z < 0 indicates the proximity of the device from the screen.

            • +
            • Z > 0 indicates pressure.

            • +

            See Advanced Pointer Overview for more information about pressure +and proximity.

            The mouse wheel combines the features of a wheel +and a mouse button. The wheel has discrete, evenly spaced notches. +Rotating the wheel backwards or forwards has the effect of changing +the pressure or proximity.

              +
            • When the mouse wheel is rotated, a device-specific message +is sent to the emulator window that has focus as each notch is encountered.

            • +
            • The Z coordinate is initiated as 0. Then when the wheel is +moved forward, the Z value enters the pressure range and increases +by one pressure step. When the wheel is moved backward, the Z value +enters the proximity range and decreases by one proximity step.

              The pressure or proximity step can be customized in the epoc.ini file. See Enabling Multiple +Pointers in the Emulator Tutorial for more information.

            • +
            • When the Z value is in the pressure range (Z > 0), moving the +wheel forward by one notch increases Z by one pressure step. Moving +the wheel backward by one notch decreases Z by one pressure step, +until Z returns to 0.

            • +
            • When the Z value is in the proximity range (Z < 0), moving +the wheel backward by one notch decreases Z by one proximity step. +Moving the wheel forward by one notch increases Z by one proximity +step, until Z returns to 0.

            • +
            • There are limits to the values of the Z coordinate. This means +that the Symbian emulator does not allow Z to exceed the upper boundary HALData::EPointer3DMaxPressure (a positive value) and lower +boundary HALData::EPointer3DMaxProximity (a negative +value). If Z is at the lower boundary, when the mouse wheel is moved +backward next time, Z does not change. A new Out of Range pointer event is generated and sent to the Window Server. Similarly +when Z is at the upper boundary, Z does not change when the mouse +wheel is moved forward.

            • +
            • When the mouse button down or up event (TRawEvent::EButton1Down or TRawEvent::EButton1Up) is generated, Z is reset +to 0.

            • +
            +
            +Advanced +Pointers +Enabling +Multiple Pointers in the Emulator Tutorial +
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9147F8AF-01B3-5110-8FE7-A6318B5048D9_d0e46332_href.png Binary file Symbian3/PDK/Source/GUID-9147F8AF-01B3-5110-8FE7-A6318B5048D9_d0e46332_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9147F8AF-01B3-5110-8FE7-A6318B5048D9_d0e50566_href.png Binary file Symbian3/PDK/Source/GUID-9147F8AF-01B3-5110-8FE7-A6318B5048D9_d0e50566_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-914DD950-4332-5F23-B725-F4D330DB19EB.dita --- a/Symbian3/PDK/Source/GUID-914DD950-4332-5F23-B725-F4D330DB19EB.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ - - - - - -UID2 -and UID3 statements -<uid2-statement> -uid2-statement ::= -UID2 <uid-value> <uid3-statement> -uid3-statement ::= -UID3 <uid-value> -

            Defines the second (UID2) and third (UID3) -UIDs for the resource file. The uid-value is a UID number -(or macro representing such a number).

            -

            At the start of a resource file, a UID triplet is stored. The first UID -of a resource file is always 0x101f4a6b. By default, the -second UID is zero and the third UID is the resource file’s “offset”, i.e. -the twenty-bit integer generated from the resource file’s name. The defaults -can be overriden using these statements (or from a START RESOURCE statement -in an mmp file).

            -

            Some clients of resource files read the UID values (see RResourceFile::UidType()) -to test that a resource file is of a suitable type. In many other cases, the -reader of the resource file does not use the UID values, so there is no need -to use the UID2/UID3 statements.

            -UID2 KUidAppRegistrationResourceFile -UID3 0x10001234 -
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-915A1B7D-10BB-5B4A-8C5E-99AD28375AD7.dita --- a/Symbian3/PDK/Source/GUID-915A1B7D-10BB-5B4A-8C5E-99AD28375AD7.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ - - - - - -ARMV7 build target

            The ARMV7 build target builds for the ARMV7 architecture that supports Thumb-2 instruction set. For details on ARMV7 architecture, refer to http://www.arm.com/products/CPUs/architecture.html. To build for ARMV7, ARM's RealView Compilation Tools (RVCT) v3.1 or later is required.

            Building binaries for ARMV7

            To build binaries for ARMV7 with abld, use:

            abld build ARMV7 [udeb | urel]

            Binaries are generated in the udeb and urel sub-directories of the epoc32\release\ARMV7\ directory for ABI v2.

            Note: Code is not built for ARMV7 target by default. It has to be explicitly specified on the command line or in the BLD.INF file using the prj_platforms statement.

            ARMV5 build - targets ARMV6 build targets GCCE build targets
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9169062F-3B6D-544C-847C-BA859DAB33B9.dita --- a/Symbian3/PDK/Source/GUID-9169062F-3B6D-544C-847C-BA859DAB33B9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9169062F-3B6D-544C-847C-BA859DAB33B9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -52,7 +52,7 @@ to the server.

            The following diagram illustrates this:

            - +

            Sending messages asynchronously to the server

            A server can support multiple connections from a client in a number of diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9173EEBA-CC84-51D9-9C8D-A75F7F494D62_d0e379850_href.png Binary file Symbian3/PDK/Source/GUID-9173EEBA-CC84-51D9-9C8D-A75F7F494D62_d0e379850_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9173EEBA-CC84-51D9-9C8D-A75F7F494D62_d0e385703_href.png Binary file Symbian3/PDK/Source/GUID-9173EEBA-CC84-51D9-9C8D-A75F7F494D62_d0e385703_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-917413FC-0AC0-5768-B5AD-36BD2EDCB1FF.dita --- a/Symbian3/PDK/Source/GUID-917413FC-0AC0-5768-B5AD-36BD2EDCB1FF.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ - - - - - -How to build feature-based variants

            A feature-based variant defines features to which a DLL is sensitive. To build a DLL for a variant configuration of ARMV5, perform the steps outlined below:

            1. Add the FEATUREVARIANT keyword in the .mmp file to mark the DLL as a feature variant.

            2. Create a .var file containing the configuration for the variant. For variant file syntax, refer to variant configuration file syntax.

            3. Place the .var file in - /epoc32/tools/variant/ variant_name.var .

            4. Build the DLL for a variant using the abld command.

              For example:

              abld build armv5.myvar

            The DLL is built and placed in the /epoc32/release/armv5/urel folder.

            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-917790B7-A71D-511C-AFAB-BB46EFD046C6_d0e186238_href.jpg Binary file Symbian3/PDK/Source/GUID-917790B7-A71D-511C-AFAB-BB46EFD046C6_d0e186238_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-917790B7-A71D-511C-AFAB-BB46EFD046C6_d0e192315_href.jpg Binary file Symbian3/PDK/Source/GUID-917790B7-A71D-511C-AFAB-BB46EFD046C6_d0e192315_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-91958EA5-9444-5895-B4B8-F2C670B81CD7_d0e378206_href.png Binary file Symbian3/PDK/Source/GUID-91958EA5-9444-5895-B4B8-F2C670B81CD7_d0e378206_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-91958EA5-9444-5895-B4B8-F2C670B81CD7_d0e384059_href.png Binary file Symbian3/PDK/Source/GUID-91958EA5-9444-5895-B4B8-F2C670B81CD7_d0e384059_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-919B2A27-348D-5280-9BF4-7F63065FDD9B.dita --- a/Symbian3/PDK/Source/GUID-919B2A27-348D-5280-9BF4-7F63065FDD9B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-919B2A27-348D-5280-9BF4-7F63065FDD9B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> 3GP Library Component Overview

            This document introduces you to the 3GP Library Component.

            Purpose

            The 3GP Library Component provides support for the reading (parsing) and writing (composing) of various multimedia container formats. You can use the 3GP Library Component to parse and compose the following file types:

            • 3GP

            • 3G2

            • MP4

            Architectural relationships

            The 3GP Library Component is a standalone component in the Multimedia Plug-ins collection. The following diagram shows the architecture of the 3GP Library Component:

            3GP Library Component Architecture -
            Library summary

            The 3GP Library Component consists of the following libraries:

          Library Description

          3gplibrary.dll

          The Symbian C++ wrapper classes for parsing and composing 3GP, 3G2, and MP4 files. For more information, see 3GP Library Overview.

          Typical uses

          The 3GP Library Component lets you compose and parse 3GP, 3G2, and MP4 files.

          See also

          3GP Library Overview

          \ No newline at end of file +
        Library summary

        The 3GP Library Component consists of the following libraries:

        Library Description

        3gplibrary.dll

        The Symbian C++ wrapper classes for parsing and composing 3GP, 3G2, and MP4 files. For more information, see 3GP Library Overview.

        Typical uses

        The 3GP Library Component lets you compose and parse 3GP, 3G2, and MP4 files.

        See also

        3GP Library Overview

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-919E32B1-1316-4B09-B668-E744E78B0B6E.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-919E32B1-1316-4B09-B668-E744E78B0B6E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,411 @@ + + + + + +Supported +file types +

        This section describes the file types supported by the Media Fetch API +and the metadata system (MdS).

        +

        The Media Fetch API and the metadata +system support the following types of multimedia items:

        +
          +
        • Video files

        • +
        • Audio files

        • +
        • Image files

        • +
        • Streaming links

        • +
        • Playlist files

        • +
        +

        The following table describes the supported video files.

        +Supported video +files + + + +

        File extension

        +

        MIME type

        +

        Description

        +
        + + + +

        3g2

        +

        video/3gp

        +

        3GP is a multimedia container format that is defined by the Third +Generation Partnership Project (3GPP) for use on 3G mobile devices but that +can also be played on some 2G and 4G devices.

        The 3GPP2 standard is +defined for CDMA-based devices and has the file extension 3g2.

        +
        + +

        3gp

        +

        video/3gp

        +

        The 3GPP standard is defined for GSM-based devices and has the file +extension 3gp.

        +
        + +

        avi

        +

        video/avi

        +

        Audio video interleave (AVI) is a multimedia container format introduced +by Microsoft as part of its Video for Windows technology. AVI files can contain +both audio and video data in a file container that allows synchronous audio-with-video +playback.

        +
        + +

        flv

        +

        video/x-flv

        +

        Flash video is a file format used to deliver video over the Internet +using Adobe Flash Player. Flash video content may also be embedded within +SWF files.

        +
        + +

        m4v

        +

        video/mp4

        +

        M4V is a standard file format for videos for iPod and PlayStation +Portable devices developed by Apple. It is based on the MPEG-4 Part 2 compression.

        +
        + +

        mp4

        +

        video/mp4

        +

        MPEG-4 is a multimedia container format standard that is most commonly +used to store digital audio and digital video streams, especially those defined +by MPEG. It can also be used to store other data such as subtitles and still +images.

        MPEG-4 files with audio and video generally use the standard +mp4 extension.

        +
        + +

        mpeg4

        +

        video/mp4

        +

        Another file name extension for MPEG-4 files.

        +
        + +

        mpg4

        +

        video/mp4

        +

        Another file name extension for MPEG-4 files.

        +
        + +

        ram

        +

        video/3gpp

        +

        RealAudio metadata (RAM) is typically a small text file that contains +a link to the audio stream.

        +
        + +

        rm

        +

        application/vnd.rn-realmedia

        +

        RealMedia is a multimedia container format created by RealNetworks +that is typically used in conjunction with RealVideo and RealAudio for streaming +content over the Internet.

        +
        + +

        rmvb

        +

        application/vnd.rn-realmedia-vbr

        +

        RealMedia variable bitrate (RMVB) is a container streaming content +over the Internet with variable bit rate.

        +
        + +

        rtp

        +

        application/x-nokia-teh-rtp

        +

        + + +

        rv

        +

        video/vnd.rn-realvideo

        +

        RealVideo is a proprietary video format developed by RealNetworks +that is usually paired with RealAudio and packaged in a RealMedia (rm) container.

        +
        + + +
        +

        The following table describes the supported audio files.

        +Supported audio +files + + + +

        File extension

        +

        MIME type

        +

        Description

        +
        + + + +

        3gp

        +

        audio/3gpp

        +

        The 3GPP standard is defined for GSM-based devices and has the file +extension 3gp.

        +
        + +

        3gpp

        +

        audio/3gpp

        +

        Another file name extension for 3GPP files.

        +
        + +

        aac

        +

        audio/aac

        +

        Advanced audio coding (AAC) is a standardized, compression and encoding +scheme for digital audio. Designed to be the successor of the MP3 format, +AAC generally achieves better sound quality than MP3 at many bit rates.

        +
        + +

        amr

        +

        audio/amr

        +

        A file format for storing spoken audio using the adaptive multi-rate +(AMR) codec. AMR is a patented audio data compression scheme optimized for +speech coding.

        +
        + +

        au

        +

        audio/au

        +

        A simple audio file format.

        +
        + +

        awb

        +

        audio/amr-wb

        +

        Adaptive multi-rate – wide band (AMR-WB) is a patented speech coding +standard developed after the AMR that provides excellent speech quality due +to wider speech bandwidth.

        +
        + +

        m4a

        +

        audio/mp4

        +

        Audio-only MPEG-4 files generally have an m4a extension. This is +especially true of non-protected content.

        +
        + +

        mid

        +

        audio/midi

        +

        Musical instrument digital interface (MIDI) is an industry-standard +protocol that enables electronic musical instruments, such as keyboard controllers, +computers, and other electronic equipment, to communicate, control, and synchronize +with each other.

        +
        + +

        midi

        +

        audio/midi

        +

        Another file name extension for MIDI files.

        +
        + +

        mp3

        +

        audio/mpeg

        +

        MPEG-1 audio layer 3, more commonly referred to as MP3, is a patented +digital audio encoding format using a form of data compression. It is a common +audio format for consumer audio storage and widely used for digital audio +compression for the transfer and playback of music on digital audio players.

        +
        + +

        mp4

        +

        audio/mp4

        +

        MPEG-4 files with audio and video generally use the standard mp4 +extension.

        +
        + +

        mxmf

        +

        audio/vnd.nokia.mobile-xmf

        +

        The extensible music format (XMF) is a tree-based digital container +format used to bundle music-oriented content, such as a MIDI file and optionally +the sounds it uses, liner notes or other content grouped by language-codes.

        +
        + +

        nrt

        +

        -

        +

        Nokia Ringing Tone.

        +
        + +

        ra

        +

        audio/vnd.rn-realaudio

        +

        RealAudio is a proprietary audio format developed by RealNetworks. +It uses a variety of audio codecs, ranging from low-bitrate formats that can +be used over dialup modems, to high-fidelity formats for music.

        +
        + +

        rng

        +

        application/vnd.nokia.ringing-tone

        +

        Nokia Ringing Tone.

        +
        + +

        spmid

        +

        audio/sp-midi

        +

        Scalable polyphony MIDI (SP-MIDI) is a MIDI variant for mobile applications +where different players may have different numbers of musical voices. SP-MIDI +is a component of 3GPP.

        +
        + +

        wav

        +

        audio/wav

        +

        Waveform audio format is a Microsoft and IBM audio file format standard +for storing an audio bit stream on computers.

        +
        + +

        wma

        +

        audio/x-ms-wma

        +

        Windows Media Audio (WMA) is an audio data compression technology +developed by Microsoft as a part of the Windows Media framework.

        +
        + + +
        +

        The following table describes the supported image files.

        +Supported image +files + + + +

        File extension

        +

        MIME type

        +

        Description

        +
        + + + +

        bmp

        +

        image/bmp

        +

        An image file format used to store digital images.

        +
        + +

        gif

        +

        image/gif

        +

        Graphics interchange format (GIF) is a bitmap image format that +provides good-quality color images that take up a small amount of space.

        +
        + +

        j2k

        +

        image/jp2

        +

        JPEG 2000 is a wavelet-based image compression standard.

        Files +that contain JPEG 2000 code stream data for testing purposes might use the +filename extension j2k.

        +
        + +

        jp2

        +

        image/jp2

        +

        Files that conform to the JPEG 2000 specification, ISO/IEC 15444-1, +use the standardized filename extension jp2.

        +
        + +

        jpeg

        +

        image/jpeg

        +

        JPEG is a method for compressing photographic images.

        +
        + +

        jpf

        +

        image/jp2

        +

        Another file name extension for JPEG 2000 files.

        +
        + +

        jpg

        +

        image/jpeg

        +

        Another file name extension for JPEG files.

        +
        + +

        jpx

        +

        image/jpx

        +

        Files that conform to the extended part-2 JPEG 2000 specification, +ISO/IEC 15444-2, use the filename extension jpx.

        +
        + +

        mbm

        +

        image/x-epoc-mbm

        +

        A multi-bitmap is a container for a set of bitmap images. MBM files +can be used by Symbian applications to store graphical content.

        +
        + +

        ota

        +

        image/vnd.nokia.ota-bitmap

        +

        Over-the-air (OTA) images.

        +
        + +

        png

        +

        image/png

        +

        Portable networking graphics (PNG) is a bit map image format that +was designed for transferring images on the Internet.

        +
        + +

        tif

        +

        image/tiff

        +

        Tagged image file format (TIFF) is a file format for storing images, +including photographs and line art.

        +
        + +

        tiff

        +

        image/tiff

        +

        Another file name extension for TIFF files.

        +
        + +

        wbmb

        +

        image/vnd.wap.wbmp

        +

        Wireless bitmap (WBMP) is a monochrome image file format that is +optimized for mobile devices.

        +
        + +

        wmf

        +

        image/x-wmf

        +

        Windows metafile (WMF) is a graphics file format on Microsoft Windows +systems that is intended to be portable between applications and may contain +both vector and bitmap components.

        +
        + + +
        +

        The following table describes the supported streaming links.

        +Supported streaming +links + + + +

        File extension

        +

        MIME type

        +

        Description

        +
        + + + +

        asx

        +

        video/x-ms-asf

        +

        Advanced systems format (ASF) is a Microsoft proprietary digital +audio and digital video container format, especially meant for streaming media. +The most common file types contained within an ASF file are Windows media +audio (WMA) and Windows media video (WMV).

        +
        + +

        sdp

        +

        application/sdp

        +

        Streaming Download Project Multimedia is a source project to allow +the download of streaming media.

        +
        + +

        ram

        +

        audio/vnd.rn-realaudio

        +

        RealAudio metadata (RAM) is typically a small text file that contains +a link to the audio stream.

        +
        + + +
        +

        The following table describes the supported playlist files.

        +Supported playlist +files + + + +

        File extension

        +

        MIME type

        +

        Description

        +
        + + + +

        m3u

        +

        audio/x-mpegurl

        +

        Moving Picture Experts Group Audio Layer 3 Uniform Resource Locator, +MP3 URL is a computer file format that stores multimedia playlists.

        +
        + + +
        +
        See also

        Supported Image Formats Guide

        Video Renderer Resource File

        Querying for Parser Supported +Formats

        +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-91BD4E81-4CDC-4279-8E19-5B79A63B838E_d0e16923_href.png Binary file Symbian3/PDK/Source/GUID-91BD4E81-4CDC-4279-8E19-5B79A63B838E_d0e16923_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-91BD4E81-4CDC-4279-8E19-5B79A63B838E_d0e17222_href.png Binary file Symbian3/PDK/Source/GUID-91BD4E81-4CDC-4279-8E19-5B79A63B838E_d0e17222_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-91D598C7-1420-5C7C-A440-95F679F38F6D_d0e450058_href.png Binary file Symbian3/PDK/Source/GUID-91D598C7-1420-5C7C-A440-95F679F38F6D_d0e450058_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-91D598C7-1420-5C7C-A440-95F679F38F6D_d0e455903_href.png Binary file Symbian3/PDK/Source/GUID-91D598C7-1420-5C7C-A440-95F679F38F6D_d0e455903_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-91F95D0C-E4CF-510E-B280-E27F89274ACE.dita --- a/Symbian3/PDK/Source/GUID-91F95D0C-E4CF-510E-B280-E27F89274ACE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-91F95D0C-E4CF-510E-B280-E27F89274ACE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -658,7 +658,7 @@ In figure 1 both Client 1 and Client 2 receive status KErrServerBusy.

        Figure 1. Processing of two SET initiated requests from different clients. - +

        Making a location request after receiving KErrServerBusy

        A client that receives the error KErrServerBusy will usually want to make the request again to obtain a position update.

        In many diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-92018B6B-3CBB-434D-9E61-F271C67E98E3.dita --- a/Symbian3/PDK/Source/GUID-92018B6B-3CBB-434D-9E61-F271C67E98E3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-92018B6B-3CBB-434D-9E61-F271C67E98E3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ holds the stylus down on the screen at the same point for a long time.

        Long-tap event used for opening a stylus pop-up menu - +

        The Touch UI utilities API can be used in all GUI applications. It is a library API that provides an interface for constructing and using the long-tap diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-92067BE3-40F0-4652-A882-FFDE2816C9BD_d0e100108_href.png Binary file Symbian3/PDK/Source/GUID-92067BE3-40F0-4652-A882-FFDE2816C9BD_d0e100108_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-92067BE3-40F0-4652-A882-FFDE2816C9BD_d0e104193_href.png Binary file Symbian3/PDK/Source/GUID-92067BE3-40F0-4652-A882-FFDE2816C9BD_d0e104193_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-921AF7A3-C711-5979-877B-4B6D977888E8_d0e285569_href.png Binary file Symbian3/PDK/Source/GUID-921AF7A3-C711-5979-877B-4B6D977888E8_d0e285569_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-921AF7A3-C711-5979-877B-4B6D977888E8_d0e291561_href.png Binary file Symbian3/PDK/Source/GUID-921AF7A3-C711-5979-877B-4B6D977888E8_d0e291561_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9237136D-3045-5FFE-A39D-FC8CC9666B19.dita --- a/Symbian3/PDK/Source/GUID-9237136D-3045-5FFE-A39D-FC8CC9666B19.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9237136D-3045-5FFE-A39D-FC8CC9666B19.dita Fri Jul 16 17:23:46 2010 +0100 @@ -13,7 +13,7 @@ Tests CollectionThe Graphics API Tests collection contains two test suites. Graphics API Tests Collection - + Graphics diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-924576EE-A016-4689-8B63-E8176063E1E6-master.png Binary file Symbian3/PDK/Source/GUID-924576EE-A016-4689-8B63-E8176063E1E6-master.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-924576EE-A016-4689-8B63-E8176063E1E6_d0e95759_href.png Binary file Symbian3/PDK/Source/GUID-924576EE-A016-4689-8B63-E8176063E1E6_d0e95759_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-92459911-6FD1-47D7-8FBD-63BB43106757.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-92459911-6FD1-47D7-8FBD-63BB43106757.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,63 @@ + + + + + +Installing an installerThe Software Installation Framework (SIF) enables you to +create installers for installing software. An installer is generally +made up of an install server and plug-in. The plug-in encapsulates +the logic for the management of the software type and the install +server performs the installation whenever there is a request from +SIF. Installers can be In-ROM (pre-provisioned in the device during +device creation) or Post-Market (installed and registered using USIF +after the device is shipped). + +To register +the installer with USIF: + +For In-ROM +Installers, the developer must inform the AppInstall Package Owner +about the installer details to be configured. For more details, referApplication Installation +

        The installer registration details that must be delivered +to the AppInstall team are

          +
        • unique software type name (such as ”native”, “java”)

        • +
        • Sif plug-in uid ( ECom implementation ID)

        • +
        • launcher executable (native executable to be used by apparc +to launch non-native applications of given type)

        • +
        • custom access secure Id(s)

        • +
        • MIME Type(s)

        • +
        • localized software type names (optional)

        • +

        + +For Post-Market +Installers, the installer details must be configured using a +Software Type Registration file. This is a.xml file. The file must be a part of the installer SIS package. For +example, if the package UID is 0x77534946, the Software Type Registration +file must be copied to \resource\usif\leestore\77534946.xml using the installer package. +

        A sample Software Type Registration file is described below.

        <?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE LayeredExecutionEnvironments SYSTEM "swtype.dtd"> +<LayeredExecutionEnvironments> +<softwareType name="native"> +<localizedName language="15">testSwTypeLoc15</localizedName> +<localizedName language="31">testSwTypeLoc31</localizedName> +<mimeType>binary/sif-testpkg</mimeType> +<sifPluginUid>102866EF</sifPluginUid> +<CustomAcess SecureId="10285BCB" AccessMode="1"/> +<CustomAcess SecureId="80285DE0" AccessMode="1"/> +<launcherExecutable>testLauncherExecutable</launcherExecutable> +</softwareType> +</LayeredExecutionEnvironments>
        +

        For more details about the install server and the plug-in, +refer to Creating +an Installer.

        +
        + + + + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-924E26D6-8B9D-5C76-AF61-7C5514BB3D78_d0e317425_href.png Binary file Symbian3/PDK/Source/GUID-924E26D6-8B9D-5C76-AF61-7C5514BB3D78_d0e317425_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-924E26D6-8B9D-5C76-AF61-7C5514BB3D78_d0e323415_href.png Binary file Symbian3/PDK/Source/GUID-924E26D6-8B9D-5C76-AF61-7C5514BB3D78_d0e323415_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-92966ADC-17CF-5411-A829-1201C182B59F.dita --- a/Symbian3/PDK/Source/GUID-92966ADC-17CF-5411-A829-1201C182B59F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-92966ADC-17CF-5411-A829-1201C182B59F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -133,9 +133,8 @@ been read successfully.

      Building -and running

      The Symbian build -process describes how to build an application.

      The ETel3rdPartyExample builds the following executables in -the standard location (\epoc32\release\winscw\<build_variant> for CodeWarrior):

        +and running

        The Symbian build process describes how to +build an application.

        The ETel3rdPartyExample builds the following executables in the standard location (\epoc32\release\winscw\<build_variant> for CodeWarrior):

        • phoneid.exe

        • phonemonitor.exe

        • networkinformation.exe

        • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-92AD13DF-216A-4B5A-9C6D-5FA50BB0D692.dita --- a/Symbian3/PDK/Source/GUID-92AD13DF-216A-4B5A-9C6D-5FA50BB0D692.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-92AD13DF-216A-4B5A-9C6D-5FA50BB0D692.dita Fri Jul 16 17:23:46 2010 +0100 @@ -28,7 +28,7 @@ you to adjust the coordinate system to match the changed system characteristics.

          Example to illustrate adjustment of the coordinate system due to device orientation change - +

          To convert the sensor data to the compensated values, the adjustment values (for example, interchanged x-axis with y-axis) for each device state that the compensation is applied to, must be configured and taken as an input @@ -36,7 +36,7 @@ Correcting the coordinate system of a Symbian device The figure depicts the correction of coordinate system in the Symbian device - +

          The following example explains how the sensor data compensation works, by illustrating the behavior of maps application of the Symbian device when the keyboard is in opened and closed state.

          diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-930F1E88-2A03-4BD1-AA2A-3A0128A844BD.dita --- a/Symbian3/PDK/Source/GUID-930F1E88-2A03-4BD1-AA2A-3A0128A844BD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-930F1E88-2A03-4BD1-AA2A-3A0128A844BD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,76 +1,59 @@ - - - - -Enabling Multi<?Pub Caret?>ple Pointers in the Emulator Tutorial -This topic describes how to configure the Symbian emulator -to enable a multiple pointer environment. - - - - -

          Variant: ScreenPlay. Target audience: Application developers.

          -

          This topic builds on Support for -Multiple Pointers in the Emulator Overview.

          -
          Configuring the emulator

          Make sure that two or more mice -are plugged in and detected on the Windows PC on which the emulator -will run. The number of detected mice can be from two up to the maximum -number defined in the HAL HALData::EPointerMaxPointers attribute.

            -
          1. Add the following -lines to the \epoc32\data\epoc.ini file. These -lines enable ScreenPlay and multiple pointers.

            SYMBIAN_BASE_USE_GCE ON -EnableMultiTouch ON
          2. -
          3. Specify the MultiTouchProximityStep and MultiTouchPressureStep values in the \epoc32\data\epoc.ini file to -define the proximity and pressure steps.

            MultiTouchProximityStep 10 -MultiTouchPressureStep 200 -

            If the above two options are not defined in the epoc.ini file, the default proximity and pressure steps -are taken from the following HAL attributes.

            HALData::EPointer3DProximityStep -HALData::EPointer3DPressureStep
          4. -

          Result: Launch the emulator to verify that the mice -are detected and displayed inside the application window area. When -you move a mouse or scroll the mouse wheel, its X, Y and Z values -are reflected in the status bar.

          -
          Enabling and disabling multiple pointers

          Multiple pointers are only required by UI applications. Therefore, -they are enabled inside the orange rectangular area shown on the following -diagram. Inside the area two Windows pointers are displayed. The one -numbered zero is the system pointer and the other is used only for -emulating touch with two fingers. The first mouse to report events -to the emulator is automatically taken as the primary mouse, which -owns the Windows system pointer.

          -Multiple pointer area -

          System pointer. Once the -system pointer moves outside the multiple pointer area, multiple pointers -are temporarily disabled and standard emulator pointer behavior is -resumed. This means that only one Windows system pointer is displayed -and it is controlled by both mice.

          Non-system pointer. If the non-system pointer moves out of the multiple pointer area, -the pointer just disappears from the screen. Disabling multiple pointers -is then not necessary because the system pointer behaves normally -inside the multiple pointer area. Moving the non-system pointer back -into the area makes it reappear on the screen.

          -
          - -Support for Multiple Pointers in the Emulator Overview - - -
          - + + + + + +Enabling Multiple Pointers in the Emulator TutorialThis topic describes how to configure the Symbian emulator +to enable a multiple pointer environment. +

          Variant: ScreenPlay. Target audience: Application developers.

          +

          This topic builds on Support for Multiple +Pointers in the Emulator Overview.

          +
          Configuring the emulator

          Make sure that two or more mice +are plugged in and detected on the Windows PC on which the emulator +will run. The number of detected mice can be from two up to the maximum +number defined in the HAL HALData::EPointerMaxPointers attribute.

            +
          1. Add the following +lines to the \epoc32\data\epoc.ini file. These +lines enable ScreenPlay and multiple pointers.

            SYMBIAN_BASE_USE_GCE ON +EnableMultiTouch ON
          2. +
          3. Specify the MultiTouchProximityStep and MultiTouchPressureStep values in the \epoc32\data\epoc.ini file to +define the proximity and pressure steps.

            MultiTouchProximityStep 10 +MultiTouchPressureStep 200 +

            If the above two options are not defined in the epoc.ini file, the default proximity and pressure steps +are taken from the following HAL attributes.

            HALData::EPointer3DProximityStep +HALData::EPointer3DPressureStep
          4. +

          Result: Launch the emulator to verify that the mice +are detected and displayed inside the application window area. When +you move a mouse or scroll the mouse wheel, its X, Y and Z values +are reflected in the status bar.

          +
          Enabling and disabling multiple pointers

          Multiple pointers +are only required by UI applications. Therefore, multiple pointers +are enabled inside the orange rectangular area shown on the following +diagram. Inside the area two Windows pointers are displayed. The one +numbered zero is the system pointer and the other is used only for +emulating touch with two fingers. The first mouse to report events +to the emulator is automatically taken as the primary mouse, which +owns the Windows system pointer.

          +Multiple pointer area + +

          System pointer. Once the system pointer moves outside +multiple pointer area, multiple pointers are temporarily disabled +and standard emulator pointer behavior is resumed. This means that +only one Windows system pointer is displayed and it is controlled +by both mice.

          Non-system pointer. If the non-system +pointer moves out of the multiple pointer area, the pointer just disappears +from the screen. Disabling multiple pointers is then not necessary +because the system pointer behaves normally inside the multiple pointer +area. Moving the non-system pointer back into the area makes it reappear +on the screen.

          +
          +Support +for Multiple Pointers in the Emulator Overview + +
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-93221B70-EB36-5E8E-AE23-700988D5DACB.dita --- a/Symbian3/PDK/Source/GUID-93221B70-EB36-5E8E-AE23-700988D5DACB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-93221B70-EB36-5E8E-AE23-700988D5DACB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -68,7 +68,7 @@
        • IgnoreNewCarrier()

        • Bearer plug-in class diagram - +
          See also
          • For tasks on notifications diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9348D79B-D4BF-50B0-B787-DDA2765CE058.dita --- a/Symbian3/PDK/Source/GUID-9348D79B-D4BF-50B0-B787-DDA2765CE058.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9348D79B-D4BF-50B0-B787-DDA2765CE058.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> LBS administration service overviewThis document describes the LBS administration service and the API that it supports.

            Purpose

            This document describes the LBS administration service and the LBS Administration API which client applications use to get and set LBS administration settings.

            Introduction

            The LBS administration service allows client applications to get and set LBS administration settings. The service also allows applications to receive notification when administration settings are changed. Client applications use the service via the LBS Administration API.

            Typical clients of the API are:

            • 'Control panel' type applications that get and set LBS administration settings to configure LBS behaviour

            • UI status bar components that display information about the status of LBS settings

            The LBS Administration API is packaged in lbsadmin.dll. Client applications include lbsadmin.h and link against lbsadmin.lib. To set administration settings, an application must have the capability WriteDeviceData. No capabilities are required to read LBS administration settings.

            Key concepts

            LBS administration settings

            The administration settings that configure LBS. They can be modified at runtime through the LBS Administration API by applications with the WriteDeviceData capability. LBS administration settings are stored in the central repository.

            LBS administration repository initialisation file

            Default values for LBS administration settings are defined in a repository initialisation file. The contents of the initialisation file can be set by Symbian licensees as part of the platform build and configuration process. The initialisation file is used to create a central repository at build time. The file cannot be modified at runtime.

            Initially the central repository contains the default LBS administration settings values as defined in the repository initialisation file. The repository persists any changes to settings values made at runtime through the LBS Administration API. The API can also be used to revert the central repository to the default values in the initialisation file.

            See LBS Administration Repository Initialisation File for more details.

            LBS administration settings categories

            LBS administration settings are classified into the following categories:

            • Activation/deactivation of the different types of location request: Mobile Originated Location Requests (MO-LR), Mobile Terminated Location Requests (MT-LR) and Transfer Location to 3rd Party Requests (X3P)

            • Quality profiles for MO-LR, MT-LR and X3P

            • The mode of operation of GPS

            • The network protocol module and how it is loaded by the LBS subsystem

            • Use of Privacy Notifiers or a Privacy Controller for privacy requests and the default action to take on timeout of a privacy request

            • The maximum number of privacy requests that can be handled simultaneously by the LBS subsystem

            • Specification of the GPS set clock module and whether manual or automatic updates to the system clock are allowed

            • A setting to turn logging on or off in the LBS subsystem

            • 'Special feature' settings (see below)

            Special feature settings

            A set of read-only 'special feature' administration settings allows configuration of LBS runtime behaviour by Symbian licensees. These settings must be configured in the LBS administration repository initialisation file and cannot be set at runtime via the LBS Administration API.

            There are several special feature settings which define:

            • The time to buffer position updates and error codes in LBS when there is no current RPositioner::NotifyPositionUpdate()

            • The values of TPositionInfo::PositionMode() for final network positions

            • Whether inaccurate positions should be returned to client applications

            • Whether reference positions should be returned to client applications

            • How "futile" updates from a licensee's A-GPS Integration Module are handled

            See Special feature settings for more information.

            API summary

            Client applications use the LBS administration service via the LBS Administration API.

            The API is defined by the following header files:

          Header file Purpose

          lbsadmin.h

          Class declarations for main class CLbsAdmin and MLbsAdminObserver.

          lbsadminsettings.h

          Defines the constants that uniquely identify the different types of LBS settings.

          lbsadmindatatypes.h

          Defines datatypes used to assign values to LBS settings.

          lbsadminclasstypes.h

          Defines a base class that defines the class type of a TLbsAdminInfoBase object (for future use).

          Applications include lbsadmin.h which includes the other header files.

          The API defines two main classes, shown in figure 1:

          • CLbsAdmin

            Applications use CLbsAdmin to get and set administration settings and to register for notification of administration settings changes.

          • MLbsAdminObserver

            Applications use an object derived from MLbsAdminObserver to receive notification of changes to administration settings.

          Figure 1. LBS Administration API classes -

          CLbsAdmin

          Applications use CLbsAdmin for the following:

          • Accessing LBS administration settings

          • Resetting administration settings to the default

          • Receiving notification of administration settings changes

          Each of these uses is described in the following sections.

          Accessing LBS administration settings

          CLbsAdmin::Get() and CLbsAdmin::Set() get and set LBS administration settings.

          The full signatures of CLbsAdmin::Get() and CLbsAdmin::Set() are as follows:

          • template <typename T> inline TInt Set(const +

            CLbsAdmin

            Applications use CLbsAdmin for the following:

            • Accessing LBS administration settings

            • Resetting administration settings to the default

            • Receiving notification of administration settings changes

            Each of these uses is described in the following sections.

            Accessing LBS administration settings

            CLbsAdmin::Get() and CLbsAdmin::Set() get and set LBS administration settings.

            The full signatures of CLbsAdmin::Get() and CLbsAdmin::Set() are as follows:

            • template <typename T> inline TInt Set(const TLbsAdminSetting& aSetting, const T& aValue);

            • template <typename T> inline TInt Get(const TLbsAdminSetting& aSetting, T& aValue) const;

            The use of template methods allows the interface of CLbsAdmin to be simplified: all administration settings are queried and modified by use of the same Get() and Set() methods.

            CLbsAdmin::Get() and CLbsAdmin::Set() take two parameters:

            • A constant of type TLbsAdminSetting that specifies the administration setting that is set or returned. TLbsAdminSetting constants are defined in lbsadminsettings.h.

            • A reference to hold the value of the administration setting to be set or returned. Many administration setting values are defined by a set of enumerated types defined in lbsadmindatatypes.h.

            The following list describes the purpose of each of the LBS administration settings defined by the TLbsAdminSetting constants:

            • KLbsSettingHomeSelfLocate

              Purpose: Configures self location requests (MO-LR) in the home network. This setting turns self location requests on or off.

              Values: Defined by CLbsAdmin::TSelfLocateService

            • KLbsSettingRoamingSelfLocate

              Purpose: Configures self location requests (MO-LR) when roaming. This setting turns self location requests on or off.

              Values: Defined by CLbsAdmin::TSelfLocateService

            • KLbsSettingHomeExternalLocate

              Purpose: Configures external location requests (MT-LR) in the home network. This setting turns external location requests on or off. It also defines if user permission for external requests should always be obtained when external locate is on, and if the user should always be notified of rejected external location requests when external locate is off.

              Note that the value of this setting does not affect emergency services location requests (Emergency MT-LR) which are always accepted.

              Values: Defined by CLbsAdmin::TExternalLocateService. The value EExternalLocateOnButAlwaysVerify must not be used with the Network Privacy API as a privacy verification response cannot be returned for a privacy notification that was sent using this API.

            • KLbsSettingRoamingExternalLocate

              Purpose: Configures external location requests (MT-LR) when roaming. See KLbsSettingHomeExternalLocate above.

              Values: Defined by CLbsAdmin::TExternalLocateService. See KLbsSettingHomeExternalLocate above.

            • KLbsSettingHomeTransmitLocate

              Purpose: Configures transmit to third party location requests (X3P) in the home network. This setting turns transmit to third party requests on or off.

              Values: Defined by CLbsAdmin::TTransmitLocateService

            • KLbsSettingRoamingTransmitLocate

              Purpose: Configures transmit to third party location requests (X3P) when roaming. This setting turns transmit to third party requests on or off.

              Values: Defined by CLbsAdmin::TTransmitLocateService

            • KLbsSettingQualityProfileSelfLocate

              Purpose: Defines the quality profile used for MO-LR. This setting specifies a quality profile ProfileID for self location requests as defined in the quality profile file lbsprofile.ini.

              Values: Defined by CLbsAdmin::TLbsQualityProfileId

            • KLbsSettingQualityProfileExternalLocate

              Purpose: Defines the quality profile used for MT-LR. This setting specifies a quality profile ProfileID for external location requests as defined in the quality profile file lbsprofile.ini.

              Values: Defined by CLbsAdmin::TLbsQualityProfileId. A value of KLbsNoProfileInUseQualityProfileId means that a profile is not used when KSettingLbsBehaviourMode is set to CLbsAdmin::ELbsBehaviourModeOriginal. LBS uses quality criteria received as part of the external locate request.

            • KLbsSettingHomeTransmitLocate

              Purpose: Defines the quality profile used for X3P. This setting specifies a quality profile ProfileID for transmit to third party requests as defined in the quality profile file lbsprofile.ini.

              Values: Defined by CLbsAdmin::TLbsQualityProfileId

            • KLbsSettingHomeGpsMode

              Purpose: Configures the GPS mode in the home network. This setting specifies how LBS uses GPS to obtain a position fix. Note that this is the default setting. The network can override this setting as part of a location request.

              Values: Defined by CLbsAdmin::TGpsMode

            • KLbsSettingRoamingGpsMode

              Purpose: Configures the GPS mode when roaming. See KLbsSettingHomeGpsMode above.

              Values: Defined by CLbsAdmin::TGpsMode

            • KLbsSettingHomeProtocolModule

              Purpose: Specifies the UID of the Network Protocol Module to use in the home network.

              Values: Defined by TUid

            • KLbsSettingRoamingProtocolModule

              Purpose: Specifies the UID of the Network Protocol Module to use when roaming.

              Values: Defined by TUid

            • KLbsProtocolModuleLoading

              Purpose: Defines the Network Protocol Module loading strategy - whether a module or modules are loaded on subsystem startup or based on network registration status.

              Values: A value defined by TLbsAdminProtocolModuleLoadingInfo::_TProtocolModuleLoading which have the following meanings:

              • EProtocolModuleLoadingAll

                A value of TLbsAdminProtocolModuleLoadingInfo::EProtocolModuleLoadingAll causes the two Network Protocol Modules specified by the settings KLbsSettingHomeProtocolModule and KLbsSettingRoamingProtocolModule to be loaded when the LBS subsystem starts. The modules are not unloaded until the LBS subsystem is shutdown.

                At any time, only one module can be active - loading a module does not make it active. Only an active module can be used to process location requests. LBS uses changes to the network registration status of the mobile device to decide which module is active. If the mobile device moves from the home network to roaming (or vice versa) the appropriate module is made active without the need to restart the device.

              • EProtocolModuleLoadingByStatus

                A value of TLbsAdminProtocolModuleLoadingInfo::EProtocolModuleLoadingByStatus means that one Network Protocol Module is loaded on LBS startup based on the network registration status.

                When LBS receives the first network registration status update (which should be soon after startup) it loads either the home or the roaming Network Protocol Module depending on the registration status. Only one module is loaded. Changes to the registration status (for example from the home network to roaming) do not cause a second module to be loaded. This means that if a licensee uses different Network Protocol Modules in the home network and roaming, it is necessary to restart the device when moving between networks in order to load the appropriate Network Protocol Module.

                Note that this is the default LBS behaviour based on the value in the administration repository initialisation file.

              If LBS cannot obtain the device's network registration status, a Network Protocol Module cannot be made active and a location request that uses it will fail.

              The setting has no effect if the Privacy Protocol Module is specified for use: it is loaded and active when the LBS subsystem starts without waiting for a network registration status.

            • KLbsSettingPrivacyHandler

              Purpose: Specifies use of a Privacy Controller or Privacy Notifiers. Either a Privacy Controller or Privacy Notifiers are used to inform the user when an external privacy or location request (MT-LR or NI-LR) is received.

              Values: Defined by CLbsAdmin::TPrivacyHandler

            • KLbsSettingPrivacyAppTimeout

              Purpose: Specifies the time in microseconds that LBS waits for a response from a Privacy Controller or Privacy Notifier. A value of zero means the LBS nevers times out the request. The setting must be set in the repository initialisation file and cannot be set at runtime.

              Values: A time in microseconds.

            • KLbsSettingPrivacyTimeoutAction

              Purpose: Specifies the action to take on timeout of a MT-LR privacy request. This setting specifies if LBS should send a rejection message or take the action specified as part of the MT-LR privacy request message.

              Values: Defined by CLbsAdmin::TPrivacyTimeoutAction

            • KLbsSettingMaximumExternalLocateRequests

              Purpose: Specifies the maximum number of simultaneous privacy requests supported by the LBS subsystem. The setting only affects LBS subsystem behaviour when privacy requests are received via either the Privacy Request API or the Network Privacy API. This setting is read only on LBS system startup. Setting it via the LBS Admin API has no effect while is LBS running. The setting will take effect during the next LBS system startup.

              Values: The value 0 is reserved for future use. The value 1 is the default, this allows only one active external locate request at a time. Values greater than 1 allow multiple requests to be handled simultaneously.

            • KLbsSettingPrivacyShutdownDelay

              Purpose: The time to wait after the last privacy client disconnects before shutting down LBS. Only used with the Network Privacy API and the Privacy Request API. This setting is read only on LBS system startup. Setting it via the LBS Admin API has no effect while LBS running. Setting will take effect during next LBS system startup.

              Values:An integer value in microseconds.

            • KLbsSettingPrivacyMaxNetworkSessions

              Purpose: The maximum number of concurrent network privacy sessions allowed with the Network Privacy API. This setting is read only on LBS system startup. Setting it via the LBS Admin API has no effect while LBS running. Setting will take effect during next LBS system startup.

              Values: An integer value. The value 0 disallows any network privacy sessions.

            • KLbsSettingPrivacyConnectionTimeout

              Purpose: The connection timeout for sessions using the Network Privacy API. This setting is read only on LBS system startup. Setting it via the LBS Admin API has no effect while LBS running. Setting will take effect during next LBS system startup.

              Values: An integer value in microseconds.

            • KLbsSettingClockAdjust

              Purpose: Configuration of automatic system clock synchronisation with GPS. This setting specifies if automatic clock synchronisation is on or off.

              Values Defined by CLbsAdmin::TClockAdjust

            • KLbsSettingSetClockModule

              Purpose: Configuration of the set clock module. This setting specifies the implementation UID of a licensee clock plug-in DLL. This value is 0 to use the default Symbian set clock implementation.

              Values: A TUid value

            • KLbsSettingClockAdjustInterval

              Purpose: Specifies the system clock adjustment interval in milliseconds. This setting specifies how often the system clock should be synchronised with the GPS clock. The setting is used only if the KLbsSettingAllowClockAdjust is set to allow automatic system clock adjustment.

              Values: A CLbsAdmin::TLbsTimeIntervalMiliSeconds value

            • KLbsSettingClockAdjustThreshold

              Purpose: Configures the system clock adjustment interval in milliseconds. This setting specifies how great the difference in time between the system clock and the GPS clock must be before the system clock is adjusted.

              Values: A CLbsAdmin::TLbsTimeIntervalMiliSeconds value

            • KLbsSettingLogger

              Purpose: Turns logging on or off in the LBS subsystem.

              Values: A CLbsAdmin::TLogger value

            • KLbsSettingBehaviourMode

              Purpose: Specifies the behaviour mode for the LBS subsystem. The setting must be set in the repository initialisation file and cannot be set at runtime via the LBS Administration API as it is used by the LBS subsystem on startup.

              Values: Defined by CLbsAdmin::TLbsBehaviourMode. See repository initialisation file for more information.

            Special feature settings

            • KLbsSpecialFeatureMaximumRequestDelay

              Purpose: Specifies the length of time that location updates and error codes received from a positioning module are temporarily buffered in LBS.

              Values: A time in milliseconds

            • KLbsSpecialFeatureAllowTBFinalNetPos

              Purpose: Specifies how LBS handles final network position updates.

              Values: A CLbsAdmin::TSpecialFeature value.

            • KLbsSpecialFeatureIgnoreAccuracy

              Purpose: Configures LBS to either return only accurate position updates or all position updates including inaccurate ones.

              Values: A CLbsAdmin::TSpecialFeature value.

            • KLbsSpecialFeatureWithholdDeliveryOfReferencePositions

              Purpose: Specifies if LBS should deliver reference positions to a client application when RPositioner::Open() is called with a GPS module ID.

              Values: A CLbsAdmin::TSpecialFeature value.

            • KLbsSpecialFeatureIntermediateFutileUpdate

              Purpose: Specifies if LBS should return a "futile" update from a licensee A-GPS Integration Module to the network when there is no outstanding location request.

              Values: A CLbsAdmin::TSpecialFeature value.

            The special feature settings cannot be set via the LBS Administration API and so must be set in the LBS administration repository file. Special feature settings has more information on the behaviour of LBS that is modified by the special feature settings.

            Unused settings

            Note that there are some additional settings defined in lbsadmin.h: KLbsSettingHomeEmergencyLocate, KLbsSettingRoamingEmergencyLocate, KLbsSettingRoamingProtocolModule and KLbsSettingLbsSystemStartMode. These are not used and setting them has no effect.

            Accessing LBS administration settings describes how to get and set LBS administration settings.

            Resetting administration settings to the default

            Calling CLbsAdmin::ResetToDefault() causes LBS administration settings to be reset to the default values defined in the LBS administration settings initialisation file. These default settings are persisted in the central repository.

            Resetting the administration settings shows how to reset the administration settings to their default values.

            Receiving notification of administration settings changes

            To register an observer object to receive notifications of LBS administration settings changes, CLbsAdmin::NewL() is called with two parameters:

            • An observer object derived from MLbsAdminObserver

            • A TLbsAdminSettingGroup object

              A TLbsAdminSettingGroup object defines a bitmask of TLbsAdminSetting constants. An observer is notified when there is a settings change in one of the settings defined in the bitmask.

            CLbsAdmin::SetNotificationMaskL() sets a new bitmask and CLbsAdmin::ClearNotificationMask() clears the bitmask.

            Receiving notifications of LBS administration settings changes shows how to register an observer object and receive settings change notifications.

            MLbsAdminObserver

            Applications use an object derived from MLbsAdminObserver to receive notifications of LBS administration settings changes.

            LBS calls MLbsAdminObserver::OnSettingUpdateEvent() to notify an observer that a setting has changed.

            Receiving notifications of LBS administration settings changes

      Typical uses

      A 'control panel' type of application uses the LBS Administration API to manage the configuration of the LBS subsystem.

      Accessing LBS administration settings shows how to use the API to configure LBS.

      A UI status bar component uses the LBS Administration API to receive notification of LBS subsystem configuration changes.

      Receiving notification of LBS settings changes shows how to use the API to get notification of LBS administration changes.

      See also

      How to use the LBS Administration API

      The LBS administration repository initialisation file

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-935057C9-8FA9-5B41-A36C-03A825C51B32_d0e316249_href.png Binary file Symbian3/PDK/Source/GUID-935057C9-8FA9-5B41-A36C-03A825C51B32_d0e316249_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-935057C9-8FA9-5B41-A36C-03A825C51B32_d0e322239_href.png Binary file Symbian3/PDK/Source/GUID-935057C9-8FA9-5B41-A36C-03A825C51B32_d0e322239_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-93678518-1FBD-521D-807A-63DA2E33551F_d0e218938_href.png Binary file Symbian3/PDK/Source/GUID-93678518-1FBD-521D-807A-63DA2E33551F_d0e218938_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-93678518-1FBD-521D-807A-63DA2E33551F_d0e224958_href.png Binary file Symbian3/PDK/Source/GUID-93678518-1FBD-521D-807A-63DA2E33551F_d0e224958_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-937C3D70-2DCC-5084-AC87-3B1E5865A827.dita --- a/Symbian3/PDK/Source/GUID-937C3D70-2DCC-5084-AC87-3B1E5865A827.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-937C3D70-2DCC-5084-AC87-3B1E5865A827.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Active Backup Client Overview

      The Active Backup Client enables Symbian Developers to write backup and restore software with complete control of which data is backed up and restored.

      The backup client application is often referred to as the data owner as it owns the data. The data owner is automatically invoked to prepare and supply the data to the Backup Engine at backup time. Similarly, the data is automatically supplied back to the data owner on restore.

      Required Background

      Before you start, you must understand the following architecture and concepts:

      • Symbian backup and restore architecture

      • Backup and restore modes (active, passive and proxy).

      Key concepts and terms

      Data owner

      A Symbian process that owns the data to be backed up or restored is a data owner. It can be an application or a server.

      Initiator/Responder

      There are two roles in MTP exchanges, an initiator and a responder. An initiator is the device which initiates requests and operations to the connected responder. A responder is the device which passively responds the requests and operations. Symbian MTP is implemented as a responder role only. A host PC or a portable device on a Symbian device is usually an initiator.

      Architecture

      The following flowchart shows how the Active Backup Client (data owner application) works with other components for data backup and restore. The components provided by Symbian are in green. The components that a device vendor must implement are in blue.

      Active Backup Client -
      • The Backup Server communicates directly with the backup and restore initiator, for example a host PC.

        The Backup Server receives a request from a host PC for a backup or restore operation. It then calls the Backup Engine using the Backup Engine Client API (conn::CSBEClient) for lists of data sets. It also transfers data during a backup or a restore.

        Note: The Symbian platform includes a backup server which a device vendor may replace.

      • The Backup Engine component contains the logic related to the data backup and restore. It signals the start or completion of a backup or restore to all data owners.

        Note: This component runs in a separate process which allows the Backup Server to operate synchronously and asynchronously.

      • An active Data Owner Application responds to signals from the Backup Engine. It releases resources in case of file lock or data confliction. It must define a conn::CActiveBackupClient instance to connect to the Backup Engine and must provide a pointer to an conn::MActiveBackupDataClient implementation. The conn::MActiveBackupDataClient implementation prepares and transfers data to the Backup Engine for a backup and restore.

      APIs

      The Active Backup Client includes the following APIs:

      API Description

      conn::CActiveBackupClient

      Establishes a connection to the Backup Engine for the data owing process.

      conn::MActiveBackupDataClient

      The data owner application must implement this interface to provide the data to the Backup Engine. It is passed to the conn::CActiveBackupClient constructor.

      Typical uses

      The Active Backup Client can be used to prepare and transfer data for the Backup Engine to do a backup and restore.

      Writing an Active Backup Client Tutorial
      \ No newline at end of file +
      • The Backup Server communicates directly with the backup and restore initiator, for example a host PC.

        The Backup Server receives a request from a host PC for a backup or restore operation. It then calls the Backup Engine using the Backup Engine Client API (conn::CSBEClient) for lists of data sets. It also transfers data during a backup or a restore.

        Note: The Symbian platform includes a backup server which a device vendor may replace.

      • The Backup Engine component contains the logic related to the data backup and restore. It signals the start or completion of a backup or restore to all data owners.

        Note: This component runs in a separate process which allows the Backup Server to operate synchronously and asynchronously.

      • An active Data Owner Application responds to signals from the Backup Engine. It releases resources in case of file lock or data confliction. It must define a conn::CActiveBackupClient instance to connect to the Backup Engine and must provide a pointer to an conn::MActiveBackupDataClient implementation. The conn::MActiveBackupDataClient implementation prepares and transfers data to the Backup Engine for a backup and restore.

    APIs

    The Active Backup Client includes the following APIs:

    API Description

    conn::CActiveBackupClient

    Establishes a connection to the Backup Engine for the data owing process.

    conn::MActiveBackupDataClient

    The data owner application must implement this interface to provide the data to the Backup Engine. It is passed to the conn::CActiveBackupClient constructor.

    Typical uses

    The Active Backup Client can be used to prepare and transfer data for the Backup Engine to do a backup and restore.

    Writing an Active Backup Client Tutorial \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-938C0EB5-D0B3-502E-87A9-7C626642AE4B_d0e468825_href.jpg Binary file Symbian3/PDK/Source/GUID-938C0EB5-D0B3-502E-87A9-7C626642AE4B_d0e468825_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-938C0EB5-D0B3-502E-87A9-7C626642AE4B_d0e474670_href.jpg Binary file Symbian3/PDK/Source/GUID-938C0EB5-D0B3-502E-87A9-7C626642AE4B_d0e474670_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-93A4CD14-A3CD-57B2-BF32-57EF38F59ECF_d0e261285_href.png Binary file Symbian3/PDK/Source/GUID-93A4CD14-A3CD-57B2-BF32-57EF38F59ECF_d0e261285_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-93A4CD14-A3CD-57B2-BF32-57EF38F59ECF_d0e267294_href.png Binary file Symbian3/PDK/Source/GUID-93A4CD14-A3CD-57B2-BF32-57EF38F59ECF_d0e267294_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-93AB9273-08A5-52CD-AFF7-8B92D72067BF.dita --- a/Symbian3/PDK/Source/GUID-93AB9273-08A5-52CD-AFF7-8B92D72067BF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-93AB9273-08A5-52CD-AFF7-8B92D72067BF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,31 +1,29 @@ - - - - - -Using -TDesUse TDes for interfaces which take narrow or wide (Unicode) text, -depending on the build variant. -
    Usage in a -function interface

    An interface which needs to access and modify -either narrow text or wide (Unicode) text, depending on the build variant, -uses a TDes as the argument type. All build independent -concrete descriptors are derived from TDes which means that -the interface can accept any build independent descriptor.

    The following -code fragment shows the most common function prototype pattern.

    void ClassX::foo(TDes& anArg);

    The -use of TDes means that data can be accessed and modified -through the descriptor.

    If the interface is to handle explicit 8 bit -or explicit 16 bit data, regardless of the build variant, then use TDes8 or TDes16 instead.

    -
    - -Using class TDes8 - -Using Class -TDes16 + + + + + +Using TDesUse TDes for interfaces which take narrow or wide (Unicode) +text, depending on the build variant. +
    Usage +in a function interface

    An interface which needs to access +and modify either narrow text or wide (Unicode) text, depending on +the build variant, uses a TDes as the argument +type. All build independent concrete descriptors are derived from TDes which means that the interface can accept any build +independent descriptor.

    The following code fragment shows the +most common function prototype pattern.

    void ClassX::foo(TDes& anArg);

    The use of TDes means that data can be accessed +and modified through the descriptor.

    If the interface is to +handle explicit 8 bit or explicit 16 bit data, regardless of the build +variant, then use TDes8 or TDes16 instead.

    +
    + +Using Class TDes16 +Using +class TDes8
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067.dita --- a/Symbian3/PDK/Source/GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-93C75E31-6155-48F1-B99C-92ECD0B2C067.dita Fri Jul 16 17:23:46 2010 +0100 @@ -69,7 +69,7 @@
    Passing stack variables or temporary variables to an asynchronous service Passing data on the stack - +

    When execution leaves a function, the variables that are local to the function are deallocated from the stack. If you pass local variables as parameters to an asynchronous function, you must make sure that the other diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-93EFC9E4-8779-415D-ABEB-2AC9991996DD.dita --- a/Symbian3/PDK/Source/GUID-93EFC9E4-8779-415D-ABEB-2AC9991996DD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-93EFC9E4-8779-415D-ABEB-2AC9991996DD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,7 +17,7 @@ provided.

    Wait note - +
    Using wait notes in applications

    You can create diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-93FFE6EF-9F6D-46BD-846C-CAC03F26E643_d0e81179_href.png Binary file Symbian3/PDK/Source/GUID-93FFE6EF-9F6D-46BD-846C-CAC03F26E643_d0e81179_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-93FFE6EF-9F6D-46BD-846C-CAC03F26E643_d0e85377_href.png Binary file Symbian3/PDK/Source/GUID-93FFE6EF-9F6D-46BD-846C-CAC03F26E643_d0e85377_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-94005A46-B4C6-4A30-A8E8-1B9C2D583D50.dita --- a/Symbian3/PDK/Source/GUID-94005A46-B4C6-4A30-A8E8-1B9C2D583D50.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-94005A46-B4C6-4A30-A8E8-1B9C2D583D50.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,10 +9,10 @@ --> -Classic -UI Guide -

    Classic UI provides the native UI support library, AVKON, including standard -controls, views, dialogs and some services for UI applications.

    +Classic UI Guide +

    Classic UI provides the native UI support library, AVKON, including +standard controls, views, dialogs and some services for UI applications. +

    @@ -23,30 +23,25 @@ -

    I want to understand the fundamental architecture of a GUI application.

    +

    I want to understand the fundamental architecture of a GUI +application.

    Application and UI frameworks
    -

    I want to design my application for a phone with a touch screen.

    -Touch -UI +

    I want to design my application for a phone with a touch +screen.

    +Touch UI
    -

    I want to use the standard controls and dialogs that Classic UI -provides.

    +

    I want to use the standard controls and dialogs that Classic +UI provides.

    UI components

    I want to create my own controls and animations.

    The UI Control Framework (CONE)
    - -

    I want to understand the user experience in Symbian platform devices -without touch

    -Symbian -device user experience for non-touch devices -
    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-940AF1CE-3C33-54BF-B339-B8CF79C5FC9C_d0e166906_href.jpg Binary file Symbian3/PDK/Source/GUID-940AF1CE-3C33-54BF-B339-B8CF79C5FC9C_d0e166906_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-940AF1CE-3C33-54BF-B339-B8CF79C5FC9C_d0e172999_href.jpg Binary file Symbian3/PDK/Source/GUID-940AF1CE-3C33-54BF-B339-B8CF79C5FC9C_d0e172999_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-940F3F6E-BA9C-5E19-9AC5-D848B5E175FB.dita --- a/Symbian3/PDK/Source/GUID-940F3F6E-BA9C-5E19-9AC5-D848B5E175FB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-940F3F6E-BA9C-5E19-9AC5-D848B5E175FB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -48,7 +48,7 @@
    Architecture

    The following diagram shows the interaction of APPARC with other components.

    - +

    The following list describes the interaction between APPARC and each of the components depicted in the APPARC architectural diagram:

    • APPARC provides the diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9444E57C-1C2F-5EAC-B162-25FC27BB9516.dita --- a/Symbian3/PDK/Source/GUID-9444E57C-1C2F-5EAC-B162-25FC27BB9516.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Pre-v5.1 non-Unicode resource format

      This page describes the resource file format used with the pre-Unicode versions of Symbian platform (all versions before v5.1). This format is obsolete for later versions.

      Number of bytes

      Description

      2

      This two-byte integer (in little-endian byte order) stores the file-position of the start of the resource index (see the last row of this table for a description of the resource index).

      2

      This two-byte integer (in little-endian byte order) stores the size of the resource index in bytes.

      [any]

      This contains the data for all the resources stored in order, one after another with no byte-padding between them. The binary data of each resource is laid out exactly as specified in the resource definition.

      (number_of_resources+1)*2

      This is the resource index, which is a series of two-byte integers (in little-endian byte order), one for each resource in the resource file, each storing the file-position of that resource’s data (see row immediately above).

      The last 16-bit number gives the file offset of the end of the last resource (i.e. the beginning of the index table).

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-947317B7-7E12-509B-9A16-F0604D7F8BA2.dita --- a/Symbian3/PDK/Source/GUID-947317B7-7E12-509B-9A16-F0604D7F8BA2.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,55 +0,0 @@ - - - - - -armfpu -

      armfpu [ vfpv2 | softvfp ]

      -

      Use the armfpu statement to specify how the compiler is -to deal with floating point instructions.

      -

      There are two ways in which floating point instructions can be handled -on an ARM processor:

      -
        -
      • through the use of floating -point support functions.

      • -
      • directly on a hardware -floating point co-processor, the Vector Floating Point (VFP) unit.

      • -
      - - - - -

      softvfp

      -

      This keyword specifies that floating point instructions are handled -by floating point support functions.

      On a device without a VFP unit, -floating point support functions are implemented in software and operate slowly. -On a device with a VFP unit, the floating point support functions are handled -by the VFP unit, and operate faster than when implemented in software.

      Note -that applications do not need to make any changes to take advantage of VFP-enabled -floating point support functions, if they are provided in the device's ROM. -Such functions are used automatically at run time.

      If armfpu is -not specified in a .mmp file, then armfpu softvfp is -assumed by default.

      -
      - -

      vfpv2

      -

      This keyword specifies that VFP specific code is to be generated -at compile time whenever floating point instructions are used.

      On -a device with a VFP unit, this option results in code that runs faster than -the floating point support functions generated by softvfp. -Note, however, that binaries produced with VFP specific code do not work on -devices without a VFP unit. Software Install attempts to prevent their -installation, but if any such binaries are installed onto a device in some -other way, for example by inclusion into the ROM at device creation time, -then a call to VFP specific code results in a KERN-EXEC 3 panic (see also Application Installation -Guide).

      -
      - - -
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9477D9DC-7B89-4D60-A7DF-B89411379A52.dita --- a/Symbian3/PDK/Source/GUID-9477D9DC-7B89-4D60-A7DF-B89411379A52.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9477D9DC-7B89-4D60-A7DF-B89411379A52.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,8 +17,8 @@ Access Framework.

      The manager object must be created using the CManager::NewL() function.

      - -The buffers allow + +The buffers allow agent specific objects to be externalized by an application, passed through CAF and internalized by the agent. The same principle applies for data returned from the agent to the application. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9482CC98-2600-539D-A243-639CF11A2599_d0e678806_href.jpg Binary file Symbian3/PDK/Source/GUID-9482CC98-2600-539D-A243-639CF11A2599_d0e678806_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9482CC98-2600-539D-A243-639CF11A2599_d0e691633_href.jpg Binary file Symbian3/PDK/Source/GUID-9482CC98-2600-539D-A243-639CF11A2599_d0e691633_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-94984754-A724-57C4-9E18-33B951F917B6_d0e431735_href.png Binary file Symbian3/PDK/Source/GUID-94984754-A724-57C4-9E18-33B951F917B6_d0e431735_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-94984754-A724-57C4-9E18-33B951F917B6_d0e437580_href.png Binary file Symbian3/PDK/Source/GUID-94984754-A724-57C4-9E18-33B951F917B6_d0e437580_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-94C64AC2-5680-4DED-8CCB-55CD5C25F1E5.dita --- a/Symbian3/PDK/Source/GUID-94C64AC2-5680-4DED-8CCB-55CD5C25F1E5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-94C64AC2-5680-4DED-8CCB-55CD5C25F1E5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,33 +1,31 @@ - - - - - -Resource -string handling -

      The Symbian platform provides support for loading and formatting resource -strings through the StringLoader class. -To use this class, you must define your strings in the resource file with -the RESOURCE TBUF statement.

      -

      The syntax for the resource string declaration is as follows:

      -RESOURCE TBUF r_name34 { buf = STRING_value_in_rls_file; } -

      where

      -
        -
      • RESOURCE is the keyword for the statement.

        -
      • -
      • TBUF is a utility structure to contain -the string.

      • -
      • r_name34 is the symbolic ID used in -your code.

      • -
      • STRING_value_in_rls_file maps to a value -in an rls file to support localization -and internationalization.

      • -
      -

      For more information, see TBUF.

      + + + + + +Resource string handling +

      The Symbian platform provides support for loading and formatting +resource strings through the StringLoader class. To use this class, you must define your strings +in the resource file with the RESOURCE TBUF statement.

      +

      The syntax for the resource string declaration is as follows:

      +RESOURCE TBUF r_name34 { buf = STRING_value_in_rls_file; } +

      where

      +
        +
      • RESOURCE is the keyword for +the statement.

      • +
      • TBUF is a utility structure +to contain the string.

      • +
      • r_name34 is the symbolic ID +used in your code.

      • +
      • STRING_value_in_rls_file maps +to a value in an rls file to support localization and +internationalization.

      • +
      +

      For more information, see TBUF.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-94D270B4-B1CB-53A0-BC60-8B8C64BDF98A_d0e610920_href.jpg Binary file Symbian3/PDK/Source/GUID-94D270B4-B1CB-53A0-BC60-8B8C64BDF98A_d0e610920_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-94D270B4-B1CB-53A0-BC60-8B8C64BDF98A_d0e650074_href.jpg Binary file Symbian3/PDK/Source/GUID-94D270B4-B1CB-53A0-BC60-8B8C64BDF98A_d0e650074_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-94EAB348-DB29-5814-BB93-968D9A2A8AD2.dita --- a/Symbian3/PDK/Source/GUID-94EAB348-DB29-5814-BB93-968D9A2A8AD2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-94EAB348-DB29-5814-BB93-968D9A2A8AD2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -127,25 +127,25 @@ to a file using PIPS

    • How to remove the secure directory using PIPS

    • -
    • How to use the P.I.P.S. +

    • How to use the P.I.P.S. standard C maths library, libm.dll

    • -
    • How to compress/ +

    • How to compress/ decompress a file using Open C library.

    • -
    • How to compress/ +

    • How to compress/ decompress a string using Open C library.

    • -
    • How to do filtered +

    • How to do filtered data compression and Huffman compression using Open C library.

    • -
    • How to send/receive +

    • How to send/receive messages using open C message queue library

    • -
    • Shows string utility +

    • Shows string utility using open C libraries

    • -
    • How to write solution +

    • How to write solution for Producer/ Consumer Problem using Open C

    • -
    • how to redirect stdio +

    • how to redirect stdio to a file using libc library

    • -
    • How to handle global +

    • How to handle global variables within the library code

    • -
    • How to solve WSD +

    • How to solve WSD (Writable Static Data) problem

    • How to write a simple console-based STDLIB (C Standard library) program

    • @@ -240,8 +240,8 @@
    • How to construct a control

    • How to rotate a bitmap

    • -
    • How to create a label

    • -
    • how to create OpenVG +

    • How to create a label

    • +
    • how to create OpenVG content on a semi-transparent or transparent UI using the new Graphics architecture using ScreenPlay

    • How to draw pictures

    • @@ -563,11 +563,11 @@
    Networking Services
      -
    • How to send an http +

    • How to send an http page request to the server

    • -
    • How to get the server +

    • How to get the server response

    • -
    • How to read the server +

    • How to read the server response

    • How to connect to a socket using an IP address

    • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-94F21522-D598-5F85-BE04-D606AE8D5A25.dita --- a/Symbian3/PDK/Source/GUID-94F21522-D598-5F85-BE04-D606AE8D5A25.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-94F21522-D598-5F85-BE04-D606AE8D5A25.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Overview

      Telnet refers to the client-side software implementation and TelnetD (Telnet Daemon) to the server-side implementation. A Telnet client (for example, host PC) is connected to a TelnetD (for example, device). Here the purpose is to run and control a shell on a device using a PC as a terminal with a keyboard.

      The main purpose of using Zsh connected through TelnetD is to launch utilities (such as, external programs), debug applications, generate logs and retrieve information (such as, contents of the file) from public directories. The Utilities are executables whose output can be made available to the remote Telnet user by viewing text, or archiving as files or as an another program.

      Zsh transfers characters to the Telnet client and vice versa using TelnetD. Zsh interface is provided to enable programs to be conveniently launched for testing purposes. The shell also supports a number of built-in commands.

      Using TelnetD and Zsh

      Zsh can be launched by selecting the Zsh icon on the device. It starts TelnetD automatically. A connection can then be established from the Telnet client (host PC) to TelnetD by giving the following command at a Windows® or a UNIX® command prompt:

      Telnet <ip-address of the device>

      For information on retrieving the IP address refer to Setup.

      Every login to Zsh is through a key handshake. The device prompts for a key when you try to connect from the host PC. The same key given to the device has to be given at the host PC for the login to be successful. If the login is successful then the device starts the Zsh application. The maximum number of characters a key can accept is eight. The characters can be a combination of alphabets, numerals, and special characters.

      For existing Telnet clients on the host PC such as Microsoft Windows or Linux to connect to the server running on the device, the device needs an IP address.

      TelnetD supports send and receive functionality: TelnetD sends any data to and from Zsh to the host PC. TelnetD runs only when it is connected through a TCP/IP network. When the Telnet client places a request, TelnetD starts Zsh on the device, executes the specified command on the device, and sends the resultant data back to the host PC.

      Connection between the client (host PC) and the server (device) -
      Reference Setup
      \ No newline at end of file +
    Reference Setup \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-95259B6D-19A0-569E-B04B-F75B8DADC80E.dita --- a/Symbian3/PDK/Source/GUID-95259B6D-19A0-569E-B04B-F75B8DADC80E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-95259B6D-19A0-569E-B04B-F75B8DADC80E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -The object container index

    All object containers must be held within a special type of container known as an object container index.

    An object container index is an instance of a CObjectConIx class.

    An object container index not only acts as a container for object containers, but also provides the mechanism through which object containers are created.

    CObjectConIx::CreateL() creates an object container and is responsible for assigning a unique ID to it. This unique ID forms part of the identity of all reference counting objects which that object container will, in due course, hold.

    For example, the sever creates a single object container index; from this it creates a number of object containers, each of which, in turn, holds reference counting objects. The following drawing shows the idea.

    An object container index is implemented as a simple array where each element of the array contains a pointer to an object container. CObjectConIx::CreateL() constructs an object container, assigns a unique ID to it and adds it into the CObjectConIx array.

    See also:

    • CObjectConIx

    • CObjectCon

    • CObject

    \ No newline at end of file +The object container index

    All object containers must be held within a special type of container known as an object container index.

    An object container index is an instance of a CObjectConIx class.

    An object container index not only acts as a container for object containers, but also provides the mechanism through which object containers are created.

    CObjectConIx::CreateL() creates an object container and is responsible for assigning a unique ID to it. This unique ID forms part of the identity of all reference counting objects which that object container will, in due course, hold.

    For example, the sever creates a single object container index; from this it creates a number of object containers, each of which, in turn, holds reference counting objects. The following drawing shows the idea.

    An object container index is implemented as a simple array where each element of the array contains a pointer to an object container. CObjectConIx::CreateL() constructs an object container, assigns a unique ID to it and adds it into the CObjectConIx array.

    See also:

    • CObjectConIx

    • CObjectCon

    • CObject

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9529C9C5-D16D-5766-AE64-C2DB8A07C444.dita --- a/Symbian3/PDK/Source/GUID-9529C9C5-D16D-5766-AE64-C2DB8A07C444.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9529C9C5-D16D-5766-AE64-C2DB8A07C444.dita Fri Jul 16 17:23:46 2010 +0100 @@ -77,5 +77,5 @@ // Use Location Acquisition API as normal... ... - The Default PSY has a list of all available PSYs. If the GPS PSY and A-GPS PSY are installed, one of them can be used by the Default PSY. The choice of which PSY is used is based on the priority and availability of the PSYs. See Positioning Plug-in Information API for more information about PSY settings. See Default PSY for information about how a PSY is selected. Default - PSY Positioning Plug-in Information API Location Acquisition API \ No newline at end of file + The Default PSY has a list of all available PSYs. If the GPS PSY and A-GPS PSY are installed, one of them can be used by the Default PSY. The choice of which PSY is used is based on the priority and availability of the PSYs. See Positioning Plug-in Information API for more information about PSY settings. See Default PSY for information about how a PSY is selected. Default + PSY Positioning Plug-in Information API Location Acquisition API \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9535CF67-7541-554E-BE5C-9FDDFDB58EA5.dita --- a/Symbian3/PDK/Source/GUID-9535CF67-7541-554E-BE5C-9FDDFDB58EA5.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -targettype

    targettype target-type

    Use the targettype statement to specify the kind of project.

    The following target types are supported:

    Target type Description

    ani

    A window server animation DLL.

    app

    A GUI application. This is deprecated at v9.0. Applications must be converted to EXEs.

    ctl

    A system control. This is deprecated at v9.0. They must be converted to applications.

    dll

    A DLL: either a shared library, or a polymorphic interface.

    ecomiic

    An ECOM implementation collection. This is deprecated at v9.0. The plugin target type should be used instead.

    epocexe

    A Symbian platform executable that can be launched from the shell. This is an executable program which exports no functions under a multi-process platform and a DLL which is linked with the TIntWinsMain() function exported as ordinal 1 under a single-process platform.

    exe

    An executable program.

    exedll

    An executable program for a multi-process platform, a DLL for a single-process platform.

    exexp

    An executable program with exports.

    fsy

    A plug-in file system.

    implib

    Results solely in the generation of a .lib file. It is an error for a component of the IMPLIB type to contain SOURCE statements and the build tools enforce this.

    kdll

    A kernel DLL.

    kext

    A kernel extension.

    klib

    A kernel library.

    ldd

    A logical device driver.

    lib

    A static library.

    mda

    A media-server plug-in DLL (deprecated).

    mdl

    A MIME recognizer. This is deprecated at v9.0, and should be converted to PLUGIN (ECOM).

    none

    A bitmap or resource file without any executable.

    notifier

    An extended notifier DLL. This is deprecated at v9.0, and should be converted to PLUGIN (ECOM).

    opx

    An OPL extension.

    plugin

    An ECOM implementation collection.

    plugin3

    An ECOM implementation collection that supports extended interfaces.

    pdd

    A physical device driver. You can export functions from pdd if you have a .def file specified in the pdd's matching .mmp file.

    pdl

    A printer driver.

    rdl

    A recognizer. This is deprecated at v9.0, and should be converted to PLUGIN (ECOM).

    stdexe

    A P.I.P.S. EXE, which is identified by the following UIDs on a Symbian platform:

    • UID1 - 0x1000007a

    • UID2 - 0x20004C45

    stddll

    A P.I.P.S. DLL, which is identified by the following UIDs on a Symbian platform:

    • UID1 - 0x10000079

    • UID2 - 0x20004C45

    stdlib

    A P.I.P.S. static library.

    var

    A variant file.

    Note:

    • For more information about the target types stdexe, stddll and stdlib, refer to Target Types.

    • The target types ecomiic, kdll, kext, klib, ldd, pdd and var are built in ARM mode, as these targets have access to kernel APIs. That is, all the kernel code is built in ARM mode using --arm compiler option, whereas all the user code is built in THUMB mode using --thumb compiler option.

    • The target types stdexe, stddll and stdlib are supported only on ARM ABI and Symbian emulator compliant platforms, such as, ARMv5, ARMv5_ABIv2, GCCE and WINSCW.

    • When exporting functions from the target types, build system can auto generate .def files only for DLL, EXEDLL, EXEXP, and STDDLL target types even if, you do not have a .def file specified in the matching .mmp file.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-95493C3D-58C6-5EBF-85E1-167D58E68658.dita --- a/Symbian3/PDK/Source/GUID-95493C3D-58C6-5EBF-85E1-167D58E68658.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-95493C3D-58C6-5EBF-85E1-167D58E68658.dita Fri Jul 16 17:23:46 2010 +0100 @@ -115,7 +115,7 @@ Audio Video Distribution Transport Protocol (AVDTP) is used to deliver the output stream from the multimedia application to the controller device. The RemCon Server status is updated to the Controller through the AVRCP bearer.

    - +
    What's next?

    The following tutorial series has been provided to make writing remote control applications easier.

      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-95580D64-315E-51E8-99C3-6C0B8FFF1522_d0e479114_href.png Binary file Symbian3/PDK/Source/GUID-95580D64-315E-51E8-99C3-6C0B8FFF1522_d0e479114_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-95580D64-315E-51E8-99C3-6C0B8FFF1522_d0e484943_href.png Binary file Symbian3/PDK/Source/GUID-95580D64-315E-51E8-99C3-6C0B8FFF1522_d0e484943_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9574041E-183D-5C3F-8429-A62323B97739.dita --- a/Symbian3/PDK/Source/GUID-9574041E-183D-5C3F-8429-A62323B97739.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Dictionary-compressed resource format

      This page describes the dictionary-compressed resource file format introduced from Symbian OS v7.0. This format can produce higher-compression than the simple compression format.

      The format is supported by the resource reading APIs, but Development Kits do not currently contain a resource compiler that produces this format.

      Number of bytes

      Description

      16

      These bytes store the resource file’s UIDs.

      The first twelve bytes consist of three four-byte integers (in little-endian byte order) followed by a four-byte CRC checksum generated from those three integers.

      The first UID is always 0x101f5010.

      The second and third UIDs are the same as the second and third UIDs of the file from which the dictionary-compressed resource-file is generated.

      1

      The least significant three bits:

      These store the number of bits used for dictionary references, storing this value as an offset from 3. For example, if 2 is stored in these three bits, then the number of bits per dictionary reference would be 3+2=5. Thus, the number of bits per dictionary reference may range inclusively from 3 (=3+0) to 10 (=3+7). The maximum number of dictionary entries for each number of bits per dictionary reference is therefore 8 (=23), 16 (=24), 32 (=25), 64 (=26), 128 (=27), 256 (=28), 512 (=29), 1024 (=210).

      The most significant five bits:

      This stores flags. Currently there are three flags defined:

      The most significant bit (0x80) indicates whether the third UID is actually the resource file’s offset (see the first row of the preceding table for a description of what the offset is). The bit is set to non-zero if it is, and zero if it is not.

      The second-most significant bit (0x40) indicates whether the first resource in the resource file (from the client’s point of view) is an RSS_SIGNATURE with default values for which no data is actually stored later in the resource file. The bit is set to non-zero if it is, and zero if it is not. This flag must only be on if the third UID of the resource file is the resource file’s offset (see the 0x80 flag described immediately above).

      The third-most significant bit (0x20) flags if the bit-array that indicates which resources contain compressed Unicode has been stored as a resource before the client’s actual resources. (If it is stored as a resource, it benefits by being dictionary-compressed.) The bit is set to non-zero if the bit-array is stored as a resource, and zero if it is simply stored as a field on its own (see the fifth row of this table).

      Note that the bit-array will not contain a bit that refers to the “non-stored” (if the 0x40 flag is on) initial RSS_SIGNATURE resource. It will also not contain a bit that refers to itself if it is stored as a resource (i.e. if the 0x20 flag is on).

      2

      This two-byte integer (in little-endian byte order) stores the size in bytes of the largest resource in the file (that is, the size when uncompressed with regard to both dictionary-compression and compressed Unicode).

      2

      This two-byte integer (in little-endian byte order) stores the file-position of the start of the resource data (see the penultimate row of this table for a description of the resource data).

      Number_of_resources/8 (rounded up to the nearest whole number), or zero if the 0x20 flag (described in the second row of this table) is on

      This is a bit-array (one bit for each resource) storing which resources contain compressed Unicode. This field is not always present (see the left-hand column).

      [any]

      This contains the data for all the dictionary entries stored one after another with no bit-padding between them, encoded according to the scheme described in the next table. The last dictionary entry, if not finishing on a byte-boundary, is followed by zero pad-bits up to the next byte-boundary.

      Number_of_dictionary_entries*2

      This is the dictionary index which is a series of two-byte integers (in little-endian byte order), one for each dictionary entry, each storing the offset in bits from the start of the entire dictionary data to one-bit past the end of that dictionary entry’s data (see row immediately above).

      [any]

      This contains the data for all the resources stored in order, one after another with no bit-padding between them, encoded according to the scheme described in the next table. The data for the last resource, if not finishing on a byte-boundary, is followed by zero pad-bits up to the next byte-boundary.

      Number_of_resources*2, or (number_of_resources-1)*2 if the 0x40 flag (described in the second row of this table) is on

      This is the resource index which is a series of two-byte integers (in little-endian byte order), one for each stored resource, each storing the offset in bits from the start of the entire resource data to one-bit past the end of that resource’s data (see row immediately above).

      The data for each dictionary entry and the data for each resource consist of zero, one or more of the following bit-sequences shown in the table below. Note that the order of bits is taken as going from least-significant to most-significant. Thus, for example, the binary prefix 10 (assuming that these bits were not split across a byte-boundary) would actually be stored with the 1 in the less significant bit of the bit-pair and the 0 in the more significant bit.

      Prefix bits

      Description of what follows

      0

      This is followed by a dictionary reference (the second row of the previous table describes the field indicating how many bits a dictionary reference occupies). A dictionary reference is a zero-based index* into the dictionary entries, i.e. a dictionary reference of 0 indicates the first dictionary entry, and dictionary reference of 1 indicates the second dictionary entry, etc.

      10

      This is followed by one octet of data, the least significant bit of the octet being stored first.

      110

      This is followed by two octets of data, the least significant bit of the first octet being stored first.

      1110

      This is followed by a three-bit integer* storing the number of subsequent octets minus 3, followed by those octets themselves (the least significant bit of the first octet being stored first). Use this to store a run of between 3 and 10 octets (inclusive).

      1111

      This is followed by an eight-bit integer* storing the number of subsequent octets minus 11, followed by those octets themselves (the least significant bit of the first octet being stored first). Use this to store a run of between 11 and 266 octets (inclusive).

      * These integers, if split across one or more byte-boundaries are stored in little-endian “byte-order”, i.e. the segment of the integer stored in the “next” byte store more significant bits than the segment of the integer stored in the “current” byte.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-95A4DB2E-77CB-5151-8D7C-948C30348E13.dita --- a/Symbian3/PDK/Source/GUID-95A4DB2E-77CB-5151-8D7C-948C30348E13.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-95A4DB2E-77CB-5151-8D7C-948C30348E13.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,6 +9,6 @@ --> -ArchitectureThe telephony server plug-in is the interface between the telephony server and the baseband. This topic describes the architectural relationship between the telephony server plug-in components.

      The CTSY inherits its base class from the telephony Server. The server can be CCallBase, CPhoneBase or CLineBase. CTSY has two main APIs:

      TSY plug-in API

      This API is used for communication with the telephony server. The telephony client sends the request to the telephony server for any communication that requires baseband connection. The telephony server forwards these requests to the LTSY through TSY plug-in API.

      Common TSY plug-in API

      This interface is used for the communication between the CTSY and the LTSY. The CTSY forwards the telephony client request to the LTSY using the Common TSY plug-in API as CTSY messages. The CTSY messages are converted to baseband requests by the LTSY.

      The CTSY is implemented as a static DLL and it is loaded during device boot time by the telephony server. The telephony server and the CTSY run in the same thread. Since it is a static DLL, the initialisation will not fail.

      There are two variants of Common TSY:

      • Common TSY without Dispatcher

      • Common TSY with Dispatcher

      Common TSY without Dispatcher

      Telephony clients send requests which can be mode specific or mode independent. The mode can be GSM or UMTS. These requests are passed on to CTSY by the telephony server (ETel). The mode independent requests are handled by CTSY and the mode specific requests are handled by the extension modules such as CMmPhoneGsmWcdmaExtInterface. A mode specific extension module may process the requests related to specific technologies such as GSM or UMTS.

      +<concept xml:lang="en" id="GUID-95A4DB2E-77CB-5151-8D7C-948C30348E13"><title>ArchitectureThe telephony server plug-in is the interface between the telephony server and the baseband. This topic describes the architectural relationship between the telephony server plug-in components.

      The CTSY inherits its base class from the telephony Server. The server can be CCallBase, CPhoneBase or CLineBase. CTSY has two main APIs:

      TSY plug-in API

      This API is used for communication with the telephony server. The telephony client sends the request to the telephony server for any communication that requires baseband connection. The telephony server forwards these requests to the LTSY through TSY plug-in API.

      Common TSY plug-in API

      This interface is used for the communication between the CTSY and the LTSY. The CTSY forwards the telephony client request to the LTSY using the Common TSY plug-in API as CTSY messages. The CTSY messages are converted to baseband requests by the LTSY.

      The CTSY is implemented as a static DLL and it is loaded during device boot time by the telephony server. The telephony server and the CTSY run in the same thread. Since it is a static DLL, the initialisation will not fail.

      There are two variants of Common TSY:

      • Common TSY without Dispatcher

      • Common TSY with Dispatcher

      Common TSY without Dispatcher

      Telephony clients send requests which can be mode specific or mode independent. The mode can be GSM or UMTS. These requests are passed on to CTSY by the telephony server (ETel). The mode independent requests are handled by CTSY and the mode specific requests are handled by the extension modules such as CMmPhoneGsmWcdmaExtInterface. A mode specific extension module may process the requests related to specific technologies such as GSM or UMTS.

      Common TSY without Dispatcher -

      The CTSY is independent of the LTSY and the baseband. The generic interface allows licensees to modify the LTSY and baseband, but allows easy integration. The phone engine is the main user of the CTSY but other processes such as the SIM Application Toolkit (SAT) can also use the CTSY. The phone engine is created by the telephony server when the phone boots. The phone engine initialises the CTSY and the LTSY when a first request call is made by one of the clients. The CTSY creates the message manager and the message router proxy. The LTSY creates a message router and message handlers.

      Message manager

      The message manager separates the CTSY from the LTSY. Telephony client requests are all processed by the message manager and passed to the LTSY using the message router. CMmMessageRouterBase provides the required implementation for routing the client request to the LTSY. When the requests are acknowledged, the message manager forwards the response message to the client. Each client is identified by a unique IPC number. LTSY should use the MmMessageManagerCallback interface to respond to the telephony clients.

      The requests passed from CTSY to LTSY should be sent as a packaged data using the CmDataPackage template. The template class allows packing of two parameters together.

      Message router proxy

      The message router proxy handles the response from the baseband to the CTSY. Message router proxy implements the MmMessageMangerCallBack which is used by the LTSY to respond back to the CTSY request messages using the Complete() method.

      Common TSY with Dispatcher

      In the second variant of the CTSY a new layer is provided to decrease the development time of the LTSY. This new layer, between the CTSY and the LTSY, is known as the dispatch layer. The dispatch layer provides a simple interface to be implemented in the LTSY. The dispatch layer handles the packing and unpacking of messages between the CTSY and LTSY. The LTSY is responsible for the implementation of the functions defined in the dispatcher classes and translating the requests to baseband commands.

      CTSY

      The CTSY implements the message manager. The message manager processes the incoming client requests and pass them to appropriate dispatcher class through the message router. The acknowledgements from the dispatcher class are passed back to the clients through the telephony server.

      Dispatcher

      The dispatch layer provides the following:

      • LTSY factory classes

        The factory classes creates the required interfaces for communication between the LTSY and the CTSY.

      • Message router

        The message router is responsible to call the appropriate dispatcher class function.

      • Dispatcher classes

        The dispatcher classes are grouped according to the functional areas.

      • Call-back functions

        The LTSY uses the call-back function to acknowledge previous request or to notify an event.

      Note: Some of the functions may not be implemented in the LTSY. When the dispatcher receives a request for an unsupported function it returns KErrNotSupported to the clients.

      \ No newline at end of file +

      The CTSY is independent of the LTSY and the baseband. The generic interface allows licensees to modify the LTSY and baseband, but allows easy integration. The phone engine is the main user of the CTSY but other processes such as the SIM Application Toolkit (SAT) can also use the CTSY. The phone engine is created by the telephony server when the phone boots. The phone engine initialises the CTSY and the LTSY when a first request call is made by one of the clients. The CTSY creates the message manager and the message router proxy. The LTSY creates a message router and message handlers.

      Message manager

      The message manager separates the CTSY from the LTSY. Telephony client requests are all processed by the message manager and passed to the LTSY using the message router. CMmMessageRouterBase provides the required implementation for routing the client request to the LTSY. When the requests are acknowledged, the message manager forwards the response message to the client. Each client is identified by a unique IPC number. LTSY should use the MmMessageManagerCallback interface to respond to the telephony clients.

      The requests passed from CTSY to LTSY should be sent as a packaged data using the CmDataPackage template. The template class allows packing of two parameters together.

      Message router proxy

      The message router proxy handles the response from the baseband to the CTSY. Message router proxy implements the MmMessageMangerCallBack which is used by the LTSY to respond back to the CTSY request messages using the Complete() method.

      Common TSY with Dispatcher

      In the second variant of the CTSY a new layer is provided to decrease the development time of the LTSY. This new layer, between the CTSY and the LTSY, is known as the dispatch layer. The dispatch layer provides a simple interface to be implemented in the LTSY. The dispatch layer handles the packing and unpacking of messages between the CTSY and LTSY. The LTSY is responsible for the implementation of the functions defined in the dispatcher classes and translating the requests to baseband commands.

      CTSY

      The CTSY implements the message manager. The message manager processes the incoming client requests and pass them to appropriate dispatcher class through the message router. The acknowledgements from the dispatcher class are passed back to the clients through the telephony server.

      Dispatcher

      The dispatch layer provides the following:

      • LTSY factory classes

        The factory classes creates the required interfaces for communication between the LTSY and the CTSY.

      • Message router

        The message router is responsible to call the appropriate dispatcher class function.

      • Dispatcher classes

        The dispatcher classes are grouped according to the functional areas.

      • Call-back functions

        The LTSY uses the call-back function to acknowledge previous request or to notify an event.

      Note: Some of the functions may not be implemented in the LTSY. When the dispatcher receives a request for an unsupported function it returns KErrNotSupported to the clients.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-95CE2206-7AE0-48C0-97A7-4E2082F9F662.dita --- a/Symbian3/PDK/Source/GUID-95CE2206-7AE0-48C0-97A7-4E2082F9F662.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-95CE2206-7AE0-48C0-97A7-4E2082F9F662.dita Fri Jul 16 17:23:46 2010 +0100 @@ -32,7 +32,7 @@ Fixed toolbar with implementation classes - +
      Implementing a toolbar

      To use a toolbar in your application, implement the following diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-95E557D0-9A84-514C-B51E-0556F26B3C98.dita --- a/Symbian3/PDK/Source/GUID-95E557D0-9A84-514C-B51E-0556F26B3C98.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-95E557D0-9A84-514C-B51E-0556F26B3C98.dita Fri Jul 16 17:23:46 2010 +0100 @@ -37,8 +37,10 @@

    • CEZGZipToFile

    • CEZFileToGZip

    -
    Build

    The Symbian -build process describes how to build an application.

    The EzlibExample builds an executable file called ezlibexample.exe in the standard location (\epoc32\release\winscw\ <build_variant > for CodeWarrior). After launching -the executable, depending on the emulator you are using, you may need -to navigate using the application launcher or the eshell screen to view the console.

    +
    Build

    The Symbian build process describes how to build an application.

    The EzlibExample builds an executable +file called ezlibexample.exe in the standard +location (\epoc32\release\winscw\ <build_variant > for CodeWarrior). After launching the executable, +depending on the emulator you are using, you may need to navigate +using the application launcher or the eshell screen +to view the console.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9620407B-0560-5D95-A862-5AE406C48983.dita --- a/Symbian3/PDK/Source/GUID-9620407B-0560-5D95-A862-5AE406C48983.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9620407B-0560-5D95-A862-5AE406C48983.dita Fri Jul 16 17:23:46 2010 +0100 @@ -22,11 +22,11 @@ and the components in its environment are shown below. It uses the RResourceFile class to access the actual resource files.

    String Resource Reader environment - +

    String Resource Reader consists of one class, CTulStringResourceReader. String Resource Reader uses BaflUtils and RResourceFile.

    Class diagram - +
    Description

    Usage

    String Resource Reader is designed to load strings from normal resource files. The diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9660B072-9BD6-5A84-B45A-636F0D06D467.dita --- a/Symbian3/PDK/Source/GUID-9660B072-9BD6-5A84-B45A-636F0D06D467.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9660B072-9BD6-5A84-B45A-636F0D06D467.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,12 +1,38 @@ - - - - - -setopt

    setopt [ {+|-}options | {+|-}o option_name ] [ name ... ]

    Set the options for the shell. All options specified either with flags or by name are set. If no arguments are supplied, the names of all options currently set are printed.

    Option Description

    -m

    The arguments are taken as patterns (which should be quoted to protect them from filename expansion), and all options with names matching these patterns are set.

    Note: For information about the options supported by the setopt command, refer to http://zsh.dotsrc.org. Note that not all the options listed on this web page are supported by Symbian.

    \ No newline at end of file + + + + + +setopt +

    setopt [ {+|-}options | {+|-}o option_name ] [ name +... ]

    +

    Set the options for the shell. All options specified either with +flags or by name are set. If no arguments are supplied, the names +of all options currently set are printed.

    + + + + +Option +Description + + + + +

    -m

    +

    The arguments are taken as patterns (which should be quoted +to protect them from filename expansion), and all options with names +matching these patterns are set.

    +
    + + +
    +

    Note: For information about the options supported by the setopt command, refer to http://zsh.dotsrc.org. Note that not all the options listed +on this web page are supported by Symbian.

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9665C072-EA52-54B8-87A3-A7F818940DCD.dita --- a/Symbian3/PDK/Source/GUID-9665C072-EA52-54B8-87A3-A7F818940DCD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9665C072-EA52-54B8-87A3-A7F818940DCD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -25,7 +25,7 @@ field at a given location in a record is in a column. A table can also be called a record set.

    - +

    Tables, records, columns and fields are all CommsDat elements. An element is an item that can be stored in the Comms Database.

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9665D904-8B86-4680-AD19-85E1609F450F.dita --- a/Symbian3/PDK/Source/GUID-9665D904-8B86-4680-AD19-85E1609F450F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9665D904-8B86-4680-AD19-85E1609F450F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -44,6 +44,6 @@ phone right side up orientation the gravitation is along the x-axis. In display upwards and display downwards orientation the gravitation is along the z-axis. Basic orientations of a Symbian device - +

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-967F99EC-0C6E-468F-BB2D-C175C7F69B67_d0e1693_href.png Binary file Symbian3/PDK/Source/GUID-967F99EC-0C6E-468F-BB2D-C175C7F69B67_d0e1693_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-967F99EC-0C6E-468F-BB2D-C175C7F69B67_d0e1697_href.png Binary file Symbian3/PDK/Source/GUID-967F99EC-0C6E-468F-BB2D-C175C7F69B67_d0e1697_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-96975165-9194-5FDF-8160-3A020522263A.dita --- a/Symbian3/PDK/Source/GUID-96975165-9194-5FDF-8160-3A020522263A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-96975165-9194-5FDF-8160-3A020522263A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,20 +11,20 @@ PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd"> Run PSY Tester This section describes how to run PSY tester.

    PSY Tester is run to select and test PSY(s).

    PSY Tester is implemented as a console application, which means that it has a limited UI. This is because it must be possible to use the same implementation of PSY Tester independently of the graphical UI of the phone on which it runs.

    The information in this document about which keys to press is valid for a Series 60 target device. For a translation list of the keys to be used when running the PSY Tester application on the emulator, see the key table in PSY Tester Reference.

    Start PSY Tester to show the Start View Start the PSY Tester application psytester.exe from a file browser or eshell. The Start View of Figure 1 is displayed. Figure 1: PSY Tester Start View - The Start View is displayed every time PSY Tester is started. A user can obtain help be pressing the left soft key or H to show the Help View of Figure 2. This Help View shows the different commands that are used to control PSY Tester. PSY Tester Reference describes the commands in this menu. + The Start View is displayed every time PSY Tester is started. A user can obtain help be pressing the left soft key or H to show the Help View of Figure 2. This Help View shows the different commands that are used to control PSY Tester. PSY Tester Reference describes the commands in this menu. Figure 2: PSY Tester Help View. - List the installed PSYs and select one for test Press "Joystick Right" ("Arrow Right" in an emulator) to shift view. The PSY Tester List View is shown (figure 3) The List View lists the PSYs from index 1 to 4. If there are more PSYs installed than can be shown on one screen, they are listed when the user moves the joystick down (Arrow Down in an emulator). + List the installed PSYs and select one for test Press "Joystick Right" ("Arrow Right" in an emulator) to shift view. The PSY Tester List View is shown (figure 3) The List View lists the PSYs from index 1 to 4. If there are more PSYs installed than can be shown on one screen, they are listed when the user moves the joystick down (Arrow Down in an emulator). Figure 3: PSY Tester List View. - By default, all installed PSYs are listed. If any of the installed PSYs must not be shown in the PSY Tester List view, the UID of the PSY can be specified in the PSY Tester resource file under r_pos_psy_tester_psy_uid_excludes_list. The PSY Tester List View shows PSY implementation information that has been retrieved from PSY resource files. The information presented for each PSY is as follows: The first row shows the display name for the PSY as specified in the PSY resource file as display_name. In figure 3 the PSY display name for the PSY with index 25 has display_name = "Test PSY5 + By default, all installed PSYs are listed. If any of the installed PSYs must not be shown in the PSY Tester List view, the UID of the PSY can be specified in the PSY Tester resource file under r_pos_psy_tester_psy_uid_excludes_list. The PSY Tester List View shows PSY implementation information that has been retrieved from PSY resource files. The information presented for each PSY is as follows: The first row shows the display name for the PSY as specified in the PSY resource file as display_name. In figure 3 the PSY display name for the PSY with index 25 has display_name = "Test PSY5 Status" in the PSY resource file. If the PSY name is too long to fit on one row, the extra characters are not shown. The second row shows the implementation UID for the PSY, specified in the PSY resource file as implementation_uid. In figure 3, the implementation UID for the PSY with index 25 has implementation_uid = 0x01ff0018 in the PSY resource file. The third row shows the version number of the PSY, specified in the resource file as version_no. In figure 3, the version number for the PSY with index 25 is specified as version_no = 1 in the resource file. To select PSY "Test PSY5 Status" (which has index number 25 in the list in figure 3) for testing, type 25. In response PSY: 25 is displayed as shown in Figure 4. Figure 4: PSY Tester List View with selected PSY. - (Optional) Change the number of location requests for the memory consumption test. Press "Joystick Right" ("Arrow Right" in an emulator) to show the PSY Tester Settings View (figure 5). + (Optional) Change the number of location requests for the memory consumption test. Press "Joystick Right" ("Arrow Right" in an emulator) to show the PSY Tester Settings View (figure 5). Figure 5: PSY Tester Settings View. - In Settings View the user can override the default number of location requests made for the memory consumption test. The memory consumption test requires that PSY Tester makes a large number of requests. A default value of 1000 requests is defined in the PSY Tester configuration file. Such a large number of requests significantly affects the testing time. The user can override this default value in the Settings View. To change the default number of requests, enter a number and press the joystick (press Enter on an emulator). Figure 6 shows an example or reducing the number of requests to 30. + In Settings View the user can override the default number of location requests made for the memory consumption test. The memory consumption test requires that PSY Tester makes a large number of requests. A default value of 1000 requests is defined in the PSY Tester configuration file. Such a large number of requests significantly affects the testing time. The user can override this default value in the Settings View. To change the default number of requests, enter a number and press the joystick (press Enter on an emulator). Figure 6 shows an example or reducing the number of requests to 30. Figure 6: Overriding the number of location requests for the memory consumption test. - The value typed in the PSY Tester Settings view is used for all memory tests until the user selects to override the value with a new one or until PSY Tester is restarted. If 0 is selected as the number of location requests for the memory consumption test, it is not performed. The default value from the resource file is used every time PSY Tester is started if the user does not override the value as described above. A help view (figure 7) available for the PSY Tester Settings view by typing H. This help view gives information on how to turn off memory tests (by selecting 0) as well as information on the default value for the number of location requests for memory consumption test (1000). + The value typed in the PSY Tester Settings view is used for all memory tests until the user selects to override the value with a new one or until PSY Tester is restarted. If 0 is selected as the number of location requests for the memory consumption test, it is not performed. The default value from the resource file is used every time PSY Tester is started if the user does not override the value as described above. A help view (figure 7) available for the PSY Tester Settings view by typing H. This help view gives information on how to turn off memory tests (by selecting 0) as well as information on the default value for the number of location requests for memory consumption test (1000). Figure 7: Help view for the PSY Tester Settings view - Shift back to the PSY Tester List View by pressing Joystick Left (Arrow Left). Start the tests After selecting a PSY for test, press the joystick (Enter in emulator) to start the tests. A message is shown that states that the tests are running, followed later by a message when the tests are complete. The results for the tests are available in the log file. For log file details see Read the test logs.

    The PSY Tester runs the tests and writes test log files.

    When the tests are finished, the user reads the log files to see the test results.

    See Read the test logs for more information.

    Read + Shift back to the PSY Tester List View by pressing Joystick Left (Arrow Left). Start the tests After selecting a PSY for test, press the joystick (Enter in emulator) to start the tests. A message is shown that states that the tests are running, followed later by a message when the tests are complete. The results for the tests are available in the log file. For log file details see Read the test logs.

    The PSY Tester runs the tests and writes test log files.

    When the tests are finished, the user reads the log files to see the test results.

    See Read the test logs for more information.

    Read the test logs PSY Tutorial
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-969EA8CE-7B8C-458D-983B-837128F747E7.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-969EA8CE-7B8C-458D-983B-837128F747E7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,31 @@ + + + + + +Creating +an installer as a server-side plug-inSymbian provides an example server-side reference installer that +demonstrates how to create an installer as a server-side plug-in. The example +reference installer is available at security/usif/examples/installer/. + +Create a client +by implementing RSifTransportClient to send software management +requests across the process boundary to a specified Transport Server. +

    Refer to security/usif/examples/installer/inc/sifrefinstallerclient.h and security/usif/examples/installer/source/sifrefinstallerclient.cpp.

    +
    +Create an ECom plug-in for installing the software type by defining +and implementing the virtual functions of CSifPlugin. +

    Refer to security/usif/examples/installer/inc/sifrefplugin.h and security/usif/examples/installer/source/sifrefplugin.cpp.

    +
    +Implement the respective server-side software management tasks +using CSifTransportTask. +

    Refer to security/usif/examples/installer/inc/sifrefinstallertask.h and security/usif/examples/installer/source/sifrefinstallertask.cpp.

    +
    +
    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-96C007D1-9AA0-57DC-A6DC-8B6E5A2DF644.dita --- a/Symbian3/PDK/Source/GUID-96C007D1-9AA0-57DC-A6DC-8B6E5A2DF644.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -capability

    capability capability-names

    Use the capability statement to specify the platform security capabilities of the executable.

    The setting is only functional on OS versions based on the EKA2 kernel. For those versions based on EKA1, the keyword is ignored.

    The keyword is followed by a space separated set of capabilities, for example:

    CAPABILITY LocalServices ReadDeviceData ReadUserData

    The special capability name ALL is used to represents all capabilities supported by the current version of Symbian platform. This can be used as an alternative to naming all capabilities individually.

    ALL can also be used together with capability names prefixed by a '-', to indicate which capabilities to exclude, e.g.

    CAPABILITY ALL -TCB -TrustedUI

    indicates a set of all capabilities excluding TCB and TrustedUI.

    If no capabilities are required, then NONE can be used.

    If the CAPABILITY keyword is not present in the MMP file, then the default of CAPABILITY NONE is used.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-96E46D0E-1CE3-58B4-AE99-6B2E622ADAF9.dita --- a/Symbian3/PDK/Source/GUID-96E46D0E-1CE3-58B4-AE99-6B2E622ADAF9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-96E46D0E-1CE3-58B4-AE99-6B2E622ADAF9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -36,11 +36,14 @@
  • RWindow::SetTransparentRegion(const TRegion&): this function restricts the transparency to a specified region of the window.

  • -

    Handling window server events

    The user-defined class CEventHandler handles -pointer events when transparent areas of the window are clicked by -the pointer device. An appropriate message is displayed when a click event is detected.

    -
    Build

    The Symbian -build process describes how to build this example.

    The Transparent example builds an executable called transparent.exe in the standard location (\epoc32\release\winscw\<build_variant> for Carbide.c++).

    +

    Handling window server events

    The user-defined +class CEventHandler handles pointer events when transparent +areas of the window are clicked by the pointer device. An appropriate +message is displayed when a click event is detected.

    +
    Build

    The Transparent example builds an executable +called transparent.exe in the standard location +(\epoc32\release\winscw\<build_variant> for +Carbide.c++).

    Running the example

    The example creates three windows:

    • One background diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-96F5CB06-F1C2-5F37-B5B8-DA8C086B73AA_d0e63464_href.png Binary file Symbian3/PDK/Source/GUID-96F5CB06-F1C2-5F37-B5B8-DA8C086B73AA_d0e63464_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-96F5CB06-F1C2-5F37-B5B8-DA8C086B73AA_d0e67695_href.png Binary file Symbian3/PDK/Source/GUID-96F5CB06-F1C2-5F37-B5B8-DA8C086B73AA_d0e67695_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-96FEE9E3-E870-5CE2-A049-9425B82894B0_d0e433894_href.png Binary file Symbian3/PDK/Source/GUID-96FEE9E3-E870-5CE2-A049-9425B82894B0_d0e433894_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-96FEE9E3-E870-5CE2-A049-9425B82894B0_d0e439739_href.png Binary file Symbian3/PDK/Source/GUID-96FEE9E3-E870-5CE2-A049-9425B82894B0_d0e439739_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-970A2948-5A72-5E92-84C0-86DDEE59A569_d0e258363_href.png Binary file Symbian3/PDK/Source/GUID-970A2948-5A72-5E92-84C0-86DDEE59A569_d0e258363_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-970A2948-5A72-5E92-84C0-86DDEE59A569_d0e264372_href.png Binary file Symbian3/PDK/Source/GUID-970A2948-5A72-5E92-84C0-86DDEE59A569_d0e264372_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-970EC5A9-8ED3-53C5-93A3-2EC1A7B6F25F_d0e385983_href.png Binary file Symbian3/PDK/Source/GUID-970EC5A9-8ED3-53C5-93A3-2EC1A7B6F25F_d0e385983_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-970EC5A9-8ED3-53C5-93A3-2EC1A7B6F25F_d0e391835_href.png Binary file Symbian3/PDK/Source/GUID-970EC5A9-8ED3-53C5-93A3-2EC1A7B6F25F_d0e391835_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-971C9B81-1D6F-59E7-9416-385A0787D642.dita --- a/Symbian3/PDK/Source/GUID-971C9B81-1D6F-59E7-9416-385A0787D642.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-971C9B81-1D6F-59E7-9416-385A0787D642.dita Fri Jul 16 17:23:46 2010 +0100 @@ -47,7 +47,7 @@ Example showing the order and priority of controls on the control stack - +

      On the stack shown in the diagram key-press events will be offered first to control D, followed by A, B and C in that order. A control on the stack diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-973CF8E7-18C8-5E24-BC7A-97148FAEF3E4_d0e243549_href.png Binary file Symbian3/PDK/Source/GUID-973CF8E7-18C8-5E24-BC7A-97148FAEF3E4_d0e243549_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-973CF8E7-18C8-5E24-BC7A-97148FAEF3E4_d0e249560_href.png Binary file Symbian3/PDK/Source/GUID-973CF8E7-18C8-5E24-BC7A-97148FAEF3E4_d0e249560_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-97545AEB-0518-5937-AEB6-C97443B449D3_d0e468551_href.jpg Binary file Symbian3/PDK/Source/GUID-97545AEB-0518-5937-AEB6-C97443B449D3_d0e468551_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-97545AEB-0518-5937-AEB6-C97443B449D3_d0e474396_href.jpg Binary file Symbian3/PDK/Source/GUID-97545AEB-0518-5937-AEB6-C97443B449D3_d0e474396_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-975CBC70-81E6-5FA2-80CE-88DD2ABE9595.dita --- a/Symbian3/PDK/Source/GUID-975CBC70-81E6-5FA2-80CE-88DD2ABE9595.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-975CBC70-81E6-5FA2-80CE-88DD2ABE9595.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,7 +17,7 @@ The collections and components in the Graphics package - +

      The following list gives links to high-level Graphics topics and the collections diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-979D7C71-A61A-5A49-AF67-8BB9CF67AFF0.dita --- a/Symbian3/PDK/Source/GUID-979D7C71-A61A-5A49-AF67-8BB9CF67AFF0.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-979D7C71-A61A-5A49-AF67-8BB9CF67AFF0.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Bluetooth Manager OverviewThe Bluetooth Manager component provides non-volatile storage of details of Bluetooth devices in the Bluetooth Registry.

      Purpose

      The Bluetooth Manager enables you to store details of devices in the Bluetooth Registry. It also enables you to retrieve, modify and delete the information about devices.

      Key concepts and terms

      Documentation on the Bluetooth Manager component uses the following key concepts and terms:

      Cookie

      Stored data that can be used by the UI whenever it is needed.

      EIR (Extended Inquiry Response)

      Information that is supplied by the host and transmitted in the inquiry responses sub-state.

      'Bonded' settings

      Details of peer devices with which a device has formed secure relationships in the past.

      'Last used' settings

      Details of when devices were last connected.

      Architecture

      Diagram showing Bluetooth Manager relationships -
      Bluetooth Manager summary

      The Bluetooth Manager component provides the following:

      • BT Device

        btdevice.dll

        Provides a mechanism for discovering, setting and retreiving information about the various properties of a Bluetooth device.

      • BT Manager Client

        btmanclient.dll

        Provides access to the Bluetooth Manager server.

      • BT Manager Server

        btmanserver.exe

        Provides access to the Bluetooth Registry.

      • EIR Client

        eirclient.dll

        Provides ways of publishing information over the Bluetooth EIR mechanism.

      \ No newline at end of file +
    Bluetooth Manager summary

    The Bluetooth Manager component provides the following:

    • BT Device

      btdevice.dll

      Provides a mechanism for discovering, setting and retreiving information about the various properties of a Bluetooth device.

    • BT Manager Client

      btmanclient.dll

      Provides access to the Bluetooth Manager server.

    • BT Manager Server

      btmanserver.exe

      Provides access to the Bluetooth Registry.

    • EIR Client

      eirclient.dll

      Provides ways of publishing information over the Bluetooth EIR mechanism.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-97ACFC53-4B55-5880-988D-7C376D8AFB16.dita --- a/Symbian3/PDK/Source/GUID-97ACFC53-4B55-5880-988D-7C376D8AFB16.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-97ACFC53-4B55-5880-988D-7C376D8AFB16.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -Overview

    The Session Description Protocol (SDP) provides the users with a standard representation for media details, transport addresses, and session description metadata. This representation is independent of the method the information is transported. The SDP Codec subsystem enables its clients the SDP Codec API do the following:

    • encode SDP descriptions into an internal form

    • decode the descriptions from an internal form

    • set and get the SDP field values

    Architectural Relationships

    The calls to the SDP Codec API are synchronous. The SDP Codec API does not require capabilities and it cannot be extended.

    SDP Codec API class structure

    The client uses some or all the SDP Codec API classes during the handling of a SDP description. The interface classes are derived from CBase. The client has a 'use' relationship with the SDP Codec API library.

    The following illustration shows the SDP Codec API class structure.

    Memory used

    The amount of memory used by every header object of the SDP Codec API is equivalent to the memory used by the header as text.

    See also
    • Multiparty Multimedia Session Control (mmusic)

    • Real Time Streaming Protocol (RTSP)

    • Integration of Resource Management and Session Initiation Protocol (SIP)

    • Grouping of Media Lines in the Session Description Protocol (SDP)

    • An Offer/Answer Model with the Session Description Protocol (SDP)

    \ No newline at end of file +Overview

    The Session Description Protocol (SDP) provides the users with a standard representation for media details, transport addresses, and session description metadata. This representation is independent of the method the information is transported. The SDP Codec subsystem enables its clients the SDP Codec API do the following:

    • encode SDP descriptions into an internal form

    • decode the descriptions from an internal form

    • set and get the SDP field values

    Architectural Relationships

    The calls to the SDP Codec API are synchronous. The SDP Codec API does not require capabilities and it cannot be extended.

    SDP Codec API class structure

    The client uses some or all the SDP Codec API classes during the handling of a SDP description. The interface classes are derived from CBase. The client has a 'use' relationship with the SDP Codec API library.

    The following illustration shows the SDP Codec API class structure.

    Memory used

    The amount of memory used by every header object of the SDP Codec API is equivalent to the memory used by the header as text.

    See also
    • Multiparty Multimedia Session Control (mmusic)

    • Real Time Streaming Protocol (RTSP)

    • Integration of Resource Management and Session Initiation Protocol (SIP)

    • Grouping of Media Lines in the Session Description Protocol (SDP)

    • An Offer/Answer Model with the Session Description Protocol (SDP)

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-97C0A5B1-99AE-5F71-9092-A6976E54AEA7.dita --- a/Symbian3/PDK/Source/GUID-97C0A5B1-99AE-5F71-9092-A6976E54AEA7.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,57 +0,0 @@ - - - - - -How -to initialise STRUCT RESOURCE members -

    <struct-initialiser> -

    -

    struct-initialiser ::= -

    -

    <struct-name> { <struct-initialiser-item-list> } <struct-initialiser-item> -

    -

    struct-initialiser-item ::= -

    -

    <member-name> = <initialiser> ;

    -

    To initialise a member of STRUCT type, give the struct-name with -which you wish to initialise it, and then specify each member of that struct -which you wish to initialise.

    -

    The member-names listed must be members of the struct-name struct. -Each initialise must be of a type compatible with the member -it is initialising.

    -

    Example

    -

    Given the previously defined struct types,

    -STRUCT STRINGCOUNT - { - BUF message; - WORD num; - } -STRUCT SAMPLE - { - WORD anynumber; - STRUCT text; // should be a STRINGCOUNT - } -

    the following example shows how to define the struct within a resource:

    -RESOURCE SAMPLE show_how - { - anynumber=10; - text=STRINGCOUNT - { - message="Hello" - num=5; - }; - } -

    Type safety

    -

    The compiler does not enforce type safety. Any struct can be used to initialise -a member declared to be of struct type. Usually, however, the designer of -the struct will have intended only one or a limited number of structs ever -be used to initialise a member. You should ensure that you initialise struct -members with the intended struct type.

    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-97C9A782-A7DE-480B-9DE0-97B213AAEDD0.dita --- a/Symbian3/PDK/Source/GUID-97C9A782-A7DE-480B-9DE0-97B213AAEDD0.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-97C9A782-A7DE-480B-9DE0-97B213AAEDD0.dita Fri Jul 16 17:23:46 2010 +0100 @@ -23,12 +23,12 @@ and “Enter PIN code”, and is always aligned close to input field.

    Example of alpha-numeric input mode in portrait and landscape. - +

    If only number entry is enabled, the Query input displays number buttons.

    Example of numeric input mode in portrait and landscape. - +

    In other data queries, the touch input is opened with touch down and release to the editor. In query input, the input is instantly available for immediate diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-97F216EE-B7EA-4A8A-A038-83E1548AE254.dita --- a/Symbian3/PDK/Source/GUID-97F216EE-B7EA-4A8A-A038-83E1548AE254.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-97F216EE-B7EA-4A8A-A038-83E1548AE254.dita Fri Jul 16 17:23:46 2010 +0100 @@ -19,6 +19,6 @@ stretching OFF) and 1 (list stretching ON).

    Example image of list stretch - + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-97F4C412-5831-5735-9209-D81B4634D4F3_d0e450086_href.png Binary file Symbian3/PDK/Source/GUID-97F4C412-5831-5735-9209-D81B4634D4F3_d0e450086_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-97F4C412-5831-5735-9209-D81B4634D4F3_d0e455931_href.png Binary file Symbian3/PDK/Source/GUID-97F4C412-5831-5735-9209-D81B4634D4F3_d0e455931_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-983C5DB9-85EF-541E-B494-19E3E617914A.dita --- a/Symbian3/PDK/Source/GUID-983C5DB9-85EF-541E-B494-19E3E617914A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-983C5DB9-85EF-541E-B494-19E3E617914A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -24,7 +24,7 @@

    The following diagram shows the idea:

    Embedded store within stream - +

    An embedded store can contain an arbitrarily complex network of streams. As well as being easy to delete, this stream network can also be copied by diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-983F0ABD-470C-51C3-B6AE-1B1AA55AB4A2.dita --- a/Symbian3/PDK/Source/GUID-983F0ABD-470C-51C3-B6AE-1B1AA55AB4A2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-983F0ABD-470C-51C3-B6AE-1B1AA55AB4A2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -30,7 +30,7 @@ from a file system to the media sub-system, as shown below:

    File server extension architecture - +

    All calls to the media sub-system from a mounted file system go through a "proxy" drive interface provided by the loaded extension (or extensions), diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-984C2A0D-36BE-5A99-9D65-3F8791C669FF.dita --- a/Symbian3/PDK/Source/GUID-984C2A0D-36BE-5A99-9D65-3F8791C669FF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-984C2A0D-36BE-5A99-9D65-3F8791C669FF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -34,7 +34,7 @@ in a kernel extension, and the Variant DLL implements the code that is specific to the phone type.

    - +

    In the Base Porting Guide, we refer to the ASSP layer and the Variant Layer, where the ASSP layer contains the source code tailored to a range of different diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-98EA7E2B-4AC6-55AE-985F-B5EE1E0A79E7.dita --- a/Symbian3/PDK/Source/GUID-98EA7E2B-4AC6-55AE-985F-B5EE1E0A79E7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-98EA7E2B-4AC6-55AE-985F-B5EE1E0A79E7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -36,7 +36,7 @@ factory class must derive from CWsPlugin and MWsRenderStageFactory, as shown in the following diagram.

    Render stage factory class diagram - +

    CWsPlugin is a thin wrapper around the Symbian ECom functionality.

    The render stage itself

    For each render stage plug-in, you must create a concrete render stage class that derives diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9901F6E2-0D36-59D6-A32A-D666C4F2DAAF_d0e107159_href.png Binary file Symbian3/PDK/Source/GUID-9901F6E2-0D36-59D6-A32A-D666C4F2DAAF_d0e107159_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9901F6E2-0D36-59D6-A32A-D666C4F2DAAF_d0e109602_href.png Binary file Symbian3/PDK/Source/GUID-9901F6E2-0D36-59D6-A32A-D666C4F2DAAF_d0e109602_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-993629CB-17B4-5E87-8DE1-06A4AC473FDD.dita --- a/Symbian3/PDK/Source/GUID-993629CB-17B4-5E87-8DE1-06A4AC473FDD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-993629CB-17B4-5E87-8DE1-06A4AC473FDD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> RTP overview

    Purpose

    The Multimedia Protocols RTP (Real-Time Transport Protocol) component provides RTP communication services. This overview shows the usage of the RTP/RTCP protocol as defined in RFC 3550.

    Required background

    The clients that make use of this API need to be familiar with RFC 3550 standard.

    Key concepts

    The component has the following key concepts:

    RTP

    RTP provides end-to-end network transport services for data with real-time characteristics, such as interactive audio and video. It is built on top of the User Datagram Protocol (UDP).

    RTP contains two closely linked parts:

    • RTP: Real-Time Transport Protocol to carry data that has real-time properties.

    • RTCP: RTP Control Protocol to provide feedback on the quality of service being provided by RTP.

    RTCP

    RTP Control Protocol used to provide feedback on the quality of service being provided by RTP. RTP and RTCP support transmission of the data and the control packets.

    Architectural Relationship

    The RTP component of MM-protocols uses the following:

    • Comms-infras ESOCK 

    • Networking INSOCK

    API summary

    The following are some of the main classes used for RTP communication.

    Class Name Description

    RRtpSession

    A handle to an RTP session that abstracts all RTP information going to and from an RTP socket, and its corresponding RTCP data.

    RRtpPacket

    A handle to an RTP packet used to access the packet through the interface provided by this handle.

    RRtpSendPacket

    Derived from RRtpPacket and used as a handle to an RTP send packet.

    RRtpReceivePacket

    Derived from RRtpPacket and used as a handle to an RTP receive packet.

    RRtpReceiveSource

    A handle to a receive stream. An object of this type represents the stream of data on a single SSRC and delivers the RTP packets and RTCP information in the order they arrive.

    RRtpSendSource

    A handle to a send stream, used to manage the creation and sending of packets.

    The following diagram shows the RTP classes and their relationships.

    Class diagram for RTP classes -
    Typical uses

    Any application requiring RTP as its transport protocol should use this API. RTP provides the following key services:

    • Payload-type identification

    • Sequence numbering

    • Time stamping

    • Delivery monitoring

    The RTP API allows you to perform the following tasks:

    1. Creating and Managing an RTP session

    2. Registering for and handling events

    3. Accessing an RTP packet

    4. Creating a send stream

    5. Sending an RTP packet

    6. Creating receive stream

    7. Sending and receiving non RTP-data

    8. Managing RTCP packets and reports

    9. Managing send and receive reports

    10. Securing RTP with SRTP

    Note: Before using any of these services, a connection to the socket server must have been made and the socket must be open.

    See also

    RTPExample: RTP packet streaming

    \ No newline at end of file +
    Typical uses

    Any application requiring RTP as its transport protocol should use this API. RTP provides the following key services:

    • Payload-type identification

    • Sequence numbering

    • Time stamping

    • Delivery monitoring

    The RTP API allows you to perform the following tasks:

    1. Creating and Managing an RTP session

    2. Registering for and handling events

    3. Accessing an RTP packet

    4. Creating a send stream

    5. Sending an RTP packet

    6. Creating receive stream

    7. Sending and receiving non RTP-data

    8. Managing RTCP packets and reports

    9. Managing send and receive reports

    10. Securing RTP with SRTP

    Note: Before using any of these services, a connection to the socket server must have been made and the socket must be open.

    See also

    RTPExample: RTP packet streaming

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-993A732B-13F8-48B6-B0C5-7246FA6828DF.dita --- a/Symbian3/PDK/Source/GUID-993A732B-13F8-48B6-B0C5-7246FA6828DF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-993A732B-13F8-48B6-B0C5-7246FA6828DF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,7 +17,7 @@ in the figure below.

    Toolbar API class structure - +

    CAknToolbar is the API main class that provides the most of the API functionality. The UI framework classes CEikAppUiFactory, CAknView, diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9955D228-75CE-45B3-9714-AF635D04E553_d0e84573_href.png Binary file Symbian3/PDK/Source/GUID-9955D228-75CE-45B3-9714-AF635D04E553_d0e84573_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9955D228-75CE-45B3-9714-AF635D04E553_d0e88771_href.png Binary file Symbian3/PDK/Source/GUID-9955D228-75CE-45B3-9714-AF635D04E553_d0e88771_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9971A0B9-B2D7-59D3-8834-FDDEEC57AC67.dita --- a/Symbian3/PDK/Source/GUID-9971A0B9-B2D7-59D3-8834-FDDEEC57AC67.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9971A0B9-B2D7-59D3-8834-FDDEEC57AC67.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -How to use the SIP Profile API

    Protocols

    This section provides the information about the protocol and error handling related to the SIP Profile API:

    • When you create a CSIPProfileRegistry object, the client connects to the shared SIP Profile server. Note: If the server is not running, it is started by the API implementation.

      When the CSIPProfileRegistry object is deleted, the corresponding connection to the server is closed. The server stops if it has no other users.

    • The profile data is transferred from the server to the client when a user retrieves a CSIPProfile object through CSIPProfileRegistry.

      When the client holds an instance of CSIPProfile in its memory, all events related to the corresponding profile use MSIPProfileRegistryObserver callback functions to notify the client. The callback functions are implemented by the client.

      Note: A CSIPProfile object is created each time a profile is retrieved.

    • When the client deletes the CSIPProfile object, the client is not notified about events.

    • The profile must be active before a CSIPProfile object is used by the SIP Client API. Use the MSIPRegistrationContext::IsContextActive() function to check. A profile becomes active when it is enabled by the client and the state of the profile is ERegistered. ERegistered is an enum value of the TSIPProfileState enum defined in the class CSIPProfileAgent.

    • All profiles are automatically registered when they are enabled. If a profile is not registered before being enabled, the registration status change is acknowledged through MSIPProfileRegistryObserver. If the enabled profile is already registered, no additional registration or status change events are sent.

    • When a profile is enabled and registered, the client can use it and the SIP Client API to create SIP sessions. An enabled profile cannot be removed from the system while it is used by the client.

    • When a profile is not needed by the client, it is disabled. When you delete an instance of the profile the profile is disabled.

    The following illustration shows use of the SIP Profile API.

    Error handling

    The errors are indicated by return codes, by functions leaving, or by calling callback functions. If an error occurs during a synchronous operation initiated by the client, the called function leaves with a correct error code.

    If an error occurs during an asynchronous operation, the error is passed to the client through the callback function MSIPProfileRegistryObserver::ProfileRegistryErrorOccurred(). In this case, both the profile identifier and an error code are passed to the client. Any error passed to the client means that the indicated profile is not registered or enabled by the client.

    \ No newline at end of file +How to use the SIP Profile API
    Protocols

    This section provides the information about the protocol and error handling related to the SIP Profile API:

    • When you create a CSIPProfileRegistry object, the client connects to the shared SIP Profile server. Note: If the server is not running, it is started by the API implementation.

      When the CSIPProfileRegistry object is deleted, the corresponding connection to the server is closed. The server stops if it has no other users.

    • The profile data is transferred from the server to the client when a user retrieves a CSIPProfile object through CSIPProfileRegistry.

      When the client holds an instance of CSIPProfile in its memory, all events related to the corresponding profile use MSIPProfileRegistryObserver callback functions to notify the client. The callback functions are implemented by the client.

      Note: A CSIPProfile object is created each time a profile is retrieved.

    • When the client deletes the CSIPProfile object, the client is not notified about events.

    • The profile must be active before a CSIPProfile object is used by the SIP Client API. Use the MSIPRegistrationContext::IsContextActive() function to check. A profile becomes active when it is enabled by the client and the state of the profile is ERegistered. ERegistered is an enum value of the TSIPProfileState enum defined in the class CSIPProfileAgent.

    • All profiles are automatically registered when they are enabled. If a profile is not registered before being enabled, the registration status change is acknowledged through MSIPProfileRegistryObserver. If the enabled profile is already registered, no additional registration or status change events are sent.

    • When a profile is enabled and registered, the client can use it and the SIP Client API to create SIP sessions. An enabled profile cannot be removed from the system while it is used by the client.

    • When a profile is not needed by the client, it is disabled. When you delete an instance of the profile the profile is disabled.

    The following illustration shows use of the SIP Profile API.

    Error handling

    The errors are indicated by return codes, by functions leaving, or by calling callback functions. If an error occurs during a synchronous operation initiated by the client, the called function leaves with a correct error code.

    If an error occurs during an asynchronous operation, the error is passed to the client through the callback function MSIPProfileRegistryObserver::ProfileRegistryErrorOccurred(). In this case, both the profile identifier and an error code are passed to the client. Any error passed to the client means that the indicated profile is not registered or enabled by the client.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9993D750-9116-55B2-812A-7A92C50F467F.dita --- a/Symbian3/PDK/Source/GUID-9993D750-9116-55B2-812A-7A92C50F467F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9993D750-9116-55B2-812A-7A92C50F467F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -62,7 +62,7 @@

    The following diagram illustrates the recognition of an OMA file with JPEG content.

    Apparc Recognizer for CAF - +
    Application registration files

    To use CAF content, applications must update their registration resource files (for example AppName_reg.rss) diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-99AC84AE-C4C0-53AA-8984-51AE84EE7651.dita --- a/Symbian3/PDK/Source/GUID-99AC84AE-C4C0-53AA-8984-51AE84EE7651.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-99AC84AE-C4C0-53AA-8984-51AE84EE7651.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,7 +20,7 @@ of available converters. If there is a converter that can do the conversion, then the framework assigns the request to that converter.

    The following diagram shows the File converter framework architecture.

    - +
    API summary diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-99C2E42F-1029-5E32-8446-CAAF29D733BA_d0e341803_href.png Binary file Symbian3/PDK/Source/GUID-99C2E42F-1029-5E32-8446-CAAF29D733BA_d0e341803_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-99C2E42F-1029-5E32-8446-CAAF29D733BA_d0e347754_href.png Binary file Symbian3/PDK/Source/GUID-99C2E42F-1029-5E32-8446-CAAF29D733BA_d0e347754_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-99C4FCCC-9E8B-51CC-85F8-F03BE18DF19E_d0e305215_href.png Binary file Symbian3/PDK/Source/GUID-99C4FCCC-9E8B-51CC-85F8-F03BE18DF19E_d0e305215_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-99C4FCCC-9E8B-51CC-85F8-F03BE18DF19E_d0e311207_href.png Binary file Symbian3/PDK/Source/GUID-99C4FCCC-9E8B-51CC-85F8-F03BE18DF19E_d0e311207_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-99CFB57F-87FB-5DF6-B8A3-DD8094FA5419_d0e230278_href.png Binary file Symbian3/PDK/Source/GUID-99CFB57F-87FB-5DF6-B8A3-DD8094FA5419_d0e230278_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-99CFB57F-87FB-5DF6-B8A3-DD8094FA5419_d0e236273_href.png Binary file Symbian3/PDK/Source/GUID-99CFB57F-87FB-5DF6-B8A3-DD8094FA5419_d0e236273_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-99F7E70F-2733-57B2-94F5-A0C0FF9219FE_d0e377954_href.png Binary file Symbian3/PDK/Source/GUID-99F7E70F-2733-57B2-94F5-A0C0FF9219FE_d0e377954_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-99F7E70F-2733-57B2-94F5-A0C0FF9219FE_d0e383807_href.png Binary file Symbian3/PDK/Source/GUID-99F7E70F-2733-57B2-94F5-A0C0FF9219FE_d0e383807_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9A38894D-98B8-5AFA-A36A-AC8B494EC2CC.dita --- a/Symbian3/PDK/Source/GUID-9A38894D-98B8-5AFA-A36A-AC8B494EC2CC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9A38894D-98B8-5AFA-A36A-AC8B494EC2CC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -19,7 +19,7 @@ gamma function on the input value

  • prints the output.

  • -
    Download

    Click on the following link to download the example: libmexample.zip

    Click: browse to view the example code.

    +
    Download

    Click on the following link to download the example: libmexample.zip

    Click: browse to view the example code.

    Class summary

    The example shows the use of the following API:

    • gamma(double) from the Standard C Maths support library (libm.dll).

    • @@ -33,8 +33,7 @@ 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:

      bldmake bldfiles

      abld -build

      How to use bldmake and How to -use abld describe how to use the SBSv1 build tools.

      +build

    • For the emulator, the example builds an executable called libmexample.exe in the epoc32\release\winscw\<udeb or urel>\ folder.

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9A4543B3-2A79-5604-AE11-5087507C6755_d0e363939_href.png Binary file Symbian3/PDK/Source/GUID-9A4543B3-2A79-5604-AE11-5087507C6755_d0e363939_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9A4543B3-2A79-5604-AE11-5087507C6755_d0e369788_href.png Binary file Symbian3/PDK/Source/GUID-9A4543B3-2A79-5604-AE11-5087507C6755_d0e369788_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9A9654C4-4D7F-485E-8253-B2DB25D3DB78.dita --- a/Symbian3/PDK/Source/GUID-9A9654C4-4D7F-485E-8253-B2DB25D3DB78.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9A9654C4-4D7F-485E-8253-B2DB25D3DB78.dita Fri Jul 16 17:23:46 2010 +0100 @@ -13,8 +13,8 @@

    This tutorial describes how a device creator creates a user-defined time zone using CTzUserData.

    The high-level steps to create a user-defined time zone are described in Procedure section:
    - -Create the + +Create the TZ rules object using CTzRules::NewL(). Use the CTzUserNames::NewL() function to create a TZ names object. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9AA59C73-6603-5709-9392-68688785DAA0_d0e401582_href.png Binary file Symbian3/PDK/Source/GUID-9AA59C73-6603-5709-9392-68688785DAA0_d0e401582_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9AA59C73-6603-5709-9392-68688785DAA0_d0e407435_href.png Binary file Symbian3/PDK/Source/GUID-9AA59C73-6603-5709-9392-68688785DAA0_d0e407435_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9AB5481B-C321-56C9-937D-2397AA80DE8E_d0e512201_href.jpg Binary file Symbian3/PDK/Source/GUID-9AB5481B-C321-56C9-937D-2397AA80DE8E_d0e512201_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9AB5481B-C321-56C9-937D-2397AA80DE8E_d0e519663_href.jpg Binary file Symbian3/PDK/Source/GUID-9AB5481B-C321-56C9-937D-2397AA80DE8E_d0e519663_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9AC6774A-41E9-5298-8696-0A317A09E1E9.dita --- a/Symbian3/PDK/Source/GUID-9AC6774A-41E9-5298-8696-0A317A09E1E9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9AC6774A-41E9-5298-8696-0A317A09E1E9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -28,7 +28,7 @@ and also with the Symbian platform:

    The Librt library interacting with P.I.P.S. and the Symbian platform - +
    APIs

    The following table is a comprehensive list of Librt APIs as per the LSB 3.1 specification:

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9AD75103-CD56-5279-B639-5CA2BBF979B5.dita --- a/Symbian3/PDK/Source/GUID-9AD75103-CD56-5279-B639-5CA2BBF979B5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9AD75103-CD56-5279-B639-5CA2BBF979B5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -35,7 +35,7 @@ the other buttons.

    Driver communicates pointer state changes to the Window Server - +

    For a complete list of pointer states, the events that can be sent by the driver, and the associated events that the Window Server sends to the client, see the Pointer @@ -70,7 +70,7 @@ the closeness of the pointer to the screen. Down is extended with substates describing pressing.

    Extension of Up and Down states with substates - +

    The Window Server generates the following events for changes of closeness and pressing:

    • EExitCloseProximity

    • @@ -281,7 +281,7 @@ transitions that are described in the table above.

      Events sent from Window Server to client while the pointer traverses the full cycle of states. - + Advanced diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9AE254D4-AA60-579E-8D9D-F2797106A413.dita --- a/Symbian3/PDK/Source/GUID-9AE254D4-AA60-579E-8D9D-F2797106A413.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9AE254D4-AA60-579E-8D9D-F2797106A413.dita Fri Jul 16 17:23:46 2010 +0100 @@ -99,7 +99,7 @@ the HAL group/function-id pair are used internally, and can only be accessed using the kernel side function Kern::HalFunction() **.

      The following picture shows the general idea:

      - +

      **Technically, the user side function UserSvr::HalFunction() will achieve the same thing, but this is internal to Symbian and is not intended for general use.

      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9B123F74-DD52-5975-8DD7-80304A1D1D63_d0e459066_href.png Binary file Symbian3/PDK/Source/GUID-9B123F74-DD52-5975-8DD7-80304A1D1D63_d0e459066_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9B123F74-DD52-5975-8DD7-80304A1D1D63_d0e464911_href.png Binary file Symbian3/PDK/Source/GUID-9B123F74-DD52-5975-8DD7-80304A1D1D63_d0e464911_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9B2E8332-380E-4C7C-80BE-A858A8EE62C2-master.jpg Binary file Symbian3/PDK/Source/GUID-9B2E8332-380E-4C7C-80BE-A858A8EE62C2-master.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9B2E8332-380E-4C7C-80BE-A858A8EE62C2_d0e42446_href.jpg Binary file Symbian3/PDK/Source/GUID-9B2E8332-380E-4C7C-80BE-A858A8EE62C2_d0e42446_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9B7BF729-7982-5DFC-AD3C-10D327CA2909.dita --- a/Symbian3/PDK/Source/GUID-9B7BF729-7982-5DFC-AD3C-10D327CA2909.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ - - - - - -CapSearch -report - file format -
      Overview

      Once you have searched for a capability, -or set of capabilities, the results are displayed in an HTML report.

      Introductory -section

      This section shows all the files and criteria that were -used in the capability search, as listed below:

        -
      • Name of ROM log file

      • -
      • Symbian Capability List

      • -
      • Search scope

      • -
      • Search criteria

      • -
      • Capabilities to be searched.

      • -

      Results section

      The results are listed as shown below, -under a heading called "Binaries in ROM Log with Matching Capabilities":

    - - - -

    No.

    -

    Binary

    -

    Capabilities

    -
    - -

    1

    -

    myAPP.exe

    -

    Cap1

    Cap2

    Cap3

    Cap4

    Cap5

    -
    - - -
    - -How to use -CapSearch -CapCheck -Guide -CapImportCheck -Guide - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9B97E076-22CB-434A-B16A-E4CE3A859F05-master.jpg Binary file Symbian3/PDK/Source/GUID-9B97E076-22CB-434A-B16A-E4CE3A859F05-master.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9B97E076-22CB-434A-B16A-E4CE3A859F05_d0e41292_href.jpg Binary file Symbian3/PDK/Source/GUID-9B97E076-22CB-434A-B16A-E4CE3A859F05_d0e41292_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9BA295BC-627C-5B82-B669-F4F7B55E3F82_d0e447637_href.png Binary file Symbian3/PDK/Source/GUID-9BA295BC-627C-5B82-B669-F4F7B55E3F82_d0e447637_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9BA295BC-627C-5B82-B669-F4F7B55E3F82_d0e447746_href.png Binary file Symbian3/PDK/Source/GUID-9BA295BC-627C-5B82-B669-F4F7B55E3F82_d0e447746_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9BA295BC-627C-5B82-B669-F4F7B55E3F82_d0e453482_href.png Binary file Symbian3/PDK/Source/GUID-9BA295BC-627C-5B82-B669-F4F7B55E3F82_d0e453482_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9BA295BC-627C-5B82-B669-F4F7B55E3F82_d0e453591_href.png Binary file Symbian3/PDK/Source/GUID-9BA295BC-627C-5B82-B669-F4F7B55E3F82_d0e453591_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9BB4A44E-6870-5A25-8EA8-0B0F1565213F.dita --- a/Symbian3/PDK/Source/GUID-9BB4A44E-6870-5A25-8EA8-0B0F1565213F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9BB4A44E-6870-5A25-8EA8-0B0F1565213F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -55,7 +55,7 @@ #endif // SYMBIAN_EXCLUDE_LOCATION #endif // __LBS_GPS_AGPS_ADAPTATION_PSY_IBY__ -

    The macros are used to copy one of three different ECom resource file to the ECom registry. The file that is copied can specify that the DLL contains two PSY implementations for A-GPS and autonomous GPS, or only one implementation for either A-GPS or autonomous GPS.

    The files 102869C7.cre and 10285abc.cre are Central Repository initialisation files that define the values specified by the Positioning Plug-in Information API to register the PSY implementations with the LBS subsystem. File 102869C7.cre contains values for the GPS PSY implementation. File 10285abc.cre contains values for the A-GPS PSY implementation. See Updating the GPS/A-GPS Central Repository Initialisation File for an explanation of values you may have to change in these files.

  • To install and configure the GPS/A-GPS PSY to support assisted GPS

    Use the macro SYMBIAN_INCLUDE_LOCATION_AGPS_PM when you build the ROM.

    The example below shows how to configure the GPS/A-GPS PSY for assisted GPS. Note that you may need to specify additional macros depending on which other optional LBS components you also want to install.

    +

    The macros are used to copy one of three different ECom resource file to the ECom registry. The file that is copied can specify that the DLL contains two PSY implementations for A-GPS and autonomous GPS, or only one implementation for either A-GPS or autonomous GPS.

    The files 102869C7.cre and 10285abc.cre are Central Repository initialisation files that define the values specified by the Positioning Plug-in Information API to register the PSY implementations with the LBS subsystem. File 102869C7.cre contains values for the GPS PSY implementation. File 10285abc.cre contains values for the A-GPS PSY implementation. See Updating the GPS/A-GPS Central Repository Initialisation File for an explanation of values you may have to change in these files.

  • To install and configure the GPS/A-GPS PSY to support assisted GPS

    Use the macro SYMBIAN_INCLUDE_LOCATION_AGPS_PM when you build the ROM.

    The example below shows how to configure the GPS/A-GPS PSY for assisted GPS. Note that you may need to specify additional macros depending on which other optional LBS components you also want to install.

    buildrom lbs.oby -DSYMBIAN_INCLUDE_LOCATION_API_VARIANT2 -DSYMBIAN_INCLUDE_LOCATION_AGPS_PM @@ -67,6 +67,6 @@ START RESOURCE ../data/10285abb.rss TARGETPATH /resource/plugins TARGET lbsgpsagpspsy.rsc -

    These commands compile and copy the ECom registration information from the resource source file 10285abb.rss, which specifies both the A-GPS and GPS implementations in the library. Therefore on an emulator, the GPS/A-GPS PSY can be used for both A-GPS and autonomous GPS position fixes.

  • GPS/A-GPS PSY Overview Positioning Plug-in Information API LBS ROM +

    These commands compile and copy the ECom registration information from the resource source file 10285abb.rss, which specifies both the A-GPS and GPS implementations in the library. Therefore on an emulator, the GPS/A-GPS PSY can be used for both A-GPS and autonomous GPS position fixes.

    GPS/A-GPS PSY Overview Positioning Plug-in Information API LBS ROM macros LBS Integration and Configuration guide \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9BB849A2-8F69-580D-8A52-C7002D919521.dita --- a/Symbian3/PDK/Source/GUID-9BB849A2-8F69-580D-8A52-C7002D919521.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9BB849A2-8F69-580D-8A52-C7002D919521.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Email Overview

    The Email collection provides support for sending and receiving emails using the individual email protocols, such as IMAP4, POP3 and SMTP, and also has support for parsing and generating plain and rich text, MIME and M-HTML format emails.

    Architecture

    The Email collection consists of a set of utilities and MTMs for the POP3, IMAP4 and SMTP messaging protocols.

    Email architecture -
    Autosend

    Autosend is an executable file that is executed by the POP3 and IMAP4 client MTMs if the send on next connection setting is set. This executable makes a request to the SMTP server MTM to send messages associated with the SMTP service related to the POP3 or IMAP4 service, wait for the operation to finish and then exit.

    Server MTM

    A Server MTM provides specific message type storage and transport. It interacts with the Message Server to store and manage entries and provide a transport mechanism.

    Email client MTMs

    Email client MTMs provide client-side APIs (IMCM DLL) for IMAP4, POP3 and SMTP.

    The email client MTMs are used directly by clients to access parts of email messages for display. The CImEmailMessage class provides the functionality used by clients to display email messages, including listing attachments, getting body text and resolving URIs in M-HTML messages.

    Email client utilities

    The email client MTM uses the email client utilities when they are requested to create, reply to and forward messages. The CImEmailOperation class provides the functionality to perform these operations. Each email is represented by a parent message entry with child entries that represent MIME folders and MIME parts. Adding or deleting MIME parts involves navigating the tree of entries and inserting or removing entries as appropriate.

    Email server utilities

    Email server utilities are responsible for generating and parsing of RFC2822 format email messages and providing an API to wrap up a TCP/IP connection to a remote email server.

    Description

    Email messages are represented in a common format whether they are being sent by SMTP and downloaded by POP3 or IMAP4. Messaging clients can use the email client MTMs to create and compose email messages with attachments and a vCard signature. They can reply to or forward email messages. When connecting to a POP3 mailbox, just the header can be downloaded, or the entire message including attachments. However, when connecting to an IMAP4 mailbox, any or all of the following can be downloaded:

    • the header

    • the header and body text

    • the entire message including attachments

    • partial body text where the body text size limit is specified

    • download attachments if the attachment size is less then or equal to attachment size limit

    Messaging clients can access any part of the message for display to the user. Messages can be moved or copied within folders on the local device and, for IMAP4 only, within the mailbox as well.

    Email client MTMs provide APIs that allow configuration information, such as secure or non-secure TCP/IP connection, username, password and message limits to be stored on the local device. Email client MTMs can be commanded to stay online during a client session, or connect and disconnect only when necessary. Operations such as moving, deleting, or sending a message while not connected can be queued for execution when the next connection to the subscriber's mailbox is established.

    Note: Email client MTMs are not responsible for any graphical or user interface associated functionality, such as rendering HTML or images, although they do provide access to images and HTML downloaded to the local device.

    For each email account a pair of services entries is created in the Message Store. For a POP3 account there will be an SMTP service and a POP3 service. For an IMAP4 account there will be an SMTP service and an IMAP4 service. These entries are used to store the settings for the email transport. Each of the service entry has its related ID that is set to the other member of the pair. The SMTP service is invisible, so that the user only sees the POP3 or IMAP4 service entry. Copying a message to the SMTP service causes the SMTP server MTM to attempt to send the message. The POP3 and IMAP4 MTMs provide functionality to synchronise with a remote email server by using the client MTM interface through the InvokeAsync API.

    +
    Autosend

    Autosend is an executable file that is executed by the POP3 and IMAP4 client MTMs if the send on next connection setting is set. This executable makes a request to the SMTP server MTM to send messages associated with the SMTP service related to the POP3 or IMAP4 service, wait for the operation to finish and then exit.

    Server MTM

    A Server MTM provides specific message type storage and transport. It interacts with the Message Server to store and manage entries and provide a transport mechanism.

    Email client MTMs

    Email client MTMs provide client-side APIs (IMCM DLL) for IMAP4, POP3 and SMTP.

    The email client MTMs are used directly by clients to access parts of email messages for display. The CImEmailMessage class provides the functionality used by clients to display email messages, including listing attachments, getting body text and resolving URIs in M-HTML messages.

    Email client utilities

    The email client MTM uses the email client utilities when they are requested to create, reply to and forward messages. The CImEmailOperation class provides the functionality to perform these operations. Each email is represented by a parent message entry with child entries that represent MIME folders and MIME parts. Adding or deleting MIME parts involves navigating the tree of entries and inserting or removing entries as appropriate.

    Email server utilities

    Email server utilities are responsible for generating and parsing of RFC2822 format email messages and providing an API to wrap up a TCP/IP connection to a remote email server.

    Description

    Email messages are represented in a common format whether they are being sent by SMTP and downloaded by POP3 or IMAP4. Messaging clients can use the email client MTMs to create and compose email messages with attachments and a vCard signature. They can reply to or forward email messages. When connecting to a POP3 mailbox, just the header can be downloaded, or the entire message including attachments. However, when connecting to an IMAP4 mailbox, any or all of the following can be downloaded:

    • the header

    • the header and body text

    • the entire message including attachments

    • partial body text where the body text size limit is specified

    • download attachments if the attachment size is less then or equal to attachment size limit

    Messaging clients can access any part of the message for display to the user. Messages can be moved or copied within folders on the local device and, for IMAP4 only, within the mailbox as well.

    Email client MTMs provide APIs that allow configuration information, such as secure or non-secure TCP/IP connection, username, password and message limits to be stored on the local device. Email client MTMs can be commanded to stay online during a client session, or connect and disconnect only when necessary. Operations such as moving, deleting, or sending a message while not connected can be queued for execution when the next connection to the subscriber's mailbox is established.

    Note: Email client MTMs are not responsible for any graphical or user interface associated functionality, such as rendering HTML or images, although they do provide access to images and HTML downloaded to the local device.

    For each email account a pair of services entries is created in the Message Store. For a POP3 account there will be an SMTP service and a POP3 service. For an IMAP4 account there will be an SMTP service and an IMAP4 service. These entries are used to store the settings for the email transport. Each of the service entry has its related ID that is set to the other member of the pair. The SMTP service is invisible, so that the user only sees the POP3 or IMAP4 service entry. Copying a message to the SMTP service causes the SMTP server MTM to attempt to send the message. The POP3 and IMAP4 MTMs provide functionality to synchronise with a remote email server by using the client MTM interface through the InvokeAsync API.

    Email operation sequence diagram -
    Components

    The Email collection constitutes the following components:

    • IMAP4 MTM

    • POP3 MTM

    • SMTP MTM

    Using Email

    Email client applications can use the following functionality provided by the Email collection to:

    • Store emails including MIME headers, RFC2822 headers, attachments, body text and encoding information in the Message Store.

    • Manipulate email messages, for example, adding attachments and replying.

    • Encapsulate the character converters, which are used to convert between standard character sets and Unicode.

    • Store email settings in the central repository.

    • Get progress information for email operations.

    Message Type Module Email Tutorials
    \ No newline at end of file +
    Components

    The Email collection constitutes the following components:

    • IMAP4 MTM

    • POP3 MTM

    • SMTP MTM

    Using Email

    Email client applications can use the following functionality provided by the Email collection to:

    • Store emails including MIME headers, RFC2822 headers, attachments, body text and encoding information in the Message Store.

    • Manipulate email messages, for example, adding attachments and replying.

    • Encapsulate the character converters, which are used to convert between standard character sets and Unicode.

    • Store email settings in the central repository.

    • Get progress information for email operations.

    Message Type Module Email Tutorials \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9BDD42FD-9D05-58D1-896B-AF6E8E5B51FE_d0e448146_href.png Binary file Symbian3/PDK/Source/GUID-9BDD42FD-9D05-58D1-896B-AF6E8E5B51FE_d0e448146_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9BDD42FD-9D05-58D1-896B-AF6E8E5B51FE_d0e453991_href.png Binary file Symbian3/PDK/Source/GUID-9BDD42FD-9D05-58D1-896B-AF6E8E5B51FE_d0e453991_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9BF177DF-9E59-5C30-95BA-70A8250579E0_d0e682448_href.png Binary file Symbian3/PDK/Source/GUID-9BF177DF-9E59-5C30-95BA-70A8250579E0_d0e682448_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9BF177DF-9E59-5C30-95BA-70A8250579E0_d0e695275_href.png Binary file Symbian3/PDK/Source/GUID-9BF177DF-9E59-5C30-95BA-70A8250579E0_d0e695275_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9BFF0271-F5C3-45B6-AD4D-9179107F300A.dita --- a/Symbian3/PDK/Source/GUID-9BFF0271-F5C3-45B6-AD4D-9179107F300A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9BFF0271-F5C3-45B6-AD4D-9179107F300A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,9 +14,9 @@

    OpenCProducerConsumerEx is a hybrid application that depicts solution for producer consumer problem using Open C. This application uses main() as an entry point for the application. It uses libc and libpthread

    -
    Download

    Click +

    Download

    Click on the following link to download the example: opencproducerconsumerex.zip

    Click: browse to view the example code.

    -
    Design and +<section id="GUID-7E7C4564-B10E-41F9-8A9D-D8A6C5E9C51C-GENID-1-12-1-14-1-1-5-1-3-1-11-1-13-1-2-3"><title>Design and Implementation

    The following sections provide information about the implementation of the example.

    Capabilities

    The program capability is defined in: ProducerConsumer.mmp (EXE - @@ -44,7 +44,7 @@ (from pthread)

    console I/O APIs

    File APIs of Symbian platform

    Threading APIs of Symbian platform

    -
    Building and +<section id="GUID-67A72761-1D92-46D1-B1C9-7455978BDE4E-GENID-1-12-1-14-1-1-5-1-3-1-11-1-13-1-2-4"><title>Building and Using To build the OpenCProducerConsumerEx application, go to the OpenCProducerConsumerEx\group directory and build the application. The definition for the whole application can be found in the bld.infin diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9C2421E6-FA53-5E3C-B073-57FB9F3591DD_d0e460022_href.png Binary file Symbian3/PDK/Source/GUID-9C2421E6-FA53-5E3C-B073-57FB9F3591DD_d0e460022_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9C2421E6-FA53-5E3C-B073-57FB9F3591DD_d0e465867_href.png Binary file Symbian3/PDK/Source/GUID-9C2421E6-FA53-5E3C-B073-57FB9F3591DD_d0e465867_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9C269F45-F160-5A4B-ABF8-896D2A538E3B.dita --- a/Symbian3/PDK/Source/GUID-9C269F45-F160-5A4B-ABF8-896D2A538E3B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9C269F45-F160-5A4B-ABF8-896D2A538E3B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,242 +1,197 @@ - - - - -Advanced Pointer Overview -This is an overview of the Window Server extensions that -support the use of advanced pointers. These extensions enable mobile -devices to respond to events from multiple pointers, including their -proximity and pressure. These extensions are available only in ScreenPlay. - - - - -

    Variant: ScreenPlay. Target audience: Application developers.

    -
    Architecture

    In response to multiple pointer movements, an input driver generates -a pointer event for each touch. The Window Server changes and delivers -the pointer events to the client application, as shown in the following -diagram.

    - Pointer events -

    Pointer-related events move from -the driver to the application. The TRawEvent, TWsEvent and TPointerEvent classes encapsulate the event information.

    -
    Key concepts/terms

    The following terms -are introduced here and are used throughout the advanced pointer documentation:

    - -
    Pointer
    -

    A device that points at the screen, for example, a mouse, pen, -finger, or touchpad.

    - -
    Multiple pointer support
    -

    Handling more than one pointer at the same time.

    -
    - -
    Proximity
    -

    Proximity in this context means the distance of the pointer -from the mobile device. Sensors detect the value of the proximity -of the pointer from the mobile device.

    - -
    Pressure
    -

    Pressure in this context is a value that indicates the force -applied to the mobile device by the pointer. Sensors detect the value -of the pressure of the pointer on the mobile device.

    -
    -
    -
    Logical model of pointing devices

    A logical -model is used to handle all of the different pointing devices correctly. -In this logical model, the pointer is performing an action when -any of the following scenarios occur:

      -
    • An EButton1Down event is sent to the client.

    • -
    • EDrag events are sent to the client (optional).

    • -
    • An EButton1Up event is sent to the client.

    • -

    Pointing devices can be in one of the following states:

    - - - -State -Description - - - - -

    Out of range

    -

    Not detected by the device's sensors.

    -
    - -

    Up

    -

    Detected by sensors, coordinates available, not performing -an action.

    -
    - -

    Down

    -

    Detected by sensors, coordinates available, performing an -action (as defined above).

    -
    - - -

    The mapping between these states and physical actions -performed by the user vary for different pointing device types (mouse, -finger) and different phone models. Here are two example interpretations -of physical pointing device states:

      -
    • Mouse. An example interpretation by a driver of the physical state of -a mouse is as follows: It is always in the up state except -when the left button is pressed, when it is in the down state. -It is never out of range.

    • -
    • Fingers -with proximity support. The following is an example interpretation -of finger physical states when the device has proximity support (that -is, it can measure the finger's proximity from the screen):

        -
      • Out of range when proximity > 10cm

      • -
      • Up when -1cm < proximity <= 10cm

      • -
      • Down when proximity <= 1cm

      • -

      In this way the finger can perform actions (for example, -press buttons, drag items) without touching the screen.

    • -
    -
    Multiple pointers

    The system handles multiple -pointers at the same time by identifying each one with a number and -sending pointer events separately for each of them. A field (iPointerNumber) in the pointer event classes (TRawEvent and the TAdvancedPointerEvent class which extends TPointerEvent) identifies the pointer for which the event occurred. The -order and frequency of pointer events depends on the driver of the -pointing device.

    On each phone there is a pool of available -pointer numbers, ranging from 0 to HALData::EPointerNumberOfPointers - 1. Every time the driver detects a new pointer coming into the -range of the device, the driver assigns a number from the pool. After -the pointer goes out of the range of the device, the number no longer -identifies that particular pointer and the driver sends TRawEvent::EPointer3DOutOfRange with this -pointer number. The number is then released back to the pool and may -be reused to identify another pointer coming into the device's range.

    -
    Pressure and proximity

    The pressure of -the pointer on the screen is represented as a positive integer. The -proximity of the pointer to the screen is represented as a negative -integer. It is up to the UI Platform to define units of pressure and -proximity, which may be non-linear. In the TRawEvent class, pressure and proximity are expressed in terms of the -Z coordinate of the pointer. The definition of the Z coordinate is -based on the assumption that the pointer is either hovering over the -screen (proximity < 0, pressure = 0) or touching the screen (proximity -= 0, pressure >= 0):

      -
    • If proximity -< 0 and pressure = 0 then the Z coordinate = proximity.

    • -
    • If proximity -= 0 and pressure >= 0 then the Z coordinate = pressure.

    • -
    - Relationships between the pointer proximity, -pressure and z coordinate -
    -
    API summary - - - -API -Description - - - - -

    HALData

    -

    Includes z coordinate, pressure precision and number of -pointers. Also contains threshold values for proximity and pressure.

    -
    - -

    TRawEvent

    -

    Includes the pointer number and a structure for proximity -and pressure data.

    -
    - -

    RWindowBase

    -

    Enables advanced pointer events for the window.

    -
    - -

    TWsEvent

    -

    Supports TAdvancedPointerEvent (derived -from TPointerEvent).

    -
    - -

    TPointerEvent

    -

    Includes event types for pressing and closeness.

    -
    - -

    TAdvancedPointerEvent

    -

    Inherits from TPointerEvent.

    Provides -capabilities for pressure, proximity and multiple pointers.

    -
    - -

    RWsSession

    -

    Provides get and set methods to manipulate threshold values -for proximity and pressure.

    -
    - - -
    -
    Typical uses
      -
    • Enabling -many pointers for a window

      Enables multiple pointers -to act on one window.

    • -
    • Enabling -concurrent control of many objects

      Controls many objects -on one or more windows with many pointers.

    • -
    • Getting -z coordinates from TPointerEvent

      Reads the pressure and -proximity values for a pointer.

    • -
    • Pinch zooming

      Enables the user to zoom in and out of data by using two -fingers to pinch an area of the screen. Pinch zooming is normally -used in web-page, map, picture, chart and control applications.

    • -
    • Responding -to high pressure events

      As the pointer state changes, -the pressure value can be checked. When it passes over a threshold -value, the Window Server responds appropriately to the client.

    • -
    -
    - -Pointer States and Event Communication - -Advanced Pointer Tutorial - -
    - + + + + + +Advanced Pointer Overview This is an overview of the Window Server extensions that +support the use of advanced pointers. These extensions enable mobile +devices to respond to events from multiple pointers, including their +proximity and pressure. These extensions are available only in ScreenPlay. +

    Variant: ScreenPlay. Target audience: Application developers.

    +
    Architecture

    In response to multiple pointer movements, an input driver generates +a pointer event for each touch. The Window Server changes and delivers +the pointer events to the client application, as shown in the following +diagram.

    + Pointer events + +

    Pointer-related events move from the driver to the application. +The TRawEvent, TWsEvent and TPointerEvent classes encapsulate the event information.

    +
    Key concepts/terms

    The following terms +are introduced here and are used throughout the advanced pointer documentation:

    + +
    Pointer
    +

    A device that points at the screen, for example, a mouse, pen, +finger, or touchpad.

    +
    + +
    Multiple pointer support
    +

    Handling more than one pointer at the same time.

    +
    + +
    Proximity
    +

    Proximity in this context means the distance of the pointer +from the mobile device. Sensors detect the value of the proximity +of the pointer from the mobile device.

    +
    + +
    Pressure
    +

    Pressure in this context is a value that indicates the force +applied to the mobile device by the pointer. Sensors detect the value +of the pressure of the pointer on the mobile device.

    +
    +
    +
    Logical model of pointing devices

    A logical +model is used to handle all of the different pointing devices correctly. +In this logical model, the pointer is performing an action when +any of the following scenarios occur:

      +
    • An EButton1Down event is sent to the client.

    • +
    • EDrag events are sent to the client (optional).

    • +
    • An EButton1Up event is sent to the client.

    • +

    Pointing devices can be in one of the following states:

    + + + +State +Description + + + + +

    Out of range

    +

    Not detected by the device's sensors.

    +
    + +

    Up

    +

    Detected by sensors, coordinates available, not performing +an action.

    +
    + +

    Down

    +

    Detected by sensors, coordinates available, performing an +action (as defined above).

    +
    + + +

    The mapping between these states and physical actions +performed by the user vary for different pointing device types (mouse, +finger) and different phone models. Here are two example interpretations +of physical pointing device states:

      +
    • Mouse. An example interpretation by a driver of the physical state of +a mouse is as follows: It is always in the up state except +when the left button is pressed, when it is in the down state. +It is never out of range.

    • +
    • Fingers +with proximity support. The following is an example interpretation +of finger physical states when the device has proximity support (that +is, it can measure the finger's proximity from the screen):

        +
      • Out of range when proximity > 10cm

      • +
      • Up when +1cm < proximity <= 10cm

      • +
      • Down when proximity <= 1cm

      • +

      In this way the finger can perform actions (for example, +press buttons, drag items) without touching the screen.

    • +
    +
    Multiple pointers

    The system handles multiple +pointers at the same time by identifying each one with a number and +sending pointer events separately for each of them. A field (iPointerNumber) in the pointer event classes (TRawEvent and the TAdvancedPointerEvent class which extends TPointerEvent) identifies the pointer for which the event +occurred. The order and frequency of pointer events depends on the +driver of the pointing device.

    On each phone there is a pool +of available pointer numbers, ranging from 0 to HALData::EPointerNumberOfPointers - 1. Every time the driver detects a new pointer coming into the +range of the device, the driver assigns a number from the pool. After +the pointer goes out of the range of the device, the number no longer +identifies that particular pointer and the driver sends TRawEvent::EPointer3DOutOfRange with this pointer number. The number is then released back to the +pool and may be reused to identify another pointer coming into the +device's range.

    +
    Pressure and proximity

    The pressure of +the pointer on the screen is represented as a positive integer. The +proximity of the pointer to the screen is represented as a negative +integer. It is up to the UI Platform to define units of pressure and +proximity, which may be non-linear. In the TRawEvent class, pressure and proximity are expressed in terms of the Z coordinate +of the pointer. The definition of the Z coordinate is based on the +assumption that the pointer is either hovering over the screen (proximity +< 0, pressure = 0) or touching the screen (proximity = 0, pressure +>= 0):

      +
    • If proximity +< 0 and pressure = 0 then the Z coordinate = proximity.

    • +
    • If proximity += 0 and pressure >= 0 then the Z coordinate = pressure.

    • +
    + Relationships between the pointer proximity, +pressure and z coordinate + +
    +
    API summary + + + +API +Description + + + + +

    HALData

    +

    Includes z coordinate, pressure precision and number of +pointers. Also contains threshold values for proximity and pressure.

    +
    + +

    TRawEvent

    +

    Includes the pointer number and a structure for proximity +and pressure data.

    +
    + +

    RWindowBase

    +

    Enables advanced pointer events for the window.

    +
    + +

    TWsEvent

    +

    Supports TAdvancedPointerEvent (derived +from TPointerEvent).

    +
    + +

    TPointerEvent

    +

    Includes event types for pressing and closeness.

    +
    + +

    TAdvancedPointerEvent

    +

    Inherits from TPointerEvent.

    Provides +capabilities for pressure, proximity and multiple pointers.

    +
    + +

    RWsSession

    +

    Provides get and set methods to manipulate threshold values +for proximity and pressure.

    +
    + + +
    +
    Typical uses
      +
    • Enabling +many pointers for a window

      Enables multiple pointers +to act on one window.

    • +
    • Enabling +concurrent control of many objects

      Controls many objects +on one or more windows with many pointers.

    • +
    • Getting +z coordinates from TPointerEvent

      Reads the pressure and +proximity values for a pointer.

    • +
    • Pinch zooming

      Enables the user to zoom in and out of data by using two +fingers to pinch an area of the screen. Pinch zooming is normally +used in web-page, map, picture, chart and control applications.

    • +
    • Responding +to high pressure events

      As the pointer state changes, +the pressure value can be checked. When it passes over a threshold +value, the Window Server responds appropriately to the client.

    • +
    +
    +Pointer +States and Event Communication +Advanced +Pointer Tutorial +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9C51D27D-BEDB-59D1-8F0E-8426B8FF2230.dita --- a/Symbian3/PDK/Source/GUID-9C51D27D-BEDB-59D1-8F0E-8426B8FF2230.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9C51D27D-BEDB-59D1-8F0E-8426B8FF2230.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -Descriptors

    Descriptors are the classes that Symbian platform C++ uses to manage strings. They are fundamental to the Symbian platform, and an excellent example of the difference of approach between non-OO and OO designs.

    Overview

    In C, a string such as

    char* hello="hello";

    causes some memory to be set aside containing the six characters 'h', 'e', 'l', 'l', 'o', '\0'. A function such as strlen() works by scanning the bytes starting from the beginning, and counting until it reaches the trailing null character. If you wish to extend the string, you need to know how much memory is allocated to it.

    In Symbian platform C++ however, strings are managed using a family of classes called descriptors. The abstract descriptor classes define common interfaces for all descriptor classes. Buffer, pointer, and heap descriptor classes provide implementations of the abstract descriptor interfaces, and provide different methods of storing the data.

    Abstract descriptors

    We can represent the basic requirements for strings by two abstract classes: TDesC and TDes.

    TDesC is a constant, or non-modifiable, descriptor. It has an address and a length. Using a class like this, you can do any manipulations to a string, provided they do not alter the data. As a consequence, the TDesC class has many non-modifying functions.

    TDes is a modifiable descriptor: it has, in addition, a maximum length. This allows the data to be manipulated, extended or contracted, provided it does not exceed the maximum length. As a consequence, TDes has many modifying functions which allow string manipulation.

    It is a fundamental aspect of descriptors that they do not allow modification to exceed the allocated length. Other classes are provided to allow this, for instance CBufBase and derived classes. If a TDes function causes overflow, a panic will occur.

    Because TDesC and TDes define all the functions needed to access and manipulate string and memory data, many functions take a const TDesC& parameter if they need to access data, or a TDes& parameter if they need to modify it.

    Pointer descriptor

    The abstract descriptor classes have several implementations. The simplest are pointer descriptors.

    TPtrC just has length and address: its representation needs just two machine words. A TPtrC may be set up to describe any existing data. A TPtr adds a maximum length, and so may be used to describe a buffer which is perhaps only partially allocated.

    TPtrC and TPtr are somewhat like C char* pointers. But because the length is contained in the descriptor itself, there is no need to scan for trailing null characters, or to allocate room for them.

    Buffer descriptors

    Buffer descriptors, TBufC and TBuf, contain their data as part of themselves, like char[] arrays in C.

    These descriptor classes exploit C++'s template mechanism, using an integer parameter to specify the length.

    Heap descriptors

    Heap descriptors contain their data in heap cell. These are used when you do not know the length required for a buffer at build time, but decide it at run-time. This is like (char*) malloc(length+1) in C.

    The non-modifiable heap descriptor type, HBufC, is allocated on the heap. They are always referred to through an HBufC*, rather than an HBufC directly:

    The modifiable heap descriptor type, RBuf, can be created on the stack, but contains a pointer to data on the heap. This is similar to a TPtr pointer descriptor, but an RBuf owns the data that it points to, and is responsible for freeing the memory when it is closed. An RBuf object can allocate its own buffer, take ownership of a pre-existing section of allocated memory, or take ownership of a pre-existing heap descriptor.

    RBuf is easier to use than HBufC, so should generally be preferred. RBuf was only introduced in version 8.0, however, so older code and APIs use HBufC.

    Descriptor classes

    The complete descriptor class hierarchy is

    It represents an elegant use of OO. The TBufCBase class is used as an implementation convenience, which is also a frequent OO idiom (though it should be used with caution).

    Versions of the descriptors classes are available that store 16-bit or 8-bit wide items. When using descriptors for strings, you should always use classes such as TDes etc. These classes are typedef ed to use the 16-bit implementations, such as TDes16 etc.

    Because descriptors may contain any data, including nulls, they may also be used to refer to byte data and general buffers. In these contexts, you should use the 8-bit implementations, such as TDes8, directly.

    \ No newline at end of file +Descriptors

    Descriptors are the classes that Symbian platform C++ uses to manage strings. They are fundamental to the Symbian platform, and an excellent example of the difference of approach between non-OO and OO designs.

    Overview

    In C, a string such as

    char* hello="hello";

    causes some memory to be set aside containing the six characters 'h', 'e', 'l', 'l', 'o', '\0'. A function such as strlen() works by scanning the bytes starting from the beginning, and counting until it reaches the trailing null character. If you wish to extend the string, you need to know how much memory is allocated to it.

    In Symbian platform C++ however, strings are managed using a family of classes called descriptors. The abstract descriptor classes define common interfaces for all descriptor classes. Buffer, pointer, and heap descriptor classes provide implementations of the abstract descriptor interfaces, and provide different methods of storing the data.

    Abstract descriptors

    We can represent the basic requirements for strings by two abstract classes: TDesC and TDes.

    TDesC is a constant, or non-modifiable, descriptor. It has an address and a length. Using a class like this, you can do any manipulations to a string, provided they do not alter the data. As a consequence, the TDesC class has many non-modifying functions.

    TDes is a modifiable descriptor: it has, in addition, a maximum length. This allows the data to be manipulated, extended or contracted, provided it does not exceed the maximum length. As a consequence, TDes has many modifying functions which allow string manipulation.

    It is a fundamental aspect of descriptors that they do not allow modification to exceed the allocated length. Other classes are provided to allow this, for instance CBufBase and derived classes. If a TDes function causes overflow, a panic will occur.

    Because TDesC and TDes define all the functions needed to access and manipulate string and memory data, many functions take a const TDesC& parameter if they need to access data, or a TDes& parameter if they need to modify it.

    Pointer descriptor

    The abstract descriptor classes have several implementations. The simplest are pointer descriptors.

    TPtrC just has length and address: its representation needs just two machine words. A TPtrC may be set up to describe any existing data. A TPtr adds a maximum length, and so may be used to describe a buffer which is perhaps only partially allocated.

    TPtrC and TPtr are somewhat like C char* pointers. But because the length is contained in the descriptor itself, there is no need to scan for trailing null characters, or to allocate room for them.

    Buffer descriptors

    Buffer descriptors, TBufC and TBuf, contain their data as part of themselves, like char[] arrays in C.

    These descriptor classes exploit C++'s template mechanism, using an integer parameter to specify the length.

    Heap descriptors

    Heap descriptors contain their data in heap cell. These are used when you do not know the length required for a buffer at build time, but decide it at run-time. This is like (char*) malloc(length+1) in C.

    The non-modifiable heap descriptor type, HBufC, is allocated on the heap. They are always referred to through an HBufC*, rather than an HBufC directly:

    The modifiable heap descriptor type, RBuf, can be created on the stack, but contains a pointer to data on the heap. This is similar to a TPtr pointer descriptor, but an RBuf owns the data that it points to, and is responsible for freeing the memory when it is closed. An RBuf object can allocate its own buffer, take ownership of a pre-existing section of allocated memory, or take ownership of a pre-existing heap descriptor.

    RBuf is easier to use than HBufC, so should generally be preferred. RBuf was only introduced in version 8.0, however, so older code and APIs use HBufC.

    Descriptor classes

    The complete descriptor class hierarchy is

    It represents an elegant use of OO. The TBufCBase class is used as an implementation convenience, which is also a frequent OO idiom (though it should be used with caution).

    Versions of the descriptors classes are available that store 16-bit or 8-bit wide items. When using descriptors for strings, you should always use classes such as TDes etc. These classes are typedef ed to use the 16-bit implementations, such as TDes16 etc.

    Because descriptors may contain any data, including nulls, they may also be used to refer to byte data and general buffers. In these contexts, you should use the 8-bit implementations, such as TDes8, directly.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9C54DAFB-843B-41A7-8E54-9B2A39F46527_d0e271538_href.png Binary file Symbian3/PDK/Source/GUID-9C54DAFB-843B-41A7-8E54-9B2A39F46527_d0e271538_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9C54DAFB-843B-41A7-8E54-9B2A39F46527_d0e277538_href.png Binary file Symbian3/PDK/Source/GUID-9C54DAFB-843B-41A7-8E54-9B2A39F46527_d0e277538_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9C57F0C6-E2E3-58A2-907D-924A7E22EA97-GENID-1-15-1-1-5-1-4-1.dita --- a/Symbian3/PDK/Source/GUID-9C57F0C6-E2E3-58A2-907D-924A7E22EA97-GENID-1-15-1-1-5-1-4-1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,94 +0,0 @@ - - - - - -Resource -compiler tool: rcomp -
    Purpose

    The -resource compiler, rcomp, compiles source rss resource -files into a rsc resource data file which can be used -by applications, and a rsg resource header file. The -operation of the resource compiler is usually wrapped in an abld batch -file. That provides the most commonly used rcomp functionality, -but does not provide some of the debugging options available directly through rcomp.

    Note: -From Symbian^4 onwards, rcomp supports long strings and -supplementary characters (not included in code point range of BMP) of the -range 0x10000 to 0x10ffff in rss files.

    -
    Command line syntaxrcomp [—v] [—p] [—l] -[—force] [—u] [—o DataOutputFile] [-{uid2,uid3 }] -[—h HeaderOutputFile] [—s SourceFileName] -[—i BaseInputFileName]

    Arguments

    - - - -

    -v

    -

    verbose output.

    -
    - -

    -p

    -

    parser debugging

    -
    - -

    -l

    -

    Check localisation comments

    -
    - -

    -force

    -

    Emit warnings if the localisation comment tags are not present

    -
    - -

    -u

    -

    generate Unicode resource binary

    -
    - -

    -o DataOutputFile

    -

    Specify full path and name for data output file DataOutputFile. -If this is not specified, no data output file is created.

    -
    - -

    [-{uid2,uid3 }]

    -

    Second and third UIDs for the resource file

    -
    - -

    -h HeaderOutputFile

    -

    Specify header output file HeaderOutputFile; -this is the name only, and does not include the path. If this is not specified, -no header output file is created.

    -
    - -

    -s SourceFileName

    -

    Specify resource compiler source file SourceFileName (output -of pre-processor BaseInputFileName.rpp). If not specified, -or specified as -s-, source is read from the standard input.

    -
    - -

    -i BaseInputFileName

    -

    The file given to the pre-processor

    -
    - - -

    Output files

    - - - -

    DataOutputFile

    -

    The resource data referred to by the application at run-time. Note -that the generated file can have any name. However, before the resource file -can be used it must be renamed to have an extension .rsc.

    -
    - -

    HeaderOutputFile

    -

    The generated header file, which contains #define statements -for each resource defined in the source file.

    -
    - - -
    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9C5A4B75-1A58-568E-AAB4-B44B61586037-master.png Binary file Symbian3/PDK/Source/GUID-9C5A4B75-1A58-568E-AAB4-B44B61586037-master.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9C5A4B75-1A58-568E-AAB4-B44B61586037_d0e744170_href.png Binary file Symbian3/PDK/Source/GUID-9C5A4B75-1A58-568E-AAB4-B44B61586037_d0e744170_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9C82D039-A561-5F29-B9CB-450FAF89F254_d0e462767_href.png Binary file Symbian3/PDK/Source/GUID-9C82D039-A561-5F29-B9CB-450FAF89F254_d0e462767_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9C82D039-A561-5F29-B9CB-450FAF89F254_d0e468612_href.png Binary file Symbian3/PDK/Source/GUID-9C82D039-A561-5F29-B9CB-450FAF89F254_d0e468612_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9C837724-B00E-58F4-8B71-53ECDBFF5CCE_d0e584060_href.png Binary file Symbian3/PDK/Source/GUID-9C837724-B00E-58F4-8B71-53ECDBFF5CCE_d0e584060_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9C837724-B00E-58F4-8B71-53ECDBFF5CCE_d0e611954_href.png Binary file Symbian3/PDK/Source/GUID-9C837724-B00E-58F4-8B71-53ECDBFF5CCE_d0e611954_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9CB23B06-07E9-5927-AB79-D1FC28B42DFE.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-9CB23B06-07E9-5927-AB79-D1FC28B42DFE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Software Installation Framework

    The Software Installation Framework (SIF) provides a uniform point of entry for software management on the phone. This is achieved by providing uniform interfaces for installing, uninstalling and upgrading software components. It does not replace legacy interfaces, such as the native software installer (SWI). However, it enables generic clients to use different installers without implementing new client APIs for each new installer.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9CC514E9-85C2-5F4B-9F3B-F9FA1F4CB20A_d0e381678_href.png Binary file Symbian3/PDK/Source/GUID-9CC514E9-85C2-5F4B-9F3B-F9FA1F4CB20A_d0e381678_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9CC514E9-85C2-5F4B-9F3B-F9FA1F4CB20A_d0e387531_href.png Binary file Symbian3/PDK/Source/GUID-9CC514E9-85C2-5F4B-9F3B-F9FA1F4CB20A_d0e387531_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9CC5E096-74FB-59AB-BAB9-A5486B961B7D_d0e364015_href.png Binary file Symbian3/PDK/Source/GUID-9CC5E096-74FB-59AB-BAB9-A5486B961B7D_d0e364015_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9CC5E096-74FB-59AB-BAB9-A5486B961B7D_d0e369864_href.png Binary file Symbian3/PDK/Source/GUID-9CC5E096-74FB-59AB-BAB9-A5486B961B7D_d0e369864_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9CDB7D27-B4C9-593B-8C67-0335A868BAC0_d0e276776_href.png Binary file Symbian3/PDK/Source/GUID-9CDB7D27-B4C9-593B-8C67-0335A868BAC0_d0e276776_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9CDB7D27-B4C9-593B-8C67-0335A868BAC0_d0e282776_href.png Binary file Symbian3/PDK/Source/GUID-9CDB7D27-B4C9-593B-8C67-0335A868BAC0_d0e282776_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9D182BE5-1BDA-5799-95B9-2DE25E7B3F12_d0e231768_href.png Binary file Symbian3/PDK/Source/GUID-9D182BE5-1BDA-5799-95B9-2DE25E7B3F12_d0e231768_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9D182BE5-1BDA-5799-95B9-2DE25E7B3F12_d0e237763_href.png Binary file Symbian3/PDK/Source/GUID-9D182BE5-1BDA-5799-95B9-2DE25E7B3F12_d0e237763_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9D2752D1-4153-5978-A7B8-4C3F860B6B87_d0e366272_href.png Binary file Symbian3/PDK/Source/GUID-9D2752D1-4153-5978-A7B8-4C3F860B6B87_d0e366272_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9D2752D1-4153-5978-A7B8-4C3F860B6B87_d0e372120_href.png Binary file Symbian3/PDK/Source/GUID-9D2752D1-4153-5978-A7B8-4C3F860B6B87_d0e372120_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9D3637D4-43BD-51ED-B4BC-1F234F09E24B.dita --- a/Symbian3/PDK/Source/GUID-9D3637D4-43BD-51ED-B4BC-1F234F09E24B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9D3637D4-43BD-51ED-B4BC-1F234F09E24B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -182,7 +182,7 @@ stack->AddToStack(*item); }

    as the following shows:

    Example singly linked list - +
    Removing elements from list

    The following code removes each CItem element diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9D4B8CDF-60D7-5952-AAAF-94A3C1E8908F.dita --- a/Symbian3/PDK/Source/GUID-9D4B8CDF-60D7-5952-AAAF-94A3C1E8908F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9D4B8CDF-60D7-5952-AAAF-94A3C1E8908F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,7 +12,7 @@ ArchitectureExplains architecture of the User-Side Hardware Abstraction (HAL) component. - +

    • Specific items of hardware diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9D5641BC-226B-538F-B805-48511781B7C1_d0e549075_href.jpg Binary file Symbian3/PDK/Source/GUID-9D5641BC-226B-538F-B805-48511781B7C1_d0e549075_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9D5641BC-226B-538F-B805-48511781B7C1_d0e556531_href.jpg Binary file Symbian3/PDK/Source/GUID-9D5641BC-226B-538F-B805-48511781B7C1_d0e556531_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9D6C086F-7621-5522-AE0B-81CBD5E99125.dita --- a/Symbian3/PDK/Source/GUID-9D6C086F-7621-5522-AE0B-81CBD5E99125.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9D6C086F-7621-5522-AE0B-81CBD5E99125.dita Fri Jul 16 17:23:46 2010 +0100 @@ -13,6 +13,6 @@ void Scale(TRequestStatus* aRequestStatus, CFbsBitmap& aBitmap, const TSize& aDestinationSize, TBool aMaintainAspectRatio = ETrue);

      If two CFbsBitmap objects are specified in the scale operation, the dimensions of the destination object are used as the rescaling factors, subject to the aspect ratio setting (described below).

      If only the one CFbsBitmap object is specified in the scale operation, the scaling factor is taken from TSize subject to the aspect ratio setting.

      The aspect ratio is maintained if aMaintainAspectRatio is ETrue. If the ratio is used, then the image is rescaled to the smaller of the horizontal and vertical scaling factors. This is best explained by use of an example.

      In this example, the source image is 50 pixels wide by 150 pixels high (an aspect ratio of 1:3), aMaintainAspectRatio is set to ETrue, and the proposed rescaling is to 75 pixels wide by 300 high. Applying this ratio to the smaller of the horizontal and vertical factors means using a new value for the larger rescaling factor so that the aspect ratio matches that of the source image. The smaller value is 75 pixels, the aspect ratio required is 1:3 so the larger value will be 75*3 which is 225. The image will be rescaled to 75 wide by 225 high.

    Bitmap Transformation Example - Bitmap rotation

    There are two variants of the CBitmapScaler::Rotate() function. The first performs a rotational action on an image contained in one CFbsBitmap object and places the result in another object. The second variant performs a rotational action on an image contained in a CFbsBitmap object and places the result back in the same object. Valid rotational increments are specified in CBitmapRotator::TRotationAngle.

    Note: CBitmapScaler::Rotate() does not support user specified rotational angles. The only values allowed are those specified in CBitmapRotator::TRotationAngle.

    void Rotate(TRequestStatus* aRequestStatus, CFbsBitmap& aSrcBitmap, CFbsBitmap& aTgtBitmap, TRotationAngle aAngle); void Rotate(TRequestStatus* aRequestStatus, CFbsBitmap& aBitmap, TRotationAngle aAngle); -

    ERotation90DegreesClockwise

    ERotation180DegreesClockwise

    ERotation270DegreesClockwise

    EMirrorHorizontalAxis

    EMirrorVerticalAxis

    Imaging Frameworks overview Bitmap Transform Library +

    ERotation90DegreesClockwise

    ERotation180DegreesClockwise

    ERotation270DegreesClockwise

    EMirrorHorizontalAxis

    EMirrorVerticalAxis

    Imaging Frameworks overview Bitmap Transform Library Overview Bitmap Transform Library Guide Enhanced Features for Encoder and Decoder Tutorial \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9D6D07D3-A93C-5290-AC08-15750AD34802_d0e653465_href.png Binary file Symbian3/PDK/Source/GUID-9D6D07D3-A93C-5290-AC08-15750AD34802_d0e653465_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9D6D07D3-A93C-5290-AC08-15750AD34802_d0e666292_href.png Binary file Symbian3/PDK/Source/GUID-9D6D07D3-A93C-5290-AC08-15750AD34802_d0e666292_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9D8C62FB-1E42-5B69-8ECC-2B68AD7C71A5_d0e377026_href.png Binary file Symbian3/PDK/Source/GUID-9D8C62FB-1E42-5B69-8ECC-2B68AD7C71A5_d0e377026_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9D8C62FB-1E42-5B69-8ECC-2B68AD7C71A5_d0e382870_href.png Binary file Symbian3/PDK/Source/GUID-9D8C62FB-1E42-5B69-8ECC-2B68AD7C71A5_d0e382870_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9D93F895-B975-4F2D-A2A3-817033EA5C12.dita --- a/Symbian3/PDK/Source/GUID-9D93F895-B975-4F2D-A2A3-817033EA5C12.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9D93F895-B975-4F2D-A2A3-817033EA5C12.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,14 +17,14 @@ operations to shared memory and I/O. Since read and write operations cannot occur at the same time, the integrity of the data is maintained.

    Shared Memory and I/O on a Single CPU System. - +

    Figure 1 shows how shared memory and I/O is handled on a single CPU system. The CPU switches between threads (this is called a context switch). Because only one thread can be executed at once, read and write operations to shared memory and I/O cannot occur at the same time. Hence the integrity of the data can be maintained.

    Shared Memory and I/O on a Multi CPU System. - +

    Figure 2 shows how shared memory and I/O is handled on a multi CPU system. In this system, it is possible that the read/write order will not be the one expected. This is due performance decisions made by the hardware diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9DCAB1DC-D085-576C-A0B9-713E3BF2CAD5_d0e281122_href.png Binary file Symbian3/PDK/Source/GUID-9DCAB1DC-D085-576C-A0B9-713E3BF2CAD5_d0e281122_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9DCAB1DC-D085-576C-A0B9-713E3BF2CAD5_d0e287122_href.png Binary file Symbian3/PDK/Source/GUID-9DCAB1DC-D085-576C-A0B9-713E3BF2CAD5_d0e287122_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9DCD62DF-C523-5D00-85CD-5AC82C9E9F02_d0e55155_href.png Binary file Symbian3/PDK/Source/GUID-9DCD62DF-C523-5D00-85CD-5AC82C9E9F02_d0e55155_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9DCD62DF-C523-5D00-85CD-5AC82C9E9F02_d0e59389_href.png Binary file Symbian3/PDK/Source/GUID-9DCD62DF-C523-5D00-85CD-5AC82C9E9F02_d0e59389_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9DD43E77-FB3D-5931-899B-F17198F726D0_d0e471489_href.jpg Binary file Symbian3/PDK/Source/GUID-9DD43E77-FB3D-5931-899B-F17198F726D0_d0e471489_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9DD43E77-FB3D-5931-899B-F17198F726D0_d0e477325_href.jpg Binary file Symbian3/PDK/Source/GUID-9DD43E77-FB3D-5931-899B-F17198F726D0_d0e477325_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9E0C8892-E67F-4DC9-8253-2F65611AD4C6_d0e94488_href.png Binary file Symbian3/PDK/Source/GUID-9E0C8892-E67F-4DC9-8253-2F65611AD4C6_d0e94488_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9E0C8892-E67F-4DC9-8253-2F65611AD4C6_d0e98686_href.png Binary file Symbian3/PDK/Source/GUID-9E0C8892-E67F-4DC9-8253-2F65611AD4C6_d0e98686_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9E12593C-38EF-5052-A2E8-0AB25EEFF4D0_d0e512297_href.jpg Binary file Symbian3/PDK/Source/GUID-9E12593C-38EF-5052-A2E8-0AB25EEFF4D0_d0e512297_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9E12593C-38EF-5052-A2E8-0AB25EEFF4D0_d0e519759_href.jpg Binary file Symbian3/PDK/Source/GUID-9E12593C-38EF-5052-A2E8-0AB25EEFF4D0_d0e519759_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9E3ADEB4-C000-525D-B220-2BAFF5DC6B0C-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-9E3ADEB4-C000-525D-B220-2BAFF5DC6B0C-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,82 @@ + + + + + +Password Based Encryption (PBE) example support code

    Below is the supporting code for the PBE example code.

    <codeblock id="GUID-E9CCC5E6-FDB6-53A0-B7F3-85CFD57FE290-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-4-1-2-2-2" xml:space="preserve"> +#include "e32std.h" +#include "f32file.h" +#include "s32file.h" +#include "pbe.h" +#include "pbedata.h" + </codeblock> <codeblock id="GUID-A6FDAAD3-8418-59BD-BE62-6F4C31F0F3CF-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-4-1-2-2-3" xml:space="preserve"> +/* + * Class to demonstrate the use of the PBE API. + */ +class CPBEExample : public CBase + { +public: + static CPBEExample* NewLC(); + virtual ~CPBEExample(); + + void WriteEncryptedDataL(const TDesC8& aInput, const TDesC& aFilename, const TDesC& aPassword); + HBufC8* ReadEncryptedDataLC(const TDesC& aFilename, const TDesC& aPassword); +private: + CPBEExample(); + void ConstructL(); +private: + RFs iFs; + }; + </codeblock> <codeblock id="GUID-4F7B60AF-62C3-55B3-B1F9-3084D68A97AB-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-4-1-2-2-4" xml:space="preserve"> +CPBEExample* CPBEExample::NewLC() + { + CPBEExample* self = new (ELeave) CPBEExample(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CPBEExample::CPBEExample() + { + } + +void CPBEExample::ConstructL() + { + User::LeaveIfError(iFs.Connect()); + } + +CPBEExample::~CPBEExample() + { + iFs.Close(); + } + </codeblock> <codeblock id="GUID-17DECEE0-FE01-5F1F-9143-02462DE3C418-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-4-1-2-2-5" xml:space="preserve"> +LOCAL_D void RunPBEExampleL() + { + _LIT(KFilename, "c:\\pbe_example_data.dat"); + _LIT8(KInputData, "This is the data to be encrypted"); + _LIT(KPassword, "pa55w0rd"); + + CPBEExample* main = CPBEExample::NewLC(); + main->WriteEncryptedDataL(KInputData, KFilename, KPassword); + HBufC8* outputData = main->ReadEncryptedDataLC(KFilename, KPassword); + ASSERT(*outputData == KInputData); + CleanupStack::PopAndDestroy(2, main); + } + </codeblock> <codeblock id="GUID-589330F6-B593-5722-AD3B-73CA53BEDB76-GENID-1-12-1-26-1-1-11-1-1-6-1-5-1-4-1-2-2-6" xml:space="preserve"> +GLDEF_C TInt E32Main() // main function called by E32 + { + __UHEAP_MARK; + CTrapCleanup* cleanup = CTrapCleanup::New(); // get clean-up stack + TRAPD(error, RunPBEExampleL()); + __ASSERT_ALWAYS(!error,User::Panic(_L("pbe_example_code"),error)); + delete cleanup; // destroy clean-up stack + __UHEAP_MARKEND; + return 0; + } + </codeblock> </section> </conbody></concept> \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9E3ADEB4-C000-525D-B220-2BAFF5DC6B0C-GENID-1-12-1-26-1-1-9-1-12-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-9E3ADEB4-C000-525D-B220-2BAFF5DC6B0C-GENID-1-12-1-26-1-1-9-1-12-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,82 @@ +<?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 xml:lang="en" id="GUID-9E3ADEB4-C000-525D-B220-2BAFF5DC6B0C-GENID-1-12-1-26-1-1-9-1-12-1-4-1"><title>Password Based Encryption (PBE) example support code

    Below is the supporting code for the PBE example code.

    <codeblock id="GUID-E9CCC5E6-FDB6-53A0-B7F3-85CFD57FE290-GENID-1-12-1-26-1-1-9-1-12-1-4-1-2-2-2" xml:space="preserve"> +#include "e32std.h" +#include "f32file.h" +#include "s32file.h" +#include "pbe.h" +#include "pbedata.h" + </codeblock> <codeblock id="GUID-A6FDAAD3-8418-59BD-BE62-6F4C31F0F3CF-GENID-1-12-1-26-1-1-9-1-12-1-4-1-2-2-3" xml:space="preserve"> +/* + * Class to demonstrate the use of the PBE API. + */ +class CPBEExample : public CBase + { +public: + static CPBEExample* NewLC(); + virtual ~CPBEExample(); + + void WriteEncryptedDataL(const TDesC8& aInput, const TDesC& aFilename, const TDesC& aPassword); + HBufC8* ReadEncryptedDataLC(const TDesC& aFilename, const TDesC& aPassword); +private: + CPBEExample(); + void ConstructL(); +private: + RFs iFs; + }; + </codeblock> <codeblock id="GUID-4F7B60AF-62C3-55B3-B1F9-3084D68A97AB-GENID-1-12-1-26-1-1-9-1-12-1-4-1-2-2-4" xml:space="preserve"> +CPBEExample* CPBEExample::NewLC() + { + CPBEExample* self = new (ELeave) CPBEExample(); + CleanupStack::PushL(self); + self->ConstructL(); + return self; + } + +CPBEExample::CPBEExample() + { + } + +void CPBEExample::ConstructL() + { + User::LeaveIfError(iFs.Connect()); + } + +CPBEExample::~CPBEExample() + { + iFs.Close(); + } + </codeblock> <codeblock id="GUID-17DECEE0-FE01-5F1F-9143-02462DE3C418-GENID-1-12-1-26-1-1-9-1-12-1-4-1-2-2-5" xml:space="preserve"> +LOCAL_D void RunPBEExampleL() + { + _LIT(KFilename, "c:\\pbe_example_data.dat"); + _LIT8(KInputData, "This is the data to be encrypted"); + _LIT(KPassword, "pa55w0rd"); + + CPBEExample* main = CPBEExample::NewLC(); + main->WriteEncryptedDataL(KInputData, KFilename, KPassword); + HBufC8* outputData = main->ReadEncryptedDataLC(KFilename, KPassword); + ASSERT(*outputData == KInputData); + CleanupStack::PopAndDestroy(2, main); + } + </codeblock> <codeblock id="GUID-589330F6-B593-5722-AD3B-73CA53BEDB76-GENID-1-12-1-26-1-1-9-1-12-1-4-1-2-2-6" xml:space="preserve"> +GLDEF_C TInt E32Main() // main function called by E32 + { + __UHEAP_MARK; + CTrapCleanup* cleanup = CTrapCleanup::New(); // get clean-up stack + TRAPD(error, RunPBEExampleL()); + __ASSERT_ALWAYS(!error,User::Panic(_L("pbe_example_code"),error)); + delete cleanup; // destroy clean-up stack + __UHEAP_MARKEND; + return 0; + } + </codeblock> </section> </conbody></concept> \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9E3ADEB4-C000-525D-B220-2BAFF5DC6B0C.dita --- a/Symbian3/PDK/Source/GUID-9E3ADEB4-C000-525D-B220-2BAFF5DC6B0C.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,82 +0,0 @@ -<?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 xml:lang="en" id="GUID-9E3ADEB4-C000-525D-B220-2BAFF5DC6B0C"><title>Password Based Encryption (PBE) example support code

    Below is the supporting code for the PBE example code.

    <codeblock id="GUID-E9CCC5E6-FDB6-53A0-B7F3-85CFD57FE290" xml:space="preserve"> -#include "e32std.h" -#include "f32file.h" -#include "s32file.h" -#include "pbe.h" -#include "pbedata.h" - </codeblock> <codeblock id="GUID-A6FDAAD3-8418-59BD-BE62-6F4C31F0F3CF" xml:space="preserve"> -/* - * Class to demonstrate the use of the PBE API. - */ -class CPBEExample : public CBase - { -public: - static CPBEExample* NewLC(); - virtual ~CPBEExample(); - - void WriteEncryptedDataL(const TDesC8& aInput, const TDesC& aFilename, const TDesC& aPassword); - HBufC8* ReadEncryptedDataLC(const TDesC& aFilename, const TDesC& aPassword); -private: - CPBEExample(); - void ConstructL(); -private: - RFs iFs; - }; - </codeblock> <codeblock id="GUID-4F7B60AF-62C3-55B3-B1F9-3084D68A97AB" xml:space="preserve"> -CPBEExample* CPBEExample::NewLC() - { - CPBEExample* self = new (ELeave) CPBEExample(); - CleanupStack::PushL(self); - self->ConstructL(); - return self; - } - -CPBEExample::CPBEExample() - { - } - -void CPBEExample::ConstructL() - { - User::LeaveIfError(iFs.Connect()); - } - -CPBEExample::~CPBEExample() - { - iFs.Close(); - } - </codeblock> <codeblock id="GUID-17DECEE0-FE01-5F1F-9143-02462DE3C418" xml:space="preserve"> -LOCAL_D void RunPBEExampleL() - { - _LIT(KFilename, "c:\\pbe_example_data.dat"); - _LIT8(KInputData, "This is the data to be encrypted"); - _LIT(KPassword, "pa55w0rd"); - - CPBEExample* main = CPBEExample::NewLC(); - main->WriteEncryptedDataL(KInputData, KFilename, KPassword); - HBufC8* outputData = main->ReadEncryptedDataLC(KFilename, KPassword); - ASSERT(*outputData == KInputData); - CleanupStack::PopAndDestroy(2, main); - } - </codeblock> <codeblock id="GUID-589330F6-B593-5722-AD3B-73CA53BEDB76" xml:space="preserve"> -GLDEF_C TInt E32Main() // main function called by E32 - { - __UHEAP_MARK; - CTrapCleanup* cleanup = CTrapCleanup::New(); // get clean-up stack - TRAPD(error, RunPBEExampleL()); - __ASSERT_ALWAYS(!error,User::Panic(_L("pbe_example_code"),error)); - delete cleanup; // destroy clean-up stack - __UHEAP_MARKEND; - return 0; - } - </codeblock> </section> </conbody></concept> \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9E3D71A2-34FA-5A66-B0B9-550816021D79_d0e583565_href.png Binary file Symbian3/PDK/Source/GUID-9E3D71A2-34FA-5A66-B0B9-550816021D79_d0e583565_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9E3D71A2-34FA-5A66-B0B9-550816021D79_d0e632853_href.png Binary file Symbian3/PDK/Source/GUID-9E3D71A2-34FA-5A66-B0B9-550816021D79_d0e632853_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9E705383-5D3F-45D9-82F7-EB76112F2800_d0e80498_href.png Binary file Symbian3/PDK/Source/GUID-9E705383-5D3F-45D9-82F7-EB76112F2800_d0e80498_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9E705383-5D3F-45D9-82F7-EB76112F2800_d0e84696_href.png Binary file Symbian3/PDK/Source/GUID-9E705383-5D3F-45D9-82F7-EB76112F2800_d0e84696_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9E9C00E1-00A2-5248-946B-D3AE182F44EC_d0e479333_href.jpg Binary file Symbian3/PDK/Source/GUID-9E9C00E1-00A2-5248-946B-D3AE182F44EC_d0e479333_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9E9C00E1-00A2-5248-946B-D3AE182F44EC_d0e485162_href.jpg Binary file Symbian3/PDK/Source/GUID-9E9C00E1-00A2-5248-946B-D3AE182F44EC_d0e485162_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1.dita --- a/Symbian3/PDK/Source/GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,7 +9,121 @@ --> <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> -<concept xml:lang="en" id="GUID-9EE78D5A-32BC-5E0F-9139-AF00CDB95CC1"><title>How to use the audio tone player utility

    The Audio Tone Player, provided by the class CMdaAudioToneUtility, has an interface for generating the following tones on all audio capable devices. Using this class you can play the following tones:

    • Single tone of a specified duration and frequency

    • Dual Tone Multi Frequency (DTMF) strings

    • Sequences of tones held in files or descriptors

    • Predefined (fixed) sequences of tones held in any mobile equipment

    Client applications such as ringtone applications, use CMdaAudioToneUtility to generate the tones they produce. The tone player in turn uses MMF for playing sounds and is also credited for interfacing with the audio hardware. An active scheduler is needed for all the clients applications for the use of active objects and callbacks.

    Using the tone player

    The tone player provides a simple interface to generate single and multiple tones. Once the tone player object has been constructed, multiple tones and tone sequences can be played without having to create new instances of the object.

    Using the tone player typically involves the following steps:

    - Tone Player Utility -
    1. Constructing a tone player

    2. Preparing a tone player

    3. Playing a tone

    4. Cancelling a tone

    5. Retrieving a custom interface

    Constructing a tone player

    The CMdaAudioToneUtility object can be constructed using the NewL() member function. There are two versions of this constructor function:

    • create a tone player with default priority settings:

      static CMdaAudioToneUtility* NewL(MMdaAudioToneObserver& aObserver, CMdaServer* aServer=NULL);
    • create a tone player with your own settings:

      static CMdaAudioToneUtility* NewL(MMdaAudioToneObserver& aObserver, CMdaServer* aServer, TInt aPriority, -TMdaPriorityPreference aPref=EMdaPriorityPreferenceTimeAndQuality);

    Both functions pass a reference of the MMdaAudioToneObserver object to the tone player. The MMdaAudioToneObserver is an observer interface to notifications from the member functions Prepare, Play, and, CancelPlay callback functions.

    Preparing a tone player

    Once the tone player object is created, it has to be prepared to play a tone or a DTMF string. use one of the following prepare member functions to get it ready for playing the corresponding tone.

    • PrepareToPlayTone() - to play a single tone of a fixed frequency (Hz) and duration (microseconds). For example:

      virtual void PrepareToPlayTone(TInt aFrequency, const TTimeIntervalMicroSeconds& aDuration);
    • PrepareToPlayDTMFString() - to play a DTMF string held in a descriptor. For example:

      virtual void PrepareToPlayDTMFString(const TDesC& aDTMF);
    • PrepareToPlayFileSequence() - to play a sequence of non-DTMF tones held in a file. For example:

      virtual void PrepareToPlayFileSequence(const TDesC& aFilename);
    • PrepareToPlayDesSequence() - to play a sequence of non-DTMF tones held in a descriptor. For example:

      virtual void PrepareToPlayDesSequence(const TDesC8& aSequence);
    • PrepareToPlayFixedSequence() - to play a sequence of non-DTMF tones stored on the mobile equipment. For example:

      virtual void PrepareToPlayFixedSequence(TInt aSequenceNumber);
    • PrepareToPlayDualTone() - to play a dual tone. For example:

      void PrepareToPlayDualTone(TInt aFrequencyOne, TInt aFrequencyTwo, const TTimeIntervalMicroSeconds& aDuration);

      The two tones, aFrequencyOne and aFrequencyTwo, are measured in Hz, and the duration of the tone, aDuration, is measured in microseconds.

    All the prepare member functions are asynchronous. In response to each, CMdaAudioToneUtility creates a CMMFToneConfig derived object that stores the data for the type of tone to play.

    On completion of a prepare, the observer function MMdaAudioToneObserver::MatoPrepareComplete() is called, indicating the success or failure of the prepare operation. If successful you can play the tone.

    You can cancel any prepare function using CancelPrepare() (the observer callback function is not called on completion of the cancel).

    Playing a tone

    Once the player is prepared successfully, certain configurations can be done before playing the tone as listed below:

    • Volume() and SetVolume() - This retrieves the current volume settings and sets to a new value specified by the user respectively.

    • GetBalanceL() and SetBalanceL() - This retrieves the current balance of the audio device and sets the audio balance specified by the user respectively..

    • SetPriority() - This sets the priority of the audio device. The priority is defined to arbitrate between multiple objects trying to access the controller at the same time.

    • SetVolumeRamp() - This defines the period over which the volume level is to rise (in microseconds) smoothly from zero to the specified volume level. A value of 0 causes the tone to be played at the SetVolume() level for the full duration of the playback. A value that is longer than the duration of the tone sequence means that the tone never reaches the specified volume.

      virtual void SetVolumeRamp(const TTimeIntervalMicroSeconds &aRampDuration);
    • SetDTMFLengths() - This alters the duration of DTMF tone, the gaps between two DTMF tones, and the pauses in microseconds.

    • FixedSequenceCount() - This returns the number of available pre-defined tone sequences, the number always being greater than zero.

    • FixedSequenceName() - This returns the name of the specified fixed tone sequence.

    Upon successful configuration, the Play() can be called as shown below.

    Play() - plays the tone, DTMF or tone sequence specified by the prepare statement. For example:

    virtual void Play();

    Here, the tone player uses the Play() from the audio player utility to play the tone.

    This function is asynchronous. It retrieves the details of the type of tone to play from the previous Prepare statement. When the tone has been played to completion, the observer callback function MMdaAudioToneObserver::MatoPlayComplete() is called, indicating the success or failure of the play operation. The play operation can be cancelled by calling the CancelPlay() member function.

    Playing the tone or DTMF string can be customised using the following member functions as mentioned below:

    • SetRepeats() - sets the number of times the tone sequence (plus an optional trailing silent period, measured in microseconds) is repeated during the play operation. For example:

      virtual void SetRepeats(TInt aRepeatNumberOfTimes, const TTimeIntervalMicroSeconds &aTrailingSilence);

      You can repeat the tone sequence indefinitely by setting aRepeatNumberOfTimes to KMdaRepeatForever.

    • State() - returns the current state of the tone player (an enum):

      • EMdaAudioToneUtilityNotReady - not prepared to play a tone

      • EMdaAudioToneUtilityPrepared - prepared and ready to play a tone

      • EMdaAudioToneUtilityPlaying - currently playing a tone

      For example:

      virtual TMdaAudioToneUtilityState State();

    To play another tone or sequence, either wait for MMdaAudioToneObserver::MatoPlayComplete() callback to be issued when the current tone or DTMF string completes playing, or use CancelPlay() and then issue the relevant prepare statement. The Play() function following the prepare statement plays the tone or DTMF string based on the previously issued prepare statement.

    Cancelling a tone

    CancelPlay() - cancels the tone, DTMF, or tone sequence currently playing. For example:

    virtual void CancelPlay();

    The observer callback function is not called on completion of the cancel.

    Retrieving a custom interface

    To retrieve a custom interface to the underlying device, use the CustomInterface() member function. For example:

    IMPORT_C TAny *CustomInterface(TUid aInterfaceId);

    aInterfaceId is the UID of the interface function required.

    The function returns a pointer to the interface implementation, or NULL if the device does not implement the interface requested. You must cast the return value to the correct type.

    See Also

    How to use the audio player utility

    How to use the audio convert utility

    How to use audio recorder utility

    \ No newline at end of file +How to use the audio tone player utility +

    The Audio Tone Player, provided by the class CMdaAudioToneUtility, has an interface for generating the following tones on all audio +capable devices. Using this class you can play the following tones:

    +
      +
    • Single tone +of a specified duration and frequency

    • +
    • Dual Tone Multi +Frequency (DTMF) strings

    • +
    • Sequences of +tones held in files or descriptors

    • +
    • Predefined (fixed) +sequences of tones held in any mobile equipment

    • +
    +

    Client applications such as ringtone applications, use CMdaAudioToneUtility to generate the tones they produce. +The tone player in turn uses MMF for playing sounds and is also credited +for interfacing with the audio hardware. An active scheduler is needed +for all the clients applications for the use of active objects and +callbacks.

    +
    Using +the tone player

    The tone player provides a simple interface +to generate single and multiple tones. Once the tone player object +has been constructed, multiple tones and tone sequences can be played +without having to create new instances of the object.

    Using +the tone player typically involves the following steps:

    + Tone Player Utility + +
      +
    1. Constructing a tone player

    2. +
    3. Preparing a tone player

    4. +
    5. Playing a tone

    6. +
    7. Cancelling a tone

    8. +
    9. Retrieving a custom interface

    10. +

    Constructing a tone +player

    The CMdaAudioToneUtility object +can be constructed using the NewL() member function. +There are two versions of this constructor function:

      +
    • create a tone +player with default priority settings:

      static CMdaAudioToneUtility* NewL(MMdaAudioToneObserver& aObserver, CMdaServer* aServer=NULL);
    • +
    • create a tone +player with your own settings:

      static CMdaAudioToneUtility* NewL(MMdaAudioToneObserver& aObserver, CMdaServer* aServer, TInt aPriority, +TMdaPriorityPreference aPref=EMdaPriorityPreferenceTimeAndQuality);
    • +

    Both functions pass a reference of the MMdaAudioToneObserver object to the tone player. The MMdaAudioToneObserver is an observer interface to notifications from the member functions Prepare, Play, and, CancelPlay callback functions.

    Preparing a tone +player

    Once the tone player object is created, it has +to be prepared to play a tone or a DTMF string. use one of the following +prepare member functions to get it ready for playing the corresponding +tone.

      +
    • PrepareToPlayTone() - to play a single tone of a fixed frequency (Hz) and duration (microseconds). +For example:

      virtual void PrepareToPlayTone(TInt aFrequency, const TTimeIntervalMicroSeconds& aDuration);
    • +
    • PrepareToPlayDTMFString() - to play a DTMF string held in a descriptor. For example:

      virtual void PrepareToPlayDTMFString(const TDesC& aDTMF);
    • +
    • PrepareToPlayFileSequence() - to play a sequence of non-DTMF tones held in a file. For example:

      virtual void PrepareToPlayFileSequence(const TDesC& aFilename);
    • +
    • PrepareToPlayDesSequence() - to play a sequence of non-DTMF tones held in a descriptor. For +example:

      virtual void PrepareToPlayDesSequence(const TDesC8& aSequence);
    • +
    • PrepareToPlayFixedSequence() - to play a sequence of non-DTMF tones stored on the mobile equipment. +For example:

      virtual void PrepareToPlayFixedSequence(TInt aSequenceNumber);
    • +
    • PrepareToPlayDualTone() - to play a dual tone. For example:

      void PrepareToPlayDualTone(TInt aFrequencyOne, TInt aFrequencyTwo, const TTimeIntervalMicroSeconds& aDuration);

      The two tones, aFrequencyOne and aFrequencyTwo, are measured +in Hz, and the duration of the tone, aDuration, is measured in microseconds.

    • +

    All the prepare member functions are asynchronous. In response +to each, CMdaAudioToneUtility creates a CMMFToneConfig derived object that stores the data for the +type of tone to play.

    On completion of a prepare, the observer +function MMdaAudioToneObserver::MatoPrepareComplete() is called, indicating the success or failure of the prepare operation. +If successful you can play the tone.

    You can cancel any prepare +function using CancelPrepare() (the observer callback +function is not called on completion of the cancel).

    Playing a tone

    Once the player is prepared successfully, certain configurations +can be done before playing the tone as listed below:

      +
    • Volume() and SetVolume() - This retrieves the current +volume settings and sets to a new value specified by the user respectively.

    • +
    • GetBalanceL() and SetBalanceL() - This retrieves the current +balance of the audio device and sets the audio balance specified by +the user respectively..

    • +
    • SetPriority() - This sets the priority of the audio device. The priority is defined +to arbitrate between multiple objects trying to access the controller +at the same time.

    • +
    • SetVolumeRamp() - This defines the period over which the volume level is to rise +(in microseconds) smoothly from zero to the specified volume level. +A value of 0 causes the tone to be played at the SetVolume() level for the full duration of the playback. +A value that is longer than the duration of the tone sequence means +that the tone never reaches the specified volume.

      virtual void SetVolumeRamp(const TTimeIntervalMicroSeconds &aRampDuration);
    • +
    • SetDTMFLengths() - This alters the duration of DTMF tone, the gaps between two DTMF +tones, and the pauses in microseconds.

    • +
    • FixedSequenceCount() - This returns the number of available pre-defined tone sequences, +the number always being greater than zero.

    • +
    • FixedSequenceName() - This returns the name of the specified fixed tone sequence.

    • +

    Upon successful configuration, the Play() can be called as +shown below.

    Play() - plays the tone, DTMF +or tone sequence specified by the prepare statement. For example:

    virtual void Play();

    Here, the tone player uses the Play() from +the audio player utility to play the tone.

    This function is +asynchronous. It retrieves the details of the type of tone to play +from the previous Prepare statement. When the tone +has been played to completion, the observer callback function MMdaAudioToneObserver::MatoPlayComplete() is called, indicating +the success or failure of the play operation. The play operation can +be cancelled by calling the CancelPlay() member function.

    Playing the tone or +DTMF string can be customised using the following member functions +as mentioned below:

      +
    • SetRepeats() - sets the number of times the tone sequence (plus an optional trailing +silent period, measured in microseconds) is repeated during the play +operation. For example:

      virtual void SetRepeats(TInt aRepeatNumberOfTimes, const TTimeIntervalMicroSeconds &aTrailingSilence);

      You can repeat the tone sequence indefinitely by setting aRepeatNumberOfTimes to KMdaRepeatForever.

    • +
    • State() - returns the current state of the tone player (an enum):

        +
      • EMdaAudioToneUtilityNotReady - not prepared to play a tone

      • +
      • EMdaAudioToneUtilityPrepared - prepared and ready to play a tone

      • +
      • EMdaAudioToneUtilityPlaying - currently playing a tone

      • +

      For example:

      virtual TMdaAudioToneUtilityState State();
    • +

    To play another tone or sequence, either wait for MMdaAudioToneObserver::MatoPlayComplete() callback to be +issued when the current tone or DTMF string completes playing, or +use CancelPlay() and then issue the relevant prepare statement. +The Play() function following the prepare statement +plays the tone or DTMF string based on the previously issued prepare +statement.

    Cancelling a tone

    CancelPlay() - cancels the tone, DTMF, +or tone sequence currently playing. For example:

    virtual void CancelPlay();

    The observer callback function is not called on completion +of the cancel.

    Retrieving a custom +interface

    To retrieve a custom interface to the underlying +device, use the CustomInterface() member function. +For example:

    IMPORT_C TAny *CustomInterface(TUid aInterfaceId);

    aInterfaceId is the UID of the interface function +required.

    The function returns a pointer to the interface +implementation, or NULL if the device does not implement the interface +requested. You must cast the return value to the correct type.

    +
    See +Also

    How to use the audio convert utility

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9F14FB98-D7CD-55C9-8D27-715642B8FFC3_d0e657106_href.png Binary file Symbian3/PDK/Source/GUID-9F14FB98-D7CD-55C9-8D27-715642B8FFC3_d0e657106_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9F14FB98-D7CD-55C9-8D27-715642B8FFC3_d0e669933_href.png Binary file Symbian3/PDK/Source/GUID-9F14FB98-D7CD-55C9-8D27-715642B8FFC3_d0e669933_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9F22E663-8BC4-5502-879F-E6B790465E74.dita --- a/Symbian3/PDK/Source/GUID-9F22E663-8BC4-5502-879F-E6B790465E74.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -exportunfrozen

    exportunfrozen

    Use the exportunfrozen statement if unfrozen exports are to appear in the project’s import library.

    When it is used, the import library is created as a side-effect of linking so that all exported functions, even unfrozen ones, appear in the import library. This also means that import libraries for compatible ABIs are not created.

    If this is not used, you must supply a .def file with the frozen exports.

    Use of exportunfrozen is only recommended for the early stages of project development, when the Application Programming Interface is likely to be subject to change.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9F4C948B-7A6B-4E90-BBB7-A6CC6F4A6769_d0e1713_href.png Binary file Symbian3/PDK/Source/GUID-9F4C948B-7A6B-4E90-BBB7-A6CC6F4A6769_d0e1713_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9F4C948B-7A6B-4E90-BBB7-A6CC6F4A6769_d0e1717_href.png Binary file Symbian3/PDK/Source/GUID-9F4C948B-7A6B-4E90-BBB7-A6CC6F4A6769_d0e1717_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9F4C948B-7A6B-4E90-BBB7-A6CC6F4A6769_d0e1841_href.png Binary file Symbian3/PDK/Source/GUID-9F4C948B-7A6B-4E90-BBB7-A6CC6F4A6769_d0e1841_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9F4C948B-7A6B-4E90-BBB7-A6CC6F4A6769_d0e1848_href.png Binary file Symbian3/PDK/Source/GUID-9F4C948B-7A6B-4E90-BBB7-A6CC6F4A6769_d0e1848_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9F6C46FF-1F5A-591C-B33F-29E9885973B3_d0e247524_href.jpg Binary file Symbian3/PDK/Source/GUID-9F6C46FF-1F5A-591C-B33F-29E9885973B3_d0e247524_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9F6C46FF-1F5A-591C-B33F-29E9885973B3_d0e253535_href.jpg Binary file Symbian3/PDK/Source/GUID-9F6C46FF-1F5A-591C-B33F-29E9885973B3_d0e253535_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9F90A2F0-9C76-4871-A766-D1AE0FC42C08.dita --- a/Symbian3/PDK/Source/GUID-9F90A2F0-9C76-4871-A766-D1AE0FC42C08.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9F90A2F0-9C76-4871-A766-D1AE0FC42C08.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,77 +1,72 @@ - - - - - -Defining -localizable registration information - -

    You need to register your applications -to make them visible to the application menu and to provide other information -to the underlying system. To register, you need to provide a registration -resource file that contains the non-localized information for your -application. You also need to provide the localizable registration information. -The registration resource file is compiled during the build process and included -in the pkg file used to make the file used to make the sis installation -file.

    - -

    Localizable registration information is defined in a LOCALISABLE_APP_INFO resource -statement, which may be in a separate file or in the resource file for the -GUI resources. For a discussion of the available options for where you can -place this resource statement, see Localisable -icon/caption definition files.

    -

    To define the localizable registration information:

    -
      -
    1. Determine -the requirements of your application, including deciding on whether the resource -statement should be in its own file or part of the GUI resource file.

      -
    2. -
    3. Create a LOCALISABLE_APP_INFO resource. -The data structure is declared in the appinfo.rh file -in the ./epoc32/include folder, as is the CAPTION_AND_ICON_INFO structure -used in the resource. The syntax is as follows:

      - -RESOURCE LOCALISABLE_APP_INFO r_name36 - { - short_caption = ""; - CAPTION_AND_ICON_INFO - { - caption = ""; - number_of_icons =0; - icon_file = ""; - }; - view_list[]; // VIEW_DATA - group_name(KAppMaxGroupName) = ""; - } -

      where

      -
        -
      • r_name36 is the resource name that uniquely -identifies the RESOURCE statement in the application, and is used in the registration resource file.

        -
      • -
      • short_caption indicates a shortened -version of the caption used by some UIs when screen space is limited.

        -
      • -
      • caption indicates the caption used for -the application on the grid and list menu.

      • -
      • number_of_icons indicates the number -of icons used for the application in the menu.

      • -
      • icon_file indicates the name of the -file that contains the icon, including the path but not the drive name.

        -
      • -
      -

      For information on the other possible values, see Localisable -icon/caption definition files.

      -
      -
    4. -
    5. Add the resource -name of this resource to the localisable_resource_id in -the registration resource file.

    6. -
    -

    For a commented example, see helloworldbasic.rss.

    + + + + + +Defining localizable registration information + +

    You need to register your +applications to make them visible to the application menu and to provide +other information to the underlying system. To register, you need +to provide a registration resource file that contains the non-localized +information for your application. You also need to provide the localizable +registration information. The registration resource file is compiled +during the build process and included in the pkg file used to make the file used to make the sis installation file.

    + +

    Localizable registration information is defined in a LOCALISABLE_APP_INFO resource statement, which may be +in a separate file or in the resource file for the GUI resources. +For information on available options for where you can place this +resource statement, see Symbian^3 Tools Guide > Building.

    +

    To define the localizable registration information:

    +
      +
    1. Determine +the requirements of your application, including deciding on whether +the resource statement should be in its own file or part of the GUI +resource file.

    2. +
    3. Create +a LOCALISABLE_APP_INFO resource. The data structure +is declared in the appinfo.rh file in the ./epoc32/include folder, as is the CAPTION_AND_ICON_INFO structure used in the resource. The syntax is as follows:

      + +RESOURCE LOCALISABLE_APP_INFO r_name36 + { + short_caption = ""; + CAPTION_AND_ICON_INFO + { + caption = ""; + number_of_icons =0; + icon_file = ""; + }; + view_list[]; // VIEW_DATA + group_name(KAppMaxGroupName) = ""; + } +

      where

      +
        +
      • r_name36 is the resource name +that uniquely identifies the RESOURCE statement in the application, +and is used in the registration resource file.

      • +
      • short_caption indicates a shortened +version of the caption used by some UIs when screen space is limited.

        +
      • +
      • caption indicates the caption +used for the application on the grid and list menu.

      • +
      • number_of_icons indicates the +number of icons used for the application in the menu.

      • +
      • icon_file indicates the name +of the file that contains the icon, including the path but not the +drive name.

      • +
      +

      For information on Localisable icon, see Symbian^3 Tools +Guide > Building.

      +
      +
    4. +
    5. Add +the resource name of this resource to the localisable_resource_id in the registration resource file.

    6. +
    +

    For a commented example, see helloworldbasic.rss.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9F9CE6B6-1B3D-50A6-8A94-BD391732EF2D.dita --- a/Symbian3/PDK/Source/GUID-9F9CE6B6-1B3D-50A6-8A94-BD391732EF2D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-9F9CE6B6-1B3D-50A6-8A94-BD391732EF2D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,7 +20,7 @@ a 32-bit word also increase from low to high-order bit.

    Pixel address layout in memory for the EUidPixelFormatL_2 format - +

    The equivalent UID value is {0x102858EF}.

    EUidPixelFormatL_2

    This format has 2 bits per pixel. It is implicit in the code that pixel addresses within a byte increase from @@ -30,7 +30,7 @@ also increase from low to high-order bit.

    Pixel address layout in memory for the EUidPixelFormatL_2 format - +

    The equivalent UID value is {0x102858EE}.

    EUidPixelFormatL_4

    This format has 4 bit per pixel. It is implicit in the code that pixel addresses within a byte increase from @@ -40,7 +40,7 @@ also increase from low to high-order bit.

    Pixel address layout in memory for the EUidPixelFormatL_4 format - +

    The equivalent UID value is {0x102858ED}.

    EUidPixelFormatL_8

    This format has 8 bit per pixel. A little-endian architecture is implicit in the code, because conversions @@ -50,7 +50,7 @@ look up tables and monochrome bitmaps represent the 256 levels of gray directly.

    Pixel address layout in memory for the EUidPixelFormatL_8 format - +

    The equivalent UID value is {0x102858EC}.

    RGB diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9FB3502C-B3DF-5FBC-972D-0D476D661954_d0e137706_href.png Binary file Symbian3/PDK/Source/GUID-9FB3502C-B3DF-5FBC-972D-0D476D661954_d0e137706_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9FB3502C-B3DF-5FBC-972D-0D476D661954_d0e139955_href.png Binary file Symbian3/PDK/Source/GUID-9FB3502C-B3DF-5FBC-972D-0D476D661954_d0e139955_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9FB82D95-F110-5D42-B39E-BCFAE574E18F_d0e107636_href.png Binary file Symbian3/PDK/Source/GUID-9FB82D95-F110-5D42-B39E-BCFAE574E18F_d0e107636_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9FB82D95-F110-5D42-B39E-BCFAE574E18F_d0e110079_href.png Binary file Symbian3/PDK/Source/GUID-9FB82D95-F110-5D42-B39E-BCFAE574E18F_d0e110079_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9FFBC03F-33D8-55BB-BD45-09FDE61A0F1F_d0e41839_href.png Binary file Symbian3/PDK/Source/GUID-9FFBC03F-33D8-55BB-BD45-09FDE61A0F1F_d0e41839_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-9FFBC03F-33D8-55BB-BD45-09FDE61A0F1F_d0e46073_href.png Binary file Symbian3/PDK/Source/GUID-9FFBC03F-33D8-55BB-BD45-09FDE61A0F1F_d0e46073_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A0051B62-FC01-5693-9532-EDBDB25634AA_d0e459099_href.png Binary file Symbian3/PDK/Source/GUID-A0051B62-FC01-5693-9532-EDBDB25634AA_d0e459099_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A0051B62-FC01-5693-9532-EDBDB25634AA_d0e464944_href.png Binary file Symbian3/PDK/Source/GUID-A0051B62-FC01-5693-9532-EDBDB25634AA_d0e464944_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A007DDF7-AC6D-5378-B7A6-84CB421E970F_d0e550989_href.png Binary file Symbian3/PDK/Source/GUID-A007DDF7-AC6D-5378-B7A6-84CB421E970F_d0e550989_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A007DDF7-AC6D-5378-B7A6-84CB421E970F_d0e558445_href.png Binary file Symbian3/PDK/Source/GUID-A007DDF7-AC6D-5378-B7A6-84CB421E970F_d0e558445_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A0208BE3-127F-4D04-8045-09C54EF202DD_d0e101389_href.png Binary file Symbian3/PDK/Source/GUID-A0208BE3-127F-4D04-8045-09C54EF202DD_d0e101389_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A0208BE3-127F-4D04-8045-09C54EF202DD_d0e79805_href.png Binary file Symbian3/PDK/Source/GUID-A0208BE3-127F-4D04-8045-09C54EF202DD_d0e79805_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A0208BE3-127F-4D04-8045-09C54EF202DD_d0e84003_href.png Binary file Symbian3/PDK/Source/GUID-A0208BE3-127F-4D04-8045-09C54EF202DD_d0e84003_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A0208BE3-127F-4D04-8045-09C54EF202DD_d0e95807_href.png Binary file Symbian3/PDK/Source/GUID-A0208BE3-127F-4D04-8045-09C54EF202DD_d0e95807_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A0208BE3-127F-4D04-8045-09C54EF202DD_d0e97310_href.png Binary file Symbian3/PDK/Source/GUID-A0208BE3-127F-4D04-8045-09C54EF202DD_d0e97310_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A0208BE3-127F-4D04-8045-09C54EF202DD_d0e99926_href.png Binary file Symbian3/PDK/Source/GUID-A0208BE3-127F-4D04-8045-09C54EF202DD_d0e99926_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A021A398-2FD0-5AAA-90B9-418996877600_d0e277947_href.png Binary file Symbian3/PDK/Source/GUID-A021A398-2FD0-5AAA-90B9-418996877600_d0e277947_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A021A398-2FD0-5AAA-90B9-418996877600_d0e283947_href.png Binary file Symbian3/PDK/Source/GUID-A021A398-2FD0-5AAA-90B9-418996877600_d0e283947_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A03FB1BF-F67B-519D-A904-74CA3F8375D9.dita --- a/Symbian3/PDK/Source/GUID-A03FB1BF-F67B-519D-A904-74CA3F8375D9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A03FB1BF-F67B-519D-A904-74CA3F8375D9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ fonts and bitmaps. The Font and Bitmap Server collection - +

    The CBR package name for the Font and Bitmap Server component is graphics_fbserv.

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A049B0C2-5C30-5B07-AC4F-32A75046B60B.dita --- a/Symbian3/PDK/Source/GUID-A049B0C2-5C30-5B07-AC4F-32A75046B60B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A049B0C2-5C30-5B07-AC4F-32A75046B60B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -40,7 +40,7 @@ of the data. The following drawing shows the layout of a TBufC<5> object initialised with the string of five characters representing the English word "Hello".

    - +
    Modifiable buffer descriptor

    The data contained in a modifiable buffer descriptor can be both accessed and changed through @@ -64,6 +64,6 @@ that holds the maximum length of the data. The following drawing shows the layout of a TBuf<12> object initialised with the string of five characters representing the English word "Hello".

    - +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A0531C8B-22F2-5FAE-9F37-92BACBBD9EEB-GENID-1-12-1-17-1-1-9-1-4-1-22-1-6-1-4-1.dita --- a/Symbian3/PDK/Source/GUID-A0531C8B-22F2-5FAE-9F37-92BACBBD9EEB-GENID-1-12-1-17-1-1-9-1-4-1-22-1-6-1-4-1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ - - - - - -How -to stop a periodic timerDescribes how to stop a periodic timer. -

    To stop a periodic timer, call Cancel(). After the cancel, -the CPeriodic may be started again, and so on until it is -destroyed.

    - -iPeriodic->Cancel(); - -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A0531C8B-22F2-5FAE-9F37-92BACBBD9EEB-GENID-1-12-1-17-1-1-9-1-4-1-22-1-7-1-4-1.dita --- a/Symbian3/PDK/Source/GUID-A0531C8B-22F2-5FAE-9F37-92BACBBD9EEB-GENID-1-12-1-17-1-1-9-1-4-1-22-1-7-1-4-1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ - - - - - -How -to stop a periodic timerDescribes how to stop a periodic timer. -

    To stop a periodic timer, call Cancel(). After the cancel, -the CPeriodic may be started again, and so on until it is -destroyed.

    - -iPeriodic->Cancel(); - -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A0531C8B-22F2-5FAE-9F37-92BACBBD9EEB-GENID-1-12-1-18-1-1-9-1-4-1-22-1-6-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-A0531C8B-22F2-5FAE-9F37-92BACBBD9EEB-GENID-1-12-1-18-1-1-9-1-4-1-22-1-6-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,20 @@ + + + + + +How +to stop a periodic timerDescribes how to stop a periodic timer. +

    To stop a periodic timer, call Cancel(). After the cancel, +the CPeriodic may be started again, and so on until it is +destroyed.

    + +iPeriodic->Cancel(); + +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A0531C8B-22F2-5FAE-9F37-92BACBBD9EEB-GENID-1-12-1-18-1-1-9-1-4-1-22-1-7-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-A0531C8B-22F2-5FAE-9F37-92BACBBD9EEB-GENID-1-12-1-18-1-1-9-1-4-1-22-1-7-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,20 @@ + + + + + +How +to stop a periodic timerDescribes how to stop a periodic timer. +

    To stop a periodic timer, call Cancel(). After the cancel, +the CPeriodic may be started again, and so on until it is +destroyed.

    + +iPeriodic->Cancel(); + +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A05B7A4D-EAE1-4E92-9337-8CA1CC5C0FAD.dita --- a/Symbian3/PDK/Source/GUID-A05B7A4D-EAE1-4E92-9337-8CA1CC5C0FAD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A05B7A4D-EAE1-4E92-9337-8CA1CC5C0FAD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -64,7 +64,7 @@ The secure time can be set using System Static Functions API.

    - +

    To make the WMDRM content fully functional, device creators must license the WMDRM porting kit from Microsoft and integrate it.
    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A05F0124-AE28-5088-8AFE-22956D1549AD.dita --- a/Symbian3/PDK/Source/GUID-A05F0124-AE28-5088-8AFE-22956D1549AD.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -noexportlibrary

    noexportlibrary

    This stops the generation of a component's .lib file.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A071544E-FC8D-5912-99F9-8D651AA3BA07_d0e450789_href.png Binary file Symbian3/PDK/Source/GUID-A071544E-FC8D-5912-99F9-8D651AA3BA07_d0e450789_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A071544E-FC8D-5912-99F9-8D651AA3BA07_d0e456634_href.png Binary file Symbian3/PDK/Source/GUID-A071544E-FC8D-5912-99F9-8D651AA3BA07_d0e456634_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A0AF4BAE-E4C4-52BE-BB61-92DFE9422D8D.dita --- a/Symbian3/PDK/Source/GUID-A0AF4BAE-E4C4-52BE-BB61-92DFE9422D8D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A0AF4BAE-E4C4-52BE-BB61-92DFE9422D8D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> How to Develop a SIP Profile Agent Plug-in using the SIP Profile Agent API

    A SIP Profile Agent plug-in is an ECOM plug-in that is used by the SIP Profile server to register the corresponding SIP profiles. For example, if the SIP Profile type is IETF, the profile server uses the IETF plug-in to register the profile.

    In the following illustration, the SIP Profile Agent plug-in implements interfaces, uses APIs, and inherits a class.

    The following steps describe how to develop a SIP Profile Agent plug-in.

    1. Derive a profile agent plug-in class from CSIPProfileAgent, which provides an ECOM interface for SIP Profile Agent plug-ins.

    2. Implement the following interfaces in the plug-in class:

      • MSIPProfileAgentObserver - To receive notifications of profile registration, update and deregister events, and any errors reported while doing these tasks.

      • MSIPProfileFSMUser - To receive profile state change notifications.

      • MSIPObserver - To receive SIP requests from the SIP connections that the user does no initialise.

      • MSIPHttpDigestChallengeObserver2 - To provide HTTP Digest authentication for SIP registrations when an instance of the CSIPHttpDigest class is used.

    3. Derive and implement the following classes in the profile context and connection context classes:

      • Implement the MSIPProfileContext interface in the profile context class to get and set the information about the profile when it is in a particular state.

      • Implement the MSIPConnectionObserver interface in the connection context class to receive requests, responses, connection state notifications, and error notifications from the SIP stack.

      • Implement the MSIPProxyResolverObserver interface to receive notifications about the state of the asynchronous request to resolve proxy.

      • Derive the profile context and the connection context classes from CBase to create the objects on the heap.

    4. Create instances of the CSIP and CSIPConnection classes, and monitor the states of CSIPConnection object.

      Note: SIP Profile registration is performed when the state of CSIPConnection object is CSIPConnection::EActive.

    5. Create instances of the CSIPRegistrationBinding class to perform SIP profile registrations.

    6. Implement the SIP profile registration state machine. The state machine responds to the state changes to CSIPConnection instances and SIP profile registrations.

    The following illustration shows the relationship between the SIP Profile Agent plug-in and other components used by it.

    SIP Profile Agent plug-in relationship diagram -
    SIP Profile + SIP Profile Agent overview Example IETF profile agent plug-in
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A0C0BEBA-1976-5D68-B4EF-C3727DF163A9.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-A0C0BEBA-1976-5D68-B4EF-C3727DF163A9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,22 @@ + + + + + +Contacts +Model API Example +
    Description This +C++ example is a simple application demonstrating the use of the Contacts +Model API. It allows viewing contact items from the default contacts database. +Each contact is shown using a custom text definition. New contacts can be +imported from files that contain vCard items. A contact item can also be selected +and exported to a file in the vCards format.
    +
    Download

    Click +on the following link to download the example: ContactsModel.zip

    Click: browse to view the example code.

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A0E21681-F1EF-4E79-965A-040AC7D72A01.dita --- a/Symbian3/PDK/Source/GUID-A0E21681-F1EF-4E79-965A-040AC7D72A01.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A0E21681-F1EF-4E79-965A-040AC7D72A01.dita Fri Jul 16 17:23:46 2010 +0100 @@ -61,7 +61,7 @@ to UTC.

    The key classes involved are CTzId, RTz and CTzConverter.

    Class diagram for Time zone Conversion - +

    See also

    • Converting between UTC and local time

    • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A10EAF58-6B9F-55A5-B3E4-3D4B91A93C41_d0e338925_href.png Binary file Symbian3/PDK/Source/GUID-A10EAF58-6B9F-55A5-B3E4-3D4B91A93C41_d0e338925_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A10EAF58-6B9F-55A5-B3E4-3D4B91A93C41_d0e344897_href.png Binary file Symbian3/PDK/Source/GUID-A10EAF58-6B9F-55A5-B3E4-3D4B91A93C41_d0e344897_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A1148010-887F-549D-9DA0-D36FF4661FFE.dita --- a/Symbian3/PDK/Source/GUID-A1148010-887F-549D-9DA0-D36FF4661FFE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A1148010-887F-549D-9DA0-D36FF4661FFE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> What are Access PointsThis topic describes the concept of an Access Point in the Communications Framework.

      A Layer can make a service available to the Layer immediately above it. The service is called an Access Point.

      Each Layer except the highest Layer can have an Access Point. The highest Layer is called the Application Layer. The Communications Framework can limit the use of an Access Point to selected clients.

      The following diagram shows five Access Points. Each Access Point offers a service to the Layer above it.

      Access Points in the Communications Framework -

      In this diagram the Link Layer has three bearers. Each bearer has an Access Point. An application or a Layer above the Link Layer does not need to know which bearer in the Link Layer is in use during the connection. The Communication Framework can replace the bearer with another bearer. The Communication Framework does not need to tell the application when the bearer changes. An application can continue to send and receive data when the change occurs.

      For example, consider an email application on a device. The device connects over a GPRS network. A short time later the device detects that a Wi-Fi connection is available. This event can occur if the device has moved from an office location to a coffee shop. The device can have a selection policy. The policy can state that the device switch to WiFi without the creation of a new connection.

      The selection policy contains a list of Access Points in order of priority. Device manufacturers, Network Operators and users can configure the order of priority. The priority can be based on items like available bandwidth and cost. An alternative to selection policy is the concept of connection preference. For example, a device connects with a specific bearer (for example, GPRS) unless the application changes the bearer explicitly.

      It is useful to note that an Internet Access Point (IAP) is a specialisation of the Access Point concept for a Link Layer. IAPs identify a service to be accessed through a concrete link-layer bearer. Each IAP has an associated Access Point with the same physical value.

      IAP Layers
      \ No newline at end of file +

      In this diagram the Link Layer has three bearers. Each bearer has an Access Point. An application or a Layer above the Link Layer does not need to know which bearer in the Link Layer is in use during the connection. The Communication Framework can replace the bearer with another bearer. The Communication Framework does not need to tell the application when the bearer changes. An application can continue to send and receive data when the change occurs.

      For example, consider an email application on a device. The device connects over a GPRS network. A short time later the device detects that a Wi-Fi connection is available. This event can occur if the device has moved from an office location to a coffee shop. The device can have a selection policy. The policy can state that the device switch to WiFi without the creation of a new connection.

      The selection policy contains a list of Access Points in order of priority. Device manufacturers, Network Operators and users can configure the order of priority. The priority can be based on items like available bandwidth and cost. An alternative to selection policy is the concept of connection preference. For example, a device connects with a specific bearer (for example, GPRS) unless the application changes the bearer explicitly.

      It is useful to note that an Internet Access Point (IAP) is a specialisation of the Access Point concept for a Link Layer. IAPs identify a service to be accessed through a concrete link-layer bearer. Each IAP has an associated Access Point with the same physical value.

      IAP Layers \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A12A66ED-2C8F-5CE6-8F3E-332B045A35B4.dita --- a/Symbian3/PDK/Source/GUID-A12A66ED-2C8F-5CE6-8F3E-332B045A35B4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A12A66ED-2C8F-5CE6-8F3E-332B045A35B4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,14 +1,22 @@ - - - - - -Advanced Pointers In ScreenPlay, the Window Server provides advanced pointer features, such as support for multiple pointers and proximity and pressure coordinates.

      Variant: ScreenPlay. Target audience: Application developers.

      Window Server - Client-Side Events Overview Pointer - Handling
      \ No newline at end of file + + + + + +Advanced +Pointers In ScreenPlay, the Window Server provides advanced pointer +features, such as support for multiple pointers and proximity and +pressure coordinates. +

      Variant: ScreenPlay. Target audience: Application developers.

      +
      +Window +Server Client-Side Events Overview +Pointer + Handling +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A12A6C54-7E9E-5ECD-A0BF-8F980160A0D2.dita --- a/Symbian3/PDK/Source/GUID-A12A6C54-7E9E-5ECD-A0BF-8F980160A0D2.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -prj_platforms

      prj_platforms list_of_platforms

      In the prj_platforms section, list the platforms that the component supports.

      If the platforms section is not found, bldmake assumes the default build targets.

      Note, building for the MARM platform is no longer supported. If MARM is specified as a platform, it will be expanded to mean ARM4, ARMI and THUMB, but really these platforms should be listed explicitly, or the default relied upon.

      Specifying the pseudo-platform DEFAULT at the start of the list will cause any subsequent platforms to be added to the default list, unless these platforms are prefixed with a hyphen (-), in which case these platforms will be removed from the list.

      Platforms can be listed on several separate lines if required.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A15EDC87-A6EF-40D8-AA78-B52449465FEA.dita --- a/Symbian3/PDK/Source/GUID-A15EDC87-A6EF-40D8-AA78-B52449465FEA.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A15EDC87-A6EF-40D8-AA78-B52449465FEA.dita Fri Jul 16 17:23:46 2010 +0100 @@ -29,7 +29,7 @@

      Use cases for the long-tap detector are shown in the figure below.

      Touch UI utilities API use cases - +

      To use the Touch UI utilities long-tap detector in your application, implement the following use cases.

      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A188606F-4A8E-5A85-A241-E15219960EFA.dita --- a/Symbian3/PDK/Source/GUID-A188606F-4A8E-5A85-A241-E15219960EFA.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A188606F-4A8E-5A85-A241-E15219960EFA.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,119 +9,117 @@ --> -Loader -OverviewThis topic describes the overview, purpose, key concepts and architecture -of loader. +Loader OverviewThis topic describes the overview, purpose, key concepts +and architecture of loader.
      • Purpose

      • Key concepts

      • Architectural relationships

      -
      Purpose

      The -loader makes EXEs and DLLs ready to run.

      The build tools compile the -source code into an executable file. An executable file is called a binary. -The build tools arrange the compiled code into EXEs and DLLs. The source code, -header files and other information that defines an executable file is defined -in an mmp file. The loader applies relocation information to the code and -data sections of EXEs and DLLs. The loader also loads DLLs that are referred -to by other EXEs and DLLs. EXEs and DLLs can then run in the process into -which they are loaded.

      -
      Key concepts

      The loader server

      The Symbian platform loader is a server. -The loader server has no public client interface. The client interface is -internal to Symbian platform. Requests to load an EXE or a DLL are passed -to the loader when you do the following:

        -
      • start a new process -- a call to RProcess::Create()

      • -
      • load a DLL - a call -to RLibrary::Load()

      • -
      • load a logical device -driver - a call to User::LoadLogicalDevice(). A logical -device driver is a type of DLL.

      • -
      • load a physical device -driver - a call to User::LoadPhysicalDevice(). A physical -device driver is a type of DLL.

      • -
      • load a file system - -a call to RFs::AddFileSystem(). A file system is a type -of DLL. A call to RFs::AddFileSystem() requires DiskAdmin +

        Purpose

        The loader makes EXEs and DLLs ready to run.

        The build +tools compile the source code into an executable file. An executable +file is called a binary. The build tools arrange the compiled code +into EXEs and DLLs. The source code, header files and other information +that defines an executable file is defined in an mmp file. The loader +applies relocation information to the code and data sections of EXEs +and DLLs. The loader also loads DLLs that are referred to by other +EXEs and DLLs. EXEs and DLLs can then run in the process into which +they are loaded.

        +
        Key +concepts

        The loader server

        The Symbian platform loader is a +server. The loader server has no public client interface. The client +interface is internal to Symbian platform. Requests to load an EXE +or a DLL are passed to the loader when you do the following:

          +
        • start a new +process - a call to RProcess::Create()

        • +
        • load a DLL - +a call to RLibrary::Load()

        • +
        • load a logical +device driver - a call to User::LoadLogicalDevice(). A logical device driver is a type of DLL.

        • +
        • load a physical +device driver - a call to User::LoadPhysicalDevice(). A physical device driver is a type of DLL.

        • +
        • load a file +system - a call to RFs::AddFileSystem(). A file +system is a type of DLL. A call to RFs::AddFileSystem() requires DiskAdmin capability. See ECapabilityDiskAdmin.

        • +
        • load a file +server extension - call to RFs::AddExtension(). +A file server extension is a type of DLL. This function requires DiskAdmin capability. See ECapabilityDiskAdmin.

        • -
        • load a file server extension -- call to RFs::AddExtension(). A file server extension -is a type of DLL. This function requires DiskAdmin capability. See ECapabilityDiskAdmin.

        • -
        • load a locale - a call -to TExtendedLocale::LoadLocale().

        • -

        Version -numbers

        The -reason for version numbers

        More than one version of an EXE can -exist on a device at the same time. More than one version of a DLL can exist -on a device at the same time. A device can store versions of an EXE or DLL -that are not compatible with an older version of that EXE or DLL.

        A -version number is a set of two numbers. The loader uses these numbers to identify -copies of the executable file. The two numbers are called the major version -number and the minor version number. The build tools encode the two numbers -into the header of the executable file. When a DLL is built, the version numbers -are encoded into the import library.

        The -structure of version information

        DLLs are the most common users -of versions. You assign new values to the version numbers of a DLL when you -change the published API of the DLL. Symbian recommends the following procedure:

          -
        • change the minor version -number if you make a change to a DLL that is backward compatible. An example -is a new function in the DLL.

        • -
        • change the major version -number if you make a change to a DLL that breaks an interface. An example -is the removal of a function or a change to the signature of a function. An -interface break is disruptive and must be prevented.

        • -

        The major and minor version numbers are defined in the .mmp file -that defines the source code, header files and other options that apply to -the executable file.

        If you do not specify version numbers, the build -tools apply the following default values:

          -
        • Major version number -: 10

        • -
        • Minor version number -: 0

        • -

        The major version number and the minor version number are stored -in the header of an EXE and DLL. The two numbers are stored in a single 32 -bit value. The high 16 bits hold the major version number. The low 16 bits -hold the minor version number.

        When you build a DLL, the build tools -encode the version numbers into the filename of the import library (the .lib file). -The build tools also create an import library that does not have the version -numbers encoded as part of the filename.The following example shows how the -version numbers are encoded in the filename. The major version number is (decimal) -11 and the minor version number is (decimal) 2. The version numbers in the -filename are in hexadecimal.

        abcdsrv{000B0002}.lib

        Notes:

          -
        • The left bracket and -the right bracket are part of the name.

        • -
        • The first four digits -after the open bracket are the hexadecimal representation of the major version -number.

        • -
        • The second four digits -are the hexadecimal representation of the minor version number.

        • -

        The build tools do not encode the version numbers in the filename -of the executable file.

        Loader -search rules

        EXEs and DLLs can exist on more than one drive. There -can be more than one version of an EXE and more than one version of a DLL. -The loader uses search rules to select the EXE and DLL to load.

        See Loader search rules

        Emulator

        Version numbers are stored in import files for DLLs -that run on devices and the emulator. Version numbers change how the loader -functions on devices, but not in the emulator. You cannot encode the version -numbers in the import library file name on the emulator.

        Tools support

        Use the build tools to apply version numbers -to EXEs and DLLs. You specify version numbers in the .mmp file -that describes the EXE or DLL.

        See also mmp -file syntax and Build -tools guide.

        +
      • load a locale +- a call to TExtendedLocale::LoadLocale().

      • +

      Version numbers

      The reason for version numbers

      More than one version +of an EXE can exist on a device at the same time. More than one version +of a DLL can exist on a device at the same time. A device can store +versions of an EXE or DLL that are not compatible with an older version +of that EXE or DLL.

      A version number is a set of two numbers. +The loader uses these numbers to identify copies of the executable +file. The two numbers are called the major version number and the +minor version number. The build tools encode the two numbers into +the header of the executable file. When a DLL is built, the version +numbers are encoded into the import library.

      The structure of version information

      DLLs are the +most common users of versions. You assign new values to the version +numbers of a DLL when you change the published API of the DLL. Symbian +recommends the following procedure:

        +
      • change the minor +version number if you make a change to a DLL that is backward compatible. +An example is a new function in the DLL.

      • +
      • change the major +version number if you make a change to a DLL that breaks an interface. +An example is the removal of a function or a change to the signature +of a function. An interface break is disruptive and must be prevented.

      • +

      The major and minor version numbers are defined in the .mmp file that defines the source code, header files and +other options that apply to the executable file.

      If you do +not specify version numbers, the build tools apply the following default +values:

        +
      • Major version +number : 10

      • +
      • Minor version +number : 0

      • +

      The major version number and the minor version number are +stored in the header of an EXE and DLL. The two numbers are stored +in a single 32 bit value. The high 16 bits hold the major version +number. The low 16 bits hold the minor version number.

      When +you build a DLL, the build tools encode the version numbers into the +filename of the import library (the .lib file). +The build tools also create an import library that does not have the +version numbers encoded as part of the filename.The following example +shows how the version numbers are encoded in the filename. The major +version number is (decimal) 11 and the minor version number is (decimal) +2. The version numbers in the filename are in hexadecimal.

      abcdsrv{000B0002}.lib

      Notes:

        +
      • The left bracket +and the right bracket are part of the name.

      • +
      • The first four +digits after the open bracket are the hexadecimal representation of +the major version number.

      • +
      • The second four +digits are the hexadecimal representation of the minor version number.

      • +

      The build tools do not encode the version numbers in the +filename of the executable file.

      Loader search rules

      EXEs and DLLs can exist on more +than one drive. There can be more than one version of an EXE and more +than one version of a DLL. The loader uses search rules to select +the EXE and DLL to load.

      See Loader search rules

      Emulator

      Version numbers are stored in import files +for DLLs that run on devices and the emulator. Version numbers change +how the loader functions on devices, but not in the emulator. You +cannot encode the version numbers in the import library file name +on the emulator.

      Tools support

      Use the build tools to apply version +numbers to EXEs and DLLs. You specify version numbers in the .mmp file that describes the EXE or DLL.

      See also MMP file syntax in Symbian Tools Guide > Building + > Symbian Build System (SBSv1) > Build tools reference.

      Architectural -relationships

      The loader is a server that runs in a separate thread -in the file server process. The loader is built as part of the file server.

      The -loader server starts when the file server starts. The file server starts after -the kernel is loaded at system start.

      The loader runs on the user -side, but calls the kernel for services that are not available to general -applications. Examples of services are process creation and code segment creation. -A code segment is an object that represents a piece of code loaded into RAM. -A code segment also represents a piece of code that runs directly from ROM. -The kernel services that the loader uses are protected. The file server process -only is allowed to access these services.

      The following picture is -an example of program flow. In this example, a client calls RLibrary::Load(), -which exists in euser.dll. Internal functions make client-server -calls to the loader server. The loader server code exists in efile.exe. -The loader server uses kernel services.

      - +relationships

      The loader is a server that runs in a separate +thread in the file server process. The loader is built as part of +the file server.

      The loader server starts when the file server +starts. The file server starts after the kernel is loaded at system +start.

      The loader runs on the user side, but calls the kernel +for services that are not available to general applications. Examples +of services are process creation and code segment creation. A code +segment is an object that represents a piece of code loaded into RAM. +A code segment also represents a piece of code that runs directly +from ROM. The kernel services that the loader uses are protected. +The file server process only is allowed to access these services.

      The following picture is an example of program flow. In this +example, a client calls RLibrary::Load(), which +exists in euser.dll. Internal functions make +client-server calls to the loader server. The loader server code exists +in efile.exe. The loader server uses kernel services.

      +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A1D2C673-3B91-403A-800B-5E1504FB19EE.dita --- a/Symbian3/PDK/Source/GUID-A1D2C673-3B91-403A-800B-5E1504FB19EE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A1D2C673-3B91-403A-800B-5E1504FB19EE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ your application around the Symbian Ecam camera utility. To make use of the device camera to capture an image, the application needs to repeat the steps described in the illustration below.

      -The steps required to capture a still image +The steps required to capture a still image

      Important implementation considerations include:

      • The settings you can use in your application depend on what diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A1DBE03F-728E-4F31-BE74-5BDA3906C8DD.dita --- a/Symbian3/PDK/Source/GUID-A1DBE03F-728E-4F31-BE74-5BDA3906C8DD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A1DBE03F-728E-4F31-BE74-5BDA3906C8DD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ the visual appearance of the UI. Themes, also known as skins, only affect the visual appearance of the UI, the underlying architecture, interaction style, language settings, and general functionality are not affected.

        -Personalization through themes +Personalization through themes

        The Symbian platform provides an API to allow you to support themes in your applications. Although a mobile device based on the Symbian platform can contain several themes, mobile device users can only activate one theme diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A1F037FE-0D88-5108-B96E-4ADE6B3A4A3E.dita --- a/Symbian3/PDK/Source/GUID-A1F037FE-0D88-5108-B96E-4ADE6B3A4A3E.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -inflatecompresstarget

        inflatecompresstarget

        Use the inflatecompresstarget statement to specify that the target executable should be compressed. In detail, the code and data sections of the executable are compressed with the Deflate, Huffman+LZ77 algorithm.

        Compression allows the stored executable to use less space on the file system. The executable loader decompresses the file when it is loaded.

        See also compresstarget.

        See also bytepaircompresstarget.

        See also nocompresstarget.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A1F0D18B-5A89-58FC-9361-7B0A9786C826.dita --- a/Symbian3/PDK/Source/GUID-A1F0D18B-5A89-58FC-9361-7B0A9786C826.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A1F0D18B-5A89-58FC-9361-7B0A9786C826.dita Fri Jul 16 17:23:46 2010 +0100 @@ -10,9 +10,9 @@ pdrstore: Creating a Printer Driver using pdr files -
        Description

        This example demonstrates -how to load printer driver information files and create a printer -driver. The purpose of the PdrStore API is to:

          +
          Description

          This example demonstrates how to load printer driver information +files and create a printer driver. The purpose of the PdrStore API +is to:

          • Provide access to the printer driver information contained in .pdr files for applications to build a printer driver list

          • Load and create @@ -21,7 +21,8 @@ driver, then creates a session with the font and bitmap server. This is detailed in the following sections.

          Download

          Click on the following link to download the example: PDRStore.zip

          Click: browse to view the example code.

          -
          Create a printer driver void CPdrExample::CreatePrinterDriver()

          This function provides the following funtionality:

            +
            Create +a printer driver void CPdrExample::CreatePrinterDriver()

            This function provides the following funtionality:

            • Opens a printer driver information (.pdr) file using CPrinterDriver::OpenPdrL(const TDesC&)

            • Gets the total @@ -30,10 +31,13 @@

            • Creates a printer device using CPrinterDriver::CreatePrinterDeviceL(TInt).

            -
            Display the supported typefaces void CPdrExample::DisplayTypefaces()

            Gets the list of supported typefaces using CPrinterDevice::TypefaceSupport(TTypefaceSupport +

            Display +the supported typefaces void CPdrExample::DisplayTypefaces()

            Gets the list of supported typefaces using CPrinterDevice::TypefaceSupport(TTypefaceSupport &,TInt) const and displays them.

            -
            Create a printer control void CPdrExample::CreatePrinterControl()

            Creates a printer control using CPrinterDevice::CreateControlL().

            -
            Preparing for printing void CPdrExample::PrintPages()

            This function prepares the printer driver for printing the pages. +

            Create +a printer control void CPdrExample::CreatePrinterControl()

            Creates a printer control using CPrinterDevice::CreateControlL().

            +
            Preparing +for printing void CPdrExample::PrintPages()

            This function prepares the printer driver for printing the pages. It involves the following:

            • Gets the number of bands per page using CPrinterControl::BandsPerPage()

            • @@ -47,11 +51,12 @@ print process using CPrinterControl::QueueEndPrint(TRequestStatus &) when no more bands are available.

            -
            Class Summary

            CPrinterDevice

            CPrinterControl

            CPrinterDriver

            CGraphicsContext

            -
            Usage

            This is a console application, so -does not have a GUI. It builds an executable called pdrstoreexample.exe in the standard location (\epoc32\release\winscw\ <build_variant> for CodeWarrior). The Symbian platform -build process describes how to build this application. After -launching the executable, depending on the emulator you are using, -you may need to task away from the app launcher/shell screen to view -the console.

            +
            Class +Summary

            CPrinterDevice

            CPrinterControl

            CPrinterDriver

            CGraphicsContext

            +
            Usage

            This is a console application, so does not have a GUI. It builds +an executable called pdrstoreexample.exe in the +standard location (\epoc32\release\winscw\ <build_variant> for CodeWarrior). The Symbian platform build +process describes how to build this application. After launching the +executable, depending on the emulator you are using, you may need +to task away from the app launcher/shell screen to view the console.

            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A2031A61-3319-4FBA-BC71-AC1327182053.dita --- a/Symbian3/PDK/Source/GUID-A2031A61-3319-4FBA-BC71-AC1327182053.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A2031A61-3319-4FBA-BC71-AC1327182053.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ and Standard Template Library Documentation

            C++ IOStream library documentation can be found at http://www.slac.stanford.edu/comp/unix/gnu-info/iostream_toc.html.

            Similarly, Standard Template Library (STL) documentation can be found at http://www.informatik.uni-freiburg.de/~danlee/fun/STL-doc/STL.html.

            -
            Changes to +<section id="GUID-BF521201-7BE5-4AC5-8D35-1E15AC4887C7-GENID-1-12-1-14-1-1-9-1-5-1-3-2"><title>Changes to the MMP file

            Add needed libraries used by the MMP file structure:

            If developers want to use any of Standard C++ library, they must link to the corresponding library in the MMP file using the LIBRARY keyword.

            If @@ -53,7 +53,7 @@ more stack space. The recommended stack size is 10K. To set the stack size to 10K add: EPOCSTACKSIZE 0x10000

            in the MMP file.

            -
            Example using <codeph>main()</codeph> +
            Example using <codeph>main()</codeph>

            A simple example using main() as an entry point is described below. The example writes a text to a console.

            • Modify the MMP file as mentioned before.

            • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A25FE08D-F91E-5C77-969D-569941974E6E.dita --- a/Symbian3/PDK/Source/GUID-A25FE08D-F91E-5C77-969D-569941974E6E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A25FE08D-F91E-5C77-969D-569941974E6E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,7 +12,7 @@ LBS Integration and Configuration Guide OverviewThis document gives an overview of how device creators integrate the LBS subsystem into their products. -
              Introduction

              A +

              Introduction

              A device creator must complete a set of tasks to create a working LBS subsystem that can be used in a product. The precise configuration of the LBS subsystem depends on which features of LBS are required.

              The documents in this @@ -21,7 +21,7 @@

              Required background

              Read LBS Architecture Overview for background information on the components of LBS on the Symbian platform.

              -
              LBS configurations

              There +

              LBS configurations

              There are two main LBS subsystem configurations that a device creator can build. Follow the links for more information on each of these.

              1. Full diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A27A05A2-B161-54D2-92E0-8620B01BFD44.dita --- a/Symbian3/PDK/Source/GUID-A27A05A2-B161-54D2-92E0-8620B01BFD44.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Polymorphic DLL targettype summary

                The following table summarises the polymorphic DLL types to which the build tools give special support through the targettype keyword. Projects using one of these target types do not require a DEF file to specify the frozen exports: the build tools will assume the correct frozen exports for the type.

                Description

                Target type

                UID2

                animation

                ani

                0x10003b22

                file system

                fsy

                0x100039df

                ECom plug-in

                PLUGIN

                0x10009D8D

                front-end processor

                fep

                0x10005e32

                notifier for text window server

                TEXTNOTIFIER2

                0x101fe38b

                printer device

                PDL

                0x10003b1c

                \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita --- a/Symbian3/PDK/Source/GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A29FD82C-B3CC-5862-8DAB-1398A61D8B1F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -62,7 +62,7 @@
              2. Managing HTTP digest security settings

            CSIP, MSIPObserver, CSIPConnection and MSIPConnectionObserver

            - +

            An application creates a single instance of the CSIP class, and implements the callback functions defined by MSIPObserver. The CSIP uses the MSIPObserver functions. @@ -76,14 +76,14 @@ application can have many CSIPConnection objects, but each of them must have a different IAP.

            Registration services

            - +

            An existing CSIPConnection is required to create an instance of CSIPRegistrationBinding. The CSIPRegistrationBinding class provides services for registration, updating the registration, and deregistration. This class also provides instructions to the SIP stack to automatically refresh the registration, and to query and set the outbound proxy used by the registration.

            SIP dialog associations

            - +

            CSIPDialogAssocBase is the base class for SIP dialog associations, such as CSIPInviteDialogAssoc, CSIPSubscribeDialogAssoc, CSIPReferDialogAssoc and CSIPNotifyDialogAssoc. The CSIPDialogAssocBase class is used to obtain the associated SIP dialog, for the associated CSIPDialog instance, @@ -104,7 +104,7 @@ an application to define and send NOTIFY requests.

          Sent and received network requests

          - +

          When a SIP request is sent to the network, the SIP Client API implementation creates a CSIPClientTransaction object and returns it to the application. A CSIPClientTransaction object represents @@ -122,7 +122,7 @@ the transaction type. Some operations are only allowed when the transaction is in a certain state. Note: The SIP Client API creates instances of CSIPClientTransaction and CSIPServerTransaction and they cannot be created by the application.

          SIP message related classes

          - +

          When a SIP request is sent to the network, the SIP Client API implementation creates a CSIPClientTransaction object and returns it to the application. A CSIPClientTransaction object represents @@ -140,7 +140,7 @@ transaction type. Some operations are only allowed when the transaction is in a certain state. Note: The SIP Client API creates instances of CSIPClientTransaction and CSIPServerTransaction and they cannot be created by the application.

          Automatically refreshing a SIP request

          - +

          The SIP stack automatically refreshes a SIP request using the CSIPRefresh object. REGISTER, SUBSCRIBE and a request outside the dialog are refreshed. After sending a refresh request, the application queries the state of the refresh from CSIPRefresh.

          CSIPRefresh provides @@ -148,7 +148,7 @@ dialog. The CSIPRegistrationBinding and CSIPSubscribeDialogAssoc classes are used to update and terminate a refreshed REGISTER or SUBSCRIBE.

          Managing HTTP digest security settings

          - +

          An application must create an instance of the CSIP class to use CSIPHttpDigest. The CSIPHttpDigest class manages HTTP digest security settings and contains only static functions.

          diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A2EFD9AD-F230-545C-8C5D-193F717B9FE2_d0e61750_href.png Binary file Symbian3/PDK/Source/GUID-A2EFD9AD-F230-545C-8C5D-193F717B9FE2_d0e61750_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A2EFD9AD-F230-545C-8C5D-193F717B9FE2_d0e65984_href.png Binary file Symbian3/PDK/Source/GUID-A2EFD9AD-F230-545C-8C5D-193F717B9FE2_d0e65984_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A2F691C8-9525-4028-BF82-70E9D50630C6.dita --- a/Symbian3/PDK/Source/GUID-A2F691C8-9525-4028-BF82-70E9D50630C6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A2F691C8-9525-4028-BF82-70E9D50630C6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,8 +15,8 @@ prompt the user to select the connection.

          To prompt the user select the destination network:

          - -Start the connection + +Start the connection with RConnection::Start(ECommDbDialogPrefPrompt). RConnection handle is returned to the application. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A308643D-6EEA-5C41-BD9C-5DA76EE83BA6_d0e200369_href.jpg Binary file Symbian3/PDK/Source/GUID-A308643D-6EEA-5C41-BD9C-5DA76EE83BA6_d0e200369_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A308643D-6EEA-5C41-BD9C-5DA76EE83BA6_d0e206378_href.jpg Binary file Symbian3/PDK/Source/GUID-A308643D-6EEA-5C41-BD9C-5DA76EE83BA6_d0e206378_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A3155AA1-8D42-5855-AD49-089DC510BCB0_d0e597123_href.png Binary file Symbian3/PDK/Source/GUID-A3155AA1-8D42-5855-AD49-089DC510BCB0_d0e597123_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A3155AA1-8D42-5855-AD49-089DC510BCB0_d0e615507_href.png Binary file Symbian3/PDK/Source/GUID-A3155AA1-8D42-5855-AD49-089DC510BCB0_d0e615507_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A3155AA1-8D42-5855-AD49-089DC510BCB0_d0e625017_href.png Binary file Symbian3/PDK/Source/GUID-A3155AA1-8D42-5855-AD49-089DC510BCB0_d0e625017_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A328F9E3-7D91-594A-A589-E8CE5FA9227A_d0e296153_href.png Binary file Symbian3/PDK/Source/GUID-A328F9E3-7D91-594A-A589-E8CE5FA9227A_d0e296153_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A328F9E3-7D91-594A-A589-E8CE5FA9227A_d0e302145_href.png Binary file Symbian3/PDK/Source/GUID-A328F9E3-7D91-594A-A589-E8CE5FA9227A_d0e302145_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A3301ED7-8FD5-580B-B365-4BE12FF2F3AA.dita --- a/Symbian3/PDK/Source/GUID-A3301ED7-8FD5-580B-B365-4BE12FF2F3AA.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -source

          source source-file-list

          Use the source statement to specify source files.

          Each source statement may specify an arbitrary number of source files. Each source file should be specified including its extension, e.g. hello.cpp.

          There may be an arbitrary number of source statements in the project description file relative to each sourcepath.

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A331AA9C-ECEC-4497-B45A-7C08845DE0A4_d0e1644_href.png Binary file Symbian3/PDK/Source/GUID-A331AA9C-ECEC-4497-B45A-7C08845DE0A4_d0e1644_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A331AA9C-ECEC-4497-B45A-7C08845DE0A4_d0e1648_href.png Binary file Symbian3/PDK/Source/GUID-A331AA9C-ECEC-4497-B45A-7C08845DE0A4_d0e1648_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A36B7C77-F0F7-599A-83BC-26B4A80496BD.dita --- a/Symbian3/PDK/Source/GUID-A36B7C77-F0F7-599A-83BC-26B4A80496BD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A36B7C77-F0F7-599A-83BC-26B4A80496BD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -26,7 +26,7 @@ diagram below illustrates the key relationships between the MIME Content Policy utility and the other subsystems:

          Class diagram of the MIME Content Policy - + diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A3B58436-07E4-565B-800B-86435D205461.dita --- a/Symbian3/PDK/Source/GUID-A3B58436-07E4-565B-800B-86435D205461.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A3B58436-07E4-565B-800B-86435D205461.dita Fri Jul 16 17:23:46 2010 +0100 @@ -26,7 +26,7 @@ bottoms out when an entity which is already trusted is reached; that entity is usually self signed. This process is illustrated in the figure below:

          Certificate chain - +

          The set of certificates from an EE up to a trusted root CA certificate is called a certificate chain. Once a certificate chain has been constructed ,the EE's key pair at the start can be validated.

          diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A3E77067-7982-5803-A274-0C8F2562B483.dita --- a/Symbian3/PDK/Source/GUID-A3E77067-7982-5803-A274-0C8F2562B483.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Unified Trace Solution

          This guide provides a detailed overview of the Unified Trace solution, and guidelines on how to use it.

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A3EBB297-1494-579C-83D5-8FDBBD01B674.dita --- a/Symbian3/PDK/Source/GUID-A3EBB297-1494-579C-83D5-8FDBBD01B674.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A3EBB297-1494-579C-83D5-8FDBBD01B674.dita Fri Jul 16 17:23:46 2010 +0100 @@ -19,7 +19,7 @@ // blit only the piece of the bitmap indicated by bmpPieceRect TPoint pos(100,100); -gc.BitBlt(pos, bitmap, bmpPieceRect);
          Masked bitmap block transfer

          Masks can be used to select which parts of a bitmap are drawn by CBitmapContext::BitBltMasked().

          Masks can be used to not display pixels of the source bitmap if their corresponding mask pixel is black, or, alternatively, where the mask is white (called an inverted mask).

          The following figure shows successively a source bitmap, a mask, and the outcome when they are blitted with BitBltMasked().

          // Load the mask bitmap, just like any other +gc.BitBlt(pos, bitmap, bmpPieceRect);
          Masked bitmap block transfer

          Masks can be used to select which parts of a bitmap are drawn by CBitmapContext::BitBltMasked().

          Masks can be used to not display pixels of the source bitmap if their corresponding mask pixel is black, or, alternatively, where the mask is white (called an inverted mask).

          The following figure shows successively a source bitmap, a mask, and the outcome when they are blitted with BitBltMasked().

          // Load the mask bitmap, just like any other CFbsBitmap* maskBitmap = new (ELeave) CFbsBitmap(); CleanupStack::PushL(maskBitmap); User::LeaveIfError(maskBitmap-> diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A3F8A323-EF4B-537F-A3D1-27A2048D5A11.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-A3F8A323-EF4B-537F-A3D1-27A2048D5A11.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Universal Software Install Framework Overview

          USIF provides uniform standard interfaces for installing, registering, verifying, restoring and uninstalling software packages on a device, such as SIS files.

          Description

          USIF provides support for three areas of functionality:

          • Install and Uninstall: USIF provides a standard interfaces for installing, upgrading or uninstalling software components on a phone. Plug-in software installers can be created for different package formats

          • Transaction support: USIF maintains the integrity of the file system by using atomic file system transactions during installation. Transactions are committed on success or rolled back on failure.

          • Software component management registration: This involves Software Component Registry (SCR) , which USIF uses to maintain a registry for managing of both native and non-native software packages installed on the phone.

          Components

          USIF includes the following components:

          • Software Installation Framework (SIF): The Software Installation Framework (SIF) provides a uniform API for managing installation, uninstallation or upgrading of software on a device phone.

          • Software Transaction Services (STS): Software Transaction Services (STS) help applications to maintain file system integrity during the installation. STS helps restoration of a file system if an installation gets interrupted or fails for any reason, such as battery drain or server crash.

          • Software Component Registry (SCR): The Software Component Registry (SCR) is a unified registry for managing native components and packages (installed using SIS files), and non-native software packages, such as SIS installer and Python.

          SCR SIF STS
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A40C75A2-59FF-5472-B279-8B5FBFF68794.dita --- a/Symbian3/PDK/Source/GUID-A40C75A2-59FF-5472-B279-8B5FBFF68794.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A40C75A2-59FF-5472-B279-8B5FBFF68794.dita Fri Jul 16 17:23:46 2010 +0100 @@ -50,7 +50,7 @@ client application and the server-side CRP work together:

          Figure 1: Relationship of a client application and the CRP - +
          Client UI application
          diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A4426CEC-80F1-53F4-8838-D069FA758ACD.dita --- a/Symbian3/PDK/Source/GUID-A4426CEC-80F1-53F4-8838-D069FA758ACD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A4426CEC-80F1-53F4-8838-D069FA758ACD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,49 +1,38 @@ - - - - - -FontsShell: -fonts -

          Note: This example is designed to work with TechView and there -is no guarantee that it will work with other interfaces.

          -
          Description

          FontsShell provides -an application shell and two concrete controls.

          CGraphicExampleControl is -a control class, derived from CCoeControl, which links the -app shell to the particular controls.

          CHelloControl illustrates -the drawing of text using a standard font.

          CFontControl illustrates -the use of fonts.

          -
          Download

          Click on the following link to download -the example: Fonts.zip

          Download some additional files required -by the example: CommonGraphicsExampleFiles

          Click: browse to view the example code.

          View the additional -files: browse.
          -
          Class Summary

          By the hello control:

          TRect

          CWindowGc

          CFont

          By the fonts control:

          CWindowGc

          TTypefaceSupport

          TFontSpec

          TZoomFactor

          MGraphicsDeviceMap

          -
          Build

          The source code for this example application -can be found in the directory:

          examples\Graphics\Fonts

          This -source code may be in the directory in which you installed the Symbian platform, -or it may be in the src\common\developerlibrary\ directory. -The directory includes the two project files needed for building the example: bld.inf and -the .mmp file.

          The -Symbian build process describes how to build this application. For -the emulator, an application called FontsShell.exe is -created in epoc32\release\winscw\<udeb or urel>\.

          -
          Usage
            -
          1. Launch the emulator:

            \epoc32\release\winscw\<urel -or udeb>\EPOC.EXE.

          2. -
          3. Click on FONTSSHELL to -run the application. If using the TechView emulator, this will be in -the Extras menu.

          4. -
          5. The controls are listed -on the menu List of Programs. -Press the appropriate menu item to select a specific control.

          6. -
          7. Step through each phase -of the example by pressing the space bar or by tapping on the window drawn -by that example.

          8. -
          + + + + + +FontsShell: fonts +

          Note: This example is designed to work with TechView and +there is no guarantee that it will work with other interfaces.

          +
          Description

          FontsShell provides an application shell +and two concrete controls.

          CGraphicExampleControl is a control class, derived from CCoeControl, which +links the app shell to the particular controls.

          CHelloControl illustrates the drawing of text using a standard font.

          CFontControl illustrates the use of fonts.

          +
          Download

          Click on the following link to download the example: Fonts.zip

          Download some additional files +required by the example: CommonGraphicsExampleFiles

          Click: browse to view the example code.

          View the +additional files: browse.
          +
          Class +Summary

          By the hello control:

          TRect

          CWindowGc

          CFont

          By the fonts control:

          CWindowGc

          TTypefaceSupport

          TFontSpec

          TZoomFactor

          MGraphicsDeviceMap

          +
          Build

          The source code for this example application can be found in +the directory:

          examples\Graphics\Fonts

          This source code may be in the directory in which you installed +the Symbian platform, or it may be in the src\common\developerlibrary\ directory. The directory includes the two project files needed for +building the example: bld.inf and the .mmp file.

          The Symbian build process describes +how to build this application. For the emulator, an application called FontsShell.exe is created in epoc32\release\winscw\<udeb +or urel>\.

          +
          Usage
            +
          1. Launch the emulator:

            \epoc32\release\winscw\<urel or udeb>\EPOC.EXE.

          2. +
          3. Click on FONTSSHELL to run the application. If using the TechView emulator, this will be in the Extras menu.

          4. +
          5. The controls +are listed on the menu List of Programs. Press the appropriate menu item to select a specific control.

          6. +
          7. Step through +each phase of the example by pressing the space bar or by tapping +on the window drawn by that example.

          8. +
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A4559463-7665-5733-9AEB-2316C991AE76_d0e608818_href.jpg Binary file Symbian3/PDK/Source/GUID-A4559463-7665-5733-9AEB-2316C991AE76_d0e608818_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A4559463-7665-5733-9AEB-2316C991AE76_d0e647980_href.jpg Binary file Symbian3/PDK/Source/GUID-A4559463-7665-5733-9AEB-2316C991AE76_d0e647980_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A467E933-C4B4-5518-96D6-471E44B216B3.dita --- a/Symbian3/PDK/Source/GUID-A467E933-C4B4-5518-96D6-471E44B216B3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A467E933-C4B4-5518-96D6-471E44B216B3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Advanced Pond GuideThis topic describes Comms ponds in more detail.
          APIs

          The following diagram is a partial representation of the class relationships for RCommsBufPond.

          Comms pond -

          An RCommsBufPond instance manages a number of memory pools. Each pool contains buffers of identical size.

          The Comms Data Plane uses chains of buffers to transfer data up and down the stack. For more information about buffers and chains, see Comms Buffers (MBuf) and Comms Chains.

          Lifecycle
          1. c32start.exe reads the pond configuration stored in the c32start.ini file (see Pond Configuration Reference).

          2. c32start.exe provides the configuration information to the Root Server when initializing it. For more information about the C32 process, see Root Server.

          3. The Root Server creates the pond with the specified pools.

          4. The Root Server puts the pond handle in the TLS of each thread in c32exe.exe (see TLS Look-up Reduction Tutorial).

          Overview Comms Buffers (MBuf) +

          An RCommsBufPond instance manages a number of memory pools. Each pool contains buffers of identical size.

          The Comms Data Plane uses chains of buffers to transfer data up and down the stack. For more information about buffers and chains, see Comms Buffers (MBuf) and Comms Chains.

          Lifecycle
          1. c32start.exe reads the pond configuration stored in the c32start.ini file (see Pond Configuration Reference).

          2. c32start.exe provides the configuration information to the Root Server when initializing it. For more information about the C32 process, see Root Server.

          3. The Root Server creates the pond with the specified pools.

          4. The Root Server puts the pond handle in the TLS of each thread in c32exe.exe (see TLS Look-up Reduction Tutorial).

          Overview Comms Buffers (MBuf) and Comms Chains Pond Configuration Reference \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A4799558-AF8C-5E97-9B03-7D1C04FEC243.dita --- a/Symbian3/PDK/Source/GUID-A4799558-AF8C-5E97-9B03-7D1C04FEC243.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A4799558-AF8C-5E97-9B03-7D1C04FEC243.dita Fri Jul 16 17:23:46 2010 +0100 @@ -37,7 +37,7 @@ ...

          The dotted line in the following diagram shows the effect of this:

          - +

          Note that for process-relative handles, there is no need to use Duplicate(); the handle passed from thread A to thread B can be used directly.

          Making specific handles from generic handles

          There diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A480F734-9EDF-5E29-AC96-039B71B22AC3_d0e375282_href.png Binary file Symbian3/PDK/Source/GUID-A480F734-9EDF-5E29-AC96-039B71B22AC3_d0e375282_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A480F734-9EDF-5E29-AC96-039B71B22AC3_d0e381126_href.png Binary file Symbian3/PDK/Source/GUID-A480F734-9EDF-5E29-AC96-039B71B22AC3_d0e381126_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A4B391F0-058F-5B51-8D28-6A7B5C4A1BB9.dita --- a/Symbian3/PDK/Source/GUID-A4B391F0-058F-5B51-8D28-6A7B5C4A1BB9.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -v5.1-v6.1 legacy Unicode resource format

          This page describes the resource file format introduced with the first Unicode version of Symbian OS, v5.1. This was based on the resource-file format used from the initial version of Symbian platform. The format uses no compression at all.

          Resource files in this format are generated by the resource compiler from v5.1 up to, but not including, Symbian OS v7.0.

          Number of bytes

          Description

          2

          This two-byte integer (in little-endian byte order) stores the file-position of the start of the resource index (see the last row of this table for a description of the resource index).

          2

          This two-byte integer (in little-endian byte order) stores 1 + the size of the resource index in bytes. The addition of 1 was to distinguish this resource file format from an older, now obsolete, resource-file format.

          [any]

          This contains the data for all the resources stored in order, one after another with no byte-padding between them. The binary data of each resource is laid out exactly as specified in the resource definition, with the exception that extra padding bytes (arbitrarily 0xab) are inserted in front of any Unicode text-string that would otherwise not be aligned on a two-byte boundary relative to the start of that resource’s data.

          (number_of_resources+1)*2

          This is the resource index which is a series of two-byte integers (in little-endian byte order), one for each resource in the resource file, each storing the file-position of that resource’s data (see row immediately above).

          This is followed by a two-byte integer (in little-endian byte order), which is the file-position one byte past the end of the last resource’s data. This is so that working out the length of a resource’s data is trivially done by subtracting the file-position stored in that resource’s index-entry from the file-position in the next index-entry.

          This last entry in the resource index, which stores the file-position one byte past the end of the last resource’s data, can also be thought of as storing the file-position of the start of the resource index. This means that resource files in this format have the same two-byte integer at the very start and at the very end of the file.

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A4F3738C-CBFD-4151-9132-26FE05966715.dita --- a/Symbian3/PDK/Source/GUID-A4F3738C-CBFD-4151-9132-26FE05966715.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A4F3738C-CBFD-4151-9132-26FE05966715.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> CBA buttons Application with Options and Exit softkeys in portrait -and landscape views +and landscape views

          The Symbian platform uses Control Button Area (CBA) resources to set the options in the control pane above the softkeys. CBA resources map the text that appears above the softkeys in the control pane with commands that diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A50BBBE2-2E23-5AEE-BF53-9EF54FD7F00E_d0e548459_href.jpg Binary file Symbian3/PDK/Source/GUID-A50BBBE2-2E23-5AEE-BF53-9EF54FD7F00E_d0e548459_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A50BBBE2-2E23-5AEE-BF53-9EF54FD7F00E_d0e555915_href.jpg Binary file Symbian3/PDK/Source/GUID-A50BBBE2-2E23-5AEE-BF53-9EF54FD7F00E_d0e555915_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A51AB0B8-A13D-52D0-BEF8-435F76B30941_d0e228191_href.png Binary file Symbian3/PDK/Source/GUID-A51AB0B8-A13D-52D0-BEF8-435F76B30941_d0e228191_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A51AB0B8-A13D-52D0-BEF8-435F76B30941_d0e234190_href.png Binary file Symbian3/PDK/Source/GUID-A51AB0B8-A13D-52D0-BEF8-435F76B30941_d0e234190_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A51C3E48-3ED0-519B-A128-C5175D7E175B_d0e394493_href.png Binary file Symbian3/PDK/Source/GUID-A51C3E48-3ED0-519B-A128-C5175D7E175B_d0e394493_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A51C3E48-3ED0-519B-A128-C5175D7E175B_d0e400346_href.png Binary file Symbian3/PDK/Source/GUID-A51C3E48-3ED0-519B-A128-C5175D7E175B_d0e400346_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A51E334E-F410-55A9-AB07-82F8A1D113B4.dita --- a/Symbian3/PDK/Source/GUID-A51E334E-F410-55A9-AB07-82F8A1D113B4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A51E334E-F410-55A9-AB07-82F8A1D113B4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -46,7 +46,7 @@ the components.

          The Graphics package in the Symbian Foundation System Model - +
        Technologies
        • For information on the diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A5510456-A5EB-59EC-B146-74D58A118875.dita --- a/Symbian3/PDK/Source/GUID-A5510456-A5EB-59EC-B146-74D58A118875.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A5510456-A5EB-59EC-B146-74D58A118875.dita Fri Jul 16 17:23:46 2010 +0100 @@ -50,7 +50,7 @@ interface CGPSSetClockBase is shown in figure 2.

          Figure 2. CGPSSetClockBase is the interface for LBS set clock plug-in classes. - +

          To create a set clock plug-in, licensees create a class that derives from CGPSSetClockBase and package it as an ECom DLL.

          See How to implement a LBS set clock plug-in DLL for more information.

        diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A568F9D3-58E3-58D6-8A6E-4EC6BEC41A4D_d0e389992_href.png Binary file Symbian3/PDK/Source/GUID-A568F9D3-58E3-58D6-8A6E-4EC6BEC41A4D_d0e389992_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A568F9D3-58E3-58D6-8A6E-4EC6BEC41A4D_d0e395845_href.png Binary file Symbian3/PDK/Source/GUID-A568F9D3-58E3-58D6-8A6E-4EC6BEC41A4D_d0e395845_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A5693758-495B-598E-A514-24C48D459BB6.dita --- a/Symbian3/PDK/Source/GUID-A5693758-495B-598E-A514-24C48D459BB6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A5693758-495B-598E-A514-24C48D459BB6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -23,7 +23,7 @@ gc.DrawEllipse(ellipseRect); ...
    How to draw an arc

    An arc is drawn as a portion of an ellipse. As well as the ellipse rectangle, the call must specify the two points: the first defines one end of a line from the geometric center of the ellipse; the point of intersection between this line and the ellipse defines the start point of the arc. The second specified point acts in the same way for the end of the arc.

    Arc construction -

    The example code here shows how an arc is drawn in an anti-clockwise direction using constructionPoint1 and constructionPoint2 as the start to the end points.

    ... +

    The example code here shows how an arc is drawn in an anti-clockwise direction using constructionPoint1 and constructionPoint2 as the start to the end points.

    ... // draw an arc centered in the rectangle gc.DrawArc(ellipseRect,constructionPoint1,constructionPoint2); ...

    You can reverse the pair of construction point arguments to draw the other half of the ellipse. The construction points and screen center are also drawn, with dotted construction lines:

    ... @@ -42,7 +42,7 @@ gc.Plot(screenCenterPoint); ...
    Drawing pie slices

    The example code here shows how two pie slices are drawn. A pie slice is the area bounded by:

    an arc as used above

    the straight line from the start point from the geometric center of the ellipse

    the straight line from the end point from the geometric center of the ellipse

    Pie slice construction -

    Solid and patterned brush styles are used to fill the portions of the elliptical disc.

    1. Use SetBrushStyle() to set the brush style to solid.

    2. Use SetBrushColour() to set the brush color to black.

    3. Use DrawPie() to draw a pie slice.

    4. Use SetBrushStyle() to set the patterned brush style.

    5. Use DrawPie() and reverse the pair of construction point arguments so that the two pie slices together form a whole ellipse.

    ... +

    Solid and patterned brush styles are used to fill the portions of the elliptical disc.

    1. Use SetBrushStyle() to set the brush style to solid.

    2. Use SetBrushColour() to set the brush color to black.

    3. Use DrawPie() to draw a pie slice.

    4. Use SetBrushStyle() to set the patterned brush style.

    5. Use DrawPie() and reverse the pair of construction point arguments so that the two pie slices together form a whole ellipse.

    ... // draw a pie slice centered in the rectangle gc.SetBrushStyle(CGraphicsContext::ESolidBrush); gc.SetBrushColor(black); diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A5756C5F-9C93-4949-8B60-03DCA1BAF683.dita --- a/Symbian3/PDK/Source/GUID-A5756C5F-9C93-4949-8B60-03DCA1BAF683.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A5756C5F-9C93-4949-8B60-03DCA1BAF683.dita Fri Jul 16 17:23:46 2010 +0100 @@ -74,7 +74,7 @@ Pop-up field - +

    Any combination of these types is possible within one form.

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A583E66D-D2ED-5C1C-AF2C-38060D926881_d0e458957_href.png Binary file Symbian3/PDK/Source/GUID-A583E66D-D2ED-5C1C-AF2C-38060D926881_d0e458957_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A583E66D-D2ED-5C1C-AF2C-38060D926881_d0e464802_href.png Binary file Symbian3/PDK/Source/GUID-A583E66D-D2ED-5C1C-AF2C-38060D926881_d0e464802_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A5E152B2-F15C-4809-A52A-BCDDBCD93255_d0e63987_href.png Binary file Symbian3/PDK/Source/GUID-A5E152B2-F15C-4809-A52A-BCDDBCD93255_d0e63987_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A5E152B2-F15C-4809-A52A-BCDDBCD93255_d0e68210_href.png Binary file Symbian3/PDK/Source/GUID-A5E152B2-F15C-4809-A52A-BCDDBCD93255_d0e68210_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A5ED089C-8831-5E25-AE7C-8E6F1C21D3BE.dita --- a/Symbian3/PDK/Source/GUID-A5ED089C-8831-5E25-AE7C-8E6F1C21D3BE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A5ED089C-8831-5E25-AE7C-8E6F1C21D3BE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -62,7 +62,7 @@ CSBGenericTransferType& aGenericTransferType, TBool aFinished );

    Note: For more information -about creating snapshot transfer types, refer to the Creating +about creating snapshot transfer types, refer to the Creating transfer types section.

  • The backup server restores the public files.

    Similar to a backup, the Backup Engine does not diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A5F65344-BE05-5295-85BB-E8114505FB82.dita --- a/Symbian3/PDK/Source/GUID-A5F65344-BE05-5295-85BB-E8114505FB82.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A5F65344-BE05-5295-85BB-E8114505FB82.dita Fri Jul 16 17:23:46 2010 +0100 @@ -74,7 +74,7 @@ and Durations

    The following diagram illustrates the alarm sound play intervals:

    ALARM SOUND PLAY INTERVALS - +

    Alarm play intervals define the toggling of alarm sound playing/stopping and alarm dialog show/hide when an alarm expires. It consists of a duration and an offset. The offset is the time, in minutes, from the beginning alarm diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6033641-8050-55FF-86EA-FA4D3B273084_d0e450827_href.png Binary file Symbian3/PDK/Source/GUID-A6033641-8050-55FF-86EA-FA4D3B273084_d0e450827_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6033641-8050-55FF-86EA-FA4D3B273084_d0e456672_href.png Binary file Symbian3/PDK/Source/GUID-A6033641-8050-55FF-86EA-FA4D3B273084_d0e456672_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6116E8B-9C4A-5B9E-AA8A-BE031408AA2F.dita --- a/Symbian3/PDK/Source/GUID-A6116E8B-9C4A-5B9E-AA8A-BE031408AA2F.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,160 +0,0 @@ - - - - - -Defining -application icons, captions and properties -

    Introduction

    This document describes the properties -of an application that are defined in application registration files and in -other related files. Various resource structs declared in AppInfo.rh are -used to hold the definitions.

    -
    Application -icons

    Icons are used to represent applications and their associated -document files in the system shell or application launcher. If the phone's -UI supports embedding, icons may also be used to represent embedded documents.

    The -source icon files may be .bmp bitmaps, or a vector graphics -format. If bitmaps are used, they are built into a single .mbm file -(Symbian platform multiple bitmap file) as part of the build process, see start bitmap for details. -Different sizes of source bitmap should be supplied. The OS selects the most -appropriate icon size for the UI's current zoom state. This avoids the need -for the icon to be dynamically scaled when it is drawn at a different size. -Scaling small bitmaps generally results in a loss of quality. The required -icon sizes are specific to the UI.

    For each icon size, an image bitmap -and a mask bitmap are needed. The mask should be black for the parts of the -image that should be visible, and white for the transparent areas, where the -background should appear instead.

    In addition to .mbm icon -files, registration files also support vector graphics formats for instance .svg. -If the icon file is a vector graphics format, the number_of_icons value -in the CAPTION_AND_ICON_INFO struct is irrelevant.

    In -either case, the name of the icon file is specified in the LOCALISABLE_APP_INFO resource.

    Localising -icons

    Some applications may need to localise their icons and -captions.

    Icon filenames can be localised by defining them in .rls files. -There should be one .rls file per language supported. -In the LOCALISABLE_APP_INFO definition, the icon filenames -should be referred to by their symbolic identifiers, rather than as the strings -themselves. Conditional compilation statements are used in the resource file -to include the appropriate .rls file. See an -example registration file and icon/caption file. Captions are localised -using the same technique.

    -
    Application -captions

    An application's caption is the text displayed beside -its icon. Typically it is the application's name.

    Captions are defined -in the localisable icon/caption definition, which provides for short and long -captions. The short caption may be used in situations where screen space is -limited. Captions are localised in the same way as icon filenames, see above.

    -
    Filename

    Registration files must provide the filename, -excluding path and extension of the application's executable. This is needed -in order for the application architecture to be able to find and launch the -application. The application architecture expects it to be located in \sys\bin\ on -the same drive as the registration file.

    -
    Attributes

    Registration files have an attributes field -which is used to identify non-standard types of application. For instance, KAppIsControlPanelItem identifies -control panel-type applications. Refer to the documentation for -the targetted UI platform for other supported values.

    -
    Application -properties

    The following properties can be defined in registration -files. In C++ they can be retrieved using the RApaLsSession class. -Note that not all of these are supported by every UI.

    embeddability

    An -application can have one of the following attributes: KAppEmbeddable, KAppNotEmbeddable, -or KAppEmbeddableOnly. The other listed values (KAppEmbeddableUiOrStandAlone and KAppEmbeddableUiNotStandAlone) are not used. The default value is KAppNotEmbeddable. -Embeddable applications appear in lists of embeddable applications, see for -example RApaLsSession::GetEmbeddableApps(). A file with -the property KAppEmbeddableOnly appears in the embeddable -list, but not in the shell or application launcher.

      -
    • document embedding may -not be not supported by all UIs,

    • -
    • the embeddable and embeddable-only -properties should only be set for file-based applications, in other words, -applications that create embeddable documents.

    • -

    hidden

    Hidden applications run in the background. -They are not shown to the user and do not appear in the application launcher -or in the embeddable applications list.

    The default value is KAppNotHidden.

    newfile

    This -property indicates whether the application is document-based and supports -the creation of new files.

    The default value is KAppDoesNotSupportNewFile.

    launch

    Indicates -whether the application will be launched in the foreground so that it takes -focus, or in the background.

    -
    Default screen number

    This number identifies the -screen on which the application is displayed. It can be omitted if the phone -has a single screen. In v8.1b, the application can only ever appear on this -screen; this may change in later releases. For the Symbian emulator, screen -numbers are initialised in the window server initialisation file, wsini.ini.

    -
    UIDs

    Two -UIDs must be specified in the source registration file: UID2 and UID3. UID2 always -has the value KUidAppRegistrationResourceFile; UID3 is -the third UID of the application.

    -
    MIME support

    Multipurpose -Internet Mail Extensions, MIMEs, define a file format for transferring non-ASCII -data, such as graphics, audio and fax, over the Internet. The datatype_list section -lists the MIME types that the application supports, and the priority of support -that each type is given. When a file is opened, Symbian platform launches -the application which has the highest priority of support for the type of -data in the file.

    There are four priority levels, of which only EDataTypePriorityNormal or EDataTypePriorityLow should normally be used. For example, a text editor is good at editing text/plain -files, and would be given a priority of EDataTypePriorityNormal for -that file type. A web browser is less good at handling text files, and would -be assigned the lower priority EDataTypePriorityLow. So, -either application can be launched to handle a text file, however if both -applications are present, the text editor is launched in preference.

    EDataTypePriorityHigh should -only be assigned under exceptional conditions, for instance if no other application -could ever handle a particular MIME type as well.

    EDataTypePriorityLastResort should -also be used sparingly. Text editors are terrible at displaying HTML, and -would either have the priority EDataTypePriorityLastResort, -or would not support the type at all.

    Given two applications with -the same MIME type priority, Symbian platform arbitrarily launches one of -them.

    -
    View-specific information

    For view-based applications, -as an alternative to using an application-wide caption and icons, each view -in the application can define its own icon and captions. This is so that specific -application views can be launched directly from the phone's application launcher/shell. -This feature may not be supported by all phone UIs.

    The following -view-specific properties can be specified, using a VIEW_DATA resource -struct, declared in appinfo.rh:

      -
    • The view's UID.

      This -uniquely identifies the view within the application (in C++ this corresponds -to TVwsViewId::iViewUid). This must be specified.

    • -
    • The screen mode that -the view uses.

      A screen mode is a combination of screen rotation and -screen size. Screen modes are identified by an index; the first one is zero. -For the Symbian emulator, screen modes are initialised in the window server -initialisation file, wsini.ini. -The default value is zero.

      For example, on phones that use a flip-down -keypad, the screen mode changes when the flip is opened or closed. On such -phones, there may be a flip open and flip closed version of each view.

    • -
    • The number of icons -for the view.

      The icons are contained in the icon file. If the icon -file is a vector graphics format, the number_of_icons value -is irrelevant.

    • -
    • The view's caption.

    • -

    The view-specific information is defined in the view_list which -is an array of VIEW_DATA structs, one for each view in the -application. It can be accessed in C++ through the RApaLsSession class, -see for example RApaLsSession::GetAppViews(), and RApaLsSession::GetAppViewIcon().

    -
    Service list

    Server applications implement services -on behalf of client applications, using a server. They are new in v9.0 and -the motivation behind them is platform security. Because the client and the -server applications run in separate processes, their memory areas and private -data files are protected from each other.

    The service list is a list -of services offered by a server application. Each entry in the list consists -of a uid, which identifies the service, and the ID of another -resource (opaque_data) that describes how the service is -implemented. The latter is called opaque data because how it is used is up -to the server application, not the UI framework. For example, it might contain -the ID of a localised text resource for display in the UI, or the ID of a -resource struct that allows client code to distinguish between different implementations -of the service.

    The information defined in the service list can be -retrieved using the RApaLsSession class. For example, clients -can find out which server applications implement a particular service by calling RApaLsSession::GetServiceImplementationsLC().

    The opaque data may be non-localisable and therefore defined as a resource -in the registration file, or localisable and therefore defined as a resource -in the localisable icon/caption definition file, if one exists, or in the -UI resource file. If the localisable icon/caption definition file is used, -it must include a four character NAME and an RSS_SIGNATURE resource, -like most other resource files, and as it would no longer be the only resource -defined in the file, the LOCALISABLE_APP_INFO resource must -be given an ID, which must be specified in the registration file's localisable_resource_id field.

    - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6363EC1-D9A2-5011-94F2-08B38E8247E0-GENID-1-12-1-26-1-1-11-1-1-5-1-7-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-A6363EC1-D9A2-5011-94F2-08B38E8247E0-GENID-1-12-1-26-1-1-11-1-1-5-1-7-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Weak and strong cryptography
    • Introduction

    • Weak cryptography

    • Strong cryptography

    • Build targets and variants

    Introduction

    The Cryptography library is provided in two separate builds, “weak” and “strong”, in order to comply with governmental export rules. These two builds are identical with the exception that the weak build rejects requests to apply an encryption scheme with key sizes greater than a size specified by the UK Government.

    Currently, symmetric algorithms with keys greater than 56 bits, and asymmetric with keys greater than 512 are deemed export controlled and are classed within Symbian as strong encryption. Keys of less than 56 and 512 bits respectively are classed as weak. Some algorithms – such as 3DES and AES cannot operate with weak keys, and are therefore strong-only algorithms.

    At present, two versions of the Cryptography library can be built:

    • weak_cryptography.dll

    • strong_cryptography.dll

    Clients always link against cryptography.dll.

    The strong/weak libraries are interchangeable (link compatible) except that the weak one will fail at run-time if an attempt is made to employ keys that are larger than bounds laid down by UK export restrictions.

    On hardware, the version used is determined at ROM build time by including the appropriate version of the Cryptography library as cryptography.dll. On the emulator, the crypto switch sub-component supplies cryptography.dll, and this transparently forwards calls to the appropriate version of the Cryptography library.

    The strong and weak Cryptography APIs are identical. The TCrypto API allows higher level components to determine at run-time whether the Cryptography library supports full strength cryptography. See How to find the cryptographic strength.

    Weak cryptography

    The weak version of the Cryptography library is the default one. This is the version that is exported to the \epoc32 tree as cryptography.dll. This default version may be replaced with any of the other versions. See How to change the cryptographic strength for instructions on how to do this.

    The default weak Cryptography library (weak_cryptography.dll) is limited as follows:

    • Symmetric algorithms (DES, RC2, ARC4) are limited to 56 bit key sizes.

    • The 3DES symmetric algorithm is not supported since this requires key sizes greater than 56 bits.

    • Asymmetric algorithms, RSA and DSA, may be used for decryption using any key size, but encryption is limited to 512 bits.

    • DH is limited to 512 bits.

    If attempts are made to use key lengths not supported by a weak crypto library then the library will return an error.

    Strong cryptography

    The strong Cryptography library supports any key length.

    Build targets and variants

    The two versions of the Cryptography library are available for different build targets and variants in:

    <your-SDK-path>\src\generic\security\cryptalg\import\bin\<target>\<variant>\

    Where target is one of the following build targets: wins, winscw, winc, thumb, armi, or arm4. And variant is either udeb or urel.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6363EC1-D9A2-5011-94F2-08B38E8247E0-GENID-1-12-1-26-1-1-9-1-4-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-A6363EC1-D9A2-5011-94F2-08B38E8247E0-GENID-1-12-1-26-1-1-9-1-4-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Weak and strong cryptography
    • Introduction

    • Weak cryptography

    • Strong cryptography

    • Build targets and variants

    Introduction

    The Cryptography library is provided in two separate builds, “weak” and “strong”, in order to comply with governmental export rules. These two builds are identical with the exception that the weak build rejects requests to apply an encryption scheme with key sizes greater than a size specified by the UK Government.

    Currently, symmetric algorithms with keys greater than 56 bits, and asymmetric with keys greater than 512 are deemed export controlled and are classed within Symbian as strong encryption. Keys of less than 56 and 512 bits respectively are classed as weak. Some algorithms – such as 3DES and AES cannot operate with weak keys, and are therefore strong-only algorithms.

    At present, two versions of the Cryptography library can be built:

    • weak_cryptography.dll

    • strong_cryptography.dll

    Clients always link against cryptography.dll.

    The strong/weak libraries are interchangeable (link compatible) except that the weak one will fail at run-time if an attempt is made to employ keys that are larger than bounds laid down by UK export restrictions.

    On hardware, the version used is determined at ROM build time by including the appropriate version of the Cryptography library as cryptography.dll. On the emulator, the crypto switch sub-component supplies cryptography.dll, and this transparently forwards calls to the appropriate version of the Cryptography library.

    The strong and weak Cryptography APIs are identical. The TCrypto API allows higher level components to determine at run-time whether the Cryptography library supports full strength cryptography. See How to find the cryptographic strength.

    Weak cryptography

    The weak version of the Cryptography library is the default one. This is the version that is exported to the \epoc32 tree as cryptography.dll. This default version may be replaced with any of the other versions. See How to change the cryptographic strength for instructions on how to do this.

    The default weak Cryptography library (weak_cryptography.dll) is limited as follows:

    • Symmetric algorithms (DES, RC2, ARC4) are limited to 56 bit key sizes.

    • The 3DES symmetric algorithm is not supported since this requires key sizes greater than 56 bits.

    • Asymmetric algorithms, RSA and DSA, may be used for decryption using any key size, but encryption is limited to 512 bits.

    • DH is limited to 512 bits.

    If attempts are made to use key lengths not supported by a weak crypto library then the library will return an error.

    Strong cryptography

    The strong Cryptography library supports any key length.

    Build targets and variants

    The two versions of the Cryptography library are available for different build targets and variants in:

    <your-SDK-path>\src\generic\security\cryptalg\import\bin\<target>\<variant>\

    Where target is one of the following build targets: wins, winscw, winc, thumb, armi, or arm4. And variant is either udeb or urel.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6363EC1-D9A2-5011-94F2-08B38E8247E0.dita --- a/Symbian3/PDK/Source/GUID-A6363EC1-D9A2-5011-94F2-08B38E8247E0.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Weak and strong cryptography
    • Introduction

    • Weak cryptography

    • Strong cryptography

    • Build targets and variants

    Introduction

    The Cryptography library is provided in two separate builds, “weak” and “strong”, in order to comply with governmental export rules. These two builds are identical with the exception that the weak build rejects requests to apply an encryption scheme with key sizes greater than a size specified by the UK Government.

    Currently, symmetric algorithms with keys greater than 56 bits, and asymmetric with keys greater than 512 are deemed export controlled and are classed within Symbian as strong encryption. Keys of less than 56 and 512 bits respectively are classed as weak. Some algorithms – such as 3DES and AES cannot operate with weak keys, and are therefore strong-only algorithms.

    At present, two versions of the Cryptography library can be built:

    • weak_cryptography.dll

    • strong_cryptography.dll

    Clients always link against cryptography.dll.

    The strong/weak libraries are interchangeable (link compatible) except that the weak one will fail at run-time if an attempt is made to employ keys that are larger than bounds laid down by UK export restrictions.

    On hardware, the version used is determined at ROM build time by including the appropriate version of the Cryptography library as cryptography.dll. On the emulator, the crypto switch sub-component supplies cryptography.dll, and this transparently forwards calls to the appropriate version of the Cryptography library.

    The strong and weak Cryptography APIs are identical. The TCrypto API allows higher level components to determine at run-time whether the Cryptography library supports full strength cryptography. See How to find the cryptographic strength.

    Weak cryptography

    The weak version of the Cryptography library is the default one. This is the version that is exported to the \epoc32 tree as cryptography.dll. This default version may be replaced with any of the other versions. See How to change the cryptographic strength for instructions on how to do this.

    The default weak Cryptography library (weak_cryptography.dll) is limited as follows:

    • Symmetric algorithms (DES, RC2, ARC4) are limited to 56 bit key sizes.

    • The 3DES symmetric algorithm is not supported since this requires key sizes greater than 56 bits.

    • Asymmetric algorithms, RSA and DSA, may be used for decryption using any key size, but encryption is limited to 512 bits.

    • DH is limited to 512 bits.

    If attempts are made to use key lengths not supported by a weak crypto library then the library will return an error.

    Strong cryptography

    The strong Cryptography library supports any key length.

    Build targets and variants

    The two versions of the Cryptography library are available for different build targets and variants in:

    <your-SDK-path>\src\generic\security\cryptalg\import\bin\<target>\<variant>\

    Where target is one of the following build targets: wins, winscw, winc, thumb, armi, or arm4. And variant is either udeb or urel.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A64625D4-F101-5DB7-896B-F91A21BABE01.dita --- a/Symbian3/PDK/Source/GUID-A64625D4-F101-5DB7-896B-F91A21BABE01.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A64625D4-F101-5DB7-896B-F91A21BABE01.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,12 +1,127 @@ - - - - - -Reclaiming Free Space

    This document discusses the benefits to be had, such as performance improvements, from performing a compaction operation.

    Purpose

    Database compaction frees up diskspace and improves overall performance when performing certain database operations.

    Database compaction

    Databases using database compaction will experience a performance improvement for some operations, such as DELETE. There will also be a better trade-off between performance and disk usage.

    Legacy databases will be automatically migrated to use the new default free space reclaim policy when they are used with the 9.5 version of Symbian SQL. The migration takes place the first time the legacy database is opened with the new version of Symbian SQL. The database will be configured to use the default free space reclaim policy from then on. Note: Such migration will not be possible (or necessary) for databases that are on read-only media, but these databases will still be readable by Symbian SQL.

    Databases can be configured to use a free space reclaim policy of their choice. There are three modes of database compaction:

    • background,

    • synchronous,

    • manual.

    The compaction mode is set when the database is created and cannot be changed later. Only the database creator can specify the compaction mode. This avoids the possibility of conflicting policy change requests by clients of shared databases. When a database compaction mode is not specified, background mode is the default mode.

    Background compaction

    Compaction activities are deferred and scheduled by the server allowing client requests that delete records to complete more quickly. This mode offers clients no guarantees on when space will be reclaimed. When under high load the server will defer reclamation indefinitely.

    The server maintains an EPriorityIdle active object for each open database that is set to background compaction mode.

    The amount of reclaimable disk space is retrieved after an SQL statement is executed on a database. If this value exceeds the compaction threshold then the database is marked as dirty by setting its active object as ready to run:

    • The compaction threshold is a server-wide parameter that specifies the amount of reclaimable disk space (in bytes) that must exist in a database before the server compacts that database. A default value for this threshold is supplied by Symbian but device creators can override this in the server configuration file.

    • Each active object contains a free pages threshold that is derived from the compaction threshold. The free pages threshold is the number of pages that must be in the database for it to be marked as dirty.

    • Each time a RSqlDatabase::Exec() or RSqlStatement::Exec() operation has been completed the number of free pages in the database is checked against the free pages threshold. If the threshold is met then the database is marked as dirty.

    Whenever the Symbian SQL server is idle (not processing a client request) runnable idle active objects are processed that cause free space to be reclaimed from the dirty databases:

    • Each active object reclaims no more pages from its database than the single reclaim limit. This limit is a server-wide parameter specifying the maximum number of free pages that the server will attempt to reclaim in one step and should be small enough to ensure that the server can remain responsive to client requests. An appropriate default value is supplied by Symbian but device creators can override this in the server configuration file.

    • Following the reclaim action an active object will again set itself as ready to run if the number of free pages following the reclaim meets the free pages threshold.

    • The idle priority active objects for background compaction continues to be processed until either:

      • there is no more free space left to reclaim,

      • a higher priority active object becomes ready to run.

    Scheduling of background compaction

    The server’s active scheduler maintains a priority queue for servicing the active objects. The scheduling algorithm is such that following the successful execution of any active object's RunL(), the scheduler will reset to the beginning of the queue. This has two implications:

    • There is an implicit priority scheme among the active objects for background compaction – a database opened earlier will always be given priority over one opened later due to its location in the queue.

    • Compaction of a later database in the queue cannot begin until an earlier database has been fully compacted. This is because the active scheduler resets to the beginning of the queue following every active object execution.

    With this lack of fair scheduling it is advised that certain situations are avoided:

    • Background compaction is not intended to be an antidote for critical disk space rescue scenarios – a fairer scheduling algorithm may help but the system would already be in severe difficulties by this stage.

    • The compaction operation itself requires free disk space and thus would be inoperable in critically low disk space situations. Thus a fairer scheduling algorithm would not help here.

    • background compaction is not designed to work efficiently when the server load is such that idle periods do not occur in sufficient quantity.

    Synchronous compaction

    compaction occurs at the end of the client request. A request is not completed until compaction has finished. This mode is equivalent to the compaction profile of previous versions of Symbian SQL.

    Manual compaction

    No automatic compaction occurs. This mode is intended for clients that wish to manage compaction directly.

    Clients wishing to exercise direct control over database compaction may select manual mode. The server performs no automated compaction in manual mode.

    Clients can request database compaction with RSqlDatabase::Compact(). The client can specify a limit to the number of bytes to reclaim. Compaction can be performed as either a synchronous or an asynchronous operation. Compact() can be called on either a “manual” or a “background” database (it can also be called on a “synchronous” database although this will have no effect).

    The database file size and the amount of reclaimable free space in the database can be retrieved with RSqlDatabase::Size(). This API supports clients wishing to trigger compaction based on either absolute free space or a proportion of free space in the database.

    SQL Overview Handling Blobs
    \ No newline at end of file + + + + + +Reclaiming Free Space +

    This document discusses the benefits to be had, such as performance +improvements, from performing a compaction operation.

    +
    Purpose

    Database compaction frees up diskspace +and improves overall performance when performing certain database +operations.

    +
    Database +compaction

    Databases using database compaction will experience +a performance improvement for some operations, such as DELETE. There +will also be a better trade-off between performance and disk usage.

    Legacy databases will be automatically migrated to use the new +default free space reclaim policy when they are used with the 9.5 +version of Symbian SQL. The migration takes place the first time the +legacy database is opened with the new version of Symbian SQL. The +database will be configured to use the default free space reclaim +policy from then on. Note: Such migration will not be possible +(or necessary) for databases that are on read-only media, but these +databases will still be readable by Symbian SQL.

    Databases +can be configured to use a free space reclaim policy of their choice. +There are three modes of database compaction:

      +
    • background,

    • +
    • synchronous,

    • +
    • manual.

    • +

    The compaction mode is set when the database is created and +cannot be changed later. Only the database creator can specify the +compaction mode. This avoids the possibility of conflicting policy +change requests by clients of shared databases. When a database compaction +mode is not specified, background mode is the default mode.

    Background compaction

    Compaction activities are deferred and scheduled by the +server allowing client requests that delete records to complete more +quickly. This mode offers clients no guarantees on when space will +be reclaimed. When under high load the server will defer reclamation +indefinitely.

    The server maintains an EPriorityIdle active object for each open database that is set to background compaction +mode.

    The amount of reclaimable disk space is retrieved after +an SQL statement is executed on a database. If this value exceeds +the compaction threshold then the database is marked as dirty by setting its active object as ready to run:

      +
    • The compaction +threshold is a server-wide parameter that specifies the amount of +reclaimable disk space (in bytes) that must exist in a database before +the server compacts that database. A default value for this threshold +is supplied by Symbian but device creators can override this in the +server configuration file.

    • +
    • Each active +object contains a free pages threshold that is derived from +the compaction threshold. The free pages threshold is the number +of pages that must be in the database for it to be marked as dirty.

    • +
    • Each time a RSqlDatabase::Exec() or RSqlStatement::Exec() operation has been completed the number of free pages in the database +is checked against the free pages threshold. If the threshold is met +then the database is marked as dirty.

    • +

    Whenever the Symbian SQL server is idle (not processing a +client request) runnable idle active objects are processed that cause +free space to be reclaimed from the dirty databases:

      +
    • Each active +object reclaims no more pages from its database than the single reclaim +limit. This limit is a server-wide parameter specifying the maximum +number of free pages that the server will attempt to reclaim in one +step and should be small enough to ensure that the server can remain +responsive to client requests. An appropriate default value is supplied +by Symbian but device creators can override this in the server configuration +file.

    • +
    • Following the +reclaim action an active object will again set itself as ready to +run if the number of free pages following the reclaim meets the free +pages threshold.

    • +
    • The idle priority +active objects for background compaction continues to be processed +until either:

        +
      • there is no +more free space left to reclaim,

      • +
      • a higher priority +active object becomes ready to run.

      • +
    • +

    Scheduling of background compaction

    The server’s active +scheduler maintains a priority queue for servicing the active objects. +The scheduling algorithm is such that following the successful execution +of any active object's RunL(), the scheduler will +reset to the beginning of the queue. This has two implications:

      +
    • There is an +implicit priority scheme among the active objects for background compaction +– a database opened earlier will always be given priority over one +opened later due to its location in the queue.

    • +
    • Compaction of +a later database in the queue cannot begin until an earlier database +has been fully compacted. This is because the active scheduler resets +to the beginning of the queue following every active object execution.

    • +

    With this lack of fair scheduling it is advised that +certain situations are avoided:

      +
    • Background compaction +is not intended to be an antidote for critical disk space rescue scenarios +– a fairer scheduling algorithm may help but the system would already +be in severe difficulties by this stage.

    • +
    • The compaction +operation itself requires free disk space and thus would be inoperable +in critically low disk space situations. Thus a fairer scheduling +algorithm would not help here.

    • +
    • background compaction +is not designed to work efficiently when the server load is such that +idle periods do not occur in sufficient quantity.

    • +

    Synchronous compaction

    compaction occurs at the end of the client request. A request +is not completed until compaction has finished. This mode is equivalent +to the compaction profile of previous versions of Symbian SQL.

    Manual compaction

    No automatic compaction occurs. This mode is intended for +clients that wish to manage compaction directly.

    Clients wishing +to exercise direct control over database compaction may select manual +mode. The server performs no automated compaction in manual mode.

    Clients can request database compaction with RSqlDatabase::Compact(). The client can specify a limit to the number of bytes to reclaim. +Compaction can be performed as either a synchronous or an asynchronous +operation. Compact() can be called on either a “manual” +or a “background” database (it can also be called on a “synchronous” +database although this will have no effect).

    The database +file size and the amount of reclaimable free space in the database +can be retrieved with RSqlDatabase::Size(). This +API supports clients wishing to trigger compaction based on either +absolute free space or a proportion of free space in the database.

    +
    +SQL +Overview + +Handling Blobs +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A64C3667-E522-5B23-8679-35B06C609148_d0e590802_href.png Binary file Symbian3/PDK/Source/GUID-A64C3667-E522-5B23-8679-35B06C609148_d0e590802_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A64C3667-E522-5B23-8679-35B06C609148_d0e618696_href.png Binary file Symbian3/PDK/Source/GUID-A64C3667-E522-5B23-8679-35B06C609148_d0e618696_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6598739-2BB5-546E-931B-B202E3DD49E0_d0e430261_href.png Binary file Symbian3/PDK/Source/GUID-A6598739-2BB5-546E-931B-B202E3DD49E0_d0e430261_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6598739-2BB5-546E-931B-B202E3DD49E0_d0e436106_href.png Binary file Symbian3/PDK/Source/GUID-A6598739-2BB5-546E-931B-B202E3DD49E0_d0e436106_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A668442E-0768-5AF1-829B-A80864756A0B.dita --- a/Symbian3/PDK/Source/GUID-A668442E-0768-5AF1-829B-A80864756A0B.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -bytepaircompresstarget

    bytepaircompresstarget

    Use the bytepaircompresstarget statement to specify that the target executable should be compressed using the bytepair algorithm.

    Bytepair compression allows faster decompression than the default Deflate, Huffman+LZ77 algorithm and supports demand paging by performing compression and decompression of code in independent 4kbyte pages.

    See also inflatecompresstarget.

    See also compresstarget.

    See also nocompresstarget.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A67FFE7B-9573-543B-B3EA-0539278FE4AB_d0e258443_href.png Binary file Symbian3/PDK/Source/GUID-A67FFE7B-9573-543B-B3EA-0539278FE4AB_d0e258443_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A67FFE7B-9573-543B-B3EA-0539278FE4AB_d0e264452_href.png Binary file Symbian3/PDK/Source/GUID-A67FFE7B-9573-543B-B3EA-0539278FE4AB_d0e264452_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A69D2707-CB47-42C2-A6E9-5FB9BD86A30B_d0e100007_href.png Binary file Symbian3/PDK/Source/GUID-A69D2707-CB47-42C2-A6E9-5FB9BD86A30B_d0e100007_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A69D2707-CB47-42C2-A6E9-5FB9BD86A30B_d0e68131_href.png Binary file Symbian3/PDK/Source/GUID-A69D2707-CB47-42C2-A6E9-5FB9BD86A30B_d0e68131_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A69D2707-CB47-42C2-A6E9-5FB9BD86A30B_d0e72344_href.png Binary file Symbian3/PDK/Source/GUID-A69D2707-CB47-42C2-A6E9-5FB9BD86A30B_d0e72344_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A69D2707-CB47-42C2-A6E9-5FB9BD86A30B_d0e86749_href.png Binary file Symbian3/PDK/Source/GUID-A69D2707-CB47-42C2-A6E9-5FB9BD86A30B_d0e86749_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A69D2707-CB47-42C2-A6E9-5FB9BD86A30B_d0e90947_href.png Binary file Symbian3/PDK/Source/GUID-A69D2707-CB47-42C2-A6E9-5FB9BD86A30B_d0e90947_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A69D2707-CB47-42C2-A6E9-5FB9BD86A30B_d0e95888_href.png Binary file Symbian3/PDK/Source/GUID-A69D2707-CB47-42C2-A6E9-5FB9BD86A30B_d0e95888_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6BA24CE-23EB-453E-9677-B5F425C1F255.ditamap --- a/Symbian3/PDK/Source/GUID-A6BA24CE-23EB-453E-9677-B5F425C1F255.ditamap Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A6BA24CE-23EB-453E-9677-B5F425C1F255.ditamap Fri Jul 16 17:23:46 2010 +0100 @@ -3,7 +3,8 @@ -Symbian Developer Library for Product Developers + +Symbian Developer Library for Product Developers Symbian Developer Library for Product Developers @@ -78,6 +79,8 @@ + @@ -216,12 +219,30 @@ id="GUID-BC943A7D-01A6-4DB8-81E9-29535616ECCD"> + + + + + + + + + + @@ -440,6 +461,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1656,58 +1726,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1845,8 +1863,6 @@ id="GUID-07673129-E9CE-4FBB-A75C-9330BB6D8F88"> - + + + + + + + + + + + + + + + + + + + + + + + + @@ -2787,14 +2846,14 @@ - @@ -5327,7 +5385,7 @@ @@ -6271,7 +6329,7 @@ @@ -6281,7 +6339,7 @@ @@ -6438,11 +6496,11 @@ @@ -6976,6 +7034,17 @@ id="GUID-C6EBAE3A-28FD-4639-8A7F-87A4F0B05D19"> + + + + + + - - @@ -7915,6 +7980,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -8051,14 +8877,14 @@ @@ -8563,140 +9389,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -8713,7 +9405,7 @@ @@ -8733,7 +9425,7 @@ @@ -8833,403 +9525,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -9390,9 +9685,9 @@ +id="GUID-4EA3767E-BC4E-4CFC-A371-BC1CC73AD6E9-GENID-1-12-1-31-1"> +id="GUID-4EA3767E-BC4E-4CFC-A371-BC1CC73AD6E9-GENID-1-12-1-31-1-1-3"> +id="GUID-4EA3767E-BC4E-4CFC-A371-BC1CC73AD6E9-GENID-1-12-1-31-1-1-3-1-7"> +id="GUID-4EA3767E-BC4E-4CFC-A371-BC1CC73AD6E9-GENID-1-12-1-31-1-1-4-1-5"> +id="GUID-4EA3767E-BC4E-4CFC-A371-BC1CC73AD6E9-GENID-1-12-1-31-1-1-4-1-6"> +id="GUID-4EA3767E-BC4E-4CFC-A371-BC1CC73AD6E9-GENID-1-12-1-31-1-1-4-1-7"> +id="GUID-4EA3767E-BC4E-4CFC-A371-BC1CC73AD6E9-GENID-1-12-1-33-1-1-3"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6C9E7DF-1ACF-4768-851E-350E3DADEC56_d0e85128_href.png Binary file Symbian3/PDK/Source/GUID-A6C9E7DF-1ACF-4768-851E-350E3DADEC56_d0e85128_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6C9E7DF-1ACF-4768-851E-350E3DADEC56_d0e89326_href.png Binary file Symbian3/PDK/Source/GUID-A6C9E7DF-1ACF-4768-851E-350E3DADEC56_d0e89326_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6DE13A9-BD2F-5F14-864E-BAEC9C52B9DD_d0e244749_href.png Binary file Symbian3/PDK/Source/GUID-A6DE13A9-BD2F-5F14-864E-BAEC9C52B9DD_d0e244749_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6DE13A9-BD2F-5F14-864E-BAEC9C52B9DD_d0e250760_href.png Binary file Symbian3/PDK/Source/GUID-A6DE13A9-BD2F-5F14-864E-BAEC9C52B9DD_d0e250760_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6E7C805-0515-5F3F-97DB-B5E1A84162B2_d0e445991_href.png Binary file Symbian3/PDK/Source/GUID-A6E7C805-0515-5F3F-97DB-B5E1A84162B2_d0e445991_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6E7C805-0515-5F3F-97DB-B5E1A84162B2_d0e451836_href.png Binary file Symbian3/PDK/Source/GUID-A6E7C805-0515-5F3F-97DB-B5E1A84162B2_d0e451836_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6EE8A2A-8B17-5D3A-A9B9-C8D25C92EA21_d0e586037_href.png Binary file Symbian3/PDK/Source/GUID-A6EE8A2A-8B17-5D3A-A9B9-C8D25C92EA21_d0e586037_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6EE8A2A-8B17-5D3A-A9B9-C8D25C92EA21_d0e635325_href.png Binary file Symbian3/PDK/Source/GUID-A6EE8A2A-8B17-5D3A-A9B9-C8D25C92EA21_d0e635325_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6F1F6AC-5D3C-5055-AEF1-B64671941BCB_d0e637948_href.png Binary file Symbian3/PDK/Source/GUID-A6F1F6AC-5D3C-5055-AEF1-B64671941BCB_d0e637948_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A6F1F6AC-5D3C-5055-AEF1-B64671941BCB_d0e650770_href.png Binary file Symbian3/PDK/Source/GUID-A6F1F6AC-5D3C-5055-AEF1-B64671941BCB_d0e650770_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A719FDFA-903B-5340-AA47-9E5B22DBB253_d0e228678_href.png Binary file Symbian3/PDK/Source/GUID-A719FDFA-903B-5340-AA47-9E5B22DBB253_d0e228678_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A719FDFA-903B-5340-AA47-9E5B22DBB253_d0e234677_href.png Binary file Symbian3/PDK/Source/GUID-A719FDFA-903B-5340-AA47-9E5B22DBB253_d0e234677_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A726509A-4016-5499-B5A0-F25F505E14C9_d0e230406_href.png Binary file Symbian3/PDK/Source/GUID-A726509A-4016-5499-B5A0-F25F505E14C9_d0e230406_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A726509A-4016-5499-B5A0-F25F505E14C9_d0e236401_href.png Binary file Symbian3/PDK/Source/GUID-A726509A-4016-5499-B5A0-F25F505E14C9_d0e236401_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A741A42E-AFF5-5781-A555-134C63A97B53_d0e551490_href.png Binary file Symbian3/PDK/Source/GUID-A741A42E-AFF5-5781-A555-134C63A97B53_d0e551490_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A741A42E-AFF5-5781-A555-134C63A97B53_d0e558946_href.png Binary file Symbian3/PDK/Source/GUID-A741A42E-AFF5-5781-A555-134C63A97B53_d0e558946_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A780F684-0F67-4A7F-B766-E69A5223F917_d0e83345_href.png Binary file Symbian3/PDK/Source/GUID-A780F684-0F67-4A7F-B766-E69A5223F917_d0e83345_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A780F684-0F67-4A7F-B766-E69A5223F917_d0e87543_href.png Binary file Symbian3/PDK/Source/GUID-A780F684-0F67-4A7F-B766-E69A5223F917_d0e87543_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A786DE92-B87E-5D8E-B61D-645BB42BC303_d0e276852_href.png Binary file Symbian3/PDK/Source/GUID-A786DE92-B87E-5D8E-B61D-645BB42BC303_d0e276852_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A786DE92-B87E-5D8E-B61D-645BB42BC303_d0e282852_href.png Binary file Symbian3/PDK/Source/GUID-A786DE92-B87E-5D8E-B61D-645BB42BC303_d0e282852_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A79EB018-1465-5103-BC0C-24C5923A69E8_d0e466594_href.png Binary file Symbian3/PDK/Source/GUID-A79EB018-1465-5103-BC0C-24C5923A69E8_d0e466594_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A79EB018-1465-5103-BC0C-24C5923A69E8_d0e472439_href.png Binary file Symbian3/PDK/Source/GUID-A79EB018-1465-5103-BC0C-24C5923A69E8_d0e472439_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A7EDCB44-9E73-5FD9-B6FB-AE0BAFDC1213_d0e469977_href.jpg Binary file Symbian3/PDK/Source/GUID-A7EDCB44-9E73-5FD9-B6FB-AE0BAFDC1213_d0e469977_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A7EDCB44-9E73-5FD9-B6FB-AE0BAFDC1213_d0e475813_href.jpg Binary file Symbian3/PDK/Source/GUID-A7EDCB44-9E73-5FD9-B6FB-AE0BAFDC1213_d0e475813_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A837D8F6-B9D3-5119-8C63-51772B388999.dita --- a/Symbian3/PDK/Source/GUID-A837D8F6-B9D3-5119-8C63-51772B388999.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ - - - - - -Tools and -Utilities -

    The guide describe the tools for developing and building programs.

    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A849B353-76E5-5AD6-851A-AF18C66AED48.dita --- a/Symbian3/PDK/Source/GUID-A849B353-76E5-5AD6-851A-AF18C66AED48.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A849B353-76E5-5AD6-851A-AF18C66AED48.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Generic Driver Support OverviewGeneric driver related concepts in Symbian platform. -
    Architecture

    The +

    Architecture

    The role of a generic device driver is to give a user-side application access to peripheral resources without exposing the operation of the underlying hardware. A device driver is effectively an add-on to the kernel, and implements a polymorphic diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A869BA79-5916-5B60-A02B-EF7D7CCA8C45.dita --- a/Symbian3/PDK/Source/GUID-A869BA79-5916-5B60-A02B-EF7D7CCA8C45.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A869BA79-5916-5B60-A02B-EF7D7CCA8C45.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> How to control Application Level Roaming for SIP Profiles

    Application Level Roaming (ALR) is a facility which allows a SIP Profile to switch between service providers by using Internet Access Points (IAPs). By default, all SIP clients allow the SIP profiles they are using to roam across IAPs.

    To restrict roaming for a SIP profile to a set of IAPs, configure the profile with a Service Network Access Point (SNAP) ID. A SNAP ID is a unique identifier for a set of IAPs. The SIP profile store must include the SNAP ID that can be used by the SIP profile while roaming.

    Use the CSipProfileAlrController and MSipProfileAlrObserver classes to control ALR.

    To register for ALR events, use an instance of the CSipProfileAlrController class and implement the MSipProfileAlrObserver interface to register for ALR events. When registered for the ALR event, the MSipProfileAlrObserver interface notifies the client when a SIP profile used by the client tries to migrate to another IAP. Then the client can allow or disallow the migration request using the CSipProfileAlrController::AllowMigrationL() or CSipProfileAlrController::DisallowMigrationL() functions.

    The following illustration shows the call flow of enabling a SIP profile configured with a SNAP ID.

    Call flow of enabling a SIP profile with a SNAP ID -

    When the SIP profile is registered with a SNAP ID, you can allow the SIP profile to migrate to another IAP within the SNAP.

    In the following illustration, the SIP profile is deregistered after migrating to another IAP. To use it again, you must register the profile again.

    The following illustration shows the call flow of SIP profile migration.

    +

    When the SIP profile is registered with a SNAP ID, you can allow the SIP profile to migrate to another IAP within the SNAP.

    In the following illustration, the SIP profile is deregistered after migrating to another IAP. To use it again, you must register the profile again.

    The following illustration shows the call flow of SIP profile migration.

    Call flow of migrating a SIP profile to another IAP - \ No newline at end of file + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A898867E-0C50-583E-979F-132504C24C9A.dita --- a/Symbian3/PDK/Source/GUID-A898867E-0C50-583E-979F-132504C24C9A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A898867E-0C50-583E-979F-132504C24C9A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,5 +12,5 @@ Full LBS on the Symbian PlatformThis topic describes the steps necessary to configure the LBS subsystem on the Symbian platform.
    Introduction

    In this configuration, LBS handles location requests from installed applications and privacy and location requests from the network.

    The subsystem does not rely on the device domestic OS to process location requests from the network. A Network Protocol Module handles privacy and location requests from the network, receives assistance data for A-GPS positioning and can be used for cell-based positioning.

    The Privacy Protocol Module is not included in this configuration. LBS is therefore able to process both privacy and location requests from the network.

    Subsystem components

    Figure 1 shows the components and files (in green) that you may create or edit in order to create a working LBS subsystem. Figure 1 does not show all of the links and dependencies between the internal LBS subsystem components.

    Figure 1. LBS subsystem components and files that can be created or modified by device creators -
    Integration and configuration tasks

    This section lists the tasks that may be required to build and configure a working LBS subsystem. Tasks are categorised as required or optional.

    • [Required] Create a GPS/A-GPS Integration Module and configure an Integration Module .ini file.

      The A-GPS Integration Module is used by LBS to process location requests from the network. It can also be used to process location requests from installed applications if the GPS/A-GPS PSY is installed.

    • [Required] Create a Privacy Handler (a Privacy Controller and/or Privacy Notifiers).

      A privacy handler is required to inform the user when privacy requests are received from the network.

    • [Required] Modify the LBS Default Administration Settings File 1028224B.cre.

      The default administration settings file contains central repository keys and values that define the initial LBS subsystem settings.

      You may need to change some of the values in the default file that is supplied with the Symbian platform.

    • [Optional] Create a Network Protocol Module and configure the Network Location Manager .ini file.

      A Network Protocol Module is required to handle location requests from the network, to receive A-GPS assistance data from the network and to use cell based positioning.

      This task is optional because you can use the Symbian platform SUPL Protocol Module instead of creating their own Network Protocol Module.

    • [Optional] Create a Positioning Plug-in (PSY) to interface with integrated positioning hardware.

      This task is optional, because the Symbian Platform contains PSYs that you can use to integrate with external Bluetooth GPS hardware, the network and with an A-GPS Integration Module.

    • [Optional] Create an LBS Settings Application.

      Creating a settings application is only necessary if you want to give end users the ability to modify LBS settings at runtime. LBS provides the LBS Administration API and the Location Settings API to modify LBS settings at runtime.

    • [Optional] Modify the Quality Profile File.

      Changing this file is only necessary if you want to change the quality profile settings from the default values.

    • [Optional] Create applications to use the Location Acquisition API and the Transmit Location API.

      The Location Acquisition API can be used to create applications that use location data, such as navigation and location stamping applications. This API can be used by device creators and by third party application developers.

      The Transmit Location API can be used by device creators to develop applications (X3P application in figure 1) to send the mobile device's location to a contact or service.

    • [Required] Build a ROM

    The following documents give additional information about LBS configuration:

    • LBS Root Process File describes the format and content of the file 10282266.cre used by the LBS Root process to start and monitor the components of the LBS subsystem.

      Generally it should not be necessary to modify the file supplied with the Symbian platform to build this configuration.

    • Table of LBS Configuration Files gives a list of the LBS configuration files that you can modify.

    Integration +
    Integration and configuration tasks

    This section lists the tasks that may be required to build and configure a working LBS subsystem. Tasks are categorised as required or optional.

    • [Required] Create a GPS/A-GPS Integration Module and configure an Integration Module .ini file.

      The A-GPS Integration Module is used by LBS to process location requests from the network. It can also be used to process location requests from installed applications if the GPS/A-GPS PSY is installed.

    • [Required] Create a Privacy Handler (a Privacy Controller and/or Privacy Notifiers).

      A privacy handler is required to inform the user when privacy requests are received from the network.

    • [Required] Modify the LBS Default Administration Settings File 1028224B.cre.

      The default administration settings file contains central repository keys and values that define the initial LBS subsystem settings.

      You may need to change some of the values in the default file that is supplied with the Symbian platform.

    • [Optional] Create a Network Protocol Module and configure the Network Location Manager .ini file.

      A Network Protocol Module is required to handle location requests from the network, to receive A-GPS assistance data from the network and to use cell based positioning.

      This task is optional because you can use the Symbian platform SUPL Protocol Module instead of creating their own Network Protocol Module.

    • [Optional] Create a Positioning Plug-in (PSY) to interface with integrated positioning hardware.

      This task is optional, because the Symbian Platform contains PSYs that you can use to integrate with external Bluetooth GPS hardware, the network and with an A-GPS Integration Module.

    • [Optional] Create an LBS Settings Application.

      Creating a settings application is only necessary if you want to give end users the ability to modify LBS settings at runtime. LBS provides the LBS Administration API and the Location Settings API to modify LBS settings at runtime.

    • [Optional] Modify the Quality Profile File.

      Changing this file is only necessary if you want to change the quality profile settings from the default values.

    • [Optional] Create applications to use the Location Acquisition API and the Transmit Location API.

      The Location Acquisition API can be used to create applications that use location data, such as navigation and location stamping applications. This API can be used by device creators and by third party application developers.

      The Transmit Location API can be used by device creators to develop applications (X3P application in figure 1) to send the mobile device's location to a contact or service.

    • [Required] Build a ROM

    The following documents give additional information about LBS configuration:

    • LBS Root Process File describes the format and content of the file 10282266.cre used by the LBS Root process to start and monitor the components of the LBS subsystem.

      Generally it should not be necessary to modify the file supplied with the Symbian platform to build this configuration.

    • Table of LBS Configuration Files gives a list of the LBS configuration files that you can modify.

    Integration and Configuration Guide Overview LBS Architecture Overview \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A89A50B6-2A3B-54E1-8157-6CC86AFE4A57_d0e584273_href.png Binary file Symbian3/PDK/Source/GUID-A89A50B6-2A3B-54E1-8157-6CC86AFE4A57_d0e584273_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A89A50B6-2A3B-54E1-8157-6CC86AFE4A57_d0e633561_href.png Binary file Symbian3/PDK/Source/GUID-A89A50B6-2A3B-54E1-8157-6CC86AFE4A57_d0e633561_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A8C80AA1-42CF-5866-B223-FCE1AEC9DF63_d0e512129_href.jpg Binary file Symbian3/PDK/Source/GUID-A8C80AA1-42CF-5866-B223-FCE1AEC9DF63_d0e512129_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A8C80AA1-42CF-5866-B223-FCE1AEC9DF63_d0e519591_href.jpg Binary file Symbian3/PDK/Source/GUID-A8C80AA1-42CF-5866-B223-FCE1AEC9DF63_d0e519591_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A8ECAA53-9094-5C0A-8893-2757559C15F0.dita --- a/Symbian3/PDK/Source/GUID-A8ECAA53-9094-5C0A-8893-2757559C15F0.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -epocstacksize

    epocstacksize stacksize

    Use the epocstacksize statement to specify a stack size for your executable other than the default 8KB.

    The maximum stack size is 80KB.

    The size of the stack, in bytes, can be specified in decimal or hexadecimal format. Use of this statement will have no effect under the WINSCW/WINS platforms.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A91C6359-E547-51AD-AA8C-45BCAFBA98AC.dita --- a/Symbian3/PDK/Source/GUID-A91C6359-E547-51AD-AA8C-45BCAFBA98AC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A91C6359-E547-51AD-AA8C-45BCAFBA98AC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,43 +1,41 @@ - - - - - -Kernel Architecture -(EKA2)EKA2 is the principal Hardware and Kernel Services module. It manages -the CPU and memory resources of a phone, and provides an architecture for -device drivers to manage other hardware resources. -

    The Kernel has a layered -architecture so that it can be ported to different hardware. All base ports -must implement a layer called the ASSP/Variant that provides essential hardware-specific -services for the Kernel.

    -

    The Kernel also allows additional layers called personality layers to be -created that provide emulations of traditional real time operating systems. -This allows applications that were written for those operating systems to -be run on Symbian platform.

    -

    The device driver architecture and the services that the Kernel provides -to device drivers are described in the Device -Driver Guide.

    -
    -ASSP Kernel -Extension Overview -Device -Driver Guide -USB Client - Driver - -Symbian OS Internals - Chapter 1 Introducing EKA2 - -Symbian OS Internals - Chapter 2 Hardware for Symbian OS - - -Symbian OS Internals - Chapter 5 Kernel Services - -Symbian OS Internals - Chapter 7 Memory Model + + + + + +Kernel +Architecture (EKA2)EKA2 is the principal Hardware and Kernel Services module. +It manages the CPU and memory resources of a phone, and provides an +architecture for device drivers to manage other hardware resources. +

    The Kernel has +a layered architecture so that it can be ported to different hardware. +All base ports must implement a layer called the ASSP/Variant that +provides essential hardware-specific services for the Kernel.

    +

    The Kernel also allows additional layers called personality layers +to be created that provide emulations of traditional real time operating +systems. This allows applications that were written for those operating +systems to be run on Symbian platform.

    +

    The device driver architecture and the services that the Kernel +provides to device drivers are described in the Device Driver Guide.

    +
    +ASSP + Kernel Extension Overview +Device + Driver Guide +USB +Client Driver +Symbian OS Internals - Chapter 1 Introducing +EKA2 +Symbian OS Internals - Chapter 2 Hardware +for Symbian OS +Symbian OS Internals - Chapter 5 Kernel +Services +Symbian OS Internals - Chapter 7 Memory +Model
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A92CE0FF-113F-55BE-B5EF-7E5C629A4557_d0e210814_href.jpg Binary file Symbian3/PDK/Source/GUID-A92CE0FF-113F-55BE-B5EF-7E5C629A4557_d0e210814_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A92CE0FF-113F-55BE-B5EF-7E5C629A4557_d0e216815_href.jpg Binary file Symbian3/PDK/Source/GUID-A92CE0FF-113F-55BE-B5EF-7E5C629A4557_d0e216815_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A947B5A8-9138-4FA2-B8D8-2850AEB2F38C.dita --- a/Symbian3/PDK/Source/GUID-A947B5A8-9138-4FA2-B8D8-2850AEB2F38C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A947B5A8-9138-4FA2-B8D8-2850AEB2F38C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,9 +14,9 @@

    Battery pane displays the remaining energy level of the battery, using a graphical indicator. It also acts as a charging indicator. The battery indicator is visible in all applications.

    - + Battery pane - +

    The battery pane is not accessible to applications.

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A950288B-D9D8-59E3-9F4C-0AEE2FC77E38_d0e477296_href.jpg Binary file Symbian3/PDK/Source/GUID-A950288B-D9D8-59E3-9F4C-0AEE2FC77E38_d0e477296_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A950288B-D9D8-59E3-9F4C-0AEE2FC77E38_d0e483125_href.jpg Binary file Symbian3/PDK/Source/GUID-A950288B-D9D8-59E3-9F4C-0AEE2FC77E38_d0e483125_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A95CDFDE-285F-5DE2-AADE-29B2B9663757.dita --- a/Symbian3/PDK/Source/GUID-A95CDFDE-285F-5DE2-AADE-29B2B9663757.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-A95CDFDE-285F-5DE2-AADE-29B2B9663757.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -The object index

    An object index is used to generate handle-numbers for reference counting objects.

    An object index is an instance of a CObjectIx class.

    An object index acts as a collector of reference counting objects but, unlike an object container, it does not act as a container for them. The difference is emphasised by the fact that removing a reference counting object from its object container causes that reference counting object to be destroyed, while removing it from an object index causes it to be closed.

    An object index can hold reference counting objects which belong to different object containers. The same reference counting object can also be added to an object index any number of times; each is regarded as a different instance of that object and each instance generates a different handle-number.

    CObjectIx::AddL() adds a reference counting object to an object index, and is the way in which a unique handle-number can be generated for that object. A handle-number is the way in which an object which is owned or managed by another thread or process can be identified. For example, on the server side, the object representing a thread (a DThread) maintains an object index for all objects which are open in that thread. Semaphores, mutexes and other threads are examples. Typically, user code running in that thread will have handles, RHandleBase derived types, open on those objects.

    The following drawing shows the idea.

    An object index is implemented as an array where each element of the array contains a pointer to the reference counting object. An object index can index up to 32,768 (0x8000) reference counting objects.

    See also:

    • CObjectIx

    • CObjectConIx

    • CObjectCon

    • CObject

    \ No newline at end of file +The object index

    An object index is used to generate handle-numbers for reference counting objects.

    An object index is an instance of a CObjectIx class.

    An object index acts as a collector of reference counting objects but, unlike an object container, it does not act as a container for them. The difference is emphasised by the fact that removing a reference counting object from its object container causes that reference counting object to be destroyed, while removing it from an object index causes it to be closed.

    An object index can hold reference counting objects which belong to different object containers. The same reference counting object can also be added to an object index any number of times; each is regarded as a different instance of that object and each instance generates a different handle-number.

    CObjectIx::AddL() adds a reference counting object to an object index, and is the way in which a unique handle-number can be generated for that object. A handle-number is the way in which an object which is owned or managed by another thread or process can be identified. For example, on the server side, the object representing a thread (a DThread) maintains an object index for all objects which are open in that thread. Semaphores, mutexes and other threads are examples. Typically, user code running in that thread will have handles, RHandleBase derived types, open on those objects.

    The following drawing shows the idea.

    An object index is implemented as an array where each element of the array contains a pointer to the reference counting object. An object index can index up to 32,768 (0x8000) reference counting objects.

    See also:

    • CObjectIx

    • CObjectConIx

    • CObjectCon

    • CObject

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A95FEDD4-106A-5E14-8B64-3E2882C76666_d0e347941_href.png Binary file Symbian3/PDK/Source/GUID-A95FEDD4-106A-5E14-8B64-3E2882C76666_d0e347941_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A95FEDD4-106A-5E14-8B64-3E2882C76666_d0e353892_href.png Binary file Symbian3/PDK/Source/GUID-A95FEDD4-106A-5E14-8B64-3E2882C76666_d0e353892_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A98F7AA2-A908-527E-9AEC-54DDD10A49C1.dita --- a/Symbian3/PDK/Source/GUID-A98F7AA2-A908-527E-9AEC-54DDD10A49C1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -secureid

    secureid secureid

    This keyword specifies the secure identifier of the executable.

    Each executable contains a secure identifier, which is guaranteed to be locally unique (i.e. in the phone where it is installed).

    The secure identifier (SID) may be used when verifying an executable's rights of access to system resources. It is also used to form the path name for an executable's private data area.

    The secureid need not be explicitly specified in the .mmp file, but if it is omitted, then the value of the UID3, specified elsewhere in the .mmp file, is used. If the UID3 is not specified, then the secureid will take the value KNullUID.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A9BFB95C-E2B0-5CD0-8B39-C448E3C81400_d0e547572_href.png Binary file Symbian3/PDK/Source/GUID-A9BFB95C-E2B0-5CD0-8B39-C448E3C81400_d0e547572_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A9BFB95C-E2B0-5CD0-8B39-C448E3C81400_d0e555028_href.png Binary file Symbian3/PDK/Source/GUID-A9BFB95C-E2B0-5CD0-8B39-C448E3C81400_d0e555028_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A9E610B7-505C-41C4-9079-BC83C094982E_d0e13461_href.png Binary file Symbian3/PDK/Source/GUID-A9E610B7-505C-41C4-9079-BC83C094982E_d0e13461_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-A9E610B7-505C-41C4-9079-BC83C094982E_d0e13560_href.png Binary file Symbian3/PDK/Source/GUID-A9E610B7-505C-41C4-9079-BC83C094982E_d0e13560_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AA276F4E-D032-571E-9B76-BA2351C3F8B7_d0e606979_href.jpg Binary file Symbian3/PDK/Source/GUID-AA276F4E-D032-571E-9B76-BA2351C3F8B7_d0e606979_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AA276F4E-D032-571E-9B76-BA2351C3F8B7_d0e646141_href.jpg Binary file Symbian3/PDK/Source/GUID-AA276F4E-D032-571E-9B76-BA2351C3F8B7_d0e646141_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AA53650C-664C-53F0-8BE9-445677FC1FE2_d0e393841_href.png Binary file Symbian3/PDK/Source/GUID-AA53650C-664C-53F0-8BE9-445677FC1FE2_d0e393841_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AA53650C-664C-53F0-8BE9-445677FC1FE2_d0e399694_href.png Binary file Symbian3/PDK/Source/GUID-AA53650C-664C-53F0-8BE9-445677FC1FE2_d0e399694_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AA5DEEB2-0B13-5FA8-8494-EC2F5C654FEF.dita --- a/Symbian3/PDK/Source/GUID-AA5DEEB2-0B13-5FA8-8494-EC2F5C654FEF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-AA5DEEB2-0B13-5FA8-8494-EC2F5C654FEF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,56 +1,53 @@ - - - - - -CentRepExample: -Using Central Repository for Persistent StorageThis example application demonstrates the usage of Central Repository -API for persistent storage. -
    Description

    Several -Symbian platform components have state and settings information that need -to be persistent. There is also a global state that needs to persist, for -example, default filenames, locale settings, user preferences.

    The -CentRep example application first registers a group of settings with the central -repository server. It uses E80000AD.txt, a UTF-16 format -text file to initialise the repository. This text file contains access control -structure and the initial content of the repository. It is recommended to -convert the initialisation text file into a binary file using the central -repository converter tool to speed up the execution.

    The application -creates a CRepository object using the CRepository::NewLC() method -to access a repository using its UID. It resets the whole repository using CRepository::Reset() method -with the contents in the initialisation file.

    Each setting stored -in the repository will have a unique key to identify the setting. This unique -key is used to read and change the setting by calling the CRepository::Get() and CRepository::Set() methods -respectively. The application moves these keys to a different location using CRepository::Move() method -and deletes them from their original location.

    The application also -creates another CRepository object to demonstrate that, at -any given point a repository cannot be opened with READ/WRITE access -by more than one client. In such situations, it is recommended to start a -transaction before a write operation using CRepository::StartTransaction() method. -A transaction guarantees the consistency and persistence of all values read -and written during the transaction.

    Finally, the application requests -the central repository server to notify any changes to the original settings.

    Related -APIs

      -
    • CRepository - Provides access to a repository.

    • -
    • CRepository::Get()

    • -
    • CRepository::Move()

    • -
    • CRepository::NewLC()

    • -
    • CRepository::Reset()

    • -
    • CRepository::Set()

    • -
    • CRepository::StartTransaction()

    • -
    -
    Download

    Click -on the following link to download the example: CentRepExample.zip

    Click: browse to view the example code.

    -
    Build

    The Symbian build process describes -how to build an application.

    The CentRepExample builds -an executable called CentRepExample.exe in the standard -location (\epoc32\release\winscw\<build_variant > for CodeWarrior). -After launching the executable, depending on the emulator you are using, you -may need to task away from the app launcher/shell screen to view the console.

    + + + + + +CentRepExample: Using Central Repository for Persistent StorageThis example application demonstrates the usage of Central +Repository API for persistent storage. +
    Description

    Several Symbian platform components have state and settings information +that need to be persistent. There is also a global state that needs +to persist, for example, default filenames, locale settings, user +preferences.

    The CentRep example application first registers +a group of settings with the central repository server. It uses E80000AD.txt, a UTF-16 format text file to initialise +the repository. This text file contains access control structure and +the initial content of the repository. It is recommended to convert +the initialisation text file into a binary file using the central +repository converter tool to speed up the execution.

    The application +creates a CRepository object using the CRepository::NewLC() method to access a repository using +its UID. It resets the whole repository using CRepository::Reset() method with the contents in the initialisation file.

    Each +setting stored in the repository will have a unique key to identify +the setting. This unique key is used to read and change the setting +by calling the CRepository::Get() and CRepository::Set() methods respectively. The application +moves these keys to a different location using CRepository::Move() method and deletes them from their original location.

    The +application also creates another CRepository object +to demonstrate that, at any given point a repository cannot be opened +with READ/WRITE access by more than one client. In such situations, +it is recommended to start a transaction before a write operation +using CRepository::StartTransaction() method. A +transaction guarantees the consistency and persistence of all values +read and written during the transaction.

    Finally, the application +requests the central repository server to notify any changes to the +original settings.

    Related APIs

      +
    • CRepository - Provides access to a repository.

    • +
    • CRepository::Get()

    • +
    • CRepository::Move()

    • +
    • CRepository::NewLC()

    • +
    • CRepository::Reset()

    • +
    • CRepository::Set()

    • +
    • CRepository::StartTransaction()

    • +
    +
    Download

    Click on the following link to download the example: CentRepExample.zip

    Click: browse to view the example code.

    +
    Build

    The Symbian build process describes how to build an application.

    The CentRepExample builds an +executable called CentRepExample.exe in the standard +location (\epoc32\release\winscw\<build_variant > for CodeWarrior). +After launching the executable, depending on the emulator you are +using, you may need to task away from the app launcher/shell screen +to view the console.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AA820231-5C46-46A1-A310-ABBA45593B1F_d0e184679_href.png Binary file Symbian3/PDK/Source/GUID-AA820231-5C46-46A1-A310-ABBA45593B1F_d0e184679_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AA820231-5C46-46A1-A310-ABBA45593B1F_d0e190756_href.png Binary file Symbian3/PDK/Source/GUID-AA820231-5C46-46A1-A310-ABBA45593B1F_d0e190756_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AA9611C0-9AFC-530B-9B50-0D6E600C8D3E.dita --- a/Symbian3/PDK/Source/GUID-AA9611C0-9AFC-530B-9B50-0D6E600C8D3E.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ - - - - - -systemresource -

    systemresource resource-file-list

    -

    From v9.0, platform security requires projects to -specify the directory for the built resource. You need to use the start resource syntax -to do this..

    -

    Use the systemresource statement to specify resource files -for system components.

    -

    The makefile will build the resource file into epoc32\release\ platform \ variant \z\system\data\ for a WINSCW, WINS -or WINC build.

    -

    Each resource file should be given with its extension, e.g. squash.rss.

    -

    If more than one language is specified with the lang, -then each resource will be compiled multiple times, once for each language -specified.

    -

    For application projects, use the resource statement.

    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AB0D05E8-A001-5361-A1FA-BBE4C5F7AAB8.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-AB0D05E8-A001-5361-A1FA-BBE4C5F7AAB8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Using CryptoSPI \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AB35BA46-87DB-59F0-9342-75550AD338B7_d0e228209_href.png Binary file Symbian3/PDK/Source/GUID-AB35BA46-87DB-59F0-9342-75550AD338B7_d0e228209_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AB35BA46-87DB-59F0-9342-75550AD338B7_d0e234208_href.png Binary file Symbian3/PDK/Source/GUID-AB35BA46-87DB-59F0-9342-75550AD338B7_d0e234208_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AB397519-AE26-5DBC-8D00-1961E2E0F734.dita --- a/Symbian3/PDK/Source/GUID-AB397519-AE26-5DBC-8D00-1961E2E0F734.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-AB397519-AE26-5DBC-8D00-1961E2E0F734.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> A-GPS Location Manager OverviewThe A-GPS Location Manager is responsible for obtaining a location from A-GPS hardware.
    Purpose

    The A-GPS Location Manager is used by the Location Server and the Network Request Handler. It loads an A-GPS Integration Module to obtain positions from A-GPS hardware.

    Required background

    The reader should be familiar with the LBS architecture.

    Key concepts and terms
    Assisted GPS (A-GPS)

    A-GPS uses assistance data from the network to reduce the Time To First Fix (TTFF)

    Architecture

    The A-GPS Location Manager is a process that runs as part of the LBS subsystem. It is responsible for obtaining a location from A-GPS hardware.

    The Location Server sends requests for location to the A-GPS Location Manager when the position quality criteria specified for an MO-LR (self locate) requires a GPS fix (or when no position quality criteria are specified).

    The Network Request Handler may send a request for location to the A-GPS Location Manager if the position quality criteria specified for an MT-LR or MO-LR (transmit to third party) requires a GPS fix.

    The A-GPS Location Manager obtains GPS data from GPS hardware through an A-GPS Integration Module. The A-GPS Location Manager also interacts with the Network Gateway to obtain assistance data from the network.

    Figure 1. A-GPS Location Manager. -
    APIs

    The A-GPS Location Manager is an internal component of the LBS subsystem. It does not expose any published APIs.

    Typical uses

    The A-GPS Location Manager is only used internally by the LBS subsystem.

    A-GPS Location Data Source API A-GPS Reference Module
    \ No newline at end of file +
    APIs

    The A-GPS Location Manager is an internal component of the LBS subsystem. It does not expose any published APIs.

    Typical uses

    The A-GPS Location Manager is only used internally by the LBS subsystem.

    A-GPS Location Data Source API A-GPS Reference Module
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AB40C087-F5AF-5D73-82ED-B89BA2B702B9.dita --- a/Symbian3/PDK/Source/GUID-AB40C087-F5AF-5D73-82ED-B89BA2B702B9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-AB40C087-F5AF-5D73-82ED-B89BA2B702B9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -45,7 +45,7 @@ in the message store. Unlike many other MTMs, after OBEX tries to send a message, the message is deleted from the outbox whether the sending succeeds or fails.

    OBEX MTM class diagram - +

    IR MTM

    The generic OBEX MTM functionality is provided by the OBEX MTM DLLs, the IR MTM itself just sets up the parameters. The IR MTM supports non-standard OBEX transfer to maintain compatibility with older diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AB68F150-1005-54AE-8F71-A88949463FDD_d0e259440_href.png Binary file Symbian3/PDK/Source/GUID-AB68F150-1005-54AE-8F71-A88949463FDD_d0e259440_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AB68F150-1005-54AE-8F71-A88949463FDD_d0e265449_href.png Binary file Symbian3/PDK/Source/GUID-AB68F150-1005-54AE-8F71-A88949463FDD_d0e265449_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AB69D251-7635-4325-BBCE-92F7AFC86DC2.dita --- a/Symbian3/PDK/Source/GUID-AB69D251-7635-4325-BBCE-92F7AFC86DC2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-AB69D251-7635-4325-BBCE-92F7AFC86DC2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -40,7 +40,7 @@

    CryptoSPI (Weak and Strong) APIs

    Provides a framework for implementing cryptographic algorithms, hash algorithms and random number generation. For more information, -see CryptoSPI +see CryptoSPI Overview.

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AB9A3EA2-2B99-4502-A161-8EE5BF477D41.dita --- a/Symbian3/PDK/Source/GUID-AB9A3EA2-2B99-4502-A161-8EE5BF477D41.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-AB9A3EA2-2B99-4502-A161-8EE5BF477D41.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ recorder utility of the Multimedia Framework (MMF) to develop your application. To make use of the onboard camera to capture a video clip, the application needs to repeat the steps described in the illustration below.

    -The steps required to capture a video clip +The steps required to capture a video clip

    Important implementation considerations include:

    • Make sure you include the VideoRecorder.h and mmfcontrollerpluginresolver.h header diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ABA6144B-E861-5ABD-969E-03814BB2B38A_d0e232173_href.png Binary file Symbian3/PDK/Source/GUID-ABA6144B-E861-5ABD-969E-03814BB2B38A_d0e232173_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ABA6144B-E861-5ABD-969E-03814BB2B38A_d0e238168_href.png Binary file Symbian3/PDK/Source/GUID-ABA6144B-E861-5ABD-969E-03814BB2B38A_d0e238168_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ABC01315-D65D-55EA-9D42-4DE6384D517D.dita --- a/Symbian3/PDK/Source/GUID-ABC01315-D65D-55EA-9D42-4DE6384D517D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-ABC01315-D65D-55EA-9D42-4DE6384D517D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Position data and info classesThis document describes the basic and extended classes that hold position data.

      The Location Acquisition API defines a set of position data classes. Some of these classes store the co-ordinates of a location fix and others store information about course and positioning satellites. The API also defines position info classes that wrap the position data classes. These classes are used to pass data across the Location Acquisition API. Figure 1 illustrates the position data and position info classes with some of the most important methods.

      Figure 1 Position data and info classes -
      The position data classes
      • TCoordinate is the base class for all the position data classes. It holds latitude, longitude and altitude data. All positioning modules must provide latitude and longitude information, but not all modules are guaranteed to provide altitude information.

      • TLocality adds accuracy information to co-ordinates.

      • TPosition adds the time at which the location fix was obtained and also allows the average speed between two positions to be calculated.

      There are two additional position data classes that are not part of this position data class inheritance hierarchy.

      • TCourse holds bearing and current speed data.

      • TSatelliteData holds information on one of the satellites used to obtain the location fix.

      Note that it is a position info object and not a position data object that is passed across the Location Acquisition API. Client applications extract the position data object from the wrapper position info object.

      See Position data for a description of how the location data is represented inside the position data classes.

      The position info classes

      Client applications use three position info classes that wrap the position data classes:

      • TPositionInfo wraps a TPosition class

      • TPositionCourseInfo wraps a TCourse class

      • TPositionSatelliteInfo wraps a TSatelliteData class

      To get location information, a reference to an object of a class derived from TPositionInfoBase is passed in a call to RPositioner::NotifyPositionUpdate() or RPositioner::GetLastKnownPosition(). The position info class hierarchy allows simple location information (TPositionInfo), course information (TCourse Info) or satellite information (TSatelliteInfo) to be obtained via the same calls to the Location Acquisition API.

      HPositionGenericInfo

      HPositionGenericInfo is an extended position info class that allocates memory on the heap. Applications can use the class to retrieve additional position information from positioning hardware that can provide it (such as NMEA strings provided by Bluetooth GPS hardware).

      HPositionGenericInfo is only supported by the Location Server eposserver.exe. It can only be used by applications that link with lbs.lib. Not all PSYs support this class.

      See also

      Position data

      \ No newline at end of file +
      The position data classes
      • TCoordinate is the base class for all the position data classes. It holds latitude, longitude and altitude data. All positioning modules must provide latitude and longitude information, but not all modules are guaranteed to provide altitude information.

      • TLocality adds accuracy information to co-ordinates.

      • TPosition adds the time at which the location fix was obtained and also allows the average speed between two positions to be calculated.

      There are two additional position data classes that are not part of this position data class inheritance hierarchy.

      • TCourse holds bearing and current speed data.

      • TSatelliteData holds information on one of the satellites used to obtain the location fix.

      Note that it is a position info object and not a position data object that is passed across the Location Acquisition API. Client applications extract the position data object from the wrapper position info object.

      See Position data for a description of how the location data is represented inside the position data classes.

      The position info classes

      Client applications use three position info classes that wrap the position data classes:

      • TPositionInfo wraps a TPosition class

      • TPositionCourseInfo wraps a TCourse class

      • TPositionSatelliteInfo wraps a TSatelliteData class

      To get location information, a reference to an object of a class derived from TPositionInfoBase is passed in a call to RPositioner::NotifyPositionUpdate() or RPositioner::GetLastKnownPosition(). The position info class hierarchy allows simple location information (TPositionInfo), course information (TCourse Info) or satellite information (TSatelliteInfo) to be obtained via the same calls to the Location Acquisition API.

      HPositionGenericInfo

      HPositionGenericInfo is an extended position info class that allocates memory on the heap. Applications can use the class to retrieve additional position information from positioning hardware that can provide it (such as NMEA strings provided by Bluetooth GPS hardware).

      HPositionGenericInfo is only supported by the Location Server eposserver.exe. It can only be used by applications that link with lbs.lib. Not all PSYs support this class.

      See also

      Position data

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ABC23765-1553-5235-88C5-39D1DF0D7CA2.dita --- a/Symbian3/PDK/Source/GUID-ABC23765-1553-5235-88C5-39D1DF0D7CA2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-ABC23765-1553-5235-88C5-39D1DF0D7CA2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,20 +1,19 @@ - - - - - -Bootstrap -

      Porting the existing bootstrap code from EKA1 to EKA2 is not possible. -You will need to re-code the bootstrap for EKA2.

      -
      - -Migration Tutorial -EKA1 to Kernel Architecture 2 - + + + + + +Bootstrap +

      Porting the existing bootstrap code from EKA1 to EKA2 is not possible. +You will need to re-code the bootstrap for EKA2.

      +
      + +Migration Tutorial EKA1 to Kernel Architecture 2 +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ABE77283-EED8-5A33-B574-3B771EF11086.dita --- a/Symbian3/PDK/Source/GUID-ABE77283-EED8-5A33-B574-3B771EF11086.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-ABE77283-EED8-5A33-B574-3B771EF11086.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,49 +9,44 @@ --> -How -to Use ULogger with Comms -

      This tutorial summarises one approach for enabling, retrieving and post-processing -the ULogger logs -for Comms. ULogger is part of the Unified Trace framework which replaces other -logging mechanisms for Symbian platform including Flogger and -CDU.

      +How to Use ULogger with Comms +

      This tutorial summarizes one approach for enabling, retrieving +and post-processing the ULogger logs for Comms. ULogger +is part of the Unified Trace framework which replaces other logging +mechanisms for Symbian platform including Flogger and CDU.

      The Unified Trace framework has greater flexibility and speed compared to Flogger and CDU.

      -
      Introduction

      The Comms logging which has been migrated -to ULogger is as follows:

        -
      • Comms Framework Node -messages - creation and destruction of Nodes and messages between Nodes.

      • -
      • Mesh Machine messages

      • -
      • data to support the -SVG generation

      • -

      This logging replaces some of what was logged through the "LOG -CFNode * ", "LOG Mesh * " and "LOG ESock -* " tags. In the case of the ESock tag, the logging -which is written to ULogger is also written to CDU.

      This usage description -assumes that the development tools already include ULogger support.

      -
      Procedure - Using ULogger

      Requirements

      - For this tutorial, the code under observation must be run from EShell.

      - The following binaries must include logging:

        -
      • nodemessages.dll -

      • -
      • meshmachine.dll -

      • -
      • commsfw.dll

      • -
      • serverden.dll

      • -
      • esocksvr.dll

      • -

      To enable logging for a binary either use the UDEB version of the - binary or rebuild the binary with the SYMBIAN_TRACE_ENABLED macro -defined.

      +
      Introduction

      The Comms logging which has been migrated to ULogger is as follows:

        +
      • Comms Framework +Node messages - creation and destruction of Nodes and messages between +Nodes.

      • +
      • Mesh Machine +messages

      • +
      • data to support +the SVG generation

      • +

      This logging replaces some of what was logged through the +"LOG CFNode * ", "LOG Mesh * " and +"LOG ESock * " tags. In the case of the ESock tag, the logging which is written to ULogger is also written to +CDU.

      This usage description assumes that the development tools +already include ULogger support.

      Note: For more information, +see Symbian^3 Tools Guide > Debugging.

      +
      Procedure +- Using ULogger

      Requirements

      For this tutorial, +the code under observation must be run from EShell.

      The following binaries must include logging:

        +
      • nodemessages.dll

      • +
      • meshmachine.dll

      • +
      • commsfw.dll

      • +
      • serverden.dll

      • +
      • esocksvr.dll

      • +

      To enable logging for a binary either use the UDEB version +of the binary or rebuild the binary with the SYMBIAN_TRACE_ENABLED macro defined.

      Steps
        -
      1. Start -Eshell - ULogger only supports asynchronous logging, so -from EShell start a second instance of EShell.

        start eshell

        - This allows ULogger to be stopped even if the code under - observation does not exit normally.

      2. -
      3. Set -the ULogger Filters - To allow Comms logging enable the -following filters:

        +
      4. Start Eshell - ULogger only supports asynchronous logging, so from EShell start +a second instance of EShell.

        start eshell

        This allows ULogger to be stopped even if the +code under observation does not exit normally.

      5. +
      6. + Set the ULogger Filters - To allow Comms logging enable +the following filters:

      7. @@ -62,22 +57,24 @@

        194

        -

        Node Messages

        +

        Node Messages +

        195

        -

        Mesh Machine

        +

        Mesh Machine +

        196

        -

        SVG Logging - provides extra logging so -that 194 and 195 can be displayed in an SVG file -

        +

        SVG Logging - provides extra logging +so that 194 and 195 can be displayed in an +SVG file

        -

        The following filter is also useful: -

        +

        The following filter is also useful: +

        @@ -88,69 +85,66 @@

        3

        -

        Kernel Thread ID's - Thread and process -creation

        +

        Kernel Thread ID's - Thread and +process creation

        -

        Set these filters with the following command: -

        ulogger -efv 194 195 3 196 -
      8. -
      9. Start -ULogger - The following command starts ULogger with the -filter:

        +

        Set these filters with the following command:

        ulogger -efv 194 195 3 196 +
      10. +
      11. + Start ULogger - The following command starts ULogger + with the filter:

        ulogger -rv
      12. -
      13. Run -the code under observation - In the first Eshell session, -run the code to be tested or debugged.

      14. -
      15. Stop -ULogger - To stop ULogger and generate the logs, use the -command:

        ulogger -qv
      16. -
      17. Process -the binary logs into text - The log file created by ULogger -is in a binary format and is located in the c:\logs folder -on the device.

        To use the log file, -the file must be converted to a text format. -

        The Comms software has a decoder to interpret the -ULogger output for Comms. This decoder is an MS Windows-compatible -application and is located in …\os\commsfw\commsfwtools\. -

        An example command to run the decoder -is:

        utracedecoder - -message-def esockmessages.definition.txt ulogger.log > log.txt

        - The decoder uses a definition file to decipher the binary data -in the log, and the decoder has definition files configured -for the current scope of Comms logging. This example uses -the ESock messages definition file, which is located in - …\os\commsfw\commsfwtools\commstools\utracedecoder\data\esockmessages.definition.txt. -

        The output in log.txt -contains an interpretation of the original binary logs. -

      18. -
      19. Generating -the SVG diagram - The exchange of messages between Nodes -can be rendered into a diagram.

        From …\os\commsfw\commsfwtools\commstools\svg run - parseit.bat specifying the path to the -generated log.txt file:

        parseit.bat /log M:\path_to_log_file\log.txt +
      20. + Run the code under observation - In the first Eshell + session, run the code to be tested or debugged. +

      21. +
      22. + Stop ULogger - To stop ULogger and generate the + logs, use the command:

        ulogger -qv
      23. +
      24. + Process the binary logs into text - The log file + created by ULogger is in a binary format and is located +in the c:\logs folder on the +device.

        To use the log file, +the file must be converted to a text format. +

        The Comms software has a decoder +to interpret the ULogger output for Comms. This decoder +is an MS Windows-compatible application and is located + in …\os\commsfw\commsfwtools\. +

        An example command to run the decoder +is:

        utracedecoder - -message-def esockmessages.definition.txt ulogger.log > log.txt

        The decoder uses a definition file to decipher +the binary data in the log, and the decoder has definition +files configured for the current scope of Comms logging. +This example uses the ESock messages definition file, which + is located in …\os\commsfw\commsfwtools\commstools\utracedecoder\data\esockmessages.definition.txt.

        The output +in log.txt contains an interpretation of the original + binary logs.

      25. +
      26. + Generating the SVG diagram - The exchange of + messages between Nodes can be rendered into a diagram. +

        From …\os\commsfw\commsfwtools\commstools\svg run parseit.bat specifying +the path to the generated log.txt file:

        parseit.bat /log M:\path_to_log_file\log.txt Example SVG output from the Message Sequence Display Tool - +

        Key to the SVG diagram:

          -
        1. - Vertical black lines are tagged with names to represent node - lifetimes. For example: IPCpr -

        2. -
        3. - Vertical lines forking from the node lifetime lines are - MeshMachine activity lifetimes.

        4. -
        5. - Black horizontal lines are message deliveries.

        6. -
        7. - Green horizontal lines are message postings.

        8. -

        New message types can be added to the definition -files. See the documentation with the utracedecoder component. -

      27. +
      28. + Vertical black lines are tagged with names to represent +node lifetimes. For example: IPCpr

      29. +
      30. + Vertical lines forking from the node lifetime lines are + MeshMachine activity lifetimes. +

      31. +
      32. + Black horizontal lines are message deliveries. +

      33. +
      34. + Green horizontal lines are message postings. +

      35. +

      New message types can be added to the +definition files. See the documentation with the utracedecoder component. +

  • - -Unified Trace -Solution -How to Use -the ULogger Configuration File - \ No newline at end of file + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ABE7BC1A-C51B-5ADD-8568-87A81423B648_d0e304884_href.png Binary file Symbian3/PDK/Source/GUID-ABE7BC1A-C51B-5ADD-8568-87A81423B648_d0e304884_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ABE7BC1A-C51B-5ADD-8568-87A81423B648_d0e310876_href.png Binary file Symbian3/PDK/Source/GUID-ABE7BC1A-C51B-5ADD-8568-87A81423B648_d0e310876_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AC3A531E-C6D7-5F04-B8FB-35B37FB01A14_d0e450100_href.png Binary file Symbian3/PDK/Source/GUID-AC3A531E-C6D7-5F04-B8FB-35B37FB01A14_d0e450100_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AC3A531E-C6D7-5F04-B8FB-35B37FB01A14_d0e455945_href.png Binary file Symbian3/PDK/Source/GUID-AC3A531E-C6D7-5F04-B8FB-35B37FB01A14_d0e455945_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AC3F5010-ECA6-4257-98B5-77FB26B4987F_d0e2262_href.png Binary file Symbian3/PDK/Source/GUID-AC3F5010-ECA6-4257-98B5-77FB26B4987F_d0e2262_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AC3F5010-ECA6-4257-98B5-77FB26B4987F_d0e2272_href.png Binary file Symbian3/PDK/Source/GUID-AC3F5010-ECA6-4257-98B5-77FB26B4987F_d0e2272_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AC5ADA77-EBA1-597E-A6B7-80157E9DE2B2_d0e227282_href.png Binary file Symbian3/PDK/Source/GUID-AC5ADA77-EBA1-597E-A6B7-80157E9DE2B2_d0e227282_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AC5ADA77-EBA1-597E-A6B7-80157E9DE2B2_d0e233275_href.png Binary file Symbian3/PDK/Source/GUID-AC5ADA77-EBA1-597E-A6B7-80157E9DE2B2_d0e233275_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AC7069ED-8CA5-55FC-9DF6-595C0505C672.dita --- a/Symbian3/PDK/Source/GUID-AC7069ED-8CA5-55FC-9DF6-595C0505C672.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-AC7069ED-8CA5-55FC-9DF6-595C0505C672.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,4 +12,4 @@ Positioning Module StatusThis document describes positioning technology module status, which applications access through the Location Acquisition API.
    Purpose

    This document describes Positioning Module status, which applications access through the Location Acquisition API.

    Positioning Module status

    A Positioning Module has a status which is represented by a TPositionModuleStatus object. The status describes the low-level state of a Positioning Module, such as whether it is disabled, initialising, or ready to retrieve location data, as well as its data quality status.

    A change in Positioning Module status is indicated by a status event. Details of the event are held in a TPositionModuleStatusEvent object. Client applications can receive notification of status events from the location server.

    Figure 1 illustrates Positioning Module status and event classes.

    Figure 1. TPositionModuleStatus and TPositionModuleStatusEvent classes -

    TPositionModuleStatus

    TPositionModuleStatus describes the status of a Positioning Module. An application gets information about a Positioning Module's current status by calling RPositionServer::GetModuleStatus(). There are two status types - device status and data quality status.

    Device status

    Device status is the status of the hardware device utilised by a Positioning Module, such as the chipset used by an A-GPS Positioning Module.

    TPositionModuleStatus::DeviceStatus() returns the device status as a TPositionModuleStatus::TDeviceStatus value. The value returned can indicate a transient device status, such as whether the hardware is disabled, initialising, or ready. It can also indicate a more serious device error state.

    Data quality status

    Data quality status describes the accuracy of the location data that a Positioning Module is able to provide at a point in time.

    TPositionModuleStatus::DataQualityStatus() returns the data quality status as a TPositionModuleStatus::TDataQualityStatus value. This value indicates whether the quality of location data is normal (the ideal condition), partially degraded or completely degraded. Location data quality can become degraded because the mobile device has moved out of range of any base stations or is in a position where it cannot receive signals from positioning satellites. Note that loss of information quality does not indicate a device error, which would be flagged by a change in the device status.

    Positioning Module status events

    When a Positioning Module's status changes, a Positioning Module status event occurs.

    There are three types of Positioning Module status events:

    • Device status events

    • Data quality status events

    • System level events. These events indicate that a Positioning Module has been added or removed in the system.

    TPositionModuleStatusEvent

    An object of class TPositionModuleStatusEvent has two functions:

    • As the object on which an application defines the types of Positioning Module status events for which it requests notification. These are set by calling TPositionModuleStatusEvent::SetRequestedEvents() passing a TPositionModuleStatusEventBase::TModuleEvent bitmask value as a parameter to define the combination of events

    • As the object on which the location framework sets the type of events that have occurred. These are retrieved by calling TPositionModuleStatusEvent::OccurredEvents() and checking the returned TPositionModuleStatusEventBase::TModuleEvent value.

    Event notification

    An application calls RPositionServer::NotifyModuleStatusEvent() to receive notification of Positioning Module status changes, passing a reference to a TPositionModuleStatusEvent object on which it has set the requested events. An application also supplies a TRequestStatus object and optionally a TPositionModuleId object if status changes from only one Positioning Module are required.

    When the status of a Positioning Module changes, the client application is notified. The TPositionModuleStatusEvent object that was supplied to the location server now also contains details of the events that have occurred and these are obtained by calling TPositionModuleStatusEvent::OccurredEvents().

    The Positioning Module status is obtained by calling TPositionModuleStatusEvent::GetModuleStatus() providing a TPositionModuleStatus reference as a parameter.

    See How to Get Positioning Module Status Changes for an example.

    Uses of Positioning Module status

    Quality status events are useful for applications that need to modify their behaviour based on the quality of location information that can be received. For example, an application may need to show a message when a user moves into an area where the accuracy of location information is degraded to a lower quality than is required because of distance from a base station or inability to receive satellite signals.

    Device status events and system Positioning Module events are most useful to software components that perform administrative operations, such as taking a Positioning Module online or offline. The events can be used to notify when such an administrative operation is complete.

    Device status events can also be used to keep a user informed as to the status of a particular Positioning Module. For example, a phone status bar could be updated to show that GPS is active when location information is being received.

    See also

    Positioning Modules

    \ No newline at end of file +

    TPositionModuleStatus

    TPositionModuleStatus describes the status of a Positioning Module. An application gets information about a Positioning Module's current status by calling RPositionServer::GetModuleStatus(). There are two status types - device status and data quality status.

    Device status

    Device status is the status of the hardware device utilised by a Positioning Module, such as the chipset used by an A-GPS Positioning Module.

    TPositionModuleStatus::DeviceStatus() returns the device status as a TPositionModuleStatus::TDeviceStatus value. The value returned can indicate a transient device status, such as whether the hardware is disabled, initialising, or ready. It can also indicate a more serious device error state.

    Data quality status

    Data quality status describes the accuracy of the location data that a Positioning Module is able to provide at a point in time.

    TPositionModuleStatus::DataQualityStatus() returns the data quality status as a TPositionModuleStatus::TDataQualityStatus value. This value indicates whether the quality of location data is normal (the ideal condition), partially degraded or completely degraded. Location data quality can become degraded because the mobile device has moved out of range of any base stations or is in a position where it cannot receive signals from positioning satellites. Note that loss of information quality does not indicate a device error, which would be flagged by a change in the device status.

    Positioning Module status events

    When a Positioning Module's status changes, a Positioning Module status event occurs.

    There are three types of Positioning Module status events:

    • Device status events

    • Data quality status events

    • System level events. These events indicate that a Positioning Module has been added or removed in the system.

    TPositionModuleStatusEvent

    An object of class TPositionModuleStatusEvent has two functions:

    • As the object on which an application defines the types of Positioning Module status events for which it requests notification. These are set by calling TPositionModuleStatusEvent::SetRequestedEvents() passing a TPositionModuleStatusEventBase::TModuleEvent bitmask value as a parameter to define the combination of events

    • As the object on which the location framework sets the type of events that have occurred. These are retrieved by calling TPositionModuleStatusEvent::OccurredEvents() and checking the returned TPositionModuleStatusEventBase::TModuleEvent value.

    Event notification

    An application calls RPositionServer::NotifyModuleStatusEvent() to receive notification of Positioning Module status changes, passing a reference to a TPositionModuleStatusEvent object on which it has set the requested events. An application also supplies a TRequestStatus object and optionally a TPositionModuleId object if status changes from only one Positioning Module are required.

    When the status of a Positioning Module changes, the client application is notified. The TPositionModuleStatusEvent object that was supplied to the location server now also contains details of the events that have occurred and these are obtained by calling TPositionModuleStatusEvent::OccurredEvents().

    The Positioning Module status is obtained by calling TPositionModuleStatusEvent::GetModuleStatus() providing a TPositionModuleStatus reference as a parameter.

    See How to Get Positioning Module Status Changes for an example.

    Uses of Positioning Module status

    Quality status events are useful for applications that need to modify their behaviour based on the quality of location information that can be received. For example, an application may need to show a message when a user moves into an area where the accuracy of location information is degraded to a lower quality than is required because of distance from a base station or inability to receive satellite signals.

    Device status events and system Positioning Module events are most useful to software components that perform administrative operations, such as taking a Positioning Module online or offline. The events can be used to notify when such an administrative operation is complete.

    Device status events can also be used to keep a user informed as to the status of a particular Positioning Module. For example, a phone status bar could be updated to show that GPS is active when location information is being received.

    See also

    Positioning Modules

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AC7830F9-C3FB-5117-B851-1D106AE400D4_d0e377757_href.png Binary file Symbian3/PDK/Source/GUID-AC7830F9-C3FB-5117-B851-1D106AE400D4_d0e377757_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AC7830F9-C3FB-5117-B851-1D106AE400D4_d0e383610_href.png Binary file Symbian3/PDK/Source/GUID-AC7830F9-C3FB-5117-B851-1D106AE400D4_d0e383610_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ACA2AFE8-4872-42FA-A871-34EB80197495_d0e190112_href.png Binary file Symbian3/PDK/Source/GUID-ACA2AFE8-4872-42FA-A871-34EB80197495_d0e190112_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ACA2AFE8-4872-42FA-A871-34EB80197495_d0e196181_href.png Binary file Symbian3/PDK/Source/GUID-ACA2AFE8-4872-42FA-A871-34EB80197495_d0e196181_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ACA48BEE-FE73-5C47-B022-E50728CEDBEE.dita --- a/Symbian3/PDK/Source/GUID-ACA48BEE-FE73-5C47-B022-E50728CEDBEE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-ACA48BEE-FE73-5C47-B022-E50728CEDBEE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -50,6 +50,6 @@ The main classes involved in Sound Driver implementation. - + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ACC2777E-F555-58ED-82D0-6F8423FB3EA3_d0e654370_href.png Binary file Symbian3/PDK/Source/GUID-ACC2777E-F555-58ED-82D0-6F8423FB3EA3_d0e654370_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ACC2777E-F555-58ED-82D0-6F8423FB3EA3_d0e667197_href.png Binary file Symbian3/PDK/Source/GUID-ACC2777E-F555-58ED-82D0-6F8423FB3EA3_d0e667197_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ACD9E338-DF75-5811-B696-C3900B498218.dita --- a/Symbian3/PDK/Source/GUID-ACD9E338-DF75-5811-B696-C3900B498218.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-ACD9E338-DF75-5811-B696-C3900B498218.dita Fri Jul 16 17:23:46 2010 +0100 @@ -28,7 +28,7 @@ Location Acquisition API.

    Figure 1. Location Acquisition API privacy classes. - +

    A requester is defined as an agent that requests location information. There are two requester types:

    • Service requesters

      A diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ACDED56F-38FE-491D-B019-BE2C53A75D28.dita --- a/Symbian3/PDK/Source/GUID-ACDED56F-38FE-491D-B019-BE2C53A75D28.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-ACDED56F-38FE-491D-B019-BE2C53A75D28.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,50 +1,45 @@ - - - - - -Data -caging -

      Data caging means that the applications and the users have access only -to certain areas of the file system. In practice the applications can access -their own private folders and folders that are marked as open. It means, for -example, that one application cannot access the private folder and data of -another application. There are restricted file storage areas for system, private, -and resource data.

      -

      The file system has the following structure:

      -
        -
      • The \sys folder is the restricted system -area. You need AllFiles capability to read the content, and -Trusted Computing Base (TCB) capability to modify the content.

        -

        The subfolder \sys\bin\ contains all binaries (exe, dll, -etc.). All binaries must have a different name. An application can only be -launched from this subfolder.

      • -
      • The \private\ folder includes folders -for all applications.

        The \private\<SID>\ subfolder -contains private data only to be accessed by the application itself. SID is -determined by the Secure -Identifier of the process. Without any capabilities you can read and -write only in the application's own directory. You need AllFiles capability -to access all private directories. Backup software can read and write to this -directory.

        The \private\<SID>\import\ subfolder -is for resource files, such as registration files, that are not directly related -to the application. You can write into this subfolder only after it is created -and named correctly.

        Application registration resource files should -be installed in the \private\10003a3f\import\apps subfolder.

        -
      • -
      • The \resource folder is for sharing -resource files. This data can be icons, bitmaps, and other material useful -for all the applications. You do not need any capabilities to read these files. -You need TCB capability to modify the content.

        ECom -registration resource files should be installed in the \resource\plugins subfolder.

        -
      • -
      -

      For more information, see File -locations.

      + + + + + +Data caging +

      Data caging means that the applications and the users have access +only to certain areas of the file system. In practice the applications +can access their own private folders and folders that are marked as +open. It means, for example, that one application cannot access the +private folder and data of another application. There are restricted +file storage areas for system, private, and resource data.

      +

      The file system has the following structure:

      +
        +
      • The \sys folder is the restricted +system area. You need AllFiles capability to read +the content, and Trusted Computing Base (TCB) capability +to modify the content.

        The subfolder \sys\bin\ contains all binaries (exe, dll, etc.). All binaries must have a different name. An application +can only be launched from this subfolder.

      • +
      • The \private\ folder includes +folders for all applications.

        The \private\<SID>\ subfolder contains private data only to be accessed by the application +itself. SID is determined by the Secure Identifier of the process. Without any capabilities +you can read and write only in the application's own directory. You +need AllFiles capability to access all private directories. +Backup software can read and write to this directory.

        The \private\<SID>\import\ subfolder is for resource +files, such as registration files, that are not directly related to +the application. You can write into this subfolder only after it is +created and named correctly.

        Application registration +resource files should be installed in the \private\10003a3f\import\apps subfolder.

      • +
      • The \resource folder is for +sharing resource files. This data can be icons, bitmaps, and other +material useful for all the applications. You do not need any capabilities +to read these files. You need TCB capability to modify +the content.

        ECom registration resource files should be +installed in the \resource\plugins subfolder.

        +
      • +
      +

      For more information, see File locations.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ACF69260-D643-4709-8DAB-33FD92940F86.dita --- a/Symbian3/PDK/Source/GUID-ACF69260-D643-4709-8DAB-33FD92940F86.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ - - - - - -Hierarchical -application structures -

      When browsing within a hierarchical application structure, the Symbian -user interface offers direct access from one folder to another (sibling) folder -in the same level. The Arrow left and Arrow right keys are used to accomplish -this. The Navi pane displays the sibling folders as tabs.

      - -In this example, each displayed state is a folder containing a list -of items. State 1 contains three folders (1-1, 1-2, 1-3). When the user has -opened one of these, there is a possibility to move directly into the other -two folders without first going back to state 1. Folder 1-1 contains two sub-folders -and folder 1-2 contains one. - - -

      This additional navigation feature can be interpreted as a shortcut between -sibling folders. For navigating hierarchical application structures, the basic -navigation rules are applied, noticing the following:

      -
        -
      • Moving from one folder to another has no effect on the function of -the Back softkey in these views: from all of them, the Back function leads -to the previous hierarchy level.

      • -
      • The navigation shortcuts can only be applied when there is no other -use for the Arrow left and Arrow right keys in the state.

      • -
      -
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AD2BD987-E097-5E1F-A914-B91CFB706D51.dita --- a/Symbian3/PDK/Source/GUID-AD2BD987-E097-5E1F-A914-B91CFB706D51.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-AD2BD987-E097-5E1F-A914-B91CFB706D51.dita Fri Jul 16 17:23:46 2010 +0100 @@ -84,7 +84,7 @@ static TInt User::GetDesParameter(TInt aSlot, TDes16& aDes); Environment slots - +
      Passing a file handle and a subsession

      File server session handles and file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AD4F041B-4115-5ABE-8909-44156621DF72_d0e450036_href.png Binary file Symbian3/PDK/Source/GUID-AD4F041B-4115-5ABE-8909-44156621DF72_d0e450036_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AD4F041B-4115-5ABE-8909-44156621DF72_d0e455881_href.png Binary file Symbian3/PDK/Source/GUID-AD4F041B-4115-5ABE-8909-44156621DF72_d0e455881_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AD5C89AC-51CD-5CC0-961C-62F38E9BEA33.dita --- a/Symbian3/PDK/Source/GUID-AD5C89AC-51CD-5CC0-961C-62F38E9BEA33.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - --verbose

      This option pipes to STDOUT the calls to tools that a particular build step is making, and can be useful in determining exactly where an error occurs during the build process.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AD95D78A-9323-5E97-96C4-FB4872B66755_d0e185940_href.png Binary file Symbian3/PDK/Source/GUID-AD95D78A-9323-5E97-96C4-FB4872B66755_d0e185940_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AD95D78A-9323-5E97-96C4-FB4872B66755_d0e192017_href.png Binary file Symbian3/PDK/Source/GUID-AD95D78A-9323-5E97-96C4-FB4872B66755_d0e192017_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ADA36DA0-4E5D-483D-8AA7-C10A8E55ADD2_d0e100921_href.png Binary file Symbian3/PDK/Source/GUID-ADA36DA0-4E5D-483D-8AA7-C10A8E55ADD2_d0e100921_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ADA36DA0-4E5D-483D-8AA7-C10A8E55ADD2_d0e96842_href.png Binary file Symbian3/PDK/Source/GUID-ADA36DA0-4E5D-483D-8AA7-C10A8E55ADD2_d0e96842_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ADB3FA27-1DC0-4A04-A443-A174EDADF49D_d0e68026_href.png Binary file Symbian3/PDK/Source/GUID-ADB3FA27-1DC0-4A04-A443-A174EDADF49D_d0e68026_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ADB3FA27-1DC0-4A04-A443-A174EDADF49D_d0e72239_href.png Binary file Symbian3/PDK/Source/GUID-ADB3FA27-1DC0-4A04-A443-A174EDADF49D_d0e72239_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ADC9B349-3CE4-5017-B437-A7F8890C7F0F_d0e271514_href.png Binary file Symbian3/PDK/Source/GUID-ADC9B349-3CE4-5017-B437-A7F8890C7F0F_d0e271514_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ADC9B349-3CE4-5017-B437-A7F8890C7F0F_d0e277514_href.png Binary file Symbian3/PDK/Source/GUID-ADC9B349-3CE4-5017-B437-A7F8890C7F0F_d0e277514_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ADCDEFF9-4B1D-5E46-A63B-808192123E15_d0e210520_href.jpg Binary file Symbian3/PDK/Source/GUID-ADCDEFF9-4B1D-5E46-A63B-808192123E15_d0e210520_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ADCDEFF9-4B1D-5E46-A63B-808192123E15_d0e216521_href.jpg Binary file Symbian3/PDK/Source/GUID-ADCDEFF9-4B1D-5E46-A63B-808192123E15_d0e216521_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ADDF9C0F-32D3-5CB1-B3B5-2FAD3A4EC278.dita --- a/Symbian3/PDK/Source/GUID-ADDF9C0F-32D3-5CB1-B3B5-2FAD3A4EC278.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Overview of GUI app building

      A Symbian platform GUI application has several components:

      • an application executable, which is an EXE that uses the GUI framework

      • a registration file, which contains non-localisable information

      • optional localisable information, provided by one or more localisable resource files and icon files

      To appear on the shell, a GUI application (e.g. AppName.exe) must be located in the sys\bin directory. Applications built into the ROM must provide their registration files (e.g. AppName_reg.rsc) in the \private\10003a3f\apps directory, whilst applications installed via Software Install must provide their registration files in \private\10003a3f\import\apps. Resource files (e.g. AppName.rss and AppName_loc.rss) should be located in the resource\apps directory.

      For further information on TARGETPATHs see this table.

      The following pages discuss the special configuration issues associated with building for GUI application targets.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AE3BE603-21ED-5DEA-B1E9-0F1ADBED06D0.dita --- a/Symbian3/PDK/Source/GUID-AE3BE603-21ED-5DEA-B1E9-0F1ADBED06D0.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,16 +0,0 @@ - - - - - -Build-time variants

      It is a common requirement to be able to build more than one variant of a program from a single set of source code. For example, you might have evaluation and full variants of a program that are identical in most respects, but which differ in a few features; or might want to build a program for more than one platform, with some features being present on platform but not on the other.

      A traditional way to handle this requirement is to use the pre-preprocessor to conditionally include sections of code depending on whether a macro is set or not. For example:

      #ifdef MY_FLAG - // code that is compiled if MY_FLAG exists -#else - // code that is compiled if MY_FLAG doesn't exists -#endif

      Note that this is not always the best approach, as it can make code difficult to read and maintain. Alternative approaches to consider can include:

      • run-time detection: e.g. unless a file with a registration key is present, restrict the available options to those for the evaluation version

      • plug-in architectures: e.g. if you want to write a program that runs on platforms that may or may not have Bluetooth, then isolate all Bluetooth code in a plug-in that can be dynamically loaded at run-time if appropriate

      However, if conditional compilation is needed, you can configure the build tools to read a file that defines the macros to use. To do this:

      • create a file that defines the macros as #define statements. By Symbian platform convention, such files should have an .hrh extension. The file can be anywhere on the same drive as the epoc32\ directory.

      • create a sub-directory of epoc32\tools\ called variant\, and create in it a text file called variant.cfg. The file must specify the full path to the .hrh macro file. Perl-type comments (marked with #) are also allowed.

      When you use bldmake or abld on the command line, the build tools look for the variant.cfg file, and set any macros defined in the specified file. By adding/removing/changing the variant.cfg file in your build environment, you can alter which macros are set, and so how your project is built.

      For IDE builds, the macros are set when the IDE project file is created, and not changed unless you recreate the IDE project file.

      Note that you can use the macros in bld.inf and .mmp files as well as in C++ files: this allows you to conditionally specify projects, source files, etc.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AE53C15E-0C0F-5726-BBA4-E7DCDA7F48B4_d0e379991_href.png Binary file Symbian3/PDK/Source/GUID-AE53C15E-0C0F-5726-BBA4-E7DCDA7F48B4_d0e379991_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AE53C15E-0C0F-5726-BBA4-E7DCDA7F48B4_d0e385844_href.png Binary file Symbian3/PDK/Source/GUID-AE53C15E-0C0F-5726-BBA4-E7DCDA7F48B4_d0e385844_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AE69AA42-E633-5B7A-BAA1-6896950E0E19_d0e682417_href.png Binary file Symbian3/PDK/Source/GUID-AE69AA42-E633-5B7A-BAA1-6896950E0E19_d0e682417_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AE69AA42-E633-5B7A-BAA1-6896950E0E19_d0e695244_href.png Binary file Symbian3/PDK/Source/GUID-AE69AA42-E633-5B7A-BAA1-6896950E0E19_d0e695244_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AE6F03EB-1430-4526-B4D0-57BC6C6029D4.dita --- a/Symbian3/PDK/Source/GUID-AE6F03EB-1430-4526-B4D0-57BC6C6029D4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-AE6F03EB-1430-4526-B4D0-57BC6C6029D4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,65 +1,50 @@ - - - - -Touch UI - - - - -

      When designing a Symbian application, the UI must be designed so -that all tasks can be performed with touch. Therefore, the design -must not rely on hardware keys (except for turning the power ON and -OFF).

      -

      The touch UI in the Symbian platform involves various specific -touch components, component and UI behavior changes, layout changes -and additions to the user experience. The main differences or additions in touch UI include the following:

      -
        -
      • Resistive touch screen (HW).

        For more information, see Designing applications -for touch UI

      • -
      • Capacitive touch screen (HW).

        For more information, -see Designing -applications for touch UI

      • -
      • Single tap. For more information, see Single tap.

      • -
      • Multiple touch.

        For more information, see Multiple touch.

      • -
      • Touch gestures.

        For more information, see Touch gestures.

      • -
      • Toolbar component in touch UI

        For more information, see Toolbar.

      • -
      • Touch input component (virtual keyboard, hand-writing recognition -and virtual ITU-T)

        For more information, see Text input.

      • -
      • Stylus pop-up menu component

        For more information, see Stylus pop-up -menu.

      • -
      • On-screen dialer application

      • -
      • Additional touch functionality to some components (for example, -Preview pop-up)

        For more information, see Preview pop-up.

      • -
      • Touch-enabled components

        For more information, see Touch support -for UI components.

      • -
      -

      There are two generic layouts for touch UI -portrait orientation -and landscape orientation, see the following figure. The Status pane in Touch UI has three variants: extended, flat and small.

      - -Default Symbian Touch UI layouts for portrait and landscape - -
      -
      - + + + + + +Touch UI +

      When designing a Symbian application, the UI must be designed so +that all tasks can be performed with touch. Therefore, the design +must not rely on hardware keys (except for turning the power ON and +OFF).

      +

      The touch UI in the Symbian platform involves various specific +touch components, component and UI behavior changes, layout changes +and additions to the user experience. The main differences or additions in touch UI include the following:

      +
        +
      • Resistive touch screen (HW).

        For more information, see Designing applications +for touch UI

      • +
      • Capacitive touch screen (HW).

        For more information, +see Designing +applications for touch UI

      • +
      • Single tap. For more information, see Single tap.

      • +
      • Multiple touch.

        For more information, see Multiple touch.

      • +
      • Touch gestures.

        For +more information, see Touch gestures.

      • +
      • Toolbar component in touch UI

        For more information, see Toolbar.

      • +
      • Touch input component (virtual keyboard, hand-writing recognition +and virtual ITU-T)

        For +more information, see Text +input.

      • +
      • Stylus pop-up menu component

        For more information, see Stylus +pop-up menu.

      • +
      • On-screen dialer application

      • +
      • Additional touch functionality to some components (for example, +Preview pop-up)

        For more +information, see Preview +pop-up.

      • +
      • Touch-enabled components

        For more information, see Touch support for UI components.

      • +
      +

      There are two generic layouts for touch UI -portrait orientation +and landscape orientation, see the following figure. The Status pane in Touch UI has three variants: extended, flat and small.

      + +Default Symbian Touch UI layouts for portrait and landscape + + +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AE85751A-77CA-5C41-AF61-C9C9D776B066_d0e202405_href.png Binary file Symbian3/PDK/Source/GUID-AE85751A-77CA-5C41-AF61-C9C9D776B066_d0e202405_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AE85751A-77CA-5C41-AF61-C9C9D776B066_d0e208412_href.png Binary file Symbian3/PDK/Source/GUID-AE85751A-77CA-5C41-AF61-C9C9D776B066_d0e208412_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AE8D314A-5381-5576-9B17-94BA029A7FEA_d0e490421_href.jpg Binary file Symbian3/PDK/Source/GUID-AE8D314A-5381-5576-9B17-94BA029A7FEA_d0e490421_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AE8D314A-5381-5576-9B17-94BA029A7FEA_d0e496239_href.jpg Binary file Symbian3/PDK/Source/GUID-AE8D314A-5381-5576-9B17-94BA029A7FEA_d0e496239_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AE96F25E-45A2-5C00-9F27-BB3E17C8E6E5.dita --- a/Symbian3/PDK/Source/GUID-AE96F25E-45A2-5C00-9F27-BB3E17C8E6E5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-AE96F25E-45A2-5C00-9F27-BB3E17C8E6E5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -97,7 +97,7 @@
      Architecture

      The following diagram shows the basic architecture of the Certificate and Key Management component. The blocks in blue are internal to the component.

      - +

      The various blocks in the basic architecture diagram of the Certificate and Key Management component are explained as follows:

      • Client Application: diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AE979B97-5610-42F3-99A7-5A3D66D3C2E6.dita --- a/Symbian3/PDK/Source/GUID-AE979B97-5610-42F3-99A7-5A3D66D3C2E6.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ - - - - - -Sensor -interaction -

        The following types of interaction are enabled by using the sensors on -the device:

        -
          -
        1. Tapping the device (for -example, double tap) to perform a given function. Tapping interaction -is not recommended for touch devices since the tap might also be interpreted -as a touch action if you tap on the touch screen area.

        2. -
        3. Changing the screen -orientation on the device from portrait to landscape as the device is rotated.

        4. -
        5. Silencing an incoming -call when the device orientation is changed from screen down (for example -on a table) to screen up and back again).

        6. -
        7. Changing application -settings based on the ambient light conditions, e.g. bright sunshine or night -time.

        8. -
        9. In a map application, -changing the orientation of a map based on the device's compass orientation.

        10. -
        11. Allowing movement gestures, -such as device rotation, to trigger an action.

        12. -
        13. Trigger an action when -the device comes in close proximity to the user's hand or head.

        14. -
        -

        The supported sensor interactions are configurable on the device. The users -should be given the option to set their desired interactions.

        -

        Apart from sensing actions, the device can give tactile (vibrating) feedback -to acknowledge that the interaction has been successful.

        -
        Using -sensor interaction in applications

        The APIs to use for sensor interaction -are the Sensor channel API and the Sensor definitions API.

        For implementation -information and description of the APIs, see the API -specification for the sensor APIs.

        Sensors channels come in three -types based on the kind of data that is delivered on the sensor channel: event, -status, and continuous data. For more information, see Definitions -for the sensor APIs.

        - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AEBB7F5D-E18E-4E1F-ADE0-C984084AC108_d0e14295_href.png Binary file Symbian3/PDK/Source/GUID-AEBB7F5D-E18E-4E1F-ADE0-C984084AC108_d0e14295_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AEBB7F5D-E18E-4E1F-ADE0-C984084AC108_d0e14394_href.png Binary file Symbian3/PDK/Source/GUID-AEBB7F5D-E18E-4E1F-ADE0-C984084AC108_d0e14394_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AECDAEBF-777A-579B-92F8-560FD7FF86E7.dita --- a/Symbian3/PDK/Source/GUID-AECDAEBF-777A-579B-92F8-560FD7FF86E7.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ - - - - - -NAME -statement -<name-statement> -name-statement ::= -NAME <short-name> -

        Use this statement to ensure that the resources in the file have a unique -ID so that an application can use multiple resource files without resource -ID conflict.

        -

        This statement must be the first non-comment statement in the file.

        -

        The short-name must be between one and four alphabetic -characters long and be unique (no other file may use the same one). For the -sake of consistency this constant should be in upper case although lower case -is allowed (and will be converted to upper case by the compiler). This short-name is -then converted into a number and shifted onto the leading 20 bits of the resource -ID, leaving the bottom 12 bits for the number of the resource in the file. -This allows a maximum of 4095 resources to be defined in a source file.

        -

        Since the NAME statement maps all resource IDs within -the file onto 32-bit numbers, only LLINK s may be used for -resource references in that file. Using the NAME statement -in a resource file means that any attempt to use a LINK will -generate an error.

        -

        With NAME set to AAAA, -if this resource is the first resource in the file

        RESOURCE STRING one - { - wd=5; - }

        the first entry in the generated header file will be

        #define ONE 0x04FD8001

        04FD8 -is the leading 20 bits for all IDs in the file and 001 is the reference of -that resource within the file.

        -
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AF8280C0-20B2-5D68-BFF5-7D9D1CE989DD.dita --- a/Symbian3/PDK/Source/GUID-AF8280C0-20B2-5D68-BFF5-7D9D1CE989DD.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -debuglibrary

        debuglibrary filename-list

        Use the debuglibrary statement to specify the libraries that are only required in debug builds.

        Any number of files may be specified, and there may be many debuglibrary statements. Specify the entire filename, e.g. euser.lib.

        The keyword indicates libraries which are only required in debug builds; this situation can arise when complex functions are called from __ASSERT_DEBUG() macros, for example in the TSwizzleCBase constructor which calls a function in estor.lib.

        makmake constructs two lists of libraries, one for debug builds and the other for release builds. The library keyword contributes to both lists, but the debuglibrary keyword only contributes to the debug list. There is no support for libraries which are only used in release builds.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AF91088E-CCE3-5D51-B2E4-09621B4BF506_d0e594398_href.jpg Binary file Symbian3/PDK/Source/GUID-AF91088E-CCE3-5D51-B2E4-09621B4BF506_d0e594398_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AF91088E-CCE3-5D51-B2E4-09621B4BF506_d0e622292_href.jpg Binary file Symbian3/PDK/Source/GUID-AF91088E-CCE3-5D51-B2E4-09621B4BF506_d0e622292_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AFAD0F36-330B-50BD-B810-85BE7FA21179.dita --- a/Symbian3/PDK/Source/GUID-AFAD0F36-330B-50BD-B810-85BE7FA21179.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-AFAD0F36-330B-50BD-B810-85BE7FA21179.dita Fri Jul 16 17:23:46 2010 +0100 @@ -33,7 +33,7 @@ the physical path of the file:

        K:/ws/direct/direct.mmp

        gives the following URI file:

        ///k/ws/direct/direct.mmp

        The screen output from this example is:

        - +

        Modifying a URI

        void CExampleInetProtUtil::ModifyUriComponents();

        Modifies URI components, which involves:

        1. Adding URI components, @@ -45,18 +45,18 @@

        2. port: 8080

      to get the complete URI:

      http://waterlang.org:8080/main_page.html

      The screen output from this example is:

      - +
    • Removing the specific URI component(s) from a constructed URI. For example, the above URI with the port number removed:

      http://waterlang.org/main_page.html

      The screen output from this example is:

      - +
    • Resolving a URI

      void CExampleInetProtUtil::ResolveUri();

      Resolves the URI, which involves creation of an absolute CUri object from a given reference URI.

      The screen output from this example is:

      - +

      Parsing a URI

      void CExampleInetProtUtil::ParseUri();

      Parses the URI into its components (as given in RFC2396). The five URI components are:

      • scheme

      • @@ -65,21 +65,21 @@
      • query

      • fragment.

      The screen output from this example is:

      - +

      Validating a URI

      void CExampleInetProtUtil::ValidateUriComponents();

      Validates a given URI. This function is usually used for URIs with SIP as the scheme.

      The screen output from this example is:

      - +

      Extracting URI components

      void CExampleInetProtUtil::ExtractUriComponents();

      Extracts URI components from the given URI.

      The screen output from this example is:

      - +

      Retrieving a filename from a URI

      void CExampleInetProtUtil::RetrieveFileName();

      Extracts the actual physical location of the file from its URI.

      The screen output from this example is:

      - +

      Adding and removing delimiters from a URI

      void CExampleInetProtUtil::ModifyDelimiter();

      Adds the delimiters to and removes the delimiters from a URI. Before doing this ensure that:

        @@ -88,16 +88,16 @@
      • the URI has already been parsed.

      The screen output from this example is:

      - +

      Removing whitespace from a URI

      void CExampleInetProtUtil::WhiteSpaceRemover();

      Removes the whitespace from the given URI and returns the number of white spaces that were removed.

      The screen output from this example is:

      - +

      Escape encoding and decoding a URI

      void CExampleInetProtUtil::EscapeEncodeDecode();

      Escape encodes the characters in a given URI as escape triplets and decodes it to the original one.

      The screen output from this example is:

      - +
      Class Summary

      CUri8

      TUriParser8

      EscapeUtils

      TDelimitedParserBase8

      InetProtTextUtils

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AFB1F350-C5D3-5495-AE20-1AA6888B6FB1.dita --- a/Symbian3/PDK/Source/GUID-AFB1F350-C5D3-5495-AE20-1AA6888B6FB1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ - - - - - -How -to Insert Trace Points in a Component -

      Trace points can be added manually to trace specific-required events in -the source code or component at build time.

      -

      To instrument a component, the Instrumentor can use the methods given in -the epoc32/include/e32utrace.h file. The UTrace API provides -some basic information for each trace, but the Symbian developer has to define -the payload of the trace. It is recommended the Instrumentor is consistent -whilst adding traces in order to help the Trace Collector parse the trace -output once it is on the host. For example, being consistent while formatting -an Object ID or Object Name.

      -
      -How to enable -tracing -
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AFC49653-78E6-5639-911C-E02AEB08AFFC_d0e228632_href.png Binary file Symbian3/PDK/Source/GUID-AFC49653-78E6-5639-911C-E02AEB08AFFC_d0e228632_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AFC49653-78E6-5639-911C-E02AEB08AFFC_d0e234631_href.png Binary file Symbian3/PDK/Source/GUID-AFC49653-78E6-5639-911C-E02AEB08AFFC_d0e234631_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AFE7F3DA-6D61-5A4C-A08F-C998C8805A06.dita --- a/Symbian3/PDK/Source/GUID-AFE7F3DA-6D61-5A4C-A08F-C998C8805A06.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-AFE7F3DA-6D61-5A4C-A08F-C998C8805A06.dita Fri Jul 16 17:23:46 2010 +0100 @@ -37,7 +37,7 @@ requests the resolved client to connect to the SIP implementation.

      Call flow of resolving a target client implementation using CSIPResolvedClient2 - +

      The target clients must implement the CSIPResolvedClient2 interface to receive SIP requests including SIP dialogs and enable the client resolution mechanism. Note: The channel UIDs must be unique across all diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-AFF0B669-E0D8-5533-A105-0F5EBC6AF5E1.dita --- a/Symbian3/PDK/Source/GUID-AFF0B669-E0D8-5533-A105-0F5EBC6AF5E1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -List of Symbian tools

      This section provides links to the documentation for the tools provided with Symbian platform. Note that these lists are not exhaustive.

      Note: Additional tools for integrating and customising software to produce a Symbian-based platform or phone are supplied as part of Platform Developer Toolkit (PDT). The tools include Symbian Build System v2 (SBSv2), API Usage Report Analysis (AURA), Code Database (CDB), Component Based Release (CBR), EmulatorBuild, Symbian Test Automation Tool (STAT), Test Execute Framework (TEF), TestDriver, Use Case Controller (UCC) and WinTAP. Documentation for these tools is supplied with the PDT.

      Application development tools

      The application development tools help to speed up development of Symbian platform applications.

      Name Description Reference

      Application Resource Tools

      Tools for building resource files.

      Application resource tools guide

      Build Tools

      Tools used to build Symbian platform programs.

      Build tools guide

      In addition to these, the Symbian Build System v2 (SBSv2) provides tools for building Symbian platform and applications developed for Symbian platform. For more information about SBSv2, see Symbian Build System v2 provided with PDT.

      Analysis tools Name Description Reference

      Capability Management tools

      Allows you to compare the capabilities of binaries that are developed against Symbian platform.

      Capability Management tools

      Set capability test tool

      Allows you to make a copy of an executable and assign different capabilities to it.

      Set Capability Test tool

      In addition to these, Symbian provides more analysis tools as part of the PDT.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B015C4A3-469E-5AC4-B9B9-A24AF7444E65.dita --- a/Symbian3/PDK/Source/GUID-B015C4A3-469E-5AC4-B9B9-A24AF7444E65.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B015C4A3-469E-5AC4-B9B9-A24AF7444E65.dita Fri Jul 16 17:23:46 2010 +0100 @@ -40,7 +40,7 @@ is no exposure to Message Server APIs on the client-side. The SendAs Server encapsulates the Message Server completely.

      SendAs architecture - +
      SendAs Server

      The SendAs Server maintains all SendAs entries and controls the access to a Message Store. It allows client diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B025C751-74E1-536C-85F8-668D05C5E80B.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-B025C751-74E1-536C-85F8-668D05C5E80B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,20 @@ + + + + + +Cryptography +API guide +

      The Cryptography API provides cryptographic services to the user software +through a standard Symbian platform interface.

      +

      In Symbian^3, a component called CryptoSPI has been introduced. CryptoSPI +manages the selection and loading of cryptographic algorithms. It also provides +a framework that allows device manufactures to implement additional +cryptographic algorithms as plug-ins. The legacy libraries (cryptography.dll, hash.dll and random.dll) are still supported.

      + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B02C762B-C452-4184-ABEA-4753E6CD47D2.dita --- a/Symbian3/PDK/Source/GUID-B02C762B-C452-4184-ABEA-4753E6CD47D2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B02C762B-C452-4184-ABEA-4753E6CD47D2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,7 +14,7 @@ UI to function as designed in mobile devices with different screen resolutions or orientations. For example, in the figure below, the UI scales to fit both portrait and landscape orientations.

      -Scaling +Scaling

      When you enable scaling in your application, you allow your application to support the different display sizes, resolutions, and layouts for different devices based on the Symbian platform. The Symbian platform provides APIs diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B0391618-0681-5E4E-94BE-C0E24B862AEF_d0e315291_href.png Binary file Symbian3/PDK/Source/GUID-B0391618-0681-5E4E-94BE-C0E24B862AEF_d0e315291_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B0391618-0681-5E4E-94BE-C0E24B862AEF_d0e321281_href.png Binary file Symbian3/PDK/Source/GUID-B0391618-0681-5E4E-94BE-C0E24B862AEF_d0e321281_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B0449B60-B78E-5CC1-8FAF-E5EE24D88EB2.dita --- a/Symbian3/PDK/Source/GUID-B0449B60-B78E-5CC1-8FAF-E5EE24D88EB2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B0449B60-B78E-5CC1-8FAF-E5EE24D88EB2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Advanced Audio Adaptation Framework Technology Guide

      This document provides additional information about the Advanced Audio Adaptation Framework.

      Purpose

      The Advanced Audio Adaptation Framework (A3F) provides a common interface for accessing audio resources, playing tones, and configuring audio for playing and recording.

      Understanding A3F

      A3F functionality is provided by the CAudioContextFactory class. CAudioContextFactory is responsible for creating audio contexts. The Audio Context API (MAudioContext) maintains all audio components created in a context, where audio components are instances of the MAudioStream and MAudioProcessingUnit classes.

      An MAudioProcessingUnit is created in a context by giving the type of the processing unit such as codec and source sink. MAudioProcessingUnit allows extension interfaces to set additional audio processing unit settings.

      The Audio Stream API (MAudioStream) is an audio component that links together processing units into an audio stream. MAudioStream manages the audio processing state requested by the client and interacts with the audio processing units added to the stream. MAudioStream provides runtime control over a stream's (composite) behaviour and lifetime management of the entities in a stream (whether the state of the stream is uninitialized, initialized, idle, primed, active or dead). For more information, see Stream States.

      The Audio Context API allows a grouping notion for multimedia allocations. MAudioContext groups component actions made inside a context. This means any allocation or loss of resources which occurs in any single audio component affects all of the components grouped in the context.

      The Commit Cycle

      Changes made to an audio stream are handled in a transactional manner. If changes fail to be applied, then any other changes made to the stream are considered to fail also. The application of changes is dependent on a successful commit cycle. If there is a failure, a “rollback" mechanism is executed and the stream states are reverted to their previous state.

      The client requests changes through various Set() calls and then calls the MAudioContext::Commit() function. The platform-specific implementation then decides whether the Commit() request is allowed, possibly dictates new values if needed, and then applies the changes. If successful, the client is informed through callbacks. If there is a need to modify the context because resources are needed in another context, then the platform-specific implementation can take the resources by pre-empting the context. In this case, the client is informed about the pre-emption.

      The following diagram shows this behaviour:

      A3F Commit / Pre-emption Cycle -

      Observers

      Most of the A3F API functions are asynchronous. For example, the functions Foo() or SetFoo() are followed with FooComplete(Tint aError) or FooSet(Tint aError).

      The following A3F observers are defined:

      • MAudioContextObserver

        Informs with ContextEvent() about the commit cycle. Note that ContextEvent() is in the same thread context as the A3F client.

      • MAudioStreamObserver

        Informs with StateEvent() about state changes

      • MAudioCodecObserver

        Informs about completion of setters and getters.

      • MAudioGainControlObserver

        Informs about changes in gain or changes in maximum gain values.

      • MAudioProcessingUnitObserver

        Informs about any additional errors in audio processing units.

      • MMMFAudioDataConsumer

        Informs about recorded buffer to be ready for storing. Also informs the client if there is a buffer to be ignored.

      • MMMFAudioDataSupplier

        Informs about new buffer ready to be filled with audio data. Also informs the client if any requested buffer should be ignored.

      Stream States

      Clients using A3F should be aware that requested audio resources can be lost at any time while they are being used. A client with a higher importance can cause requests for resources to be denied or available resources to become unavailable. In these cases, the commit cycle informs the client through pre-emption events and the resulted stream state is usually demoted to the highest non-disturbing state.

      The possible audio stream states are described in the following table:

      State Description

      EUninitialized

      This is the state of the chain before it is initialized. However, the settings in the logical chain cannot be related to the adaptation because no adaptation has been selected yet.

      EInitialized

      This state is set after a successful initialization request.

      The physical adaptation has been selected but may not be fully allocated.

      There should be no externally visible buffers allocated at this point

      Note: For zero copy and shared chunk buffers, a stream in the EInitialized state should not require buffer consumption. This is an important issue if the base port only has 16 addressable chunks per process.

      In terms of DevSound compatibility, some custom interfaces are available at this point (although others may require further construction before they are available).

      EIdle

      All the chain resources are allocated. However, no processing time (other than that expended to put the chain into the EIdle state) is consumed in this phase.

      In the EIdle state, any existing allocated buffers continue to exist.

      The codec is allocated in terms of hardware memory consumption.

      A stream in the EIdle state can be ‘mid-file position’. There is no implied reset of position or runtime settings (that is, time played) by returning to EIdle.

      EPrimed

      This state is the same as EIdle but the stream can consume processing time by filling its buffers. The purpose of this state is to prepare a stream such that it is ready to play in as short a time as possible (for example, low-latency for audio chains which can be pre-buffered).

      Note that once the buffer is full, the stream may continue to use some processing time.

      There will not be an automatic transition to the EIdle state when the buffer is full. If such behaviour is desired, the client must request it.

      There will not be an automatic transition to EActive when the buffer is full. If such behaviour is desired, the client must request it.

      EActive

      The chain has the resources as EIdle and EPrimed but also has started to process the actions requested by the client.

      Note: A chain can be in the EActive state and performing a wide range of operations. However the semantics are that it is processing the stream and that it is consuming both processing and memory resources.

      EDead

      The stream can no longer function due to a fatal error. The logical chain still exists, but any physical resources should be reclaimed by the adaptation.

      The following diagram shows the stream states:

      +

      Observers

      Most of the A3F API functions are asynchronous. For example, the functions Foo() or SetFoo() are followed with FooComplete(Tint aError) or FooSet(Tint aError).

      The following A3F observers are defined:

      • MAudioContextObserver

        Informs with ContextEvent() about the commit cycle. Note that ContextEvent() is in the same thread context as the A3F client.

      • MAudioStreamObserver

        Informs with StateEvent() about state changes

      • MAudioCodecObserver

        Informs about completion of setters and getters.

      • MAudioGainControlObserver

        Informs about changes in gain or changes in maximum gain values.

      • MAudioProcessingUnitObserver

        Informs about any additional errors in audio processing units.

      • MMMFAudioDataConsumer

        Informs about recorded buffer to be ready for storing. Also informs the client if there is a buffer to be ignored.

      • MMMFAudioDataSupplier

        Informs about new buffer ready to be filled with audio data. Also informs the client if any requested buffer should be ignored.

      Stream States

      Clients using A3F should be aware that requested audio resources can be lost at any time while they are being used. A client with a higher importance can cause requests for resources to be denied or available resources to become unavailable. In these cases, the commit cycle informs the client through pre-emption events and the resulted stream state is usually demoted to the highest non-disturbing state.

      The possible audio stream states are described in the following table:

      State Description

      EUninitialized

      This is the state of the chain before it is initialized. However, the settings in the logical chain cannot be related to the adaptation because no adaptation has been selected yet.

      EInitialized

      This state is set after a successful initialization request.

      The physical adaptation has been selected but may not be fully allocated.

      There should be no externally visible buffers allocated at this point

      Note: For zero copy and shared chunk buffers, a stream in the EInitialized state should not require buffer consumption. This is an important issue if the base port only has 16 addressable chunks per process.

      In terms of DevSound compatibility, some custom interfaces are available at this point (although others may require further construction before they are available).

      EIdle

      All the chain resources are allocated. However, no processing time (other than that expended to put the chain into the EIdle state) is consumed in this phase.

      In the EIdle state, any existing allocated buffers continue to exist.

      The codec is allocated in terms of hardware memory consumption.

      A stream in the EIdle state can be ‘mid-file position’. There is no implied reset of position or runtime settings (that is, time played) by returning to EIdle.

      EPrimed

      This state is the same as EIdle but the stream can consume processing time by filling its buffers. The purpose of this state is to prepare a stream such that it is ready to play in as short a time as possible (for example, low-latency for audio chains which can be pre-buffered).

      Note that once the buffer is full, the stream may continue to use some processing time.

      There will not be an automatic transition to the EIdle state when the buffer is full. If such behaviour is desired, the client must request it.

      There will not be an automatic transition to EActive when the buffer is full. If such behaviour is desired, the client must request it.

      EActive

      The chain has the resources as EIdle and EPrimed but also has started to process the actions requested by the client.

      Note: A chain can be in the EActive state and performing a wide range of operations. However the semantics are that it is processing the stream and that it is consuming both processing and memory resources.

      EDead

      The stream can no longer function due to a fatal error. The logical chain still exists, but any physical resources should be reclaimed by the adaptation.

      The following diagram shows the stream states:

      A3F State Machine -
      A3F Tutorials

      The following tutorials are provided to help you create A3F solutions:

      • Audio Component Framework Tutorial

      • Audio Processing Tutorial

      See Also

      Advanced Audio Adaptation Framework Overview

      Sound Device Overview

      \ No newline at end of file +
      A3F Tutorials

      The following tutorials are provided to help you create A3F solutions:

      • Audio Component Framework Tutorial

      • Audio Processing Tutorial

      See Also

      Advanced Audio Adaptation Framework Overview

      Sound Device Overview

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B05B61B8-1217-441F-BAFA-C209C8F123C5.dita --- a/Symbian3/PDK/Source/GUID-B05B61B8-1217-441F-BAFA-C209C8F123C5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B05B61B8-1217-441F-BAFA-C209C8F123C5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,7 +21,7 @@ UI, and a floating toolbar which can also be used in non-touch UIs.

      Fixed toolbar, floating toolbar, and toolbar extension - +

      The fixed toolbar doesn’t have focus, whereas the floating toolbar owns the focus and it can be used also with navigation and selection keys. By default, diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B0797210-4EE3-557B-A5A6-D215D030BA0E_d0e228063_href.png Binary file Symbian3/PDK/Source/GUID-B0797210-4EE3-557B-A5A6-D215D030BA0E_d0e228063_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B0797210-4EE3-557B-A5A6-D215D030BA0E_d0e234062_href.png Binary file Symbian3/PDK/Source/GUID-B0797210-4EE3-557B-A5A6-D215D030BA0E_d0e234062_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita --- a/Symbian3/PDK/Source/GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B0EF8500-0A49-5EA8-B7FF-8149E5F03693.dita Fri Jul 16 17:23:46 2010 +0100 @@ -10,9 +10,9 @@ How to use the SIP Client API

      Protocols

      The following sections describe how to do the following:

      • Starting the SIP Client

      • Closing SIP Client

      • Sending a SIP request

      • Receiving a SIP request

      • Receiving a SIP request and creating a session

      • Registration

      • Creating a dialog with INVITE

      • Generating a '100 SIP response'

      • Responding to a CANCEL request

      • Sending a SIP request and responding to a HTTP Digest challenge

      • Notification of a failed refresh

      • Error handling

      • Refreshing a Connection

      Starting the SIP Client

      To start the SIP Client:

      1. Create an instance of the CSIP class. The CSIP class creates a CSIP object and implements the callback functions defined by MSIPObserver. The CSIP object connects the client to a shared server.

        Note: The server is started if it is not active. This may take a short time while the server side resources are created and initialised.

      2. Create an instance of the CSIPConnection class to use an IAP. The CSIPConnection class must implement the callback functions defined by MSIPConnectionObserver. The CSIPConnection class creates CSIPConnection object. The CSIPConnection object forms a sub-session between the client and the server.

      3. Call the CSIPConnection::NewL() function to create an active connection. The CSIPConnection::EActive state indicates that the object can be used to send SIP messages and create registrations and dialogs. The current state is asked by calling CSIPConnection::State(). The MSIPConnectionObserver::ConnectionStateChanged(CSIPConnection:: - EActive) callback function is called.

      The following illustration shows the sequence of events involved in starting the SIP Client API.

      Closing the SIP Client

      To close the SIP Client:

      • Delete the CSIP object to close the connection to the SIP server.

      • Delete the CSIPConnection object to close the sub-session between the client and the server.

      • When the connection has been closed, operations on objects that depend on the connection fail with the KErrSIPResourceNotAvailable error code.

      For example, if an application has CSIPConnection and CSIPRegistrationBinding objects, and it deletes the CSIPConnection object, then subsequent attempts to use the CSIPRegistrationBinding object fails. This is because CSIPRegistrationBinding cannot communicate with the server side of the SIP stack without the CSIPConnection object.

      The following illustration shows the order for deleting SIP Client API objects.

      Sending a SIP request

      To send a SIP request:

      • Create a CSIPRequestElements object and enter the required fields of the request.

      • Call the CSIPConnection::SendRequestL(CSIPRequestElements*) function to take control of the CSIPRequestElements objects and communicate the request to the server side of the SIP stack.

        CSIPConnection creates a CSIPClientTransaction object and returns it to the application.

      Note: SendRequestL() starts the server side processing of sending the MESSAGE request. This task takes time as address resolving and socket operations are done only after the SendRequestL() call is returned. If an error occurs after SendRequestL() returns, then the error is communicated to the application through one of the MSIPConnectionObserver::ErrorOccured() callback functions. An example of such a failure is failure to resolve the address. When SendRequestL() returns, the MESSAGE request is not yet sent to the network, and is being processed on the server side of the SIP stack.

      After SendRequestL() returns and the sending of a MESSAGE request is in progress on the shared server, there is no way for the application to cancel that operation. This also applies to other operation types. However the CSIPClientTransaction::CancelL() function is used to send a CANCEL request after the application sends an INVITE request.

      When the SIP response is received from the server side, the CSIPConnection object:

      1. creates a CSIPResponseElements object to represent the SIP response

      2. attaches it to the CSIPClientTransaction object

      3. notifies the application through a call to one of the MSIPConnectionObserver:: IncomingResponse() callback functions.

      The application determines the kind of response received by accessing the CSIPResponseElements object through CSIPClientTransaction. As the response is provisional, the application does not delete the CSIPClientTransaction object. A '200 response' is received later, and the application then deletes the CSIPClientTransaction object.

      Then, create a CSIPResponseElements object to represent the SIP response, attach it to CSIPClientTransaction and notify the application with MSIPConnectionObserver:: - IncomingResponse.

      The following illustration shows the sequence of events involved in sending a MESSAGE request and receiving two responses to it.

      Receiving a SIP request

      A standalone SIP request is received through an existing CSIPConnection object. The CSIPConnection creates CSIPRequestElements and CSIPServerTransaction objects before notifying the application through the MSIPConnectionObserver::IncomingRequest() callback function. The CSIPRequestElements and CSIPServerTransaction represent the incoming SIP request

      The CSIPServerTransaction object is passed to the CSIPRequestElements object through the callback function. The application retrieves information about the request from the CSIPServerTransaction object.

      To send a response, the application creates a CSIPResponseElements object and passes it to CSIPServerTransaction::SendResponseL(). This passes the response to the server side for further processing. When SendResponseL() is returned, the application no longer needs the CSIPServerTransaction object and deletes it.

      The following illustration shows the sequence of events involved in receiving a MESSAGE request and sending a response to it.

      Receiving a SIP request and creating a session

      The SIP stack receives a SIP INVITE request from the network acting as a User Agent Server (UAS) and creates an invite server transaction for the received request. The SIP stack sends a '100 SIP response' to the remote UA. After comparing the received request with the stored application capabilities, the SIP stack routes the received INVITE request to the chosen application.

      The application creates a CSIPInviteDialogAssoc object and the SIP stack creates an instance of CSIPDialog. The application sends a '200 SIP response' to the remote UA. The remote UA acknowledges the '200 SIP' response with ACK and creates a SIP session is between the local and remote UA.

      The following illustration shows the sequence of events involved in receiving a SIP request and creating a SIP dialog.

      Registration

      An application creates a CSIPRefresh object to initiate a registration. It then creates a CSIPRegistrationBinding object, passing CSIPRefresh to it.

      Note: It is not mandatory to create a CSIPRefresh object. It is required if the registration is to be refreshed by the SIP stack.

      After the CSIPRegistrationBinding object exists, the application initiates the registration process by calling RegisterL() on the CSIPRegistrationBinding object. CSIPRegistrationBinding forms a REGISTER request and communicates it to the server side of the SIP stack, it instantiates the CSIPClientTransaction object and returns it to the application.

      When the '200 SIP response' is received from the server side, CSIPConnection creates the CSIPResponseElements object to contain the response, and then routes the response to CSIPRegistrationBinding. CSIPRegistrationBinding attaches the response to CSIPClientTransaction. The application is informed about the response through one of the MSIPConnectionObserver::IncomingResponse() callback functions.

      The application does not require the CSIPClientTransaction object and can delete it. The IsContextActive() finds out if the registration is successful.

      The following illustration shows the sequence of events involved in registering with a refresh and receiving a '200 OK response'.

      Configuring the registration

      When registering an SIP connection, applications have two options to configure the registration : outbound proxy caching and expiration value removal. To set each of these options, call CSIPRegistrationBinding::SetProperty() with the corresponding property constant, as explained below.

      The SIP stack resolves the IP address of the outbound proxy during registration. The default behavior is to resolve the address again for each SIP message sent using this registration context. However, you can also cache the address to optimise network traffic. If you set KSIPCacheOutboundProxyIP property to ETrue, the SIP stack reuses the proxy address that was resolved during registration. The proxy address is refreshed by successful REGISTER transactions, which always perform a DNS query.

      By default, the SIP stack sends the expiration value in the REGISTER request. In the '200 OK' answer to a REGISTER message, the registrar returns an expiration value that may be different from the value that was sent. The SIP stack validates the returned expiration value against the minimum and maximum expiration values: if the returned expiration value is out of range, the SIP stack uses the minimum value or the maximum value.

      • The minimum expiration value is 30 seconds, to reduce network activity and battery consumption.

      • The maximum expiration value is the expiration value that you specify for the REGISTER request. By default, the maximum expiration value is 3600 seconds, to protect the application from DOS attacks that provide '200 OK' responses with a very high expiration value.

      If you set KSIPSendWithExpires to EFalse, the SIP stack does not send the application's expiration value in the REGISTER message.

      Creating a dialog with INVITE

      To create a dialog with INVITE an application creates CSIPInviteDialogAssoc and CSIPMessageElements objects. The application must enter the relevant SIP headers in the CSIPMessageElements object before passing it to CSIPInviteDialogAssoc using the CSIPInviteDialogAssoc::SendInviteL() function.

      CSIPInviteDialogAssoc then forms an INVITE request and communicates it to the server side of the SIP stack. It then creates a CSIPClientTransaction object, and returns it to the application.

      When the server sends '180 response', the CSIPConnection creates a CSIPResponseElements object to contain the response, and then routes the response to CSIPDialog. CSIPDialog attaches the response to CSIPClientTransaction. The application is informed about the receipt of the '180 response' through a call to one of the MSIPConnectionObserver:: IncomingResponse() callback functions.

      When the '200 response' is received, processing similar to '180 response' occurs. Then the application responds by sending an ACK request. This is done by invoking the CSIPInviteDialogAssoc::SendAckL() function, which forms the ACK request and sends it to the server side of the SIP stack.

      The INVITE request might fork at a proxy, so the server side of the SIP stack waits for several possible responses. When the forking is does not happen, the server side of the SIP stack sends an InviteCompleted event. The SIP Client API forwards the InviteCompleted event to the application, indicating that the application can now delete the CSIPClientTransaction.

      The following figure shows the sequence of events involved in sending an INVITE, receiving a response and sending an ACK.

      Generating a '100 SIP response'

      The SIP stack generates a '100 response' automatically when it receives an INVITE request from the network. Applications are not allowed to send '100 responses'.

      Responding to a CANCEL request

      When the SIP stack receives a CANCEL request from the network, it automatically responds to it. CANCEL requests are never passed to an application.

      If the SIP stack:

      • does not find a matching transaction for a CANCEL request, it automatically generates a '481 response'.

      • finds a matching transaction for a CANCEL request, it automatically generates a '200 response'.

      • finds a matching INVITE server transaction that is in the Proceeding state (that is a final response is not yet sent), it also automatically generates a '487 response' to the INVITE transaction.

      After these actions are complete, the SIP stack informs the application by calling the MSIPConnectionObserver::InviteCanceled() callback function.

      Sending a SIP request and responding to a HTTP Digest challenge

      A SIP server in the signalling chain challenges any SIP request initiated by the application with an HTTP Digest challenge by responding with a '401 SIP response', '407 SIP response' or a '494 SIP response'. The responses contain details of the challenge. These responses are never passed directly to the application. Instead, they are passed to the application through a call to the callback function MSIPHttpDigestChallengeObserver::ChallengeReceived().

      To enable an application to respond to a challenge, it must:

      • create a CSIPHttpDigest object

      • provide an implementation of the callback function MSIPHttpDigestChallengeObserver::ChallengeReceived() .

      The application can either accept or reject the challenge:

      • If it accepts the challenge, the callback function must call CSIPHttpDigest::SetCredentialsL(), specifying the username, password, and the realm passed to the callback function.

        Then, SIP stack re-sends the original SIP request with the HTTP Digest response.

      • If it rejects the challenge, the callback function must call CSIPHttpDigest::IgnoreChallenge(), specifying the realm passed to the callback function.

        Then, SIP stack calls the callback function MSIPConnectionObserver::ErrorOccured(), by passing the error code KErrSIPForbidden.

      If an application does not want to receive the HTTP Digest challenge then it must not create a CSIPHttpDigest object. In this event, the SIP stack calls the callback function MSIPConnectionObserver::ErrorOccured(), passing the error code KErrSIPForbidden.

      Note:

      • If an application uses the SIP Profile Agent for SIP registration, the SIP Profile Agent handles the HTTP Digest challenges related to the registration procedure according to the SIP profile information.

      • The SIP stack maintains a HTTP Digest cache which stores username and password pairs for realms. If the username and password have been configured for a proxy, or if the application has already provided them after being asked through a MSIPHttpDigestChallengeObserver::ChallengeReceived() call, then the SIP stack uses them to answer subsequent challenges for a matching realm automatically.

        For example, if the application uses a SIP Profile whose proxy is configured with HTTP Digest passwords and then sends an INVITE, it does not need to provide the passwords for the proxy as the SIP stack gets it from the HTTP Digest cache.

      Notification of a failed refresh

      The following example shows how an application is notified when a refresh request within a dialog terminates after an error occurs. In this example the application sends a SUBSCRIBE request with refresh, and receives a 2xx class response. The SIP stack periodically sends a refreshed SUBSCRIBE message. After successfully refreshed SUBSCRIBE requests, the remote server responds with a '481 response', and the application receives the following callback:

      MSIPConnectionObserver::ErrorOccured(TInt aError, CSIPDialogAssocBase& aDialogAssoc)

      If the value of aError is KErrSIPTerminatedWithResponse, then the actual SIP response causing the refresh to end can be found as follows:

      • Check that aDialogAssoc.Type() returns "SUBSCRIBE".

      • Call the function with the following signature to get the refresh instance (CSIPRefresh object):

        const CSIPRefresh* CSIPSubscribeDialogAssoc::SIPRefresh() const
      • Use the CSIPRefresh object to get the associated transaction by calling the following function:

        const CSIPClientTransaction* CSIPRefresh::SIPTransaction() const

        Note: The returned CSIPClientTransaction object is not similar to the one returned from the call to SendSubscribeL(), that the application originally used to send the SUBSCRIBE request.

      • Call the following function to get the SIP response:

        const CSIPResponseElements* CSIPClientTransaction::ResponseElements() const
      Error handling

      Errors are passed to an application by calling the callback functions or by leaving. For more information, see Cleanup support overview. If an error occurs during the synchronous part of an operation is initiated by the application, functions leave with an error code. If an error occurs during the asynchronous processing stage, the error is passed to the application through one of the MSIPConnectionObserver::ErrorOccured() callback functions.

      There are several overloaded variants of ErrorOccured() functions. Each of them takes the error code and reference to the SIP Client API object that encountered the error:

      • A call to the variants of ErrorOccured() taking a CSIPTransactionBase or CSIPClientTransaction parameter means that transaction has entered the state CTransactionBase::ETerminated.

      • A call to the variant of ErrorOccured() taking a CSIPRegistrationBinding parameter means that the registration context is no longer active, that is CSIPRegistrationBinding::IsContextActive() == EFalse.

        If the registration was being refreshed, then the refresh has also ended and its state is CSIPRefresh::ETerminated.

      If the callback function MSIPConnectionObserver::ConnectionStateChanged() is called and the aState parameter is either CSIPConnection::EInactive or CSIPConnection::EUnavailable, then all dialogs, registrations, and standalone transactions using the CSIPConnection are terminated.

      To avoid an overload of callback calls in this type of situation, calls to ErrorOccured() for the individual dialog, registration and transaction objects are not sent to the application.

      When the connection state changes, the MSIPConnectionObserver::ConnectionStateChanged() callback function does not provide a reason. Call CSIPConnection::GetConnectionError() to get details about the connection error that caused the change.

      Refreshing a Connection

      To refresh a connection, do the following steps:

      1. Start the connection on the desired IAP.

      2. Monitor the status of the connection using the MSIPConnectionObserver::ConnectionStateChanged(CSIPConnection::TState - aState) function.

      3. If the connection is inactive, notify the EInactive state to the application through MSIPConnectionObserver::ConnectionStateChanged() function that is, if (CSIPConnection::TState == EInactive), then send a RefreshConnection() function to make it active.

        Note: This requires a bearer monitor on that IAP to which a refresh request is sent.

      4. Any changes to the state of the connection is notified through MSIPConnectionObserver::ConnectionStateChanged().

      The following sequence diagram shows how a client refreshes a connection.

      The following example code describes how to refresh a connection.

      // It is assumed that the connection is started and is in an Inactive state that is, + EActive) callback function is called.

      The following illustration shows the sequence of events involved in starting the SIP Client API.

      Closing the SIP Client

      To close the SIP Client:

      • Delete the CSIP object to close the connection to the SIP server.

      • Delete the CSIPConnection object to close the sub-session between the client and the server.

      • When the connection has been closed, operations on objects that depend on the connection fail with the KErrSIPResourceNotAvailable error code.

      For example, if an application has CSIPConnection and CSIPRegistrationBinding objects, and it deletes the CSIPConnection object, then subsequent attempts to use the CSIPRegistrationBinding object fails. This is because CSIPRegistrationBinding cannot communicate with the server side of the SIP stack without the CSIPConnection object.

      The following illustration shows the order for deleting SIP Client API objects.

      Sending a SIP request

      To send a SIP request:

      • Create a CSIPRequestElements object and enter the required fields of the request.

      • Call the CSIPConnection::SendRequestL(CSIPRequestElements*) function to take control of the CSIPRequestElements objects and communicate the request to the server side of the SIP stack.

        CSIPConnection creates a CSIPClientTransaction object and returns it to the application.

      Note: SendRequestL() starts the server side processing of sending the MESSAGE request. This task takes time as address resolving and socket operations are done only after the SendRequestL() call is returned. If an error occurs after SendRequestL() returns, then the error is communicated to the application through one of the MSIPConnectionObserver::ErrorOccured() callback functions. An example of such a failure is failure to resolve the address. When SendRequestL() returns, the MESSAGE request is not yet sent to the network, and is being processed on the server side of the SIP stack.

      After SendRequestL() returns and the sending of a MESSAGE request is in progress on the shared server, there is no way for the application to cancel that operation. This also applies to other operation types. However the CSIPClientTransaction::CancelL() function is used to send a CANCEL request after the application sends an INVITE request.

      When the SIP response is received from the server side, the CSIPConnection object:

      1. creates a CSIPResponseElements object to represent the SIP response

      2. attaches it to the CSIPClientTransaction object

      3. notifies the application through a call to one of the MSIPConnectionObserver:: IncomingResponse() callback functions.

      The application determines the kind of response received by accessing the CSIPResponseElements object through CSIPClientTransaction. As the response is provisional, the application does not delete the CSIPClientTransaction object. A '200 response' is received later, and the application then deletes the CSIPClientTransaction object.

      Then, create a CSIPResponseElements object to represent the SIP response, attach it to CSIPClientTransaction and notify the application with MSIPConnectionObserver:: + IncomingResponse.

      The following illustration shows the sequence of events involved in sending a MESSAGE request and receiving two responses to it.

      Receiving a SIP request

      A standalone SIP request is received through an existing CSIPConnection object. The CSIPConnection creates CSIPRequestElements and CSIPServerTransaction objects before notifying the application through the MSIPConnectionObserver::IncomingRequest() callback function. The CSIPRequestElements and CSIPServerTransaction represent the incoming SIP request

      The CSIPServerTransaction object is passed to the CSIPRequestElements object through the callback function. The application retrieves information about the request from the CSIPServerTransaction object.

      To send a response, the application creates a CSIPResponseElements object and passes it to CSIPServerTransaction::SendResponseL(). This passes the response to the server side for further processing. When SendResponseL() is returned, the application no longer needs the CSIPServerTransaction object and deletes it.

      The following illustration shows the sequence of events involved in receiving a MESSAGE request and sending a response to it.

      Receiving a SIP request and creating a session

      The SIP stack receives a SIP INVITE request from the network acting as a User Agent Server (UAS) and creates an invite server transaction for the received request. The SIP stack sends a '100 SIP response' to the remote UA. After comparing the received request with the stored application capabilities, the SIP stack routes the received INVITE request to the chosen application.

      The application creates a CSIPInviteDialogAssoc object and the SIP stack creates an instance of CSIPDialog. The application sends a '200 SIP response' to the remote UA. The remote UA acknowledges the '200 SIP' response with ACK and creates a SIP session is between the local and remote UA.

      The following illustration shows the sequence of events involved in receiving a SIP request and creating a SIP dialog.

      Registration

      An application creates a CSIPRefresh object to initiate a registration. It then creates a CSIPRegistrationBinding object, passing CSIPRefresh to it.

      Note: It is not mandatory to create a CSIPRefresh object. It is required if the registration is to be refreshed by the SIP stack.

      After the CSIPRegistrationBinding object exists, the application initiates the registration process by calling RegisterL() on the CSIPRegistrationBinding object. CSIPRegistrationBinding forms a REGISTER request and communicates it to the server side of the SIP stack, it instantiates the CSIPClientTransaction object and returns it to the application.

      When the '200 SIP response' is received from the server side, CSIPConnection creates the CSIPResponseElements object to contain the response, and then routes the response to CSIPRegistrationBinding. CSIPRegistrationBinding attaches the response to CSIPClientTransaction. The application is informed about the response through one of the MSIPConnectionObserver::IncomingResponse() callback functions.

      The application does not require the CSIPClientTransaction object and can delete it. The IsContextActive() finds out if the registration is successful.

      The following illustration shows the sequence of events involved in registering with a refresh and receiving a '200 OK response'.

      Configuring the registration

      When registering an SIP connection, applications have two options to configure the registration : outbound proxy caching and expiration value removal. To set each of these options, call CSIPRegistrationBinding::SetProperty() with the corresponding property constant, as explained below.

      The SIP stack resolves the IP address of the outbound proxy during registration. The default behavior is to resolve the address again for each SIP message sent using this registration context. However, you can also cache the address to optimise network traffic. If you set KSIPCacheOutboundProxyIP property to ETrue, the SIP stack reuses the proxy address that was resolved during registration. The proxy address is refreshed by successful REGISTER transactions, which always perform a DNS query.

      By default, the SIP stack sends the expiration value in the REGISTER request. In the '200 OK' answer to a REGISTER message, the registrar returns an expiration value that may be different from the value that was sent. The SIP stack validates the returned expiration value against the minimum and maximum expiration values: if the returned expiration value is out of range, the SIP stack uses the minimum value or the maximum value.

      • The minimum expiration value is 30 seconds, to reduce network activity and battery consumption.

      • The maximum expiration value is the expiration value that you specify for the REGISTER request. By default, the maximum expiration value is 3600 seconds, to protect the application from DOS attacks that provide '200 OK' responses with a very high expiration value.

      If you set KSIPSendWithExpires to EFalse, the SIP stack does not send the application's expiration value in the REGISTER message.

      Creating a dialog with INVITE

      To create a dialog with INVITE an application creates CSIPInviteDialogAssoc and CSIPMessageElements objects. The application must enter the relevant SIP headers in the CSIPMessageElements object before passing it to CSIPInviteDialogAssoc using the CSIPInviteDialogAssoc::SendInviteL() function.

      CSIPInviteDialogAssoc then forms an INVITE request and communicates it to the server side of the SIP stack. It then creates a CSIPClientTransaction object, and returns it to the application.

      When the server sends '180 response', the CSIPConnection creates a CSIPResponseElements object to contain the response, and then routes the response to CSIPDialog. CSIPDialog attaches the response to CSIPClientTransaction. The application is informed about the receipt of the '180 response' through a call to one of the MSIPConnectionObserver:: IncomingResponse() callback functions.

      When the '200 response' is received, processing similar to '180 response' occurs. Then the application responds by sending an ACK request. This is done by invoking the CSIPInviteDialogAssoc::SendAckL() function, which forms the ACK request and sends it to the server side of the SIP stack.

      The INVITE request might fork at a proxy, so the server side of the SIP stack waits for several possible responses. When the forking is does not happen, the server side of the SIP stack sends an InviteCompleted event. The SIP Client API forwards the InviteCompleted event to the application, indicating that the application can now delete the CSIPClientTransaction.

      The following figure shows the sequence of events involved in sending an INVITE, receiving a response and sending an ACK.

      Generating a '100 SIP response'

      The SIP stack generates a '100 response' automatically when it receives an INVITE request from the network. Applications are not allowed to send '100 responses'.

      Responding to a CANCEL request

      When the SIP stack receives a CANCEL request from the network, it automatically responds to it. CANCEL requests are never passed to an application.

      If the SIP stack:

      • does not find a matching transaction for a CANCEL request, it automatically generates a '481 response'.

      • finds a matching transaction for a CANCEL request, it automatically generates a '200 response'.

      • finds a matching INVITE server transaction that is in the Proceeding state (that is a final response is not yet sent), it also automatically generates a '487 response' to the INVITE transaction.

      After these actions are complete, the SIP stack informs the application by calling the MSIPConnectionObserver::InviteCanceled() callback function.

      Sending a SIP request and responding to a HTTP Digest challenge

      A SIP server in the signalling chain challenges any SIP request initiated by the application with an HTTP Digest challenge by responding with a '401 SIP response', '407 SIP response' or a '494 SIP response'. The responses contain details of the challenge. These responses are never passed directly to the application. Instead, they are passed to the application through a call to the callback function MSIPHttpDigestChallengeObserver::ChallengeReceived().

      To enable an application to respond to a challenge, it must:

      • create a CSIPHttpDigest object

      • provide an implementation of the callback function MSIPHttpDigestChallengeObserver::ChallengeReceived() .

      The application can either accept or reject the challenge:

      • If it accepts the challenge, the callback function must call CSIPHttpDigest::SetCredentialsL(), specifying the username, password, and the realm passed to the callback function.

        Then, SIP stack re-sends the original SIP request with the HTTP Digest response.

      • If it rejects the challenge, the callback function must call CSIPHttpDigest::IgnoreChallenge(), specifying the realm passed to the callback function.

        Then, SIP stack calls the callback function MSIPConnectionObserver::ErrorOccured(), by passing the error code KErrSIPForbidden.

      If an application does not want to receive the HTTP Digest challenge then it must not create a CSIPHttpDigest object. In this event, the SIP stack calls the callback function MSIPConnectionObserver::ErrorOccured(), passing the error code KErrSIPForbidden.

      Note:

      • If an application uses the SIP Profile Agent for SIP registration, the SIP Profile Agent handles the HTTP Digest challenges related to the registration procedure according to the SIP profile information.

      • The SIP stack maintains a HTTP Digest cache which stores username and password pairs for realms. If the username and password have been configured for a proxy, or if the application has already provided them after being asked through a MSIPHttpDigestChallengeObserver::ChallengeReceived() call, then the SIP stack uses them to answer subsequent challenges for a matching realm automatically.

        For example, if the application uses a SIP Profile whose proxy is configured with HTTP Digest passwords and then sends an INVITE, it does not need to provide the passwords for the proxy as the SIP stack gets it from the HTTP Digest cache.

      Notification of a failed refresh

      The following example shows how an application is notified when a refresh request within a dialog terminates after an error occurs. In this example the application sends a SUBSCRIBE request with refresh, and receives a 2xx class response. The SIP stack periodically sends a refreshed SUBSCRIBE message. After successfully refreshed SUBSCRIBE requests, the remote server responds with a '481 response', and the application receives the following callback:

      MSIPConnectionObserver::ErrorOccured(TInt aError, CSIPDialogAssocBase& aDialogAssoc)

      If the value of aError is KErrSIPTerminatedWithResponse, then the actual SIP response causing the refresh to end can be found as follows:

      • Check that aDialogAssoc.Type() returns "SUBSCRIBE".

      • Call the function with the following signature to get the refresh instance (CSIPRefresh object):

        const CSIPRefresh* CSIPSubscribeDialogAssoc::SIPRefresh() const
      • Use the CSIPRefresh object to get the associated transaction by calling the following function:

        const CSIPClientTransaction* CSIPRefresh::SIPTransaction() const

        Note: The returned CSIPClientTransaction object is not similar to the one returned from the call to SendSubscribeL(), that the application originally used to send the SUBSCRIBE request.

      • Call the following function to get the SIP response:

        const CSIPResponseElements* CSIPClientTransaction::ResponseElements() const
      Error handling

      Errors are passed to an application by calling the callback functions or by leaving. For more information, see Cleanup support overview. If an error occurs during the synchronous part of an operation is initiated by the application, functions leave with an error code. If an error occurs during the asynchronous processing stage, the error is passed to the application through one of the MSIPConnectionObserver::ErrorOccured() callback functions.

      There are several overloaded variants of ErrorOccured() functions. Each of them takes the error code and reference to the SIP Client API object that encountered the error:

      • A call to the variants of ErrorOccured() taking a CSIPTransactionBase or CSIPClientTransaction parameter means that transaction has entered the state CTransactionBase::ETerminated.

      • A call to the variant of ErrorOccured() taking a CSIPRegistrationBinding parameter means that the registration context is no longer active, that is CSIPRegistrationBinding::IsContextActive() == EFalse.

        If the registration was being refreshed, then the refresh has also ended and its state is CSIPRefresh::ETerminated.

      If the callback function MSIPConnectionObserver::ConnectionStateChanged() is called and the aState parameter is either CSIPConnection::EInactive or CSIPConnection::EUnavailable, then all dialogs, registrations, and standalone transactions using the CSIPConnection are terminated.

      To avoid an overload of callback calls in this type of situation, calls to ErrorOccured() for the individual dialog, registration and transaction objects are not sent to the application.

      When the connection state changes, the MSIPConnectionObserver::ConnectionStateChanged() callback function does not provide a reason. Call CSIPConnection::GetConnectionError() to get details about the connection error that caused the change.

      Refreshing a Connection

      To refresh a connection, do the following steps:

      1. Start the connection on the desired IAP.

      2. Monitor the status of the connection using the MSIPConnectionObserver::ConnectionStateChanged(CSIPConnection::TState + aState) function.

      3. If the connection is inactive, notify the EInactive state to the application through MSIPConnectionObserver::ConnectionStateChanged() function that is, if (CSIPConnection::TState == EInactive), then send a RefreshConnection() function to make it active.

        Note: This requires a bearer monitor on that IAP to which a refresh request is sent.

      4. Any changes to the state of the connection is notified through MSIPConnectionObserver::ConnectionStateChanged().

      The following sequence diagram shows how a client refreshes a connection.

      The following example code describes how to refresh a connection.

      // It is assumed that the connection is started and is in an Inactive state that is, // (CSIPConnection::TState == EInactive) // Refresh the IAP ID of the connection by sending a Refresh Request to the Bearer monitor of the IAP diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B1254526-3C72-59E7-88C0-667FC051379F.dita --- a/Symbian3/PDK/Source/GUID-B1254526-3C72-59E7-88C0-667FC051379F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B1254526-3C72-59E7-88C0-667FC051379F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -Extended SMS Converter

      The Extended SMS Converter uses the lossy mechanism to extend the alphabet of the standard converter. It maps a wider set of input character codes, including commonly-used Eastern European Unicode characters, to the standard 7-bit alphabet. This section describes the Extended SMS Converter and the alphabet it supports.

      Introduction

      Languages supported by this converter include Croatian, Czech, Estonian, Hungarian, Icelandic, Latvian, Lithuanian, Polish, Romanian, Serbian, Slovak, Slovenian, Turkish, Portuguese and Spanish. This converter is identified by the KCharacterSetIdentifierExtendedSms7Bit UID, which is defined in the charconv.h file.

      Any undefined Unicode is converted to a question mark (?)–GSM code 0x37. Any code outside GSM 0x00 ~0x7F is converted to the Unicode replacement character 0xFFFD.

      Alphabet

      The highlighted boxes in Figure 1 illustrate the alphabet of the extended SMS converter:

      • GSM 7-bit default alphabet

      • GSM 7-bit default alphabet extension table

      • Extra lossy conversions–exclude 9 characters listed in Table 2

      • Extended lossy conversions–shown as Lossy Characters 2 in Figure 1.

      Figure 1

      Table 1 lists the extra lossy conversions supported by this converter in addition to those supported by the standard converter.

      Table 1

      Character

      Unicode

      GSM

      Converted Character

      Ώ GREEK CAPITAL LETTER OMEGA WITH TONOS

      U+038F

      0x15

      Ω GREEK CAPITAL LETTER OMEGA

      (NO-BREAK SPACE)

      U+00A0

      0x20

      (SPACE)

      « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK *

      U+00AB

      0x22

      " QUOTATION MARK

      » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK *

      U+00BB

      0x22

      " QUOTATION MARK

      ` GRAVE ACCENT

      U+0060

      0x27

      ' APOSTROPHE

      ´ ACUTE ACCENT

      U+00B4

      0x27

      ' APOSTROPHE

      ΄ GREEK TONOS

      U+0384

      0x27

      ' APOSTROPHE

      ΅ GREEK DIALYTIKA TONOS

      U+0385

      0x27

      ' APOSTROPHE

      × MULTIPLICATION SIGN

      U+00D7

      0x2A

      * ASTERISK

      ¸ CEDILLA

      U+00B8

      0x2C

      , COMMA

      SOFT HYPHEN

      U+00AD

      0x2D

      - HYPHEN-MINUS

      · MIDDLE DOT

      U+00B7

      0x2E

      . FULL STOP

      ÷ DIVISION SIGN

      U+00F7

      0x2F

      / SOLIDUS

      ¹ SUPERSCRIPT ONE

      U+00B9

      0x31

      1 DIGIT ONE

      ² SUPERSCRIPT TWO

      U+00B2

      0x32

      2 DIGIT TWO

      ³ SUPERSCRIPT THREE

      U+00B3

      0x33

      3 DIGIT THREE

      ; GREEK QUESTION MARK (Erotimatiko)

      U+037E

      0x3B

      ; SEMICOLON

      Ā LATIN CAPITAL LETTER A WITH MACRON

      U+0100

      0x41

      A LATIN CAPITAL LETTER A

      Ă LATIN CAPITAL LETTER A WITH BREVE

      U+0102

      0x41

      A LATIN CAPITAL LETTER A

      Ą LATIN CAPITAL LETTER A WITH OGONEK

      U+0104

      0x41

      A LATIN CAPITAL LETTER A

      Ć LATIN CAPITAL LETTER C WITH ACUTE

      U+0106

      0x43

      C LATIN CAPITAL LETTER C

      Ĉ LATIN CAPITAL LETTER C WITH CIRCUMFLEX

      U+0108

      0x43

      C LATIN CAPITAL LETTER C

      Ċ LATIN CAPITAL LETTER C WITH DOT ABOVE

      U+010A

      0x43

      C LATIN CAPITAL LETTER C

      Č LATIN CAPITAL LETTER C WITH CARON

      U+010C

      0x43

      C LATIN CAPITAL LETTER C

      Ð LATIN CAPITAL LETTER ETH (Icelandic)

      U+00D0

      0x44

      D LATIN CAPITAL LETTER D

      Ď LATIN CAPITAL LETTER D WITH CARON

      U+010E

      0x44

      D LATIN CAPITAL LETTER D

      Đ LATIN CAPITAL LETTER D WITH STROKE

      U+0110

      0x44

      D LATIN CAPITAL LETTER D

      Ē LATIN CAPITAL LETTER E WITH MACRON

      U+0112

      0x45

      E LATIN CAPITAL LETTER E

      Ĕ LATIN CAPITAL LETTER E WITH BREVE

      U+0114

      0x45

      E LATIN CAPITAL LETTER E

      Ė LATIN CAPITAL LETTER E WITH DOT ABOVE

      U+0116

      0x45

      E LATIN CAPITAL LETTER E

      Ę LATIN CAPITAL LETTER E WITH OGONEK

      U+0118

      0x45

      E LATIN CAPITAL LETTER E

      Ě LATIN CAPITAL LETTER E WITH CARON

      U+011A

      0x45

      E LATIN CAPITAL LETTER E

      Ĝ LATIN CAPITAL LETTER G WITH CIRCUMFLEX

      U+011C

      0x47

      G LATIN CAPITAL LETTER G

      Ğ LATIN CAPITAL LETTER G WITH BREVE

      U+011E

      0x47

      G LATIN CAPITAL LETTER G

      Ġ LATIN CAPITAL LETTER G WITH DOT ABOVE

      U+0120

      0x47

      G LATIN CAPITAL LETTER G

      Ģ LATIN CAPITAL LETTER G WITH CEDILLA

      U+0122

      0x47

      G LATIN CAPITAL LETTER G

      Ĥ LATIN CAPITAL LETTER H WITH CIRCUMFLEX

      U+0124

      0x48

      H LATIN CAPITAL LETTER H

      Ħ LATIN CAPITAL LETTER H WITH STROKE

      U+0126

      0x48

      H LATIN CAPITAL LETTER H

      Ĩ LATIN CAPITAL LETTER I WITH TILDE

      U+0128

      0x49

      I LATIN CAPITAL LETTER I

      Ī LATIN CAPITAL LETTER I WITH MACRON

      U+012A

      0x49

      I LATIN CAPITAL LETTER I

      Ĭ LATIN CAPITAL LETTER I WITH BREVE

      U+012C

      0x49

      I LATIN CAPITAL LETTER I

      Į LATIN CAPITAL LETTER I WITH OGONEK

      U+012E

      0x49

      I LATIN CAPITAL LETTER I

      İ LATIN CAPITAL LETTER I WITH DOT ABOVE

      U+0130

      0x49

      I LATIN CAPITAL LETTER I

      Ĵ LATIN CAPITAL LETTER J WITH CIRCUMFLEX

      U+0134

      0x4A

      J LATIN CAPITAL LETTER J

      Ķ LATIN CAPITAL LETTER K WITH CEDILLA

      U+0136

      0x4B

      K LATIN CAPITAL LETTER K

      Ĺ LATIN CAPITAL LETTER L WITH ACUTE

      U+0139

      0x4C

      L LATIN CAPITAL LETTER L

      Ļ LATIN CAPITAL LETTER L WITH CEDILLA

      U+013B

      0x4C

      L LATIN CAPITAL LETTER L

      Ľ LATIN CAPITAL LETTER L WITH CARON

      U+013D

      0x4C

      L LATIN CAPITAL LETTER L

      Ŀ LATIN CAPITAL LETTER L WITH MIDDLE DOT

      U+013F

      0x4C

      L LATIN CAPITAL LETTER L

      Ł LATIN CAPITAL LETTER L WITH STROKE

      U+0141

      0x4C

      L LATIN CAPITAL LETTER L

      Ń LATIN CAPITAL LETTER N WITH ACUTE

      U+0143

      0x4E

      N LATIN CAPITAL LETTER N

      Ņ LATIN CAPITAL LETTER N WITH CEDILLA

      U+0145

      0x4E

      N LATIN CAPITAL LETTER N

      Ň LATIN CAPITAL LETTER N WITH CARON

      U+0147

      0x4E

      N LATIN CAPITAL LETTER N

      Ŋ LATIN CAPITAL LETTER ENG (Sami)

      U+014A

      0x4E

      N LATIN CAPITAL LETTER N

      Ō LATIN CAPITAL LETTER O WITH MACRON

      U+014C

      0x4F

      O LATIN CAPITAL LETTER O

      Ŏ LATIN CAPITAL LETTER O WITH BREVE

      U+014E

      0x4F

      O LATIN CAPITAL LETTER O

      ΠLATIN CAPITAL LIGATURE OE

      U+0152

      0x4F

      O LATIN CAPITAL LETTER O

      Ŕ LATIN CAPITAL LETTER R WITH ACUTE

      U+0154

      0x52

      R LATIN CAPITAL LETTER R

      Ŗ LATIN CAPITAL LETTER R WITH CEDILLA

      U+0156

      0x52

      R LATIN CAPITAL LETTER R

      Ř LATIN CAPITAL LETTER R WITH CARON

      U+0158

      0x52

      R LATIN CAPITAL LETTER R

      Ś LATIN CAPITAL LETTER S WITH ACUTE

      U+015A

      0x53

      S LATIN CAPITAL LETTER S

      Ŝ LATIN CAPITAL LETTER S WITH CIRCUMFLEX

      U+015C

      0x53

      S LATIN CAPITAL LETTER S

      Ş LATIN CAPITAL LETTER S WITH CEDILLA *

      U+015E

      0x53

      S LATIN CAPITAL LETTER S

      Š LATIN CAPITAL LETTER S WITH CARON

      U+0160

      0x53

      S LATIN CAPITAL LETTER S

      Þ LATIN CAPITAL LETTER THORN (Icelandic)

      U+00DE

      0x54

      T LATIN CAPITAL LETTER T

      Ţ LATIN CAPITAL LETTER T WITH CEDILLA *

      U+0162

      0x54

      T LATIN CAPITAL LETTER T

      Ť LATIN CAPITAL LETTER T WITH CARON

      U+0164

      0x54

      T LATIN CAPITAL LETTER T

      Ŧ LATIN CAPITAL LETTER T WITH STROKE

      U+0166

      0x54

      T LATIN CAPITAL LETTER T

      Ũ LATIN CAPITAL LETTER U WITH TILDE

      U+0168

      0x55

      U LATIN CAPITAL LETTER U

      Ū LATIN CAPITAL LETTER U WITH MACRON

      U+016A

      0x55

      U LATIN CAPITAL LETTER U

      Ŭ LATIN CAPITAL LETTER U WITH BREVE

      U+016C

      0x55

      U LATIN CAPITAL LETTER U

      Ů LATIN CAPITAL LETTER U WITH RING ABOVE

      U+016E

      0x55

      U LATIN CAPITAL LETTER U

      Ų LATIN CAPITAL LETTER U WITH OGONEK

      U+0172

      0x55

      U LATIN CAPITAL LETTER U

      Ŵ LATIN CAPITAL LETTER W WITH CIRCUMFLEX

      U+0174

      0x57

      W LATIN CAPITAL LETTER W

      Ŷ LATIN CAPITAL LETTER Y WITH CIRCUMFLEX

      U+0176

      0x59

      Y LATIN CAPITAL LETTER Y

      Ÿ LATIN CAPITAL LETTER Y WITH DIAERESIS

      U+0178

      0x59

      Y LATIN CAPITAL LETTER Y

      Ź LATIN CAPITAL LETTER Z WITH ACUTE

      U+0179

      0x5A

      Z LATIN CAPITAL LETTER Z

      Ż LATIN CAPITAL LETTER Z WITH DOT ABOVE

      U+017B

      0x5A

      Z LATIN CAPITAL LETTER Z

      Ž LATIN CAPITAL LETTER Z WITH CARON

      U+017D

      0x5A

      Z LATIN CAPITAL LETTER Z

      Ö LATIN CAPITAL LETTER O WITH DIAERESIS

      U+00D6

      0x5C

      Ö LATIN CAPITAL LETTER O WITH DIAERESIS

      Ő LATIN CAPITAL LETTER O WITH DOUBLE ACUTE

      U+0150

      0x5C

      Ö LATIN CAPITAL LETTER O WITH DIAERESIS

      Ű LATIN CAPITAL LETTER U WITH DOUBLE ACUTE

      U+0170

      0x5E

      Ü LATIN CAPITAL LETTER U WITH DIAERESIS

      ā LATIN SMALL LETTER A WITH MACRON

      U+0101

      0x61

      a LATIN SMALL LETTER A

      ă LATIN SMALL LETTER A WITH BREVE

      U+0103

      0x61

      a LATIN SMALL LETTER A

      ą LATIN SMALL LETTER A WITH OGONEK

      U+0105

      0x61

      a LATIN SMALL LETTER A

      ª FEMININE ORDINAL INDICATOR

      U+00AA

      0x61

      a LATIN SMALL LETTER A

      ć LATIN SMALL LETTER C WITH ACUTE

      U+0107

      0x63

      c LATIN SMALL LETTER C

      ĉ LATIN SMALL LETTER C WITH CIRCUMFLEX

      U+0109

      0x63

      c LATIN SMALL LETTER C

      ċ LATIN SMALL LETTER C WITH DOT ABOVE

      U+010B

      0x63

      c LATIN SMALL LETTER C

      č LATIN SMALL LETTER C WITH CARON

      U+010D

      0x63

      c LATIN SMALL LETTER C

      ¢ CENT SIGN

      U+00A2

      0x63

      c LATIN SMALL LETTER C

      © COPYRIGHT SIGN

      U+00A9

      0x63

      c LATIN SMALL LETTER C

      ð LATIN SMALL LETTER ETH (Icelandic)

      U+00F0

      0x64

      d LATIN SMALL LETTER D

      ď LATIN SMALL LETTER D WITH CARON

      U+010F

      0x64

      d LATIN SMALL LETTER D

      đ LATIN SMALL LETTER D WITH STROKE

      U+0111

      0x64

      d LATIN SMALL LETTER D

      ē LATIN SMALL LETTER E WITH MACRON

      U+0113

      0x65

      e LATIN SMALL LETTER E

      ĕ LATIN SMALL LETTER E WITH BREVE

      U+0115

      0x65

      e LATIN SMALL LETTER E

      ė LATIN SMALL LETTER E WITH DOT ABOVE

      U+0117

      0x65

      e LATIN SMALL LETTER E

      ę LATIN SMALL LETTER E WITH OGONEK

      U+0119

      0x65

      e LATIN SMALL LETTER E

      ě LATIN SMALL LETTER E WITH CARON

      U+011B

      0x65

      e LATIN SMALL LETTER E

      ĝ LATIN SMALL LETTER G WITH CIRCUMFLEX

      U+011D

      0x67

      g LATIN SMALL LETTER G

      ğ LATIN SMALL LETTER G WITH BREVE

      U+011F

      0x67

      g LATIN SMALL LETTER G

      ġ LATIN SMALL LETTER G WITH DOT ABOVE

      U+0121

      0x67

      g LATIN SMALL LETTER G

      ģ LATIN SMALL LETTER G WITH CEDILLA

      U+0123

      0x67

      g LATIN SMALL LETTER G

      ĥ LATIN SMALL LETTER H WITH CIRCUMFLEX

      U+0125

      0x68

      h LATIN SMALL LETTER H

      ħ LATIN SMALL LETTER H WITH STROKE

      U+0127

      0x68

      h LATIN SMALL LETTER H

      ĩ LATIN SMALL LETTER I WITH TILDE

      U+0129

      0x69

      i LATIN SMALL LETTER I

      ī LATIN SMALL LETTER I WITH MACRON

      U+012B

      0x69

      i LATIN SMALL LETTER I

      ĭ LATIN SMALL LETTER I WITH BREVE

      U+012D

      0x69

      i LATIN SMALL LETTER I

      į LATIN SMALL LETTER I WITH OGONEK

      U+012F

      0x69

      i LATIN SMALL LETTER I

      ı LATIN SMALL LETTER DOTLESS I

      U+0131

      0x69

      i LATIN SMALL LETTER I

      ĵ LATIN SMALL LETTER J WITH CIRCUMFLEX

      U+0135

      0x6A

      j LATIN SMALL LETTER J

      ķ LATIN SMALL LETTER K WITH CEDILLA

      U+0137

      0x6B

      k LATIN SMALL LETTER K

      ĸ LATIN SMALL LETTER KRA (Greenlandic)

      U+0138

      0x6B

      k LATIN SMALL LETTER K

      ĺ LATIN SMALL LETTER L WITH ACUTE

      U+013A

      0x6C

      l LATIN SMALL LETTER L

      ļ LATIN SMALL LETTER L WITH CEDILLA

      U+013C

      0x6C

      l LATIN SMALL LETTER L

      ľ LATIN SMALL LETTER L WITH CARON

      U+013E

      0x6C

      l LATIN SMALL LETTER L

      ŀ LATIN SMALL LETTER L WITH MIDDLE DOT

      U+0140

      0x6C

      l LATIN SMALL LETTER L

      ł LATIN SMALL LETTER L WITH STROKE

      U+0142

      0x6C

      l LATIN SMALL LETTER L

      ń LATIN SMALL LETTER N WITH ACUTE

      U+0144

      0x6E

      n LATIN SMALL LETTER N

      ņ LATIN SMALL LETTER N WITH CEDILLA

      U+0146

      0x6E

      n LATIN SMALL LETTER N

      ň LATIN SMALL LETTER N WITH CARON

      U+0148

      0x6E

      n LATIN SMALL LETTER N

      ʼn LATIN SMALL LETTER N PRECEDED BY APOSTROPHE

      U+0149

      0x6E

      n LATIN SMALL LETTER N

       ŋ LATIN SMALL LETTER ENG (Sami)

      U+014B

      0x6E

      n LATIN SMALL LETTER N

      ō LATIN SMALL LETTER O WITH MACRON

      U+014D

      0x6F

      o LATIN SMALL LETTER O

      ŏ LATIN SMALL LETTER O WITH BREVE

      U+014F

      0x6F

      o LATIN SMALL LETTER O

      ° DEGREE SIGN

      U+00B0

      0x6F

      o LATIN SMALL LETTER O

      º MASCULINE ORDINAL INDICATOR

      U+00BA

      0x6F

      o LATIN SMALL LETTER O

      œ LATIN SMALL LIGATURE OE

      U+0153

      0x6F

      o LATIN SMALL LETTER O

      ŕ LATIN SMALL LETTER R WITH ACUTE

      U+0155

      0x72

      r LATIN SMALL LETTER R

      ŗ LATIN SMALL LETTER R WITH CEDILLA

      U+0157

      0x72

      r LATIN SMALL LETTER R

      ř LATIN SMALL LETTER R WITH CARON

      U+0159

      0x72

      r LATIN SMALL LETTER R

      ® REGISTERED SIGN

      U+00AE

      0x72

      r LATIN SMALL LETTER R

      ś LATIN SMALL LETTER S WITH ACUTE

      U+015B

      0x73

      s LATIN SMALL LETTER S

      ŝ LATIN SMALL LETTER S WITH CIRCUMFLEX

      U+015D

      0x73

      s LATIN SMALL LETTER S

      ş LATIN SMALL LETTER S WITH CEDILLA *

      U+015F

      0x73

      s LATIN SMALL LETTER S

      š LATIN SMALL LETTER S WITH CARON

      U+0161

      0x73

      s LATIN SMALL LETTER S

      þ LATIN SMALL LETTER THORN (Icelandic)

      U+00FE

      0x74

      t LATIN SMALL LETTER T

      ţ LATIN SMALL LETTER T WITH CEDILLA *

      U+0163

      0x74

      t LATIN SMALL LETTER T

      ť LATIN SMALL LETTER T WITH CARON

      U+0165

      0x74

      t LATIN SMALL LETTER T

      ŧ LATIN SMALL LETTER T WITH STROKE

      U+0167

      0x74

      t LATIN SMALL LETTER T

      ũ LATIN SMALL LETTER U WITH TILDE

      U+0169

      0x75

      u LATIN SMALL LETTER U

      ū LATIN SMALL LETTER U WITH MACRON

      U+016B

      0x75

      u LATIN SMALL LETTER U

      ŭ LATIN SMALL LETTER U WITH BREVE

      U+016D

      0x75

      u LATIN SMALL LETTER U

      ů LATIN SMALL LETTER U WITH RING ABOVE

      U+016F

      0x75

      u LATIN SMALL LETTER U

      ų LATIN SMALL LETTER U WITH OGONEK

      U+0173

      0x75

      u LATIN SMALL LETTER U

      µ MICRO SIGN

      U+00B5

      0x75

      u LATIN SMALL LETTER U

      ŵ LATIN SMALL LETTER W WITH CIRCUMFLEX

      U+0175

      0x77

      w LATIN SMALL LETTER W

      ŷ LATIN SMALL LETTER Y WITH CIRCUMFLEX

      U+0177

      0x79

      y LATIN SMALL LETTER Y

      ź LATIN SMALL LETTER Z WITH ACUTE

      U+017A

      0x7A

      z LATIN SMALL LETTER Z

       ż LATIN SMALL LETTER Z WITH DOT ABOVE

      U+017C

      0x7A

      z LATIN SMALL LETTER Z

      ž LATIN SMALL LETTER Z WITH CARON

      U+017E

      0x7A

      z LATIN SMALL LETTER Z

      ő LATIN SMALL LETTER O WITH DOUBLE ACUTE

      U+0151

      0x7C

      ö LATIN SMALL LETTER O WITH DIAERESIS

      ű LATIN SMALL LETTER U WITH DOUBLE ACUTE

      U+0171

      0x7E

      ü LATIN SMALL LETTER U WITH DIAERESIS

      Table 2 lists the 9 characters in Lossy Character 1 supported by Standard SMS Converter but not by Extended SMS Converter.

      Table 2

      Character

      Unicode

      GSM

      Converted Character

      ϕ GREEK PHI SYMBOL

      0x03D5

      0x12

      Φ GREEK CAPITAL LETTER PHI

      Ω OHM SIGN

      0x2126

      0x15

      Ω GREEK CAPITAL LETTER OMEGA

      ∏ N-ARY PRODUCT

      0x220F

      0x16

      Π GREEK CAPITAL LETTER PI

      ∑ N-ARY SUMMATION

      0x2211

      0x18

      Σ GREEK CAPITAL LETTER SIGMA

      ϑ GREEK THETA SYMBOL

      0x03D1

      0x19

      Θ GREEK CAPITAL LETTER THETA

      ϐ GREEK BETA SYMBOL

      0x03D0

      0x42

      B LATIN CAPITAL LETTER B

      ϒ GREEK UPSILON WITH HOOK SYMBOL

      0x03D2

      0x59

      Y LATIN CAPITAL LETTER Y

      ϓ GREEK UPSILON WITH ACUTE AND HOOK SYMBOL

      0x03D3

      0x59

      Y LATIN CAPITAL LETTER Y

      ϔ GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL

      0x03D4

      0x59

      Y LATIN CAPITAL LETTER Y

      See also

      SMS Encodings and Converters Overview

      \ No newline at end of file +Extended SMS Converter

      The Extended SMS Converter uses the lossy mechanism to extend the alphabet of the standard converter. It maps a wider set of input character codes, including commonly-used Eastern European Unicode characters, to the standard 7-bit alphabet. This section describes the Extended SMS Converter and the alphabet it supports.

      Introduction

      Languages supported by this converter include Croatian, Czech, Estonian, Hungarian, Icelandic, Latvian, Lithuanian, Polish, Romanian, Serbian, Slovak, Slovenian, Turkish, Portuguese and Spanish. This converter is identified by the KCharacterSetIdentifierExtendedSms7Bit UID, which is defined in the charconv.h file.

      Any undefined Unicode is converted to a question mark (?)–GSM code 0x37. Any code outside GSM 0x00 ~0x7F is converted to the Unicode replacement character 0xFFFD.

      Alphabet

      The highlighted boxes in Figure 1 illustrate the alphabet of the extended SMS converter:

      • GSM 7-bit default alphabet

      • GSM 7-bit default alphabet extension table

      • Extra lossy conversions–exclude 9 characters listed in Table 2

      • Extended lossy conversions–shown as Lossy Characters 2 in Figure 1.

      Figure 1

      Table 1 lists the extra lossy conversions supported by this converter in addition to those supported by the standard converter.

      Table 1

      Character

      Unicode

      GSM

      Converted Character

      Ώ GREEK CAPITAL LETTER OMEGA WITH TONOS

      U+038F

      0x15

      Ω GREEK CAPITAL LETTER OMEGA

      (NO-BREAK SPACE)

      U+00A0

      0x20

      (SPACE)

      « LEFT-POINTING DOUBLE ANGLE QUOTATION MARK *

      U+00AB

      0x22

      " QUOTATION MARK

      » RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK *

      U+00BB

      0x22

      " QUOTATION MARK

      ` GRAVE ACCENT

      U+0060

      0x27

      ' APOSTROPHE

      ´ ACUTE ACCENT

      U+00B4

      0x27

      ' APOSTROPHE

      ΄ GREEK TONOS

      U+0384

      0x27

      ' APOSTROPHE

      ΅ GREEK DIALYTIKA TONOS

      U+0385

      0x27

      ' APOSTROPHE

      × MULTIPLICATION SIGN

      U+00D7

      0x2A

      * ASTERISK

      ¸ CEDILLA

      U+00B8

      0x2C

      , COMMA

      SOFT HYPHEN

      U+00AD

      0x2D

      - HYPHEN-MINUS

      · MIDDLE DOT

      U+00B7

      0x2E

      . FULL STOP

      ÷ DIVISION SIGN

      U+00F7

      0x2F

      / SOLIDUS

      ¹ SUPERSCRIPT ONE

      U+00B9

      0x31

      1 DIGIT ONE

      ² SUPERSCRIPT TWO

      U+00B2

      0x32

      2 DIGIT TWO

      ³ SUPERSCRIPT THREE

      U+00B3

      0x33

      3 DIGIT THREE

      ; GREEK QUESTION MARK (Erotimatiko)

      U+037E

      0x3B

      ; SEMICOLON

      Ā LATIN CAPITAL LETTER A WITH MACRON

      U+0100

      0x41

      A LATIN CAPITAL LETTER A

      Ă LATIN CAPITAL LETTER A WITH BREVE

      U+0102

      0x41

      A LATIN CAPITAL LETTER A

      Ą LATIN CAPITAL LETTER A WITH OGONEK

      U+0104

      0x41

      A LATIN CAPITAL LETTER A

      Ć LATIN CAPITAL LETTER C WITH ACUTE

      U+0106

      0x43

      C LATIN CAPITAL LETTER C

      Ĉ LATIN CAPITAL LETTER C WITH CIRCUMFLEX

      U+0108

      0x43

      C LATIN CAPITAL LETTER C

      Ċ LATIN CAPITAL LETTER C WITH DOT ABOVE

      U+010A

      0x43

      C LATIN CAPITAL LETTER C

      Č LATIN CAPITAL LETTER C WITH CARON

      U+010C

      0x43

      C LATIN CAPITAL LETTER C

      Ð LATIN CAPITAL LETTER ETH (Icelandic)

      U+00D0

      0x44

      D LATIN CAPITAL LETTER D

      Ď LATIN CAPITAL LETTER D WITH CARON

      U+010E

      0x44

      D LATIN CAPITAL LETTER D

      Đ LATIN CAPITAL LETTER D WITH STROKE

      U+0110

      0x44

      D LATIN CAPITAL LETTER D

      Ē LATIN CAPITAL LETTER E WITH MACRON

      U+0112

      0x45

      E LATIN CAPITAL LETTER E

      Ĕ LATIN CAPITAL LETTER E WITH BREVE

      U+0114

      0x45

      E LATIN CAPITAL LETTER E

      Ė LATIN CAPITAL LETTER E WITH DOT ABOVE

      U+0116

      0x45

      E LATIN CAPITAL LETTER E

      Ę LATIN CAPITAL LETTER E WITH OGONEK

      U+0118

      0x45

      E LATIN CAPITAL LETTER E

      Ě LATIN CAPITAL LETTER E WITH CARON

      U+011A

      0x45

      E LATIN CAPITAL LETTER E

      Ĝ LATIN CAPITAL LETTER G WITH CIRCUMFLEX

      U+011C

      0x47

      G LATIN CAPITAL LETTER G

      Ğ LATIN CAPITAL LETTER G WITH BREVE

      U+011E

      0x47

      G LATIN CAPITAL LETTER G

      Ġ LATIN CAPITAL LETTER G WITH DOT ABOVE

      U+0120

      0x47

      G LATIN CAPITAL LETTER G

      Ģ LATIN CAPITAL LETTER G WITH CEDILLA

      U+0122

      0x47

      G LATIN CAPITAL LETTER G

      Ĥ LATIN CAPITAL LETTER H WITH CIRCUMFLEX

      U+0124

      0x48

      H LATIN CAPITAL LETTER H

      Ħ LATIN CAPITAL LETTER H WITH STROKE

      U+0126

      0x48

      H LATIN CAPITAL LETTER H

      Ĩ LATIN CAPITAL LETTER I WITH TILDE

      U+0128

      0x49

      I LATIN CAPITAL LETTER I

      Ī LATIN CAPITAL LETTER I WITH MACRON

      U+012A

      0x49

      I LATIN CAPITAL LETTER I

      Ĭ LATIN CAPITAL LETTER I WITH BREVE

      U+012C

      0x49

      I LATIN CAPITAL LETTER I

      Į LATIN CAPITAL LETTER I WITH OGONEK

      U+012E

      0x49

      I LATIN CAPITAL LETTER I

      İ LATIN CAPITAL LETTER I WITH DOT ABOVE

      U+0130

      0x49

      I LATIN CAPITAL LETTER I

      Ĵ LATIN CAPITAL LETTER J WITH CIRCUMFLEX

      U+0134

      0x4A

      J LATIN CAPITAL LETTER J

      Ķ LATIN CAPITAL LETTER K WITH CEDILLA

      U+0136

      0x4B

      K LATIN CAPITAL LETTER K

      Ĺ LATIN CAPITAL LETTER L WITH ACUTE

      U+0139

      0x4C

      L LATIN CAPITAL LETTER L

      Ļ LATIN CAPITAL LETTER L WITH CEDILLA

      U+013B

      0x4C

      L LATIN CAPITAL LETTER L

      Ľ LATIN CAPITAL LETTER L WITH CARON

      U+013D

      0x4C

      L LATIN CAPITAL LETTER L

      Ŀ LATIN CAPITAL LETTER L WITH MIDDLE DOT

      U+013F

      0x4C

      L LATIN CAPITAL LETTER L

      Ł LATIN CAPITAL LETTER L WITH STROKE

      U+0141

      0x4C

      L LATIN CAPITAL LETTER L

      Ń LATIN CAPITAL LETTER N WITH ACUTE

      U+0143

      0x4E

      N LATIN CAPITAL LETTER N

      Ņ LATIN CAPITAL LETTER N WITH CEDILLA

      U+0145

      0x4E

      N LATIN CAPITAL LETTER N

      Ň LATIN CAPITAL LETTER N WITH CARON

      U+0147

      0x4E

      N LATIN CAPITAL LETTER N

      Ŋ LATIN CAPITAL LETTER ENG (Sami)

      U+014A

      0x4E

      N LATIN CAPITAL LETTER N

      Ō LATIN CAPITAL LETTER O WITH MACRON

      U+014C

      0x4F

      O LATIN CAPITAL LETTER O

      Ŏ LATIN CAPITAL LETTER O WITH BREVE

      U+014E

      0x4F

      O LATIN CAPITAL LETTER O

      ΠLATIN CAPITAL LIGATURE OE

      U+0152

      0x4F

      O LATIN CAPITAL LETTER O

      Ŕ LATIN CAPITAL LETTER R WITH ACUTE

      U+0154

      0x52

      R LATIN CAPITAL LETTER R

      Ŗ LATIN CAPITAL LETTER R WITH CEDILLA

      U+0156

      0x52

      R LATIN CAPITAL LETTER R

      Ř LATIN CAPITAL LETTER R WITH CARON

      U+0158

      0x52

      R LATIN CAPITAL LETTER R

      Ś LATIN CAPITAL LETTER S WITH ACUTE

      U+015A

      0x53

      S LATIN CAPITAL LETTER S

      Ŝ LATIN CAPITAL LETTER S WITH CIRCUMFLEX

      U+015C

      0x53

      S LATIN CAPITAL LETTER S

      Ş LATIN CAPITAL LETTER S WITH CEDILLA *

      U+015E

      0x53

      S LATIN CAPITAL LETTER S

      Š LATIN CAPITAL LETTER S WITH CARON

      U+0160

      0x53

      S LATIN CAPITAL LETTER S

      Þ LATIN CAPITAL LETTER THORN (Icelandic)

      U+00DE

      0x54

      T LATIN CAPITAL LETTER T

      Ţ LATIN CAPITAL LETTER T WITH CEDILLA *

      U+0162

      0x54

      T LATIN CAPITAL LETTER T

      Ť LATIN CAPITAL LETTER T WITH CARON

      U+0164

      0x54

      T LATIN CAPITAL LETTER T

      Ŧ LATIN CAPITAL LETTER T WITH STROKE

      U+0166

      0x54

      T LATIN CAPITAL LETTER T

      Ũ LATIN CAPITAL LETTER U WITH TILDE

      U+0168

      0x55

      U LATIN CAPITAL LETTER U

      Ū LATIN CAPITAL LETTER U WITH MACRON

      U+016A

      0x55

      U LATIN CAPITAL LETTER U

      Ŭ LATIN CAPITAL LETTER U WITH BREVE

      U+016C

      0x55

      U LATIN CAPITAL LETTER U

      Ů LATIN CAPITAL LETTER U WITH RING ABOVE

      U+016E

      0x55

      U LATIN CAPITAL LETTER U

      Ų LATIN CAPITAL LETTER U WITH OGONEK

      U+0172

      0x55

      U LATIN CAPITAL LETTER U

      Ŵ LATIN CAPITAL LETTER W WITH CIRCUMFLEX

      U+0174

      0x57

      W LATIN CAPITAL LETTER W

      Ŷ LATIN CAPITAL LETTER Y WITH CIRCUMFLEX

      U+0176

      0x59

      Y LATIN CAPITAL LETTER Y

      Ÿ LATIN CAPITAL LETTER Y WITH DIAERESIS

      U+0178

      0x59

      Y LATIN CAPITAL LETTER Y

      Ź LATIN CAPITAL LETTER Z WITH ACUTE

      U+0179

      0x5A

      Z LATIN CAPITAL LETTER Z

      Ż LATIN CAPITAL LETTER Z WITH DOT ABOVE

      U+017B

      0x5A

      Z LATIN CAPITAL LETTER Z

      Ž LATIN CAPITAL LETTER Z WITH CARON

      U+017D

      0x5A

      Z LATIN CAPITAL LETTER Z

      Ö LATIN CAPITAL LETTER O WITH DIAERESIS

      U+00D6

      0x5C

      Ö LATIN CAPITAL LETTER O WITH DIAERESIS

      Ő LATIN CAPITAL LETTER O WITH DOUBLE ACUTE

      U+0150

      0x5C

      Ö LATIN CAPITAL LETTER O WITH DIAERESIS

      Ű LATIN CAPITAL LETTER U WITH DOUBLE ACUTE

      U+0170

      0x5E

      Ü LATIN CAPITAL LETTER U WITH DIAERESIS

      ā LATIN SMALL LETTER A WITH MACRON

      U+0101

      0x61

      a LATIN SMALL LETTER A

      ă LATIN SMALL LETTER A WITH BREVE

      U+0103

      0x61

      a LATIN SMALL LETTER A

      ą LATIN SMALL LETTER A WITH OGONEK

      U+0105

      0x61

      a LATIN SMALL LETTER A

      ª FEMININE ORDINAL INDICATOR

      U+00AA

      0x61

      a LATIN SMALL LETTER A

      ć LATIN SMALL LETTER C WITH ACUTE

      U+0107

      0x63

      c LATIN SMALL LETTER C

      ĉ LATIN SMALL LETTER C WITH CIRCUMFLEX

      U+0109

      0x63

      c LATIN SMALL LETTER C

      ċ LATIN SMALL LETTER C WITH DOT ABOVE

      U+010B

      0x63

      c LATIN SMALL LETTER C

      č LATIN SMALL LETTER C WITH CARON

      U+010D

      0x63

      c LATIN SMALL LETTER C

      ¢ CENT SIGN

      U+00A2

      0x63

      c LATIN SMALL LETTER C

      © COPYRIGHT SIGN

      U+00A9

      0x63

      c LATIN SMALL LETTER C

      ð LATIN SMALL LETTER ETH (Icelandic)

      U+00F0

      0x64

      d LATIN SMALL LETTER D

      ď LATIN SMALL LETTER D WITH CARON

      U+010F

      0x64

      d LATIN SMALL LETTER D

      đ LATIN SMALL LETTER D WITH STROKE

      U+0111

      0x64

      d LATIN SMALL LETTER D

      ē LATIN SMALL LETTER E WITH MACRON

      U+0113

      0x65

      e LATIN SMALL LETTER E

      ĕ LATIN SMALL LETTER E WITH BREVE

      U+0115

      0x65

      e LATIN SMALL LETTER E

      ė LATIN SMALL LETTER E WITH DOT ABOVE

      U+0117

      0x65

      e LATIN SMALL LETTER E

      ę LATIN SMALL LETTER E WITH OGONEK

      U+0119

      0x65

      e LATIN SMALL LETTER E

      ě LATIN SMALL LETTER E WITH CARON

      U+011B

      0x65

      e LATIN SMALL LETTER E

      ĝ LATIN SMALL LETTER G WITH CIRCUMFLEX

      U+011D

      0x67

      g LATIN SMALL LETTER G

      ğ LATIN SMALL LETTER G WITH BREVE

      U+011F

      0x67

      g LATIN SMALL LETTER G

      ġ LATIN SMALL LETTER G WITH DOT ABOVE

      U+0121

      0x67

      g LATIN SMALL LETTER G

      ģ LATIN SMALL LETTER G WITH CEDILLA

      U+0123

      0x67

      g LATIN SMALL LETTER G

      ĥ LATIN SMALL LETTER H WITH CIRCUMFLEX

      U+0125

      0x68

      h LATIN SMALL LETTER H

      ħ LATIN SMALL LETTER H WITH STROKE

      U+0127

      0x68

      h LATIN SMALL LETTER H

      ĩ LATIN SMALL LETTER I WITH TILDE

      U+0129

      0x69

      i LATIN SMALL LETTER I

      ī LATIN SMALL LETTER I WITH MACRON

      U+012B

      0x69

      i LATIN SMALL LETTER I

      ĭ LATIN SMALL LETTER I WITH BREVE

      U+012D

      0x69

      i LATIN SMALL LETTER I

      į LATIN SMALL LETTER I WITH OGONEK

      U+012F

      0x69

      i LATIN SMALL LETTER I

      ı LATIN SMALL LETTER DOTLESS I

      U+0131

      0x69

      i LATIN SMALL LETTER I

      ĵ LATIN SMALL LETTER J WITH CIRCUMFLEX

      U+0135

      0x6A

      j LATIN SMALL LETTER J

      ķ LATIN SMALL LETTER K WITH CEDILLA

      U+0137

      0x6B

      k LATIN SMALL LETTER K

      ĸ LATIN SMALL LETTER KRA (Greenlandic)

      U+0138

      0x6B

      k LATIN SMALL LETTER K

      ĺ LATIN SMALL LETTER L WITH ACUTE

      U+013A

      0x6C

      l LATIN SMALL LETTER L

      ļ LATIN SMALL LETTER L WITH CEDILLA

      U+013C

      0x6C

      l LATIN SMALL LETTER L

      ľ LATIN SMALL LETTER L WITH CARON

      U+013E

      0x6C

      l LATIN SMALL LETTER L

      ŀ LATIN SMALL LETTER L WITH MIDDLE DOT

      U+0140

      0x6C

      l LATIN SMALL LETTER L

      ł LATIN SMALL LETTER L WITH STROKE

      U+0142

      0x6C

      l LATIN SMALL LETTER L

      ń LATIN SMALL LETTER N WITH ACUTE

      U+0144

      0x6E

      n LATIN SMALL LETTER N

      ņ LATIN SMALL LETTER N WITH CEDILLA

      U+0146

      0x6E

      n LATIN SMALL LETTER N

      ň LATIN SMALL LETTER N WITH CARON

      U+0148

      0x6E

      n LATIN SMALL LETTER N

      ʼn LATIN SMALL LETTER N PRECEDED BY APOSTROPHE

      U+0149

      0x6E

      n LATIN SMALL LETTER N

       ŋ LATIN SMALL LETTER ENG (Sami)

      U+014B

      0x6E

      n LATIN SMALL LETTER N

      ō LATIN SMALL LETTER O WITH MACRON

      U+014D

      0x6F

      o LATIN SMALL LETTER O

      ŏ LATIN SMALL LETTER O WITH BREVE

      U+014F

      0x6F

      o LATIN SMALL LETTER O

      ° DEGREE SIGN

      U+00B0

      0x6F

      o LATIN SMALL LETTER O

      º MASCULINE ORDINAL INDICATOR

      U+00BA

      0x6F

      o LATIN SMALL LETTER O

      œ LATIN SMALL LIGATURE OE

      U+0153

      0x6F

      o LATIN SMALL LETTER O

      ŕ LATIN SMALL LETTER R WITH ACUTE

      U+0155

      0x72

      r LATIN SMALL LETTER R

      ŗ LATIN SMALL LETTER R WITH CEDILLA

      U+0157

      0x72

      r LATIN SMALL LETTER R

      ř LATIN SMALL LETTER R WITH CARON

      U+0159

      0x72

      r LATIN SMALL LETTER R

      ® REGISTERED SIGN

      U+00AE

      0x72

      r LATIN SMALL LETTER R

      ś LATIN SMALL LETTER S WITH ACUTE

      U+015B

      0x73

      s LATIN SMALL LETTER S

      ŝ LATIN SMALL LETTER S WITH CIRCUMFLEX

      U+015D

      0x73

      s LATIN SMALL LETTER S

      ş LATIN SMALL LETTER S WITH CEDILLA *

      U+015F

      0x73

      s LATIN SMALL LETTER S

      š LATIN SMALL LETTER S WITH CARON

      U+0161

      0x73

      s LATIN SMALL LETTER S

      þ LATIN SMALL LETTER THORN (Icelandic)

      U+00FE

      0x74

      t LATIN SMALL LETTER T

      ţ LATIN SMALL LETTER T WITH CEDILLA *

      U+0163

      0x74

      t LATIN SMALL LETTER T

      ť LATIN SMALL LETTER T WITH CARON

      U+0165

      0x74

      t LATIN SMALL LETTER T

      ŧ LATIN SMALL LETTER T WITH STROKE

      U+0167

      0x74

      t LATIN SMALL LETTER T

      ũ LATIN SMALL LETTER U WITH TILDE

      U+0169

      0x75

      u LATIN SMALL LETTER U

      ū LATIN SMALL LETTER U WITH MACRON

      U+016B

      0x75

      u LATIN SMALL LETTER U

      ŭ LATIN SMALL LETTER U WITH BREVE

      U+016D

      0x75

      u LATIN SMALL LETTER U

      ů LATIN SMALL LETTER U WITH RING ABOVE

      U+016F

      0x75

      u LATIN SMALL LETTER U

      ų LATIN SMALL LETTER U WITH OGONEK

      U+0173

      0x75

      u LATIN SMALL LETTER U

      µ MICRO SIGN

      U+00B5

      0x75

      u LATIN SMALL LETTER U

      ŵ LATIN SMALL LETTER W WITH CIRCUMFLEX

      U+0175

      0x77

      w LATIN SMALL LETTER W

      ŷ LATIN SMALL LETTER Y WITH CIRCUMFLEX

      U+0177

      0x79

      y LATIN SMALL LETTER Y

      ź LATIN SMALL LETTER Z WITH ACUTE

      U+017A

      0x7A

      z LATIN SMALL LETTER Z

       ż LATIN SMALL LETTER Z WITH DOT ABOVE

      U+017C

      0x7A

      z LATIN SMALL LETTER Z

      ž LATIN SMALL LETTER Z WITH CARON

      U+017E

      0x7A

      z LATIN SMALL LETTER Z

      ő LATIN SMALL LETTER O WITH DOUBLE ACUTE

      U+0151

      0x7C

      ö LATIN SMALL LETTER O WITH DIAERESIS

      ű LATIN SMALL LETTER U WITH DOUBLE ACUTE

      U+0171

      0x7E

      ü LATIN SMALL LETTER U WITH DIAERESIS

      Table 2 lists the 9 characters in Lossy Character 1 supported by Standard SMS Converter but not by Extended SMS Converter.

      Table 2

      Character

      Unicode

      GSM

      Converted Character

      ϕ GREEK PHI SYMBOL

      0x03D5

      0x12

      Φ GREEK CAPITAL LETTER PHI

      Ω OHM SIGN

      0x2126

      0x15

      Ω GREEK CAPITAL LETTER OMEGA

      ∏ N-ARY PRODUCT

      0x220F

      0x16

      Π GREEK CAPITAL LETTER PI

      ∑ N-ARY SUMMATION

      0x2211

      0x18

      Σ GREEK CAPITAL LETTER SIGMA

      ϑ GREEK THETA SYMBOL

      0x03D1

      0x19

      Θ GREEK CAPITAL LETTER THETA

      ϐ GREEK BETA SYMBOL

      0x03D0

      0x42

      B LATIN CAPITAL LETTER B

      ϒ GREEK UPSILON WITH HOOK SYMBOL

      0x03D2

      0x59

      Y LATIN CAPITAL LETTER Y

      ϓ GREEK UPSILON WITH ACUTE AND HOOK SYMBOL

      0x03D3

      0x59

      Y LATIN CAPITAL LETTER Y

      ϔ GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL

      0x03D4

      0x59

      Y LATIN CAPITAL LETTER Y

      See also

      SMS Encodings and Converters Overview

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B12AAA82-0534-5FBB-B9BA-33056B988575_d0e583638_href.png Binary file Symbian3/PDK/Source/GUID-B12AAA82-0534-5FBB-B9BA-33056B988575_d0e583638_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B12AAA82-0534-5FBB-B9BA-33056B988575_d0e632926_href.png Binary file Symbian3/PDK/Source/GUID-B12AAA82-0534-5FBB-B9BA-33056B988575_d0e632926_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B12EEEF5-311B-49F8-A2DA-D6EF6A705071_d0e80983_href.png Binary file Symbian3/PDK/Source/GUID-B12EEEF5-311B-49F8-A2DA-D6EF6A705071_d0e80983_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B12EEEF5-311B-49F8-A2DA-D6EF6A705071_d0e85181_href.png Binary file Symbian3/PDK/Source/GUID-B12EEEF5-311B-49F8-A2DA-D6EF6A705071_d0e85181_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B131AE10-B9B1-53D2-8CAA-A9045957D6F9_d0e315462_href.png Binary file Symbian3/PDK/Source/GUID-B131AE10-B9B1-53D2-8CAA-A9045957D6F9_d0e315462_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B131AE10-B9B1-53D2-8CAA-A9045957D6F9_d0e321452_href.png Binary file Symbian3/PDK/Source/GUID-B131AE10-B9B1-53D2-8CAA-A9045957D6F9_d0e321452_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B1362BCE-8043-5183-B287-8381A87555B9_d0e449125_href.png Binary file Symbian3/PDK/Source/GUID-B1362BCE-8043-5183-B287-8381A87555B9_d0e449125_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B1362BCE-8043-5183-B287-8381A87555B9_d0e454970_href.png Binary file Symbian3/PDK/Source/GUID-B1362BCE-8043-5183-B287-8381A87555B9_d0e454970_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B14B3D67-B0D5-54B6-AAE4-D4486D019498.dita --- a/Symbian3/PDK/Source/GUID-B14B3D67-B0D5-54B6-AAE4-D4486D019498.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B14B3D67-B0D5-54B6-AAE4-D4486D019498.dita Fri Jul 16 17:23:46 2010 +0100 @@ -25,8 +25,9 @@
    • How to request a change to a system state, with and without notification

    -
    Download

    Click on the following link to download the example: ssmanager.zip

    Click: browse to view the example code.

    -
    Class Summary
      +
      Download

      Click on the following link to download the example: ssmanager.zip

      Click: browse to view the example code.

      +
      Class +Summary
      • TSsmSwp

      • TSsmStateTransition

      • CSsmSystemWideProperty

      • @@ -68,7 +69,7 @@
      • dummybackup.exe: The dummy application which is launched when the system state changes to 'backup'. It just prints a series of statements to the console.

      -
      Building +<section id="GUID-DEFCF4B9-452A-5EAF-ABD3-BC4F6FBD528B-GENID-1-12-1-11-1-1-7-1-5-1-6-1-3-5"><title>Building and configuring

      To build the example:

      • The example builds the following binaries

        ssmanager.exe

        ssm.state.policy.0004.dll

        ssm.state.policy.0005.dll

        ssm.swp.policy.dummy.diskstatus.dll

        ssm.state.policy.0001.dll

        dummybackup.exe

      • @@ -79,8 +80,7 @@ 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:

        bldmake bldfiles

        abld -build

        How to use bldmake and How to -use abld describe how to use the SBSv1 build tools.

        +build

      • For the emulator, the example builds ssmanager.exe in the epoc32\release\winscw\<udeb or urel>\ folder.

      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B16E3A7D-FF14-559A-BF86-2A1A1A584CDC_d0e561253_href.png Binary file Symbian3/PDK/Source/GUID-B16E3A7D-FF14-559A-BF86-2A1A1A584CDC_d0e561253_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B16E3A7D-FF14-559A-BF86-2A1A1A584CDC_d0e569929_href.png Binary file Symbian3/PDK/Source/GUID-B16E3A7D-FF14-559A-BF86-2A1A1A584CDC_d0e569929_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B172B71E-10DE-5AC6-9F10-A7EC74CE0B7F_d0e596642_href.png Binary file Symbian3/PDK/Source/GUID-B172B71E-10DE-5AC6-9F10-A7EC74CE0B7F_d0e596642_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B172B71E-10DE-5AC6-9F10-A7EC74CE0B7F_d0e615026_href.png Binary file Symbian3/PDK/Source/GUID-B172B71E-10DE-5AC6-9F10-A7EC74CE0B7F_d0e615026_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B172B71E-10DE-5AC6-9F10-A7EC74CE0B7F_d0e624536_href.png Binary file Symbian3/PDK/Source/GUID-B172B71E-10DE-5AC6-9F10-A7EC74CE0B7F_d0e624536_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B1800856-3516-5D22-B1C5-556866CDDF46.dita --- a/Symbian3/PDK/Source/GUID-B1800856-3516-5D22-B1C5-556866CDDF46.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,83 +0,0 @@ - - - - - -bldmake -command syntax -

      The bldmake tool processes the component description -file (bld.inf) in the current directory and generates -the batch file abld.bat and several build batch makefiles -(.make). The makefiles are used by abld to -perform the various stages of building the component.

      -

      Invocation syntax

      -

      bldmake [ options ] command [ platform ]

      -

      Details of command and options are -given in the following tables:

      -

      Command

      - - - - -Command -Description - - - - -

      bldfiles

      -

      Creates abld and the project makefiles.

      -
      - -

      clean

      -

      Removes all files created by bldmake.

      -
      - -

      inf

      -

      Displays basic bld.inf syntax.

      -
      - -

      plat

      -

      Displays a list of the supported platforms, and the macros defined -for each for the preprocessing of prj_mmpfiles and prj_testmmpfiles sections -of bld.inf files.

      If a platform name is given, just the macros for -that platform are displayed: for example, bldmake plat thumb.

      -
      - - -
      -

      Options

      - - - - -Options -Description - - - - -

      -v

      -

      Instructs bldmake to print progress messages.

      Only -error messages are printed by default.

      -
      - -

      -k or -keepgoing

      -

      Instructs bldmake to continue with the process -even if the files specified in bld.inf -file are missing.

      -
      - - -
      -

      Platform

      -

      Defines the target for which to create the makefiles. If not specified, -all the default targets are assumed.

      -

      For v9.1, the default targets are WINSCW, GCCXML, ARMV5, and CW_IDE.

      -
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B1C79738-0449-5C26-BA8A-4612C6BF652F.dita --- a/Symbian3/PDK/Source/GUID-B1C79738-0449-5C26-BA8A-4612C6BF652F.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -prj_testexports

      prj_testexports

      source_file_1 [destination_file]

      source_file_n [destination_file]

      In the prj_testexports section, list the files to be copied from the source directories to the releasables’ directories for use with test programs.

      Specify each file on a separate line.

      Note that:

      • If the source file is listed with a relative path, the path will be considered relative to the directory containing the bld.inf file.

      • If a destination file is not specified, the source file will be copied to the directory containing the bld.inf file.

      • If a relative path is specified with the destination file, the path will be considered relative to directory containing the bld.inf file.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B1CB6374-2C2B-5D6C-9A7C-6E49D8F235B8.dita --- a/Symbian3/PDK/Source/GUID-B1CB6374-2C2B-5D6C-9A7C-6E49D8F235B8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B1CB6374-2C2B-5D6C-9A7C-6E49D8F235B8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -58,7 +58,7 @@ enabling display change event notifications (EEventDisplayChanged). The following diagram shows the class hierarchy.

      Display control class diagram - +

      For a diagram of the TDisplayConfiguration class hierarchy, see the Common Graphics Headers Component Overview.

      Once you have obtained @@ -169,7 +169,7 @@ so that the virtual keyboard can be drawn within the full UI area but outside of the application's extent.

      Display mapping class diagram - +

      The MDisplayMapping interface is very flexible. UIDs are used to signify the application UI coordinate space, the full UI space, the composition/display coordinate space (which may be a different @@ -184,7 +184,7 @@ rectangle represents the display area and the inner one represents the application space (screen mode).

      Display area and application extent - +

      The display resolution is 1280 x 720, the application size is 176 x 208 and a virtual resolution of 426 x 240 has been introduced, which gives a scaling factor of three in each direction. All pixels are approximately diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B1D63E7B-81EB-5F75-96C3-789E5C3E4C03.dita --- a/Symbian3/PDK/Source/GUID-B1D63E7B-81EB-5F75-96C3-789E5C3E4C03.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B1D63E7B-81EB-5F75-96C3-789E5C3E4C03.dita Fri Jul 16 17:23:46 2010 +0100 @@ -207,7 +207,7 @@ the text as shown:

      -<image href="GUID-03AC137D-173A-558C-A2F3-9522870AC43C_d0e315969_href.png" placement="inline"/> +<image href="GUID-03AC137D-173A-558C-A2F3-9522870AC43C_d0e321959_href.png" placement="inline"/> </fig> <p>The following code destroys the list elements and the <codeph>CXy</codeph> object containing the list header and iterator:</p> diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B21141D4-3BFE-59C9-8D5F-147A93BE1C95.dita --- a/Symbian3/PDK/Source/GUID-B21141D4-3BFE-59C9-8D5F-147A93BE1C95.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ -<?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-B21141D4-3BFE-59C9-8D5F-147A93BE1C95" xml:lang="en"><title>Build tools guide \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B21A4858-162A-50F1-8F88-4259B7F7238E_d0e144206_href.png Binary file Symbian3/PDK/Source/GUID-B21A4858-162A-50F1-8F88-4259B7F7238E_d0e144206_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B21A4858-162A-50F1-8F88-4259B7F7238E_d0e146455_href.png Binary file Symbian3/PDK/Source/GUID-B21A4858-162A-50F1-8F88-4259B7F7238E_d0e146455_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B2523978-4262-4E32-B50D-4818AC561B6D_d0e91869_href.png Binary file Symbian3/PDK/Source/GUID-B2523978-4262-4E32-B50D-4818AC561B6D_d0e91869_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B2523978-4262-4E32-B50D-4818AC561B6D_d0e96067_href.png Binary file Symbian3/PDK/Source/GUID-B2523978-4262-4E32-B50D-4818AC561B6D_d0e96067_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B2539DB1-FA06-5900-A859-547D3381E361_d0e447945_href.png Binary file Symbian3/PDK/Source/GUID-B2539DB1-FA06-5900-A859-547D3381E361_d0e447945_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B2539DB1-FA06-5900-A859-547D3381E361_d0e453790_href.png Binary file Symbian3/PDK/Source/GUID-B2539DB1-FA06-5900-A859-547D3381E361_d0e453790_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B26A4743-F331-5AC3-A40A-28B14B785857.dita --- a/Symbian3/PDK/Source/GUID-B26A4743-F331-5AC3-A40A-28B14B785857.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B26A4743-F331-5AC3-A40A-28B14B785857.dita Fri Jul 16 17:23:46 2010 +0100 @@ -91,8 +91,7 @@ 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:

      bldmake bldfiles

      abld -build

      How to use bldmake and How to -use abld describe how to use the SBSv1 build tools.

      +build

    • For the emulator, the example builds an executable called searchsortexample.exe in the epoc32\release\winscw\<udeb or urel>\ folder.

    • @@ -100,7 +99,7 @@
      Running the example

      searchsortexample.exe takes user input from the console. The menu for the current example is as shown below:

      - +

      The user input is handled by CKeyReader::RunL().

      For simple and combined non-iterative search-sort, the user provides the following inputs: 1) the text in the "To" field to search for, 2) whether case sensitivity is on of off, 3) whether diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B2B34DFF-6EBE-424A-9480-C9F1CB6E2D56_d0e1661_href.png Binary file Symbian3/PDK/Source/GUID-B2B34DFF-6EBE-424A-9480-C9F1CB6E2D56_d0e1661_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B2B34DFF-6EBE-424A-9480-C9F1CB6E2D56_d0e1665_href.png Binary file Symbian3/PDK/Source/GUID-B2B34DFF-6EBE-424A-9480-C9F1CB6E2D56_d0e1665_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B2BD19A4-132E-5D5C-8870-04BADB6E7815.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-B2BD19A4-132E-5D5C-8870-04BADB6E7815.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +SIF Tutorial \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B2D72405-590C-5AC5-9435-69D22528435D-GENID-1-12-1-24-1-1-8-1-4-1-4-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-B2D72405-590C-5AC5-9435-69D22528435D-GENID-1-12-1-24-1-1-8-1-4-1-4-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,13 @@ + + + + + +ConceptsThis section describes the architecture and interface of the Secure +Sockets. \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B2D72405-590C-5AC5-9435-69D22528435D-GENID-1-12-1-24-1-1-8-1-5-1-4-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-B2D72405-590C-5AC5-9435-69D22528435D-GENID-1-12-1-24-1-1-8-1-5-1-4-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,13 @@ + + + + + +ConceptsThis section describes the architecture and interface of the Secure +Sockets. \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B2D72405-590C-5AC5-9435-69D22528435D-GENID-1-12-1-24-1-1-9-1-4-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-B2D72405-590C-5AC5-9435-69D22528435D-GENID-1-12-1-24-1-1-9-1-4-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,13 @@ + + + + + +ConceptsThis section describes the architecture and interface of the Secure +Sockets. \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B2E63B13-7B72-5CBF-ACD0-1F2D2E1EEF19_d0e228689_href.png Binary file Symbian3/PDK/Source/GUID-B2E63B13-7B72-5CBF-ACD0-1F2D2E1EEF19_d0e228689_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B2E63B13-7B72-5CBF-ACD0-1F2D2E1EEF19_d0e234688_href.png Binary file Symbian3/PDK/Source/GUID-B2E63B13-7B72-5CBF-ACD0-1F2D2E1EEF19_d0e234688_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B2F5537B-3F47-5172-8DFA-185CC1CAAD22.dita --- a/Symbian3/PDK/Source/GUID-B2F5537B-3F47-5172-8DFA-185CC1CAAD22.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B2F5537B-3F47-5172-8DFA-185CC1CAAD22.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,5 +9,5 @@ --> -MTP USB Transport Overview

      Symbian supports USB as one of the MTP transport modes. The implementation uses the USB Still Image Capture Device Class v1.0 and is compatible with MTP Enhanced Specification v0.95. This section describes the components and how they are used to establish a connection between a host PC and a Symbian device.

      Architecture

      The two important components of the MTP over USB implementation are the USB Still Image Class Controller and the USB MTP Transport Plug-in:

      • USB Still Image Class Controller. This Ecom plug-in is loaded by the USB Manager. It helps the MTP Framework to start MTP services, such as loading the USB MTP Transport plug-in and setting up the connection between a Symbian device and a host.

      • USB MTP Transport Plug-in. This Ecom plug-in is loaded by the MTP framework. It interacts with the USB Stack for data transfer.

      The USB Manager and the USB Stack are components of Symbian Shortlink Services. They are responsible for setting up and managing USB connections for different USB devices.

      MTP over USB can be initiated in two ways:

      Using the Symbian USB Manager

      1. When a user application requests USB MTP services, the USB Manager loads the USB Still Image Controller plug-in. For more information about how to enable MTP over USB using the USB Manager, see Enabling MTP over USB.

      2. The USB Still Image Class Controller calls the MTP Client API to send the StartTransport command to the MTP Framework.

      3. The MTP Framework loads the USB MTP Transport plug-in.

      4. The USB MTP Transport plug-in calls the USB Stack API to establish the connection between the host PC (initiator) and the Symbian device (responder).

      5. Once the connection is established, requests and responses can be issued and media object data can be transferred between the host PC and the Symbian device.

        If the connection is active and the MTP Framework receives a request for another transport connection the default behaviour is to reject the request, however this behaviour is configurable. For more information about multiple connections, see Configuring Multiple Transport.

      Using a user application

      You can write your own application to enable MTP over USB without using the USB Manager. The MTP framework presents a standard Symbian client server interface. Your application calls the MTP Client API. The MTP Framework then loads the USB MTP Transport plug-in.

      For more information about how to enable MTP over USB through a user application, see Enabling MTP over USB.

      Enabling MTP over USB Configuring Multiple +MTP USB Transport Overview

      Symbian supports USB as one of the MTP transport modes. The implementation uses the USB Still Image Capture Device Class v1.0 and is compatible with MTP Enhanced Specification v0.95. This section describes the components and how they are used to establish a connection between a host PC and a Symbian device.

      Architecture

      The two important components of the MTP over USB implementation are the USB Still Image Class Controller and the USB MTP Transport Plug-in:

      • USB Still Image Class Controller. This Ecom plug-in is loaded by the USB Manager. It helps the MTP Framework to start MTP services, such as loading the USB MTP Transport plug-in and setting up the connection between a Symbian device and a host.

      • USB MTP Transport Plug-in. This Ecom plug-in is loaded by the MTP framework. It interacts with the USB Stack for data transfer.

      The USB Manager and the USB Stack are components of Symbian Shortlink Services. They are responsible for setting up and managing USB connections for different USB devices.

      MTP over USB can be initiated in two ways:

      Using the Symbian USB Manager

      1. When a user application requests USB MTP services, the USB Manager loads the USB Still Image Controller plug-in. For more information about how to enable MTP over USB using the USB Manager, see Enabling MTP over USB.

      2. The USB Still Image Class Controller calls the MTP Client API to send the StartTransport command to the MTP Framework.

      3. The MTP Framework loads the USB MTP Transport plug-in.

      4. The USB MTP Transport plug-in calls the USB Stack API to establish the connection between the host PC (initiator) and the Symbian device (responder).

      5. Once the connection is established, requests and responses can be issued and media object data can be transferred between the host PC and the Symbian device.

        If the connection is active and the MTP Framework receives a request for another transport connection the default behaviour is to reject the request, however this behaviour is configurable. For more information about multiple connections, see Configuring Multiple Transport.

      Using a user application

      You can write your own application to enable MTP over USB without using the USB Manager. The MTP framework presents a standard Symbian client server interface. Your application calls the MTP Client API. The MTP Framework then loads the USB MTP Transport plug-in.

      For more information about how to enable MTP over USB through a user application, see Enabling MTP over USB.

      Enabling MTP over USB Configuring Multiple Transports USB Manager
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B3000A78-3BE5-5E0A-A718-87BC9BA03726.dita --- a/Symbian3/PDK/Source/GUID-B3000A78-3BE5-5E0A-A718-87BC9BA03726.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B3000A78-3BE5-5E0A-A718-87BC9BA03726.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,9 +12,9 @@ Network Privacy APIThe Network Privacy API is an interface through which the LBS subsystem can receive and respond to privacy requests when it is built to include the Privacy Protocol Module.
      Introduction

      The Network Privacy API supports device creators who wish to use the Symbian LBS subsystem to handle only privacy requests but not to perform position fix calculations.

      The Network Privacy API is intended to be used to process privacy requests received from the network. To process multiple privacy requests from local applications, it is recommended that the Privacy Request API be used.

      Description

      The Network Privacy API is implemented on the client-side by the Network Privacy Client DLL. This DLL is the interface to the Privacy Protocol Module.

      The Network Privacy API does not guarantee performance in low memory conditions for which a privacy request may fail. For this reason the Privacy Protocol Module must not be used when there is a need to support emergency services privacy requests from the network (MT-LR or NI-LR). A Protocol Module that handles location requests must be used if emergency services requests must be supported.

      Figure 1 shows the Network Privacy Client DLL in the context of the LBS subsystem. The most important points to note are:

      • The Network Privacy Client DLL exposes the Network Privacy API which is described in this document. The DLL is used to send privacy requests into the Symbian LBS subsystem from a component running in the licensee's domestic OS (outside of the Symbian platform).

      • The Network Privacy Client DLL connects to a server implementation in the Privacy Protocol Module.

      • A device creator does not create their own implementation of the Network Privacy Client DLL or the Privacy Protocol Module. A device creator chooses to build a ROM containing the Privacy Protocol Module and the Network Privacy Client DLL. See LBS Integration and Configuration Guide for more information about building and configuring the LBS subsystem.

      • To use the Network Privacy API a device creator must implement some kind of client process in their domestic operating system which uses the Network Privacy API.

        The Network Privacy API client process must implement the API observer interface to receive privacy responses. The client process, and not Symbian LBS is responsible for sending these privacy responses to the network.

      Figure 1. The Network Privacy API and the Privacy Protocol Module. -
      </section> <example><title>Network Privacy Client DLL responsibilities

      The Network Privacy Client DLL communicates with the Privacy Protocol Module via standard Symbian client-server IPC calls. The DLL performs two distinct functions:

      1. It starts up the LBS subsystem if it is not already running when the first privacy request is received via the Network Privacy API. Network Privacy API reference contains sequences describe startup and shutdown behaviour.

      2. It packages the Network Privacy API, which forwards privacy requests from a licensee client process into the Symbian LBS subsystem. Privacy responses returned from a Privacy Controller or Privacy Notifiers are returned to the client.

      Network Privacy API description

      Figure 2 shows the classes of the Network Privacy API.

      +
      </section> <example><title>Network Privacy Client DLL responsibilities

      The Network Privacy Client DLL communicates with the Privacy Protocol Module via standard Symbian client-server IPC calls. The DLL performs two distinct functions:

      1. It starts up the LBS subsystem if it is not already running when the first privacy request is received via the Network Privacy API. Network Privacy API reference contains sequences describe startup and shutdown behaviour.

      2. It packages the Network Privacy API, which forwards privacy requests from a licensee client process into the Symbian LBS subsystem. Privacy responses returned from a Privacy Controller or Privacy Notifiers are returned to the client.

      Network Privacy API description

      Figure 2 shows the classes of the Network Privacy API.

      Figure 2. Network Privacy API classes -

      The following table lists the classes and types that define the Network Privacy API. Further details can be found by following the links to other sections of this document and to Symbian Developer Library reference documentation.

      The Network Privacy API has publishedPartner interface access.

      Class name Description Header file

      CPosNetworkPrivacy

      Main interface class of the Network Privacy API

      EPos_CPosNetworkPrivacy.h

      MPosVerificationObserver

      Observer class to be implemented by an API client

      EPos_MPosVerificationObserver.h

      CPosNetworkPrivacyRequestInfo

      Abstract base class for privacy request information

      EPos_CPosNetworkPrivacyRequestInfo.h

      CPosGSMPrivacyRequestInfo

      Request info class for requests from a GSM network

      EPos_CPosGSMPrivacyRequestInfo.h

      CPosSUPLPrivacyRequestInfo

      Request info class for requests received via SUPL

      EPos_CPosSUPLPrivacyRequestInfo.h

      TPosNetworkPrivacyPanic

      Panic codes used by the API

      EPos_NetworkPrivacyPanic.h

      Libraries

      The Network Privacy API is packaged in eposnwprv.dll. Clients link to eposnwprv.lib.

      Capabilities

      To use the Network Privacy API a client requires the following capabilities: Location, NetworkServices and ReadDeviceData.

      To maintain backwards compatibility with existing clients of the Network Privacy API the alternative capability CommDD is also supported. However, new clients should be created to have the three capabilities listed above.

      LBS configuration

      The Network Privacy API is only available when the Privacy Protocol Module is included in an LBS subsystem. See LBS Integration and Configuration Guide for details about how to build a ROM image that supports the Network Privacy API.

      Multiple simultaneous privacy requests

      The LBS subsystem can be configured to handle multiple simultaneous privacy requests from the Network Privacy API. The LBS Administration setting KLbsSettingMaximumExternalLocateRequests defines the maximum number of privacy requests that can be handled simultaneously by the LBS subsystem.

      If an additional privacy request is sent into the LBS subsystem such that the total number of requests exceeds KLbsSettingMaximumExternalLocateRequests, the additional request is always rejected i.e. the LBS subsystem calls MPosVerificationObserver::HandleVerifyComplete() with aCompletionCode = KErrAccessDenied.

      Maximum number of API sessions

      The LBS Administration setting KLbsSettingPrivacyMaxNetworkSessions defines the maximum number of concurrent sessions allowed with the Network Privacy API.

      Session timeouts

      The LBS Administration setting KLbsSettingPrivacyConnectionTimeout controls the connection timeout for sessions using the Network Privacy API. This value can be overriden by an API client by calling CPosNetworkPrivacy::SetConnectionTimeout().

      LBS shutdown delay

      The LBS subsystem is transient when it is built to include a Privacy Protocol Module and the Network Privacy API. The LBS Administration setting KLbsSettingPrivacyShutdownDelay sets the delay between closure of the last client connection and LBS subsystem shutdown.

      Network +

      The following table lists the classes and types that define the Network Privacy API. Further details can be found by following the links to other sections of this document and to Symbian Developer Library reference documentation.

      The Network Privacy API has publishedPartner interface access.

      Class name Description Header file

      CPosNetworkPrivacy

      Main interface class of the Network Privacy API

      EPos_CPosNetworkPrivacy.h

      MPosVerificationObserver

      Observer class to be implemented by an API client

      EPos_MPosVerificationObserver.h

      CPosNetworkPrivacyRequestInfo

      Abstract base class for privacy request information

      EPos_CPosNetworkPrivacyRequestInfo.h

      CPosGSMPrivacyRequestInfo

      Request info class for requests from a GSM network

      EPos_CPosGSMPrivacyRequestInfo.h

      CPosSUPLPrivacyRequestInfo

      Request info class for requests received via SUPL

      EPos_CPosSUPLPrivacyRequestInfo.h

      TPosNetworkPrivacyPanic

      Panic codes used by the API

      EPos_NetworkPrivacyPanic.h

      Libraries

      The Network Privacy API is packaged in eposnwprv.dll. Clients link to eposnwprv.lib.

      Capabilities

      To use the Network Privacy API a client requires the following capabilities: Location, NetworkServices and ReadDeviceData.

      To maintain backwards compatibility with existing clients of the Network Privacy API the alternative capability CommDD is also supported. However, new clients should be created to have the three capabilities listed above.

      LBS configuration

      The Network Privacy API is only available when the Privacy Protocol Module is included in an LBS subsystem. See LBS Integration and Configuration Guide for details about how to build a ROM image that supports the Network Privacy API.

      Multiple simultaneous privacy requests

      The LBS subsystem can be configured to handle multiple simultaneous privacy requests from the Network Privacy API. The LBS Administration setting KLbsSettingMaximumExternalLocateRequests defines the maximum number of privacy requests that can be handled simultaneously by the LBS subsystem.

      If an additional privacy request is sent into the LBS subsystem such that the total number of requests exceeds KLbsSettingMaximumExternalLocateRequests, the additional request is always rejected i.e. the LBS subsystem calls MPosVerificationObserver::HandleVerifyComplete() with aCompletionCode = KErrAccessDenied.

      Maximum number of API sessions

      The LBS Administration setting KLbsSettingPrivacyMaxNetworkSessions defines the maximum number of concurrent sessions allowed with the Network Privacy API.

      Session timeouts

      The LBS Administration setting KLbsSettingPrivacyConnectionTimeout controls the connection timeout for sessions using the Network Privacy API. This value can be overriden by an API client by calling CPosNetworkPrivacy::SetConnectionTimeout().

      LBS shutdown delay

      The LBS subsystem is transient when it is built to include a Privacy Protocol Module and the Network Privacy API. The LBS Administration setting KLbsSettingPrivacyShutdownDelay sets the delay between closure of the last client connection and LBS subsystem shutdown.

      Network Privacy API Reference Network Privacy API Tutorial Privacy Protocol Module Overview Privacy diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B30D6027-EB0F-578F-9B2F-AFC2DFD27E39_d0e393768_href.png Binary file Symbian3/PDK/Source/GUID-B30D6027-EB0F-578F-9B2F-AFC2DFD27E39_d0e393768_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B30D6027-EB0F-578F-9B2F-AFC2DFD27E39_d0e399621_href.png Binary file Symbian3/PDK/Source/GUID-B30D6027-EB0F-578F-9B2F-AFC2DFD27E39_d0e399621_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B3166752-9B99-5669-8AB4-078164144AA1_d0e218927_href.png Binary file Symbian3/PDK/Source/GUID-B3166752-9B99-5669-8AB4-078164144AA1_d0e218927_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B3166752-9B99-5669-8AB4-078164144AA1_d0e224947_href.png Binary file Symbian3/PDK/Source/GUID-B3166752-9B99-5669-8AB4-078164144AA1_d0e224947_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B32EA1DE-5E64-5A70-8333-B9F462F25C08_d0e231618_href.png Binary file Symbian3/PDK/Source/GUID-B32EA1DE-5E64-5A70-8333-B9F462F25C08_d0e231618_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B32EA1DE-5E64-5A70-8333-B9F462F25C08_d0e237613_href.png Binary file Symbian3/PDK/Source/GUID-B32EA1DE-5E64-5A70-8333-B9F462F25C08_d0e237613_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B32ED85A-913E-5C06-AEEB-1E2D6EF4CECF.dita --- a/Symbian3/PDK/Source/GUID-B32ED85A-913E-5C06-AEEB-1E2D6EF4CECF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B32ED85A-913E-5C06-AEEB-1E2D6EF4CECF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Drawing a Rounded Rectangle

      This topic provides an example that demonstrates how to draw a rounded rectangle using DrawRoundRect(). The dimensions of each corner (corner size and corner height) are given by a TSize argument.

      Rounded rectangle construction - ... + ... // draw a rectangle with rounded corners, centered in the rectangle TSize cornerSize(20,20); // set up the size of a rounded cornerSize gc.DrawRoundRect(box,cornerSize); diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B34485AB-FA14-5453-A2B2-EB85055E62A4_d0e244605_href.png Binary file Symbian3/PDK/Source/GUID-B34485AB-FA14-5453-A2B2-EB85055E62A4_d0e244605_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B34485AB-FA14-5453-A2B2-EB85055E62A4_d0e250616_href.png Binary file Symbian3/PDK/Source/GUID-B34485AB-FA14-5453-A2B2-EB85055E62A4_d0e250616_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B35A70D2-1BC8-51DE-95BF-F315DB394582.dita --- a/Symbian3/PDK/Source/GUID-B35A70D2-1BC8-51DE-95BF-F315DB394582.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B35A70D2-1BC8-51DE-95BF-F315DB394582.dita Fri Jul 16 17:23:46 2010 +0100 @@ -52,7 +52,7 @@ it is the writable data stored in RAM, for example user stacks and heaps. In this case, the data is moved to a backing store.

    - +

    The diagram above shows the basic operations involved in demand paging:

    1. The processor wants diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B3760707-2810-4CD9-82C7-6A40DE638D36.dita --- a/Symbian3/PDK/Source/GUID-B3760707-2810-4CD9-82C7-6A40DE638D36.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B3760707-2810-4CD9-82C7-6A40DE638D36.dita Fri Jul 16 17:23:46 2010 +0100 @@ -18,6 +18,6 @@ opened.

      Submenu indicators: radio buttons - + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B39483E2-15FC-5214-8B45-58BBB68A7841_d0e536764_href.png Binary file Symbian3/PDK/Source/GUID-B39483E2-15FC-5214-8B45-58BBB68A7841_d0e536764_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B39483E2-15FC-5214-8B45-58BBB68A7841_d0e544224_href.png Binary file Symbian3/PDK/Source/GUID-B39483E2-15FC-5214-8B45-58BBB68A7841_d0e544224_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B3F6FC45-3BF0-5F92-8325-44C705BA47AE.dita --- a/Symbian3/PDK/Source/GUID-B3F6FC45-3BF0-5F92-8325-44C705BA47AE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B3F6FC45-3BF0-5F92-8325-44C705BA47AE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -115,7 +115,7 @@
      BTF_RamBanks

      What the function should do

      This function should return a pointer to a list of RAM banks that are present.

      The list should be a sequence of two-word entries. Each entry has the following format:

      - +

      The list is terminated by an entry that has a zero MAXSIZE.

      Of the 32 flag bits, only one is currently defined; all undefined flags should be zero. Flag 0, which is bit 0 of the first word is the RAM_VERBATIM flag @@ -182,7 +182,7 @@ bootstrap is found to be running in RAM; in this case it is assumed that all XIP code is in RAM.

      The list should be a sequence of four-word entries. Each entry has the following format:

      - +

      The list is terminated by a zero value four-word entry.

      Only the first, second and fourth words of each entry are actually used by the rest of the bootstrap. The third is there mainly to support autodetection diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B409C23A-F89E-5D30-B172-1F39C3F6A57F_d0e76888_href.png Binary file Symbian3/PDK/Source/GUID-B409C23A-F89E-5D30-B172-1F39C3F6A57F_d0e76888_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B409C23A-F89E-5D30-B172-1F39C3F6A57F_d0e81101_href.png Binary file Symbian3/PDK/Source/GUID-B409C23A-F89E-5D30-B172-1F39C3F6A57F_d0e81101_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B4241F5D-5F06-53C4-9F1E-BB7B5DD780B0_d0e55045_href.png Binary file Symbian3/PDK/Source/GUID-B4241F5D-5F06-53C4-9F1E-BB7B5DD780B0_d0e55045_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B4241F5D-5F06-53C4-9F1E-BB7B5DD780B0_d0e59279_href.png Binary file Symbian3/PDK/Source/GUID-B4241F5D-5F06-53C4-9F1E-BB7B5DD780B0_d0e59279_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B452DBD8-F9EB-4DAB-9D0C-3B11D7C360F4.dita --- a/Symbian3/PDK/Source/GUID-B452DBD8-F9EB-4DAB-9D0C-3B11D7C360F4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B452DBD8-F9EB-4DAB-9D0C-3B11D7C360F4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ indicator is placed above the text setting field top right corner.

      Text setting pop-up - + Default touch events when editing text in a text setting pop-up diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B459E37A-BECE-5087-9827-C93310890674_d0e482708_href.png Binary file Symbian3/PDK/Source/GUID-B459E37A-BECE-5087-9827-C93310890674_d0e482708_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B459E37A-BECE-5087-9827-C93310890674_d0e488537_href.png Binary file Symbian3/PDK/Source/GUID-B459E37A-BECE-5087-9827-C93310890674_d0e488537_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B4653180-46EB-58A8-B2A8-0DD2C3D30FE7_d0e277089_href.png Binary file Symbian3/PDK/Source/GUID-B4653180-46EB-58A8-B2A8-0DD2C3D30FE7_d0e277089_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B4653180-46EB-58A8-B2A8-0DD2C3D30FE7_d0e283089_href.png Binary file Symbian3/PDK/Source/GUID-B4653180-46EB-58A8-B2A8-0DD2C3D30FE7_d0e283089_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B46C54AD-268C-58A0-B244-134C4D8BDFE1_d0e25164_href.png Binary file Symbian3/PDK/Source/GUID-B46C54AD-268C-58A0-B244-134C4D8BDFE1_d0e25164_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B46C54AD-268C-58A0-B244-134C4D8BDFE1_d0e27131_href.png Binary file Symbian3/PDK/Source/GUID-B46C54AD-268C-58A0-B244-134C4D8BDFE1_d0e27131_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B474D319-1E03-57EC-A8F1-2E8D32CD8092_d0e230071_href.png Binary file Symbian3/PDK/Source/GUID-B474D319-1E03-57EC-A8F1-2E8D32CD8092_d0e230071_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B474D319-1E03-57EC-A8F1-2E8D32CD8092_d0e236066_href.png Binary file Symbian3/PDK/Source/GUID-B474D319-1E03-57EC-A8F1-2E8D32CD8092_d0e236066_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B479BE8B-5CAD-57C2-9E21-DEB9E64E25EE_d0e489187_href.png Binary file Symbian3/PDK/Source/GUID-B479BE8B-5CAD-57C2-9E21-DEB9E64E25EE_d0e489187_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B479BE8B-5CAD-57C2-9E21-DEB9E64E25EE_d0e495008_href.png Binary file Symbian3/PDK/Source/GUID-B479BE8B-5CAD-57C2-9E21-DEB9E64E25EE_d0e495008_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B4834A49-587E-41AD-B0D3-0622B173B2AD_d0e103648_href.png Binary file Symbian3/PDK/Source/GUID-B4834A49-587E-41AD-B0D3-0622B173B2AD_d0e103648_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B4834A49-587E-41AD-B0D3-0622B173B2AD_d0e107668_href.png Binary file Symbian3/PDK/Source/GUID-B4834A49-587E-41AD-B0D3-0622B173B2AD_d0e107668_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B48F7684-76E6-51C1-B85A-08A1F1EBD807_d0e110825_href.png Binary file Symbian3/PDK/Source/GUID-B48F7684-76E6-51C1-B85A-08A1F1EBD807_d0e110825_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B48F7684-76E6-51C1-B85A-08A1F1EBD807_d0e113248_href.png Binary file Symbian3/PDK/Source/GUID-B48F7684-76E6-51C1-B85A-08A1F1EBD807_d0e113248_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B495BE4E-6567-5141-A857-31EF12B19362_d0e464089_href.png Binary file Symbian3/PDK/Source/GUID-B495BE4E-6567-5141-A857-31EF12B19362_d0e464089_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B495BE4E-6567-5141-A857-31EF12B19362_d0e469934_href.png Binary file Symbian3/PDK/Source/GUID-B495BE4E-6567-5141-A857-31EF12B19362_d0e469934_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B4E5F308-DC7A-5547-8948-9DDCBC104918_d0e524993_href.png Binary file Symbian3/PDK/Source/GUID-B4E5F308-DC7A-5547-8948-9DDCBC104918_d0e524993_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B4E5F308-DC7A-5547-8948-9DDCBC104918_d0e532453_href.png Binary file Symbian3/PDK/Source/GUID-B4E5F308-DC7A-5547-8948-9DDCBC104918_d0e532453_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72.dita --- a/Symbian3/PDK/Source/GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B4F15CA3-CAD4-5A87-9610-A656CA337B72.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,9 +11,9 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Comms Buffers (MBuf) ans Comms ChainsThis topic describes Comms buffers (MBuf) and Comms chains.
      APIs

      The following diagram is a partial representation of the class hierarchy for RMBuf.

      Comms buffer -

      For more information about these classes, see the following table and the reference documentation:

      Class Description

      RMBuf

      Representation of a shared buffer designed to carry packets within the Comms Data Plane.

      It includes Comms metadata (such as the offset, the size and the type of the data within the buffer) and links to the next buffer in the buffer chain.

      Part of the API is located in the parent class : RCommsBuf.

      RMBufChain

      Chain of RMBuf objects.

      Part of the API is located in the parent class : RCommsBufChain.

      Buffer layout

      The following diagram shows the contents of a Comms buffer and the location of the metadata. The metadata is at the end so that the device drivers can ignore the metadata and write their payload at the beginning of the buffer.

      +

      For more information about these classes, see the following table and the reference documentation:

      Class Description

      RMBuf

      Representation of a shared buffer designed to carry packets within the Comms Data Plane.

      It includes Comms metadata (such as the offset, the size and the type of the data within the buffer) and links to the next buffer in the buffer chain.

      Part of the API is located in the parent class : RCommsBuf.

      RMBufChain

      Chain of RMBuf objects.

      Part of the API is located in the parent class : RCommsBufChain.

      Buffer layout

      The following diagram shows the contents of a Comms buffer and the location of the metadata. The metadata is at the end so that the device drivers can ignore the metadata and write their payload at the beginning of the buffer.

      Comms buffer contents -

      The metadata contains information about the payload: its length and offset, the type of data it contains, and references to the pond and the pool where the buffer's memory is located. Whenever you perform an operation on an MBuf, the chain or the pond update the metadata.

      The offset at the beginning of the buffer is an important optimisation when sending data downwards through the Comms Data Plane. Leaving enough space for the protocol headers enables Comms Framework components to prepend their data to the payload without requesting a new MBuf and its addition to the front of the buffer chain. Therefore, you should always define a pool according to the biggest packet that the bottom of the stack may receive : for example, 1518 bytes for Ethernet packets.

      The following diagram is an example illustrating how the Comms Data Plane removes the headers from the payload (on the way up the stack) or prepend header to the payload (on the way down):

      +

      The metadata contains information about the payload: its length and offset, the type of data it contains, and references to the pond and the pool where the buffer's memory is located. Whenever you perform an operation on an MBuf, the chain or the pond update the metadata.

      The offset at the beginning of the buffer is an important optimisation when sending data downwards through the Comms Data Plane. Leaving enough space for the protocol headers enables Comms Framework components to prepend their data to the payload without requesting a new MBuf and its addition to the front of the buffer chain. Therefore, you should always define a pool according to the biggest packet that the bottom of the stack may receive : for example, 1518 bytes for Ethernet packets.

      The following diagram is an example illustrating how the Comms Data Plane removes the headers from the payload (on the way up the stack) or prepend header to the payload (on the way down):

      Header manipulation example -

      For simplified code corresponding to this diagram, see Data Access Example.

      Overview Shared Buffers Advanced Pond +

      For simplified code corresponding to this diagram, see Data Access Example.

    Overview Shared Buffers Advanced Pond Guide \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B51A9A1F-8E80-4DF6-904A-7BD1A8976BBB.dita --- a/Symbian3/PDK/Source/GUID-B51A9A1F-8E80-4DF6-904A-7BD1A8976BBB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B51A9A1F-8E80-4DF6-904A-7BD1A8976BBB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -31,8 +31,9 @@ programs

    Symbian C++ Quick Start

    Going Beyond Hello: A Tutorial for Symbian C++ Applications

    The Application Layer provides application user interfaces -and application engines.

    Messaging Applications

    PIM

    The Middleware Layer provides application services, -including UI frameworks and high level communications.

    Application Installation

    Browsing and downloading

    Classic UI

    Generic Application +and application engines.

    Contacts

    Messaging +Applications

    Organizer

    The Middleware Layer provides application services, including +UI frameworks and high level communications.

    Application Installation

    Browsing and downloading

    Classic UI

    Generic Application Support

    Messaging Middleware

    Multimedia Protocols

    @@ -71,8 +72,7 @@

    These documents help you write better and safer programs.

    Performance considerations

    Security

    SMP

    These links take you to full lists of packages and tools described in the library.

    Symbian Guide

    API -Specifications

    Reference

    Tools and -Utilities

    +Specifications

    Reference

    Tools and Utilities

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B51EA0DA-5BCE-4A8C-A7A7-1FE096F7FF27.dita --- a/Symbian3/PDK/Source/GUID-B51EA0DA-5BCE-4A8C-A7A7-1FE096F7FF27.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B51EA0DA-5BCE-4A8C-A7A7-1FE096F7FF27.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,73 +1,65 @@ - - - - - -Compilation -and Build Process on Symbian PlatformThis article discusses a few basic things about the compilation -and build process in Symbian platform. -

    The bldmake tool processes the component description file bld.inf in -the current directory and generates the batch file abld.bat and -several build batch makefiles (.make) -. The makefiles are used by abld to carry -out the various stages of building the component.

    -

    The basic usage of abld command is:

    -abld command[options][platform][build][program] -

    This enables the programmer to build for different platforms with varied -specifications. The parameter command specifies which action to perform to -the abld tool. The actions can be build, clean, cleanexport and -so on. The parameter options includes –c, -w and -so on, these enable the user to check for the presence of releasables. The -parameter platform specifies the platform for which the project will be built. -The platform can be WINSCW, GCCE, GCCXML, EDG, ARMV5, VS6, CW_IDE or VS2003. The parameter -build specifies whether to build for debug (udeb) or release -(urel) version. Finally the parameter program specifies which -project definition file or mmp file to build. If left unspecified, all the -MMP files mentioned in the bld.inf file are built. For -more information, see Build -tools reference.

    -

    The example below demonstrates the use of bldmake:

    -bldmake bldfiles -

    The abld build command compiles and links the target.

    -abld build -

    The abld freeze command freezes the project export. -This is needed only for DLLs.

    -abld freeze -
    Creating -PKG file and Installation file for the target

    A package (PKG) file -is a text file containing items or statements that define the information -required by the installation (SIS) file creation utility makesis. -The PKG file format can be broken down into the following items:

      -
    • Languages

    • -
    • Language code table

    • -
    • Package-header

    • -
    • Vendor

    • -
    • Logo

    • -
    • Package-signature

    • -
    • Package-body

    • -
    • Dependency

    • -
    • Properties

    • -

    For more information on PKG files, see PKG -File Format.

    The makesis utility creates software -installation packages (SIS files) based on the information and the file locations -on the source PC or target phone, defined in a package (PKG) file.

    For -example, consider the code snippet given below:

    makesis somefile.pkg

    The -code goes through the PKG file and by default creates somefile.sis in the -directory where the PKG file is present.

    For more information on the makesis utility, -see MakeSIS.

    After -creating the SIS file it, has to be signed using signsis to -install it on the phone. signsis is a Symbian supplied -tool to digitally sign software installation (SIS) files using a specified -certificate and private key. For example consider the code snippet given below:

    signsis somefile.sis somefile.sisx rd.cer rd-key.pem

    The parameter somefile.sis gives, the path to the -SIS file which is to be signed. The second parameter, somefile.sisx specifies -the name of the resultant signed SIS file. The third parameter, rd.cer specifies -the path to the certificate file and the last parameter, rd-key.pem specifies -the path to the file containing the private key.

    For more information -on signsis, see SignSIS.

    + + + + + +Compilation and Build Process on Symbian PlatformThis article discusses a few basic things about the compilation +and build process in Symbian platform. +

    The bldmake tool processes the component description +file bld.inf in the current directory and generates +the batch file abld.bat and several build batch makefiles (.make) . The makefiles are used by abld to carry out the various stages +of building the component.

    +

    The basic usage of abld command is:

    +abld command[options][platform][build][program] +

    This enables the programmer to build for different platforms with +varied specifications. The parameter command specifies which action +to perform to the abld tool. The actions can be build, +clean, cleanexport and so on. The parameter options +includes –c, -w and so on, these +enable the user to check for the presence of releasables. The parameter +platform specifies the platform for which the project will be built. +The platform can be WINSCW, GCCE, GCCXML, EDG, ARMV5, VS6, CW_IDE or VS2003. The parameter build specifies whether to build for debug (udeb) or release (urel) version. Finally +the parameter program specifies which project definition file or mmp +file to build. If left unspecified, all the MMP files mentioned in +the bld.inf file are built. For more information, +see Symbian^3 Tools Guide > Building.

    +

    The example below demonstrates the use of bldmake:

    +bldmake bldfiles +

    The abld build command compiles and links the +target.

    +abld build +

    The abld freeze command freezes the project +export. This is needed only for DLLs.

    +abld freeze +
    Creating PKG file and Installation file for the target

    A package (PKG) file is a text file containing items or statements +that define the information required by the installation (SIS) file +creation utility makesis. The PKG file format can +be broken down into the following items:

      +
    • Languages

    • +
    • Language code table

    • +
    • Package-header

    • +
    • Vendor

    • +
    • Logo

    • +
    • Package-signature

    • +
    • Package-body

    • +
    • Dependency

    • +
    • Properties

    • +

    For more information on PKG files, see PKG File Format.

    The makesis utility creates software installation +packages (SIS files) based on the information and the file locations +on the source PC or target phone, defined in a package (PKG) file.

    For example, consider the code snippet given below:

    makesis somefile.pkg

    The code goes through the PKG +file and by default creates somefile.sis in the directory where the +PKG file is present.

    For more information on the makesis utility, see MakeSIS.

    After creating the SIS file it, has to be signed +using signsis to install it on the phone. signsis is a Symbian supplied tool to digitally sign software +installation (SIS) files using a specified certificate and private +key. For example consider the code snippet given below:

    signsis somefile.sis somefile.sisx rd.cer rd-key.pem

    The parameter somefile.sis gives, the path to +the SIS file which is to be signed. The second parameter, somefile.sisx specifies the name of the resultant signed +SIS file. The third parameter, rd.cer specifies +the path to the certificate file and the last parameter, rd-key.pem specifies the path to the file containing the +private key.

    For more information on signsis, see SignSIS.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B526BA3A-14E4-53B4-9382-437475A1C8A4.dita --- a/Symbian3/PDK/Source/GUID-B526BA3A-14E4-53B4-9382-437475A1C8A4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B526BA3A-14E4-53B4-9382-437475A1C8A4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,24 +1,24 @@ - - - - - -Patchable Constants -

    From version 9.3 of Symbian OS, DLLs can export certain constants. These -are referred to as patchable constants, and you can change their values when -the DLLs from which they are exported are incorporated into a ROM image.

    -

    This gives you the ability to create a variety of ROM images with constants -of different values without the need to change any source code nor to rebuild -the DLLs.

    -

    You change the value of a constant when you build your ROM image by adding -the patchdata keyword into your .oby file.

    -

    See : Build tools -reference and How -to build ROMs with variants.

    + + + + + +Patchable +Constants +

    From version 9.3 of Symbian OS, DLLs can export certain constants. +These are referred to as patchable constants, and you can change their +values when the DLLs from which they are exported are incorporated +into a ROM image.

    +

    This gives you the ability to create a variety of ROM images with +constants of different values without the need to change any source +code nor to rebuild the DLLs.

    +

    You change the value of a constant when you build your ROM image +by adding the patchdata keyword into your .oby file.

    +

    See : Symbian^3 Tools Guide > Building.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B541BD01-29BE-4CB7-9420-ABEE0BDC9BA4.dita --- a/Symbian3/PDK/Source/GUID-B541BD01-29BE-4CB7-9420-ABEE0BDC9BA4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B541BD01-29BE-4CB7-9420-ABEE0BDC9BA4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,8 +14,8 @@ resource file must be the same as that of the executable with .rss extension. All the registration resource structure types are defined in RegistryInfo.rh. This file has to be included in the registration resource file. - -Define a single REGISTRY_INFO resource. + +Define a single REGISTRY_INFO resource. Set the dll_uid diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B5576E47-CBB6-5E50-91BD-1CA1425EACE8.dita --- a/Symbian3/PDK/Source/GUID-B5576E47-CBB6-5E50-91BD-1CA1425EACE8.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ - - - - - -Microsoft Visual Studio support

    The Microsoft Visual Studio IDE can be used to compile and debug applications built for Symbian OS v9.2 and above. The two versions of Visual Studio supported are:

    • Visual Studio 6

    • Visual Studio .NET 2003

    In summary, the steps for using Visual Studio are:

    • Make sure that your program has a bld.inf file and a mmp project file.

    • Use the Symbian platform bldmake and abld command to create a Visual Studio project file from the mmp file.

    • Open the created Visual Studio project file in the IDE, and build, run, and debug the program from there.

    The underlying compiler used for the Visual Studio support is the Nokia x86 standalone compiler, version 3.2.3. This compiler is provided on Symbian platform kits in the epoc32 tree under epoc32/tools/nokia_compiler/. Note that the C++ compiler supplied with Microsoft Visual Studio itself is not used.

    The Visual Studio support uses the operating system binaries that are created for the winscw platform. Support is provided by the introduction of two build targets, called vs6 and vs2003.

    Microsoft Visual C++ 6

    To use Visual C++ 6:

    1. Start a command line prompt

    2. Run the Visual Studio environment configuration batch file, vsvars32.bat, which is part of your Visual Studio installation. This ensures that the necessary Visual Studio environment variables are set up.

    3. Change directory to the directory that contains your program's bld.inf file, and use the following commands:

      bldmake bldfiles

      abld makefile vs6 [project-name]

      The vs6 argument here specifies to the tools that Visual C++ 6 project files should be produced. The project name is optional. If it is not mentioned, Visual Studio project files are created for all projects specified in the bld.inf file.

    These commands creates a Visual C++ workspace (.dsw) file generated under the kit's epoc32\build\<SOURCE_PATH>\<PROJECT_NAME>\WINSCW directory. For example, if the kit is installed in \Symbian\9.2\, and the project is helloworld, then the .dsw file is created in the directory \Symbian\9.2\epoc32\build\src\helloworld\helloworld\winscw.

    The workspace can then be opened in the IDE, and the project built and debugged from there.

    To both build the project and create the workspace, use the commands:

    bldmake bldfiles

    abld build vs6 [udeb | urel] [project-name]

    The vs6 platform can optionally be added to the prj_platforms section in the bld.inf file. If this is done, abld commands will use the vs6 target without it being explicity specified.

    Microsoft Visual Studio .NET2003

    To use Visual Studio .NET2003:

    1. Start a command line prompt

    2. Run the Visual Studio environment configuration batch file, vsvars32.bat, which is part of your Visual Studio installation. This ensures that the necessary Visual Studio environment variables are set up.

    3. Change directory to the directory that contains your program's bld.inf file, and use the following commands:

      bldmake bldfiles

      abld makefile vs2003 [project-name]

      The vs2003 argument here specifies to the tools that Visual Studio .NET2003 files should be produced. The project name is optional. If it is not mentioned, Visual Studio files are created for all projects specified in the bld.inf file.

    These commands create a Visual Studio solution file (.sln) file generated under the kit's epoc32\build\<SOURCE_PATH>\<PROJECT_NAME>\WINSCW directory. For example, if the kit is installed in \Symbian\9.2\, and the project is helloworld, then the .sln file is created in the directory \Symbian\9.2\epoc32\build\src\helloworld\helloworld\winscw.

    The solution file can then be opened in the IDE, and the project built and debugged from there.

    To both build the project and create the workspace, use the commands:

    bldmake bldfiles

    abld build vs2003 [udeb | urel] [project-name]

    The vs2003 platform can optionally be added to the prj_platforms section in the bld.inf file. If this is done, abld commands will use the vs2003 target without it being explictly specified.

    Limitations
    1. If you add a source file into the project directly from Visual Studio, the source file is not included in the build process. You must add the source file to the mmp project file, and then repeat the abld makefile step to recreate the workspace.

    2. There is no Edit-And-Continue support on the makefile project when debugging. This means that if you edit a file while debugging, you will have to exit the debugging session, rebuild the project, and then restart debugging session.

    3. If the project produces an EXE, and that EXE already exists, then when the debugger is started, Visual Studio doesn't call Make to check if all targets are up-to-date, but directly starts the program. So, to ensure that all targets are up-to-date during a debug session, a build should be done first before using the debugger.

    4. In .NET2003, a problem sometimes seen is that the Build - Solution command doesn't build the projects included in that solution, while the Build <project name> command builds correctly. This occurs when the Visual Studio program uuidgen.exe is not available in the path. Executing vsvars32.bat usually sets up the appropriate path.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B563AC07-A54B-50E2-A3B2-821E8BC2C863.dita --- a/Symbian3/PDK/Source/GUID-B563AC07-A54B-50E2-A3B2-821E8BC2C863.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B563AC07-A54B-50E2-A3B2-821E8BC2C863.dita Fri Jul 16 17:23:46 2010 +0100 @@ -13,7 +13,7 @@ CDirScanThis topic describes about setting up the scan and parsing path.
    Setting up the scan using SetScanDataL() - +

    Taking the above directory structure, if SetScanData() is called as follows:

    _LIT(KDirText,"C:\\TopDir\\"); ... diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B574CC84-342C-4613-A628-B32B7876D595_d0e1757_href.png Binary file Symbian3/PDK/Source/GUID-B574CC84-342C-4613-A628-B32B7876D595_d0e1757_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B574CC84-342C-4613-A628-B32B7876D595_d0e1762_href.png Binary file Symbian3/PDK/Source/GUID-B574CC84-342C-4613-A628-B32B7876D595_d0e1762_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B58D3727-6E05-51C8-8EC2-52768A136BD5.dita --- a/Symbian3/PDK/Source/GUID-B58D3727-6E05-51C8-8EC2-52768A136BD5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B58D3727-6E05-51C8-8EC2-52768A136BD5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -19,7 +19,7 @@
    Window server event types

    The Window Server generates events of three different classes, as shown in the following diagram.

    Window server event types - + diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B58D93D7-597C-5200-82ED-F434B297CAC9.dita --- a/Symbian3/PDK/Source/GUID-B58D93D7-597C-5200-82ED-F434B297CAC9.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ - - - - - -strictdepend

    strictdepend

    If your project’s dependencies may differ with the variant, use the strictdepend statement.

    Without this statement, dependencies will be evaluated for one variant, and then used for all.

    With strictdepend, dependencies are evaluated explicitly—a sometimes lengthy process—for each variant.

    Use strictdepend if, for instance, you conditionally include a header file, e.g.

    #if defined(_DEBUG) -include <debug.h> -#endif
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B5CC77D2-5871-51D8-B359-77EFC081B423.dita --- a/Symbian3/PDK/Source/GUID-B5CC77D2-5871-51D8-B359-77EFC081B423.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B5CC77D2-5871-51D8-B359-77EFC081B423.dita Fri Jul 16 17:23:46 2010 +0100 @@ -25,7 +25,7 @@ Object Attributes.

    The content and meta-data may also be arranged in a hierachy with container objects grouping content objects together. A typical archive can have a complex structure as the example shown below:

    - +

    In this scenario, the file itself can be considered as the top level container. All other content, containers and meta-data are nested inside. In an archive file, applications can quickly search for the content objects diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6.dita --- a/Symbian3/PDK/Source/GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B5DE1C86-2B16-4B22-887F-7079E54A8ED6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -13,7 +13,7 @@ Symbian UI application architecture

    The following image illustrates the components of the traditional architecture approach.

    -Traditional Symbian UI application architecture classes +Traditional Symbian UI application architecture classes

    Symbian platform applications that follow the traditional Symbian UI application architecture require:

      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B6088C0A-20AE-5108-A28C-9CA884205493.dita --- a/Symbian3/PDK/Source/GUID-B6088C0A-20AE-5108-A28C-9CA884205493.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ - - - - - -Resource initialisation punctuation

      A semicolon must follow all member initialisations. For longer, more complicated resources deciding where semicolons must be placed may become confusing. As shown in the following example, array lists are separated by commas and terminated without a semi-colon. Similarly, resources are not terminated by a semi-colon.

      RESOURCE DIALOG example_dialog - { - title="Example"; - topsection=DLAY_SECTION - { - control_list= - { - ACLIST - { - butlist_flags=BUTLIST_HORIZONTAL; - rid=R_HCIL_BUTTONS_OK_CANCEL; - }, // array member so comma needed - ACLIST - { - butlist_flags=BUTLIST_HORIZONTAL; - rid=R_HCIL_BUTTONS_OK_CANCEL; - } // last item in array so nothing needed - }; // end of struct member control_list so ‘;’ needed - }; // end of struct member topsection so ‘;’ needed - } // end of resource so nothing needed

      The rules to remember are as follows:

    Type of entity

    Punctuation needed after closing }

    resource

    nothing

    array member (not last one)

    ,

    last array member

    nothing

    struct member

    ;

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B683496C-652E-5F48-924E-52D2FF3A78A7.dita --- a/Symbian3/PDK/Source/GUID-B683496C-652E-5F48-924E-52D2FF3A78A7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B683496C-652E-5F48-924E-52D2FF3A78A7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -55,7 +55,7 @@ the root stream.

    Streams linked in a store - +

    Direct file stores are encapsulated by the CDirectFileStore class.

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B68FF699-923B-530E-A877-86507B1D42F1.dita --- a/Symbian3/PDK/Source/GUID-B68FF699-923B-530E-A877-86507B1D42F1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,37 +0,0 @@ - - - - - -mmp file syntax overview

    A .mmp project definition file specifies the properties of a project in a platform and compiler independent way. The makmake tool converts project definition files into makefiles for particular platforms. The abld tool wraps calls to makmake, and can be more convenient to use than makmake directly.

    A project definition file has extension .mmp.

    Note that:

    • Each statement occupies a single line.

    • Use the C++ style comment syntax for comments.

    • A trailing backslash is used to indicate a line continuation. Therefore, specify directories without their trailing backslash, for example: Do SYSTEMINCLUDE \epoc32\include, rather than SYSTEMINCLUDE - \epoc32\include\

    Example:

    An example of an .mmp file called hello.mmp:

    TARGET HelloWorld.exe -TARGETTYPE exe -UID 0x100039CE 0x10004299 -TARGETPATH \sys\bin -VENDORID 0x70000001 -SOURCEPATH . -SOURCE HelloWorld_Main.cpp -SOURCE HelloWorld_Application.cpp -SOURCE HelloWorld_Document.cpp -SOURCE HelloWorld_AppUi.cpp -SOURCE HelloWorld_AppView.cpp -USERINCLUDE . -SYSTEMINCLUDE \epoc32\include - -START RESOURCE HelloWorld.rss -HEADER -TARGETPATH \resource\apps -end - -START RESOURCE HelloWorld_reg.rss -TARGETPATH \private\10003a3f\apps -END - -LIBRARY euser.lib apparc.lib cone.lib eikcore.lib -
    See also

    Using makmake

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita --- a/Symbian3/PDK/Source/GUID-B6B54E07-3B34-5D5C-8815-93383FA8FB4B.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ - - - - - -How -to use abld -

    The abld.bat batch file is used to control all aspects -of building a project. It is created in the current directory by the bldmake tool -from a component description file bld.inf.

    -

    The syntax reference for this tool exhaustively lists all of the possible -build operations which can be performed using abld. The -tool's flexibility obscures the fact that most Symbian developers will only -need to use two commands: one for cleaning up all files created in a previous -build, and another for building the current project.

    -
    Cleaning

    Cleaning removes all the intermediate -files created during compilation, and all the executables and import libraries -created by the linker. The simplest invocation of this operation deletes the -files for all platforms, and projects belonging to the component.

    abld -clean

    It is also possible to specify the platform and -build variant to be cleaned.

    -
    Building

    abld builds projects -based on the makefiles created by bldmake from the component -information file and project files.

    The simplest invocation of this -command builds the project for all possible build variants:

    abld -build

    However building for a platform can take some time, -and it is usual to only specify the platform required. For example, to build -the debug version on the WINSCW platform specify:

    abld -build winscw udeb

    or to build the release version for -ARMV5 use:

    abld build armv5 urel

    The build command -combines the other abld commands: export, makefile, library, resource, target and final, which are carried out -in turn.

    See also

    Abld -syntax

    Using -bldmake

    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B6F0C909-6E58-584E-9270-8066337FCE0F.dita --- a/Symbian3/PDK/Source/GUID-B6F0C909-6E58-584E-9270-8066337FCE0F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B6F0C909-6E58-584E-9270-8066337FCE0F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ and also shows aspects of the relationship between the constituent parts. In this case, the client is the MultiMediaCard driver, although in general this could be some other device driver.

    - +

    The session is used to pass commands either to the entire stack, i.e. a broadcast command, or to individual cards in the stack.

    The session provides access to the stack of cards, via a pointer to a stack object, diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B707887A-E0FA-5DF6-A906-A91E31E17321.dita --- a/Symbian3/PDK/Source/GUID-B707887A-E0FA-5DF6-A906-A91E31E17321.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -start bitmap

    start bitmap target-file

    [targetpath targetpath]

    [header]

    [sourcepath sourcepath]

    source color-depth source-bitmap-list

    end

    A start bitmap section specifies how to compile bitmap (.bmp) files into a Symbian platform format multi-bitmap (.mbm) file.

    The target-file to be produced should be given with its extension, e.g. squash.mbm.

    If a target path is specified, that path will be interpreted as a location on the emulated z: drive; otherwise, the target file will be built into the same directory as the application.

    If the header keyword is supplied in the section, a bitmap header will be generated in directory epoc32\include, e.g. squash.mbg.

    Multiple sourcepath and source statements can be specified. Source bitmaps specified with each source statement will be expected to exist in the directory specified with the latest sourcepath statement above it.

    Just a single colour-depth must be specified for all the source bitmaps within a single source statement, and must be of the form [c]digit,digit, where the optional c denotes whether the bitmap is a colour bitmap and the digits represent the colour-depth of the bitmap and the bitmap mask respectively. It is recommended that the mask has a colour depth of 1 bit per pixel, to minimise memory usage.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B71AC5E3-8AA8-55AD-916F-9E873926011B.dita --- a/Symbian3/PDK/Source/GUID-B71AC5E3-8AA8-55AD-916F-9E873926011B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B71AC5E3-8AA8-55AD-916F-9E873926011B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -22,7 +22,7 @@ relationship between the components is :

    Architecture of the feature management system - +

    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 diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B7482AEB-9E7E-5F9C-A69D-60E1FE82CCE1.dita --- a/Symbian3/PDK/Source/GUID-B7482AEB-9E7E-5F9C-A69D-60E1FE82CCE1.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B7482AEB-9E7E-5F9C-A69D-60E1FE82CCE1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,212 +1,185 @@ - - - - - -dynamicarray: -Using Dynamic ArraysThis example application demonstrates how to construct and use -dynamic arrays. -

    The example includes both simple dynamic arrays and extended dynamic arrays. -You are likely to use simple dynamic arrays often. Extended dynamic arrays -are combinations of element properties and storage types.

    -

    The example implements the following operations for the RArray and RPointerArray classes:

    -
      -
    • Appends elements

    • -
    • Inserts elements

    • -
    • Accesses elements

    • -
    • Removes elements

    • -
    • Finds elements (in various -ways)

    • -
    • Sorts array

    • -
    • Destroys the array

    • -
    -
    Download

    Click -on the following link to download the example: DynamicArrays.zip

    Download some additional files -required by the example: CommonFramework.zip

    View the source code: browse . View the additional files:browse.

    -
    Description

    This -example demonstrates how to construct and use the following types of dynamic -arrays:

    CArrayFixFlat

    This example uses the CArrayFixFlat array -class to create an array of objects. These objects are of fixed length and -are stored in a flat buffer.

    The following operations are performed -on this array:

      -
    • Append elements: The -example uses the CArrayFix::AppendL() function to append -objects to the array.

    • -
    • Insert elements: The -example uses the CArrayFix::InsertL() function to insert -objects into the array at the specified position.

    • -
    • Remove elements: The -example uses the CArrayFixBase::Delete() function to delete -objects from the array.

    • -
    • Sort elements: The -example defines an array key to sort the array using the TKeyArrayFix class. -The CArrayFixBase::Sort() function is used to sort the -array using this array key.

    • -
    • Swap two elements: The -example implements the TSwap::Swap() function through the CMySwap class. -The CMySwap::Swap() function is used to swap two elements -of the array.

    • -
    • Find an element: The -example implements the TKeyElementFix class. This class is -a TKey derived class. It overrides the TKey::At() function. -The TKeyElementFix::At() function gets a pointer to the key -of a specified array element. This function is used by the CArrayFixFlat::Find() function -to find an element in the array.

    • -

    CArrayPtrFlat

    This example uses the CArrayPtrFlat array -class to create an array of pointers to CBase derived objects.

    The -following operations are performed on this array:

      -
    • Append elements: The -example uses the CArrayFix::AppendL() function to append -objects to the array.

    • -
    • Insert elements: The -example uses the CArrayFix::InsertL() function to insert -objects into the array at the specified position.

    • -
    • Remove elements: The -example uses the CArrayFixBase::Delete() function to delete -objects from the array.

    • -

    CArrayVarFlat

    This example uses the CArrayVarFlat array -class to create an array of objects. These objects are of different lengths. -Pointers to these elements are maintained in a flat dynamic buffer.

    The -following operations are performed on this array:

      -
    • Append elements: The -example uses the CArrayVar::AppendL() function to append -objects to the array.

    • -
    • Sort elements: The -example defines an array key to sort the array using the TKeyArrayVar class. -The CArrayVarBase::Sort() function is used to sort the -array using this array key.

    • -

    CArrayPakFlat

    This example uses the CArrayPakFlat array -class to create an array of objects. These objects are of variable lengths. -These are stored in a flat buffer. Each element is preceded by its length -information.

    The following operations are performed on this array:

      -
    • Append elements: The -example uses the CArrayPak::AppendL() function to append -objects to the array.

    • -
    • Find an element: The -example defines an array key to find an element in the array using the TKeyArrayPak class. -The CArrayPakBase::Find() function is used to find an element -in the array.

    • -

    RArray

    This example constructs a simple dynamic array -called RArray. It is an efficient array of fixed length -objects. The elements of this array are the instances of another class, so -this is specified as a template parameter T.

    This -example shows the following operations to this array:

      -
    • Append elements: The -example performs the following steps:

        -
      • Appends the objects into the array using RArray::AppendL().

      • -
      • Displays the number of objects and prints each object present in the -array.

      • -
    • -
    • Insert elements: The -example performs the following steps:

        -
      • Inserts the objects at a specified position using RArray::InsertL().

      • -
      • Passes the position of the object to the second parameter of RArray::InsertL().

      • -
      • Inserts objects in the beginning, middle, and at the end of the array.

      • -
      • Displays the number of objects and prints each object present in the -array.

      • -
    • -
    • Access elements: The -example accesses each object in the array and display into the console.

    • -
    • Remove elements: The -example removes an object at a specific position from the array using RArray::Remove().

    • -
    • Find elements: The -example performs the following steps:

        -
      • Finds the first object in the array that matches the specified object -using RArray::Find().

      • -
      • Finds the last object in the array that matches the specified object -using RArray::FindReverse().

      • -
      • Finds the object using a binary search technique in the array, which -matches the specified object using RArray::FindInSignedKeyOrder(). -It assumes that the existing objects within the array are in signed key order.

      • -
      • Finds the object using a binary search technique in the array, which -matches the specified object using RArray::FindInUnsignedKeyOrder(). -It assumes that the existing objects within the array are in unsigned key -order.

      • -
      • Finds the object using a binary search technique in the array, which -matches the specified object using RArray::SpecificFindInSignedKeyOrder(). -It passes the mode as the second parameter of this API to find the first, -last, or any match in case of multiple matches. It assumes that the existing -objects within the array are in signed key order.

      • -
      • Finds the object using a binary search technique in the array, which -matches the specified object using RArray::SpecificFindInUnsignedKeyOrder(). -It passes the mode as the second parameter of this API to find the first, -last, or any match in case of multiple matches. It assumes that the existing -objects within the array are in unsigned key order.

      • -
    • -
    • Sort elements: The -example performs the following steps:

        -
      • Constructs two arrays of 64-bit signed integer type objects.

      • -
      • Appends random objects to the first array using RArray::Append().

      • -
      • Inserts the data present in the first array to the second array.

      • -
      • Sorts the element of second array using RArray::sort().

      • -
    • -
    • Destroy the array: The -example performs the following steps:

        -
      • Destroys the array using delete operator.

      • -
      • Closes the array and removes all the memory allocated to the array -using RArray::Close().

      • -
    • -

    RPointerArray

    This example constructs a simple dynamic -array of pointers to objects called RPointerArray. It is -an efficient pointer array of fixed-length objects. The elements of this array -are the instances of another class so this is specified as a template parameter T.

    This -example shows the following operations to this array:

      -
    • Append elements: The -example performs the following steps:

        -
      • Appends the object pointers into the array using RPointerArray::AppendL().

      • -
      • Displays the number of object pointers and prints each object pointer -present in the array.

      • -

    • -
    • Insert elements: The -example performs the following steps:

        -
      • Inserts the objects pointer at a specified position using RpointerArray::InsertL().

      • -
      • Passes the position of the object pointer to the second parameter of RpointerArray::InsertL().

      • -
      • Inserts object pointer at the beginning, in the middle, and at the -end of the array.

      • -
      • Displays the number of object pointers and prints each object pointer -present in the array.

      • -
    • -
    • Access elements: The -example accesses each object pointer in the array and displays it to the console.

    • -
    • Remove elements: The -example removes an object pointer at a specific position from the array using RPointerArray::Remove().

    • -
    • Find elements: The -example performs the following steps:

        -
      • Finds the first object pointer in the array that matches the specified -object using RPointerArray::Find().

      • -
      • Finds the last object pointer in the array that matches the specified -object using RPointerArray::FindReverse().

      • -
      • Finds the object pointer in the array that matches the specified object -pointer, using RPointerArray::FindInAddressOrder(). It -assumes that object pointers in the array are in address order.

      • -
    • -
    • Sort elements: The -example performs the following steps:

        -
      • Constructs two arrays of TAny pointer objects.

      • -
      • Appends random objects to the first pointer array using RPointerArray::Append().

      • -
      • Inserts the data present in the first pointer array to the second pointer -array.

      • -
      • Sorts the element of the second pointer array using RPointerArray::sort().

      • -
    • -
    • Destroy the array: The -example performs the following steps:

        -
      • Destroys and resets the pointer array using RPointerArray::ResetAnddestroy().

      • -
      • Closes the pointer array and removes all the memory allocated to the -array using RPointerArray::Close().

      • -
    • -
    -
    Class summary

    CArrayFixFlat CArrayPtrFlat CArrayVarFlat CArrayPakFlat TSwap TKeyArrayFix TKeyArrayVar TKeyArrayPak TKey RArray TLinearOrder RPointerArray

    -
    Build

    The Symbian build process describes -how to build this example.

    For the emulator, the example builds an -executable file called DynamicArrays.exe in the standard -location (\epoc32\release\winscw\<build_variant> for -CodeWarrior) directory. After launching the executable file, depending on -the emulator you are using, you can task away from the application launcher -or shell screen to view the console.

    + + + + + +dynamicarray: Using Dynamic ArraysThis example application demonstrates how to construct +and use dynamic arrays. +

    The example includes both simple dynamic arrays and extended dynamic +arrays. You are likely to use simple dynamic arrays often. Extended +dynamic arrays are combinations of element properties and storage +types.

    +

    The example implements the following operations for the RArray and RPointerArray classes:

    +
      +
    • Appends elements

    • +
    • Inserts elements

    • +
    • Accesses elements

    • +
    • Removes elements

    • +
    • Finds elements +(in various ways)

    • +
    • Sorts array

    • +
    • Destroys the +array

    • +
    +
    Download

    Click on the following link to download the example: DynamicArrays.zip

    Download some additional +files required by the example: CommonFramework.zip

    View the source +code: browse . View the additional files:browse.

    +
    Description

    This example demonstrates how to construct and use the following +types of dynamic arrays:

    CArrayFixFlat

    This +example uses the CArrayFixFlat array class to create +an array of objects. These objects are of fixed length and are stored +in a flat buffer.

    The following operations are performed on +this array:

      +
    • Append elements: The example uses the CArrayFix::AppendL() function +to append objects to the array.

    • +
    • Insert elements: The example uses the CArrayFix::InsertL() function +to insert objects into the array at the specified position.

    • +
    • Remove elements: The example uses the CArrayFixBase::Delete() function +to delete objects from the array.

    • +
    • Sort elements: The example defines an array key to sort the array using the TKeyArrayFix class. The CArrayFixBase::Sort() function is used to sort the array using this array key.

    • +
    • Swap two +elements: The example implements the TSwap::Swap() function through the CMySwap class. The CMySwap::Swap() function is used to swap two elements of +the array.

    • +
    • Find an +element: The example implements the TKeyElementFix class. This class is a TKey derived class. It +overrides the TKey::At() function. The TKeyElementFix::At() function gets a pointer to the key +of a specified array element. This function is used by the CArrayFixFlat::Find() function to find an element in the +array.

    • +

    CArrayPtrFlat

    This example uses the CArrayPtrFlat array class to create an array of pointers +to CBase derived objects.

    The following operations +are performed on this array:

      +
    • Append elements: The example uses the CArrayFix::AppendL() function +to append objects to the array.

    • +
    • Insert elements: The example uses the CArrayFix::InsertL() function +to insert objects into the array at the specified position.

    • +
    • Remove elements: The example uses the CArrayFixBase::Delete() function +to delete objects from the array.

    • +

    CArrayVarFlat

    This example uses the CArrayVarFlat array class to create an array of objects. +These objects are of different lengths. Pointers to these elements +are maintained in a flat dynamic buffer.

    The following operations +are performed on this array:

      +
    • Append elements: The example uses the CArrayVar::AppendL() function +to append objects to the array.

    • +
    • Sort elements: The example defines an array key to sort the array using the TKeyArrayVar class. The CArrayVarBase::Sort() function is used to sort the array using this array key.

    • +

    CArrayPakFlat

    This example uses the CArrayPakFlat array class to create an array of objects. +These objects are of variable lengths. These are stored in a flat +buffer. Each element is preceded by its length information.

    The following operations are performed on this array:

      +
    • Append elements: The example uses the CArrayPak::AppendL() function +to append objects to the array.

    • +
    • Find an +element: The example defines an array key to find an element in +the array using the TKeyArrayPak class. The CArrayPakBase::Find() function is used to find an element +in the array.

    • +

    RArray

    This example constructs a simple dynamic +array called RArray. It is an efficient array of +fixed length objects. The elements of this array are the instances +of another class, so this is specified as a template parameter T.

    This example shows the following operations to +this array:

      +
    • Append elements: The example performs the following steps:

        +
      • Appends the objects into the array using RArray::AppendL().

      • +
      • Displays the number of objects and prints each object present +in the array.

      • +
    • +
    • Insert elements: The example performs the following steps:

        +
      • Inserts the objects at a specified position using RArray::InsertL().

      • +
      • Passes the position of the object to the second parameter of RArray::InsertL().

      • +
      • Inserts objects in the beginning, middle, and at the end of +the array.

      • +
      • Displays the number of objects and prints each object present +in the array.

      • +
    • +
    • Access elements: The example accesses each object in the array and display into the +console.

    • +
    • Remove elements: The example removes an object at a specific position from the array +using RArray::Remove().

    • +
    • Find elements: The example performs the following steps:

        +
      • Finds the first object in the array that matches the specified +object using RArray::Find().

      • +
      • Finds the last object in the array that matches the specified +object using RArray::FindReverse().

      • +
      • Finds the object using a binary search technique in the array, +which matches the specified object using RArray::FindInSignedKeyOrder(). It assumes that the existing objects within the array are in signed +key order.

      • +
      • Finds the object using a binary search technique in the array, +which matches the specified object using RArray::FindInUnsignedKeyOrder(). It assumes that the existing objects within the array are in unsigned +key order.

      • +
      • Finds the object using a binary search technique in the array, +which matches the specified object using RArray::SpecificFindInSignedKeyOrder(). It passes the mode as the second parameter of this API to find +the first, last, or any match in case of multiple matches. It assumes +that the existing objects within the array are in signed key order.

      • +
      • Finds the object using a binary search technique in the array, +which matches the specified object using RArray::SpecificFindInUnsignedKeyOrder(). It passes the mode as the second parameter of this API to find +the first, last, or any match in case of multiple matches. It assumes +that the existing objects within the array are in unsigned key order.

      • +
    • +
    • Sort elements: The example performs the following steps:

        +
      • Constructs two arrays of 64-bit signed integer type objects.

      • +
      • Appends random objects to the first array using RArray::Append().

      • +
      • Inserts the data present in the first array to the second array.

      • +
      • Sorts the element of second array using RArray::sort().

      • +
    • +
    • Destroy +the array: The example performs the following steps:

        +
      • Destroys the array using delete operator.

      • +
      • Closes the array and removes all the memory allocated to the +array using RArray::Close().

      • +
    • +

    RPointerArray

    This example constructs a simple +dynamic array of pointers to objects called RPointerArray. It is an efficient pointer array of fixed-length objects. The elements +of this array are the instances of another class so this is specified +as a template parameter T.

    This example shows +the following operations to this array:

      +
    • Append elements: The example performs the following steps:

        +
      • Appends the object pointers into the array using RPointerArray::AppendL().

      • +
      • Displays the number of object pointers and prints each object +pointer present in the array.

      • +

    • +
    • Insert elements: The example performs the following steps:

        +
      • Inserts the objects pointer at a specified position using RpointerArray::InsertL().

      • +
      • Passes the position of the object pointer to the second parameter +of RpointerArray::InsertL().

      • +
      • Inserts object pointer at the beginning, in the middle, and +at the end of the array.

      • +
      • Displays the number of object pointers and prints each object +pointer present in the array.

      • +
    • +
    • Access elements: The example accesses each object pointer in the array and displays +it to the console.

    • +
    • Remove elements: The example removes an object pointer at a specific position from +the array using RPointerArray::Remove().

    • +
    • Find elements: The example performs the following steps:

        +
      • Finds the first object pointer in the array that matches the +specified object using RPointerArray::Find().

      • +
      • Finds the last object pointer in the array that matches the +specified object using RPointerArray::FindReverse().

      • +
      • Finds the object pointer in the array that matches the specified +object pointer, using RPointerArray::FindInAddressOrder(). It assumes that object pointers in the array are in address order.

      • +
    • +
    • Sort elements: The example performs the following steps:

        +
      • Constructs two arrays of TAny pointer objects.

      • +
      • Appends random objects to the first pointer array using RPointerArray::Append().

      • +
      • Inserts the data present in the first pointer array to the +second pointer array.

      • +
      • Sorts the element of the second pointer array using RPointerArray::sort().

      • +
    • +
    • Destroy +the array: The example performs the following steps:

        +
      • Destroys and resets the pointer array using RPointerArray::ResetAnddestroy().

      • +
      • Closes the pointer array and removes all the memory allocated +to the array using RPointerArray::Close().

      • +
    • +
    +
    Class +summary

    CArrayFixFlat CArrayPtrFlat CArrayVarFlat CArrayPakFlat TSwap TKeyArrayFix TKeyArrayVar TKeyArrayPak TKey RArray TLinearOrder RPointerArray

    +
    Build

    The Symbian build process describes how to build this example.

    For the emulator, the example builds an executable +file called DynamicArrays.exe in the standard +location (\epoc32\release\winscw\<build_variant> for CodeWarrior) directory. After launching the executable file, +depending on the emulator you are using, you can task away from the +application launcher or shell screen to view the console.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B7542EA6-6188-5A3D-A287-0766F7B42DC0_d0e584186_href.png Binary file Symbian3/PDK/Source/GUID-B7542EA6-6188-5A3D-A287-0766F7B42DC0_d0e584186_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B7542EA6-6188-5A3D-A287-0766F7B42DC0_d0e612080_href.png Binary file Symbian3/PDK/Source/GUID-B7542EA6-6188-5A3D-A287-0766F7B42DC0_d0e612080_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B756AB28-A0EA-5AA3-86E3-CCFFCD642F08.dita --- a/Symbian3/PDK/Source/GUID-B756AB28-A0EA-5AA3-86E3-CCFFCD642F08.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B756AB28-A0EA-5AA3-86E3-CCFFCD642F08.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,7 +17,7 @@

    A link is represented by the templated class CMDBRecordLink<T>. The template parameter defines the type of record to which the link refers.

    - +

    A link is a public data member of a class. The class defines the structure of record. This record is the 'parent' record of the linked record. For example, diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B77702FA-7385-51A0-986F-7667669CBDB2.dita --- a/Symbian3/PDK/Source/GUID-B77702FA-7385-51A0-986F-7667669CBDB2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B77702FA-7385-51A0-986F-7667669CBDB2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,10 +12,10 @@ Guide to Optimising Performance

    This document highlights areas to investigate as part of a system-wide performance optimization process.

    -
    Introduction

    During development much attention -is devoted to functionality. It is typically only at the later stages -of development that performance (speed, RAM use, power consumption) -becomes an issue. This is inevitable for many good reasons.

      +
      Introduction

      During development much attention is devoted to functionality. +It is typically only at the later stages of development that performance +(speed, RAM use, power consumption) becomes an issue. This is inevitable +for many good reasons.

      • Performance cannot be easily or usefully assessed until a device or system nears completion.

      • @@ -35,8 +35,8 @@ to producing high-performance products.

        The Symbian Developer Library is full of advice on how to write fast and efficient code and how to configure your software and hardware for optimized performance.

      -
      Objectives

      Performance improvement or optimization -may be described as achieving some or all of the following:

        +
        Objectives

        Performance improvement or optimization may be described as achieving +some or all of the following:

        • Increased execution speed. Applications and processes perform or appear to perform tasks in less time.

        • @@ -49,17 +49,17 @@
        • Reduced power consumption.

        -
        Assessment and Measurement

        Making changes -to functioning code is a time consuming and high-risk activity. Before -making any changes, therefore, you must be confident that you are -likely to have a significant beneficial impact and that you will be -able to measure and quantify it.

        The Symbian platform includes -tools and supports techniques that enable you to analyze, monitor -and measure the performance of your system or device.

        The -Symbian Platform Sampling Profiler

        Hardware Debugging -Tools

        General purpose logging -(UTRACE)

        -
        Actions and Activities

        Configuration

        The Symbian platform and many of its +

        Assessment +and Measurement

        Making changes to functioning code is a +time consuming and high-risk activity. Before making any changes, +therefore, you must be confident that you are likely to have a significant +beneficial impact and that you will be able to measure and quantify +it.

        The Symbian platform includes tools and supports techniques +that enable you to analyze, monitor and measure the performance of +your system or device.

        The Symbian Platform Sampling Profiler

        Hardware +Debugging Tools

        General purpose logging (UTRACE)

        +
        Actions +and Activities

        Configuration

        The Symbian platform and many of its components support various build-time configuration parameters. These include settings in configuration and initialization files, macro definitions and patchable constant values.

        Adjustable Performance @@ -70,10 +70,10 @@ of inefficient code is executed repeatedly. By identifying where bottlenecks exist you target specific areas of code that have a significant impact on performance.

        Application Performance

        Code Efficiency

        -
        Further Reading

        The following documents, -located in other sections of the library, discuss performance and -optimization issues relating to particular components of the operating -system.

          +
          Further +Reading

          The following documents, located in other sections +of the library, discuss performance and optimization issues relating +to particular components of the operating system.

          • Calendar: Speeding up Agenda Application Start-up How-To Document, in the Agenda Model engineering documents section

          • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B77F8AA2-969A-59CC-908E-CEC486247B2F_d0e450865_href.png Binary file Symbian3/PDK/Source/GUID-B77F8AA2-969A-59CC-908E-CEC486247B2F_d0e450865_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B77F8AA2-969A-59CC-908E-CEC486247B2F_d0e456710_href.png Binary file Symbian3/PDK/Source/GUID-B77F8AA2-969A-59CC-908E-CEC486247B2F_d0e456710_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B783AF18-FF14-5864-A92C-8BE62E07C68D_d0e267145_href.png Binary file Symbian3/PDK/Source/GUID-B783AF18-FF14-5864-A92C-8BE62E07C68D_d0e267145_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B783AF18-FF14-5864-A92C-8BE62E07C68D_d0e273145_href.png Binary file Symbian3/PDK/Source/GUID-B783AF18-FF14-5864-A92C-8BE62E07C68D_d0e273145_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B7A40638-BA80-5175-B23D-2F3964C274A0.dita --- a/Symbian3/PDK/Source/GUID-B7A40638-BA80-5175-B23D-2F3964C274A0.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B7A40638-BA80-5175-B23D-2F3964C274A0.dita Fri Jul 16 17:23:46 2010 +0100 @@ -50,7 +50,7 @@ as the Transport.

            Separation of Data Flows and Control in the Comms Architecture - +

            In fact the Comms Architecture actually divides the area marked Control above into two areas, Control and Management. This is the reason that this Comms Architecture is also known as the Three-Plane @@ -77,7 +77,7 @@ the same protocols.

            In this example IP and TCP are used in three different stacks. A combination of these Stacks could be running concurrently.

            - +

            Each stack requires a configuration that details how these protocols find and work with each other; the protocols themselves need to know how to talk with the other protocols. To allow flexibility, each protocol must avoid @@ -97,7 +97,7 @@ The Comms Architecture shown in the scope of a complete protocol stack and the end-to-end path between the applications on each device. - +

          Performance

          A key requirement of the Comms Architecture is the performance of data transfer. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B7CC7993-7D71-5237-AF39-2BB63789BACB_d0e277152_href.png Binary file Symbian3/PDK/Source/GUID-B7CC7993-7D71-5237-AF39-2BB63789BACB_d0e277152_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B7CC7993-7D71-5237-AF39-2BB63789BACB_d0e283152_href.png Binary file Symbian3/PDK/Source/GUID-B7CC7993-7D71-5237-AF39-2BB63789BACB_d0e283152_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B7D1D1ED-932C-4A17-AE80-EDF163FC789A_d0e81413_href.png Binary file Symbian3/PDK/Source/GUID-B7D1D1ED-932C-4A17-AE80-EDF163FC789A_d0e81413_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B7D1D1ED-932C-4A17-AE80-EDF163FC789A_d0e85611_href.png Binary file Symbian3/PDK/Source/GUID-B7D1D1ED-932C-4A17-AE80-EDF163FC789A_d0e85611_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B7E55764-C137-4877-9083-63ACEAF30BE5_d0e86006_href.png Binary file Symbian3/PDK/Source/GUID-B7E55764-C137-4877-9083-63ACEAF30BE5_d0e86006_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B7E55764-C137-4877-9083-63ACEAF30BE5_d0e90204_href.png Binary file Symbian3/PDK/Source/GUID-B7E55764-C137-4877-9083-63ACEAF30BE5_d0e90204_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B7E5C7C1-E02F-575C-981B-E14DA10C63D2.dita --- a/Symbian3/PDK/Source/GUID-B7E5C7C1-E02F-575C-981B-E14DA10C63D2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B7E5C7C1-E02F-575C-981B-E14DA10C63D2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -10,5 +10,5 @@ ArchitectureThis topic describes the architecture of the Root Server and the C32exe process. Figure 1 - The architecture of Root Server and - the C32exe process

          Figure 1 shows that the Root Server is a thread in the C32 process. The Root Server provider a Client library which other applications can use to request services of the Root Server. This client library is the only interaction the Root Server has outside the C32 process.

          The Root Server contains the functionality to manage the MBufs and Bindings of the C32 process. The Root Server creates Comms Provider Modules within the C32 process only. These Comms Provider Modules may have client libraries outside the C32 process. For example, the Socket Server Comms Provider Module loads esocksvr.dll. The esocksvr DLL has a client library esock.lib which applications use to request services from the Socket Server.

          Figure 2 shows the C32 process and Root Server with some example Comms Provider Modules and the Comms Configurator using the Root Server client API.

          Figure 2 - Comms Process with example CPMs - loaded \ No newline at end of file + the C32exe process

          Figure 1 shows that the Root Server is a thread in the C32 process. The Root Server provider a Client library which other applications can use to request services of the Root Server. This client library is the only interaction the Root Server has outside the C32 process.

          The Root Server contains the functionality to manage the MBufs and Bindings of the C32 process. The Root Server creates Comms Provider Modules within the C32 process only. These Comms Provider Modules may have client libraries outside the C32 process. For example, the Socket Server Comms Provider Module loads esocksvr.dll. The esocksvr DLL has a client library esock.lib which applications use to request services from the Socket Server.

          Figure 2 shows the C32 process and Root Server with some example Comms Provider Modules and the Comms Configurator using the Root Server client API.

          Figure 2 - Comms Process with example CPMs + loaded \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B7E7E6D6-7824-505C-BA0B-B7861897E78F_d0e375726_href.png Binary file Symbian3/PDK/Source/GUID-B7E7E6D6-7824-505C-BA0B-B7861897E78F_d0e375726_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B7E7E6D6-7824-505C-BA0B-B7861897E78F_d0e381570_href.png Binary file Symbian3/PDK/Source/GUID-B7E7E6D6-7824-505C-BA0B-B7861897E78F_d0e381570_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B7F3F71A-2E05-58A5-98B2-0C62C65286D1_d0e139043_href.png Binary file Symbian3/PDK/Source/GUID-B7F3F71A-2E05-58A5-98B2-0C62C65286D1_d0e139043_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B7F3F71A-2E05-58A5-98B2-0C62C65286D1_d0e141292_href.png Binary file Symbian3/PDK/Source/GUID-B7F3F71A-2E05-58A5-98B2-0C62C65286D1_d0e141292_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B80E3FB0-C26F-52A8-B4DE-0A219B974ABC_d0e260256_href.png Binary file Symbian3/PDK/Source/GUID-B80E3FB0-C26F-52A8-B4DE-0A219B974ABC_d0e260256_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B80E3FB0-C26F-52A8-B4DE-0A219B974ABC_d0e266265_href.png Binary file Symbian3/PDK/Source/GUID-B80E3FB0-C26F-52A8-B4DE-0A219B974ABC_d0e266265_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita --- a/Symbian3/PDK/Source/GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B84FA223-3DFD-58C5-8CEF-C5AA73AA6290.dita Fri Jul 16 17:23:46 2010 +0100 @@ -484,7 +484,7 @@ and associating it with each of the controls. The class that implements the hit-test region must implement the MCoeControlHitTest interface.

          Hit-test region example - + class MCoeControlHitTest ... diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B87B9E01-F5EB-40F6-A580-A7E46869AE39.dita --- a/Symbian3/PDK/Source/GUID-B87B9E01-F5EB-40F6-A580-A7E46869AE39.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B87B9E01-F5EB-40F6-A580-A7E46869AE39.dita Fri Jul 16 17:23:46 2010 +0100 @@ -24,7 +24,7 @@ The Email Framework includes a common message store service which can be used by the plug-ins. The Email Server is a background process handling mailbox-related events.

          - +

          In the above diagram components shown in blue color are provided by Symbian platform, components shown in grey color are internal, and components in yellow color are thirdy-party applications.

          diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B89575A8-5F36-59FA-9FA3-48E2985E54C9.dita --- a/Symbian3/PDK/Source/GUID-B89575A8-5F36-59FA-9FA3-48E2985E54C9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B89575A8-5F36-59FA-9FA3-48E2985E54C9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Dispatch LayerThis topic describes the dispatch layer of the Common TSY.

          The dispatch layer is a shim between the Common TSY and the Licensee TSY. The dispatch layer is implemented by the library ctsydispatcher.dll.

          The dispatch layer provides:

          • An interface based on the functional units of the common TSY.

          • Packing and unpacking of the messages between the Common TSY and the Licensee TSY

          • Simple input and output parameters for the Licensee TSY

          • Call-back functions for the Licensee TSY to send the updates and status messages to the Common TSY.

          Message Manager

          The messages from the CTSY are passed to the dispatch layer by the CMmMessageManagerBase functions.

          Message Router

          The message router receives the request messages from the CTSY and forwards them to the appropriate dispatcher. The dispatch layer contains many dispatcher classes based on the functional units.

          Dispatcher Classes

          The Common TSY with the dispatch layer decreases the time to develop a Licensee TSY. The dispatch layer contains the CMessageRouter and provides the factory class CLtsyFactoryV1. The dispatch layer also contains the dispatchers.

          The main role of the dispatcher is to handle the messages between the message router and the LTSY. The factory class is responsible for creating the required handlers. The dispatcher is responsible for packing the call-back messages from the LTSY and unpacking the messages from the message router for passage to the LTSY. There is a dispatcher class for each functional unit such as SMS, Phone or Cell Broadcast. The following table describes the dispatcher class for each functional unit:

          Functional Unit Dispatcher class name

          Call Control

          CCallControlDispatcher

          Phone

          CPhoneDispatcher

          Security

          CSecurityDispatcher

          Cell Broadcast

          CCellBroadcastDispatcher

          Own Number Phonebook Store

          CPhonebookOnDispatcher

          Phonebook store

          CPhonebookDispatcher

          Emergency Number Phonebook Store

          CPhonebookEnDispatcher

          SIM

          CSimDispatcher

          SMS

          CSmsDispatcher

          Multiparty Call

          CCallControlMultipartyDispatcher

          Supplementary Services

          CSupplementaryServicesDispatcher

          Packet Data Services

          CPacketServicesDispatcher

          SIM Application Toolkit

          CSatDispatcher

          Example Sequence flow between the CTSY Dispatcher and LTSY -

          CCtsyDispatcherCallback class provides the methods to the LTSY to send the status and service complete messages to the CTSY.

          CTSY Requests
          1. The dispatch layer provides the interface between the CTSY and LTSY.

          2. The telephony client requests the services from the telephony server.

            The telephony applications request the telephony services like request for a voice call, data call or a fax call.

          3. The telephony server sends the request to the CTSY.

          4. The CTSY sends the requests to the dispatch layer.

          5. The dispatch layer unpacks the request message and calls the methods in the LTSY to service the telephony client request.

          The LTSY must implement the interfaces of the dispatch layer to accept the client requests. The implementation depends on the baseband design. If a telephony client request is not available or not implemented in the device KErrNotSupported or a similar error is returned to the clients.

          The functions calls to the LTSY have a standard convention:

          TInt Handle<FuncDesc><Type>(<arg list>);
          • TInt is the return code

          • FuncDec describes the function call

          • Type is Sync for synchronous calls or Req for asynchronous request messages.

          Call-back Functions

          The CCtsyDispatcherCallback class functions provide the interface for the LTSY to communicate with the dispatch layer. A pointer to this instance is passed to the LTSY. All Req type calls from the dispatch layer must be accompanied by a call-back function call. The call-back functions are called by the LTSY to notify completion of a request or to update a status. The dispatch layer packs the request messages with the data. The data contains the request command parameters from the telephony server client. An example of a request command is to dial a number.

          The call-back functions have a standard name convention:

          void Callback<FuncDesc><Type>(<arg list>);
          • FuncDesc is the description of the call-back function such as GetHomeNetwork.

          • Type is either Comp or Ind.

            Comp is used in the call-back functions that notify a request is complete. Ind is used in the call-back functions that notify events to the CTSY. The call-back function with IND prefix are unsolicited.

          \ No newline at end of file +

          CCtsyDispatcherCallback class provides the methods to the LTSY to send the status and service complete messages to the CTSY.

        CTSY Requests
        1. The dispatch layer provides the interface between the CTSY and LTSY.

        2. The telephony client requests the services from the telephony server.

          The telephony applications request the telephony services like request for a voice call, data call or a fax call.

        3. The telephony server sends the request to the CTSY.

        4. The CTSY sends the requests to the dispatch layer.

        5. The dispatch layer unpacks the request message and calls the methods in the LTSY to service the telephony client request.

        The LTSY must implement the interfaces of the dispatch layer to accept the client requests. The implementation depends on the baseband design. If a telephony client request is not available or not implemented in the device KErrNotSupported or a similar error is returned to the clients.

        The functions calls to the LTSY have a standard convention:

        TInt Handle<FuncDesc><Type>(<arg list>);
        • TInt is the return code

        • FuncDec describes the function call

        • Type is Sync for synchronous calls or Req for asynchronous request messages.

        Call-back Functions

        The CCtsyDispatcherCallback class functions provide the interface for the LTSY to communicate with the dispatch layer. A pointer to this instance is passed to the LTSY. All Req type calls from the dispatch layer must be accompanied by a call-back function call. The call-back functions are called by the LTSY to notify completion of a request or to update a status. The dispatch layer packs the request messages with the data. The data contains the request command parameters from the telephony server client. An example of a request command is to dial a number.

        The call-back functions have a standard name convention:

        void Callback<FuncDesc><Type>(<arg list>);
        • FuncDesc is the description of the call-back function such as GetHomeNetwork.

        • Type is either Comp or Ind.

          Comp is used in the call-back functions that notify a request is complete. Ind is used in the call-back functions that notify events to the CTSY. The call-back function with IND prefix are unsolicited.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B8BCC4F0-7F55-4728-B7EA-3280CA822C91.dita --- a/Symbian3/PDK/Source/GUID-B8BCC4F0-7F55-4728-B7EA-3280CA822C91.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B8BCC4F0-7F55-4728-B7EA-3280CA822C91.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,7 +14,7 @@ pop-up menu. Stylus pop-up menu displayed - +

        A stylus pop up menu (CAknStylusPopUpMenu, defined in AknStylusPopUpMenu.h) is a floating menu component that contains stylus-specific menu content. As diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B8C3E562-EE45-47F2-BC00-F6C10ADD3026.dita --- a/Symbian3/PDK/Source/GUID-B8C3E562-EE45-47F2-BC00-F6C10ADD3026.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B8C3E562-EE45-47F2-BC00-F6C10ADD3026.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,47 +1,47 @@ - - - - - -Definitions - - - -Area registry based feedback -Feedback is triggered by centralized registry, which is hosted by the -feedback system. When some area with defined feedback is touched, the feedback -is triggered by the system before any application even receives the pointer -event.

        For this kind of feedback it is on application’s responsibility -to add, update and remove areas to the registry according to application state.

        Area -registry’s main purpose is to minimize the feedback latency by processing -the pointer event faster than what would be possible from a normal GUI application. - - -Direct feedback -Feedback is triggered directly from the application, which receives -the pointer event. - - -Feedback latency -The time that it takes from the moment when user touches the screen, -until feedback is generated. This includes all the processing in touch driver -and window server, as well as the time that it takes for actually starting -the feedback. - - -Logical feedback type -Defines the nature of the feedback effect (for example, “basic” or -“sensitive”), but does not tell which type of physical feedback effect (vibrator -pulse, sound effect and so on) is produced. Logical feedback -type is decided by the UI component or application, which is using Tactile -Feedback Client API for producing feedback. - -

        - + + + + + +Definitions
        + + + +Area registry based feedback +Feedback is triggered by centralized registry, which is hosted by the +feedback system. When some area with defined feedback is touched, the feedback +is triggered by the system before any application even receives the pointer +event.

        For this kind of feedback it is on application’s responsibility +to add, update and remove areas to the registry according to application state.

        Area +registry’s main purpose is to minimize the feedback latency by processing +the pointer event faster than what would be possible from a normal GUI application. + + +Direct feedback +Feedback is triggered directly from the application, which receives +the pointer event. + + +Feedback latency +The time that it takes from the moment when user touches the screen, +until feedback is generated. This includes all the processing in touch driver +and window server, as well as the time that it takes for actually starting +the feedback. + + +Logical feedback type +Defines the nature of the feedback effect (e.g. “basic” or “sensitive”), +but does not tell which type of physical feedback effect (vibrator pulse, +sound effect etc.) is produced. Logical feedback type is decided by the UI +component or application, which is using Tactile Feedback Client API for producing +feedback. + +

        +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B8D630CA-7CED-408E-B570-00FF95BE14ED-master.png Binary file Symbian3/PDK/Source/GUID-B8D630CA-7CED-408E-B570-00FF95BE14ED-master.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B8D630CA-7CED-408E-B570-00FF95BE14ED_d0e105232_href.png Binary file Symbian3/PDK/Source/GUID-B8D630CA-7CED-408E-B570-00FF95BE14ED_d0e105232_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B913762A-2C87-4218-8D20-EBF88F9756DC_d0e14221_href.png Binary file Symbian3/PDK/Source/GUID-B913762A-2C87-4218-8D20-EBF88F9756DC_d0e14221_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B913762A-2C87-4218-8D20-EBF88F9756DC_d0e14320_href.png Binary file Symbian3/PDK/Source/GUID-B913762A-2C87-4218-8D20-EBF88F9756DC_d0e14320_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B92B7DF8-0086-431F-91CE-6F193C045FB5_d0e5122_href.png Binary file Symbian3/PDK/Source/GUID-B92B7DF8-0086-431F-91CE-6F193C045FB5_d0e5122_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B92B7DF8-0086-431F-91CE-6F193C045FB5_d0e5131_href.png Binary file Symbian3/PDK/Source/GUID-B92B7DF8-0086-431F-91CE-6F193C045FB5_d0e5131_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B9306D01-1DE5-511A-AC1A-6E3E9749BA89_d0e348544_href.png Binary file Symbian3/PDK/Source/GUID-B9306D01-1DE5-511A-AC1A-6E3E9749BA89_d0e348544_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B9306D01-1DE5-511A-AC1A-6E3E9749BA89_d0e354487_href.png Binary file Symbian3/PDK/Source/GUID-B9306D01-1DE5-511A-AC1A-6E3E9749BA89_d0e354487_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B9347C4E-8121-57F5-8040-87B5D58C0FC4_d0e449972_href.png Binary file Symbian3/PDK/Source/GUID-B9347C4E-8121-57F5-8040-87B5D58C0FC4_d0e449972_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B9347C4E-8121-57F5-8040-87B5D58C0FC4_d0e455817_href.png Binary file Symbian3/PDK/Source/GUID-B9347C4E-8121-57F5-8040-87B5D58C0FC4_d0e455817_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B938FAE4-D854-54E4-BC06-A9B7B55FE4F8-master.png Binary file Symbian3/PDK/Source/GUID-B938FAE4-D854-54E4-BC06-A9B7B55FE4F8-master.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B938FAE4-D854-54E4-BC06-A9B7B55FE4F8_d0e744115_href.png Binary file Symbian3/PDK/Source/GUID-B938FAE4-D854-54E4-BC06-A9B7B55FE4F8_d0e744115_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B93C26B8-D767-5341-A629-1A5714A20992_d0e586844_href.jpg Binary file Symbian3/PDK/Source/GUID-B93C26B8-D767-5341-A629-1A5714A20992_d0e586844_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B93C26B8-D767-5341-A629-1A5714A20992_d0e614738_href.jpg Binary file Symbian3/PDK/Source/GUID-B93C26B8-D767-5341-A629-1A5714A20992_d0e614738_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B9414AE8-820E-4CA5-A9C4-29560CD6F2EF.dita --- a/Symbian3/PDK/Source/GUID-B9414AE8-820E-4CA5-A9C4-29560CD6F2EF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B9414AE8-820E-4CA5-A9C4-29560CD6F2EF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,45 +9,38 @@ --> -Application -signing +Application signing

        All Symbian applications must be signed before they can be installed. -All applications which use capability-protected -APIs, where the capability cannot be granted by the end user, have to be certified. -Such certification can be obtained through Symbian -Signed.

        -

        Signing is a means of encoding a digital certificate into the application -installation file. The certificate identifies the application’s vendor, and -grants access to capabilities defined during the build process.

        -

        The signing process is described in detail on the Symbian -Signed website.

        -
        Signing options -

        If your application only needs user capabilities (LocalServices, NetworkServices, ReadUserData, WriteUserData, UserEnvironment, andLocation), -you can self-sign the application.

        +All applications which use capability-protected APIs, where the capability cannot be granted by the end +user, have to be certified. Such certification can be obtained through Symbian Signed.

        +

        Signing is a means of encoding a digital certificate into the +application installation file. The certificate identifies the application’s +vendor, and grants access to capabilities defined during the build +process.

        +

        The signing process is described in detail on the Symbian Signed website.

        +
        Signing +options +

        If your application only needs user capabilities (LocalServices, NetworkServices, ReadUserData, WriteUserData, UserEnvironment, andLocation), you can self-sign the application.

        -

        When the end users are installing a self-signed application, they are -informed that the application is untrusted and may decide to abort the installation. -In Nokia E-series devices the user must change a setting to allow self-signed -applications to install.

        +

        When the end users are installing a self-signed application, +they are informed that the application is untrusted and may decide +to abort the installation. In Nokia E-series devices the user must +change a setting to allow self-signed applications to install.

        -

        Sign the sis installation -file with any private key. You can use the MakeKeys application +

        Sign the sis installation file with any private key. You can use the MakeKeys application to create the needed private key and, for example, SignSIS to -sign the application. Both applications are delivered with the SDK. For more -information, see How -to sign a .Sis file with Self-Sign Certificate in the Forum Nokia -Developer Community Wiki.

        +sign the application. Both applications are delivered with the SDK. +For more information, see How to sign a .Sis file with Self-Sign Certificate in the +Forum Nokia Developer Community Wiki.

        The other signing options (Open Signed, Express Signed and Certified -Signed) are described in detail in The -Complete Guide to Symbian Signed.

        +Signed) are described in detail in The Complete Guide to Symbian Signed.

        -
        Additional information -on signing +
        Additional +information on signing -

        The UID value you need to use for -your application depends on whether your application is signed or self-signed. -For more information, see How -to use UIDs.

        +

        The UID value you need to +use for your application depends on whether your application is signed +or self-signed.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E.dita --- a/Symbian3/PDK/Source/GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B946BDF0-C5D8-57E2-9D05-7BE134AD032E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -295,7 +295,7 @@ iCertStore->Retrieve(iCertInfo, iCertData->Des(), iStatus);
        -
        Managing applicability +<section id="GUID-DD7D5D55-A2F1-54FB-AA38-B4A7C920B6A6-GENID-1-12-1-26-1-1-10-1-5-1-5-1-4-1-4-1-3-7"><title>Managing applicability and trust settings

        The trust status of a certificate indicates if it can be considered as a trust anchor for validating any application. This status is valid only for certificates issued by the Certificate Authority diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B94B394F-E243-5AB0-BAF7-AF68982A3EA8_d0e544339_href.png Binary file Symbian3/PDK/Source/GUID-B94B394F-E243-5AB0-BAF7-AF68982A3EA8_d0e544339_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B94B394F-E243-5AB0-BAF7-AF68982A3EA8_d0e551799_href.png Binary file Symbian3/PDK/Source/GUID-B94B394F-E243-5AB0-BAF7-AF68982A3EA8_d0e551799_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B95D96F5-6EA0-596C-BA06-F0703D3FCDFF.dita --- a/Symbian3/PDK/Source/GUID-B95D96F5-6EA0-596C-BA06-F0703D3FCDFF.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Trace Record Frame Format

        In UTF 2.0, the following changes are made to the trace frame record format:

        • The 1-byte primary filter is replaced with 1-byte Classification

        • The 4-byte secondary filter is replaced with 4-byte ModuleUid

        • The 1-byte schema is replaced with 2-byte FormatId

        Note: For details about UTF 1.0 trace record format, see Trace Record Format.

        The following figure shows the trace record format for UTF 2.0:

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B96A7D1B-957C-5050-9D1D-5439A13A5CED_d0e536480_href.png Binary file Symbian3/PDK/Source/GUID-B96A7D1B-957C-5050-9D1D-5439A13A5CED_d0e536480_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B96A7D1B-957C-5050-9D1D-5439A13A5CED_d0e543940_href.png Binary file Symbian3/PDK/Source/GUID-B96A7D1B-957C-5050-9D1D-5439A13A5CED_d0e543940_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B97C3C1D-7F35-4B0A-9420-180CE70EF6DE.dita --- a/Symbian3/PDK/Source/GUID-B97C3C1D-7F35-4B0A-9420-180CE70EF6DE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-B97C3C1D-7F35-4B0A-9420-180CE70EF6DE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,8 +17,8 @@ represent a file size beyond 2GB-1 (if treated as a signed int) or beyond 4GB-1 (if treated as an unsigned int).

        Replace calls to TEntry::iSize() with TEntry::FileSize() for large files.

        - -Use TEntry::FileSize() instead + +Use TEntry::FileSize() instead of TEntry::iSize() for large files and replace the return variable of type TInt with a TInt64. TInt r; diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B985B750-9B42-55ED-B7E4-41B06B44C365_d0e512289_href.jpg Binary file Symbian3/PDK/Source/GUID-B985B750-9B42-55ED-B7E4-41B06B44C365_d0e512289_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-B985B750-9B42-55ED-B7E4-41B06B44C365_d0e519751_href.jpg Binary file Symbian3/PDK/Source/GUID-B985B750-9B42-55ED-B7E4-41B06B44C365_d0e519751_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BA0D9DA9-3B54-4964-A4D6-9ADA4DEB7231.dita --- a/Symbian3/PDK/Source/GUID-BA0D9DA9-3B54-4964-A4D6-9ADA4DEB7231.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BA0D9DA9-3B54-4964-A4D6-9ADA4DEB7231.dita Fri Jul 16 17:23:46 2010 +0100 @@ -18,7 +18,7 @@

        Before listening for sensor channel data, you must open the sensor channel.

        - + Implement the data listener.

        Inherit from the MSensrvDataListener interface diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BA1071D5-E358-5B33-9204-CDCD0CECEF0A_d0e507141_href.png Binary file Symbian3/PDK/Source/GUID-BA1071D5-E358-5B33-9204-CDCD0CECEF0A_d0e507141_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BA1071D5-E358-5B33-9204-CDCD0CECEF0A_d0e514603_href.png Binary file Symbian3/PDK/Source/GUID-BA1071D5-E358-5B33-9204-CDCD0CECEF0A_d0e514603_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BA2EEEC3-86AC-5B1C-81E2-CC571EB5AB3E.dita --- a/Symbian3/PDK/Source/GUID-BA2EEEC3-86AC-5B1C-81E2-CC571EB5AB3E.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -How to use audio recorder utility \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BA49FDC0-808B-5E05-81AC-98637214F304.dita --- a/Symbian3/PDK/Source/GUID-BA49FDC0-808B-5E05-81AC-98637214F304.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BA49FDC0-808B-5E05-81AC-98637214F304.dita Fri Jul 16 17:23:46 2010 +0100 @@ -39,7 +39,7 @@ degrees of latitude one degree of longitude is only 55.8 km, which is more difficult to see.

        - +
        Getting started with LBS

        This section provides links to the most important documentation.

        For @@ -87,7 +87,7 @@ more information about the LBS architecture.

        Figure 1 shows the LBS system model - a component deployment view of LBS.

        Figure 1. LBS System Model - +
        Technologies

        The main technologies enabled on the Symbian platform by the LBS subsystem are @@ -105,7 +105,7 @@ Services using IP bearers to connect handsets and network hosts. The Symbian LBS subsystem contains a SUPL Protocol Module to support SUPL.

      - +

      The above figure illustrates how the location information can be provided to the device. Access to these location methods is provided through the positioning modules.

      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BA518A5F-678A-5821-BF01-C7B8EE4DE278.dita --- a/Symbian3/PDK/Source/GUID-BA518A5F-678A-5821-BF01-C7B8EE4DE278.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BA518A5F-678A-5821-BF01-C7B8EE4DE278.dita Fri Jul 16 17:23:46 2010 +0100 @@ -35,7 +35,7 @@ Transports

    The following diagram outlines the Remote Connectivity collections and their components:

    - +
    Technologies

    Remote Connectivity implements and uses the following technologies:

      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BA7B9BA6-B840-5182-90B0-A4914592A40D.dita --- a/Symbian3/PDK/Source/GUID-BA7B9BA6-B840-5182-90B0-A4914592A40D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BA7B9BA6-B840-5182-90B0-A4914592A40D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@
      SendAs Server process and data flow

      The following figure details the processes and data flow with SendAs Server.

      SendAs Server process and data flow - +
      SendAs Server functionality

      The following sections give detailed information about the SendAs sever functionality:

      Creating diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BAABB057-5C48-4991-A283-DAC5D54562C1_d0e67998_href.png Binary file Symbian3/PDK/Source/GUID-BAABB057-5C48-4991-A283-DAC5D54562C1_d0e67998_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BAABB057-5C48-4991-A283-DAC5D54562C1_d0e72211_href.png Binary file Symbian3/PDK/Source/GUID-BAABB057-5C48-4991-A283-DAC5D54562C1_d0e72211_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BAD38A27-5A46-5A72-B0AD-A095C207CD2B_d0e430277_href.png Binary file Symbian3/PDK/Source/GUID-BAD38A27-5A46-5A72-B0AD-A095C207CD2B_d0e430277_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BAD38A27-5A46-5A72-B0AD-A095C207CD2B_d0e436122_href.png Binary file Symbian3/PDK/Source/GUID-BAD38A27-5A46-5A72-B0AD-A095C207CD2B_d0e436122_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BADAAC2D-8614-5036-95BC-3889457F7ED0.dita --- a/Symbian3/PDK/Source/GUID-BADAAC2D-8614-5036-95BC-3889457F7ED0.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BADAAC2D-8614-5036-95BC-3889457F7ED0.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Positioning ModulesThis document describes the classes that give information about Positioning Modules.

      Purpose

      This document is an overview of the Positioning Module information that is available to client applications using the Location Acquisition API. A Positioning Module is a software component that allows the Location Server to communicate with the mobile device hardware that obtains position data.

      See How to Use Positioning Module Information for an example of how to get Positioning Module information using the Location Acquisition API.

      Types of Positioning Modules

      In mobile devices there may be several Positioning Modules:

      • A Positioning Module that use GPS and/or A-GPS.

      • A Positioning Module that uses the network to obtain cell-based positions.

      • Positioning Modules that use other technologies, such as WLAN positioning.

      Positioning Module information classes

      The classes TPositionModuleInfo and TPositionQuality hold information about the capabilities of Positioning Modules and the quality of position information that they can provide. Figure 1 illustrates these classes.

      Figure 1. TPositionModuleInfo and TPositionQuality classes -
      TPositionModuleInfo

      TPositionModuleInfo describes a Positioning Module. This description includes:

      • The technology type used by the Positioning Module.

        A Positioning Module can use positioning technology which is terminal-based (such as GPS), network based, or a combination of the two (such as A-GPS). The method TPositionModuleInfo::TechnologyType() returns this information.

      • The capabilities of the Positioning Module.

        Different Positioning Modules have different capabilities which depend on the Positioning Module technology type. Most Positioning Modules have the capability to provide latitude and longitude information. Some Positioning Modules can also supply altitude information, course information and satellite data. This information is returned by the method TPositionModuleInfo::Capabilities() as a bit mask of type TPositionModuleInfo::TCapabilities.

      • A unique identifier returned by TPositionModule::ModuleId().

        This identifier is used to select a specific Positioning Module when a client application wishes to use a specific positioning technology to obtain a location fix.

      A TPositionModuleInfo object obtains a reference to its TPositionQuality object by calling TPositionModuleInfo::GetPositionQuality().

      TPositionQuality

      TPositionQuality describes the quality of information that a Positioning Module can provide. The quality describes the accuracy of information, the time to obtain a location fix, the cost of obtaining the fix and power consumption:

      • TPositionQuality::HorizontalAccuracy() and TPositionQuality::VerticalAccuracy() return location accuracy information.

      • TPositionQuality::TimeToFirstFix() and TPositionQuality::TimeToNextFix() return a typical time to get a location fix as a TTimeIntervalMicroSeconds value.

      • TPositionQuality::CostIndicator() returns a cost for using the Positioning Module to get location information. The value returned is an estimate, not a precise cost value and is of type TPositionQuality::TCostIndicator. The cost estimate helps the location server to make a choice of the Positioning Module to use to get a location fix when a specific Positioning Module is not chosen by a client application.

      • TPositionQuality::PowerConsumption() returns an estimate of power consumption for using a Positioning Module. This estimate is of type TPositionQuality::TPowerConsumption and as with cost, it helps the Location Server make a choice of Positioning Module to use to get a location fix.

      See also

      How to Use Positioning Module Information

      \ No newline at end of file +
      TPositionModuleInfo

      TPositionModuleInfo describes a Positioning Module. This description includes:

      • The technology type used by the Positioning Module.

        A Positioning Module can use positioning technology which is terminal-based (such as GPS), network based, or a combination of the two (such as A-GPS). The method TPositionModuleInfo::TechnologyType() returns this information.

      • The capabilities of the Positioning Module.

        Different Positioning Modules have different capabilities which depend on the Positioning Module technology type. Most Positioning Modules have the capability to provide latitude and longitude information. Some Positioning Modules can also supply altitude information, course information and satellite data. This information is returned by the method TPositionModuleInfo::Capabilities() as a bit mask of type TPositionModuleInfo::TCapabilities.

      • A unique identifier returned by TPositionModule::ModuleId().

        This identifier is used to select a specific Positioning Module when a client application wishes to use a specific positioning technology to obtain a location fix.

      A TPositionModuleInfo object obtains a reference to its TPositionQuality object by calling TPositionModuleInfo::GetPositionQuality().

      TPositionQuality

      TPositionQuality describes the quality of information that a Positioning Module can provide. The quality describes the accuracy of information, the time to obtain a location fix, the cost of obtaining the fix and power consumption:

      • TPositionQuality::HorizontalAccuracy() and TPositionQuality::VerticalAccuracy() return location accuracy information.

      • TPositionQuality::TimeToFirstFix() and TPositionQuality::TimeToNextFix() return a typical time to get a location fix as a TTimeIntervalMicroSeconds value.

      • TPositionQuality::CostIndicator() returns a cost for using the Positioning Module to get location information. The value returned is an estimate, not a precise cost value and is of type TPositionQuality::TCostIndicator. The cost estimate helps the location server to make a choice of the Positioning Module to use to get a location fix when a specific Positioning Module is not chosen by a client application.

      • TPositionQuality::PowerConsumption() returns an estimate of power consumption for using a Positioning Module. This estimate is of type TPositionQuality::TPowerConsumption and as with cost, it helps the Location Server make a choice of Positioning Module to use to get a location fix.

      See also

      How to Use Positioning Module Information

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BB0C4204-3C31-57D1-B1C5-6D2FCF571931.dita --- a/Symbian3/PDK/Source/GUID-BB0C4204-3C31-57D1-B1C5-6D2FCF571931.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -epocprocesspriority

      epocprocesspriority priority

      Use the epocprocesspriority statement to specify the process priority for your executable EXE.

      Specify low, background, foreground, high, windowserver, fileserver, realtimeserver or supervisor.

      The value specified will be passed on to petran via its -priority switch.

      Use of this statement will have no effect under Win32 platforms.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita --- a/Symbian3/PDK/Source/GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BB35DBCC-FE56-547F-BADA-9EF854691ADC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,19 +9,16 @@ --> -POP/IMAP -Example -
      Description This -C++ application shows how to retrieve e-mail from a remote mailbox to a device -using IMAP and POP protocols. The usual e-mail features such as sending, editing, -and deleting e-mail messages are demonstrated.
      -
      Download

      Click -on the following link to download the example: InternetEmai.zip

      Click: browse to view the example code.

      -
      Build

      The Symbian build process describes -how to build an application.

      The InternetEmail example builds an executable -called InternetEmail.exe in the standard location (\epoc32\release\winscw\ <build_variant> for -CodeWarrior). After launching the executable, depending on the emulator you -are using, you may need to task away from the app launcher/shell screen to -view the console.

      -
      See also

      POP3 MTM Overview

      SMTP MTM Overview

      +POP/IMAP Example +
      Description This C++ application shows how to retrieve e-mail from a remote +mailbox to a device using IMAP and POP protocols. The usual e-mail +features such as sending, editing, and deleting e-mail messages are +demonstrated.
      +
      Download

      Click on the following link to download the example: InternetEmai.zip

      Click: browse to view the example code.

      +
      Build

      The InternetEmail example builds an executable called InternetEmail.exe in the standard location (\epoc32\release\winscw\ <build_variant> for +CodeWarrior). After launching the executable, depending on the emulator +you are using, you may need to task away from the app launcher/shell +screen to view the console.

      +
      See +also

      POP3 MTM Overview

      SMTP MTM Overview

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BB38AFE5-56FE-552D-8715-438936865B69_d0e535319_href.jpg Binary file Symbian3/PDK/Source/GUID-BB38AFE5-56FE-552D-8715-438936865B69_d0e535319_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BB38AFE5-56FE-552D-8715-438936865B69_d0e542779_href.jpg Binary file Symbian3/PDK/Source/GUID-BB38AFE5-56FE-552D-8715-438936865B69_d0e542779_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BB39DE14-B314-59CB-A8EC-BBD2A5C1BCD9.dita --- a/Symbian3/PDK/Source/GUID-BB39DE14-B314-59CB-A8EC-BBD2A5C1BCD9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BB39DE14-B314-59CB-A8EC-BBD2A5C1BCD9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,131 +1,122 @@ - - - - - -GUI App: Porting -an Engine for Use in a Symbian ApplicationThis section describes the steps to port an engine for use in a -Symbian application. -

      The application uses the FreeBSD cksum utility as its - engine. The checksum example is an application with a user interface and -an engine written in C.

      -

      The first stage in porting this program is to split the project into - the engine (GUIAppEng) and the application (GUIApp).

      -
      The engine

      The -engine is written in C. At its core is the crc() function. -This function accepts a file descriptor and returns the checksum and the -file size.

      The engine's project specification file (GUIAppEng.mmp) - is as follows:

      TARGET GUIAppEng.dll -TARGETTYPE dll -UID 0x1000008d 0x01000a02 -VENDORID 0x70000001 -SOURCEPATH . -SOURCE crc.c -SYSTEMINCLUDE \epoc32\include\libc \epoc32\include -LIBRARY estlib.lib euser.lib - -#if defined(WINS) - deffile GuiAppEngWINS.def -#else if defined(ARM) - deffile GuiAppEngARM.def -#endif -nostrictdef

      The output file is GUIAppEng.dll, -whose import library will be included by the UI.

      - The first UID specified (0x1000008d) is the standard UID - for an interface DLL. The second UID (0x01100a02) is -unique to the GUIApp project.

      - Splitting the project into engine and UI means that the definition of - crc() in crc.c must be marked EXPORT_C - because this function will be exported from the engine's DLL.

      -

      For more information on DLLs, see DLLs. -

      -
      Porting checksum - the GUI app

      The implementation -of checksum (GUIApp.app) limits the user to the selection -of a single file at a time and uses the default algorithm crc(), -defined in crc.c, to produce a 32-bit value.

      -

      The user interface provides two main menu commands; Calculate - checksum (invokes a file selection dialog) and View - checksums. When a file is selected and OK is -pressed, the selected file name is retrieved and opened as shown in the -following code:

      const TUint16* fn = iFileName->PtrZ(); -int fd = wopen( ( const wchar_t* )fn, O_RDONLY, 0 );

      - This code fragment is taken from examples\stdlib\GUIApp.cpp. -

      open() returns a file descriptor which -the engine's crc() function uses to identify the file. -The checksum is calculated (unless an error occurred in attempting to -open or read the file), and is displayed. The file is closed.

      -

      The file name and checksum are appended to an array, the contents -of which may be viewed by selecting View checksums. -

      -
      Linking -to STDLIB - The project specification

      The application -program includes several STDLIB header files, located in \epoc32\include\libc\. -At link time, the program includes estlib.lib and -the engine DLL's .lib (GUIAppEng.lib). -Unlike the previous examples, this application does not link to ecrt0.lib. -In this application there is no main() and the Symbian -platform provides its own E32Main().

      - For information on Symbian applications, their project specification, - and resource files, see How -to build GUI applications.

      -
      Some potential issues
        -
      • Removing writeable static

        The PETRAN stage -of building may report a message similar to the following:

        - WARNING: Dll 'SLSUMENG[0x01000a02].DLL' has initialised data. -

        This warning, which is not reported when building for the Emulator, - indicates that the DLL contains non-const static data. This is not allowed -in ARM builds. If it is not obvious where the problem occurs, the associated - .map file (epoc32\release\<target>\urel\<dllname>.map) -contains information which can help to track down the source file involved. -A search for from *(.bss) (to find uninitialised data) -or from *(.data) (to find initialised data) in GUIAPPEng.map will - reveal the file in which the problem occurs, and the names of the offending - variables, although static variables will not be named.

      • -
      • Include file clashes

        - In C++ source files which use STDLIB routines, the Symbian platform - C++ include files must be included before any of the STDLIB files. Failure -to do this will result in the following warning:

        'NULL' : macro redefinition"
      • -
      • Mixing C and C++

        C and C++ have different views -about the names of functions. If you refer to a C function from C++, ensure -that its prototype is declared as extern "C". If there -are several such function declarations, it may be more convenient to enclose -them within the following:

        #ifdef __cplusplus -extern "C" - { - #endif - ... - #ifdef __cplusplus - } -#endif

        See for example examples\stdlib\GUIApp\extern.h. -

      • -
      • Stack usage

        - Some programs produce the following error:

        unresolved external symbol __chkstk -

        unless the amount of stack they use is reduced. Symbian threads -have only 8k stack by default.

      • -
      • Resource cleanup

        The Symbian platform -has a requirement that all resources which were allocated by an application -must be cleaned up by the time the program terminates. On the Emulator, -in debug builds, failure to do this will cause a panic from the __UHEAP_MARKEND macro. -

        Because the data allocated in the thread-local storage -for STDLIB's DLL (the _reent structure) is not automatically -cleaned up when the environment is destroyed, it must be cleaned up by -the user of STDLIB.

        The function to achieve this is CloseSTDLIB(). -To use this function, file epoc32\include\libc\sys\reent.h must -be included in the project. Call CloseSTDLIB() after -the point at which it is known that code in STDLIB's DLL will no longer -be called and its thread-local storage no longer needed.

        -

        For example, see the destructor for CExampleDocument in - examples\stdlib\GUIApp\GUIApp.cpp.

      • -
      -
      -DLLs - -How to build -GUI applications + + + + + +GUI +App: Porting an Engine for Use in a Symbian ApplicationThis section describes the steps to port an engine for +use in a Symbian application. +

      The application uses the FreeBSD cksum utility +as its engine. The checksum example is an application with a user +interface and an engine written in C.

      +

      The first stage in porting this program is to split the project +into the engine (GUIAppEng) and the application (GUIApp).

      +
      The +engine

      The engine is written in C. At its core is the crc() function. This function accepts a file descriptor +and returns the checksum and the file size.

      The engine's +project specification file (GUIAppEng.mmp) +is as follows:

      TARGET GUIAppEng.dll +TARGETTYPE dll +UID 0x1000008d 0x01000a02 +VENDORID 0x70000001 +SOURCEPATH . +SOURCE crc.c +SYSTEMINCLUDE \epoc32\include\libc \epoc32\include +LIBRARY estlib.lib euser.lib + +#if defined(WINS) + deffile GuiAppEngWINS.def +#else if defined(ARM) + deffile GuiAppEngARM.def +#endif +nostrictdef

      The output file is GUIAppEng.dll, whose import library will be included by the UI.

      +

      The first UID specified (0x1000008d) +is the standard UID for an interface DLL. The second UID (0x01100a02) is unique to the GUIApp project.

      Splitting the project into engine +and UI means that the definition of crc() in crc.c must be marked EXPORT_C because +this function will be exported from the engine's DLL.

      +

      For more information on DLLs, see DLLs. +

      +
      Porting +checksum - the GUI app

      The implementation of checksum +(GUIApp.app) limits the user to the selection +of a single file at a time and uses the default algorithm crc(), defined in crc.c, to produce +a 32-bit value.

      The user interface provides +two main menu commands; Calculate checksum (invokes +a file selection dialog) and View checksums. +When a file is selected and OK is pressed, the +selected file name is retrieved and opened as shown in the following +code:

      const TUint16* fn = iFileName->PtrZ(); +int fd = wopen( ( const wchar_t* )fn, O_RDONLY, 0 ); +

      This code fragment is taken from examples\stdlib\GUIApp.cpp.

      open() returns a file descriptor +which the engine's crc() function uses to identify +the file. The checksum is calculated (unless an error occurred +in attempting to open or read the file), and is displayed. The +file is closed.

      The file name and checksum +are appended to an array, the contents of which may be viewed +by selecting View checksums.

      +
      Linking to STDLIB - The project specification

      +The application program includes several STDLIB header files, located + in \epoc32\include\libc\. At link time, the +program includes estlib.lib and the engine +DLL's .lib (GUIAppEng.lib). Unlike the previous examples, this application does not link +to ecrt0.lib. In this application there is no + main() and the Symbian platform provides its +own E32Main().

      +
      Some potential issues
        +
      • Removing writeable static

        The PETRAN +stage of building may report a message similar to the following: +

        WARNING: Dll 'SLSUMENG[0x01000a02].DLL' has initialised data.

        This warning, which is not reported when building for +the Emulator, indicates that the DLL contains non-const static +data. This is not allowed in ARM builds. If it is not obvious +where the problem occurs, the associated .map file (epoc32\release\<target>\urel\<dllname>.map) contains information which can help to track down the source +file involved. A search for from *(.bss) (to +find uninitialised data) or from *(.data) (to +find initialised data) in GUIAPPEng.map will + reveal the file in which the problem occurs, and the names of +the offending variables, although static variables will not be +named.

      • +
      • Include file clashes

        In C++ source files which use STDLIB routines, the Symbian +platform C++ include files must be included before any of the +STDLIB files. Failure to do this will result in the following +warning:

        'NULL' : macro redefinition"
      • +
      • Mixing C and C++

        C and C++ have different +views about the names of functions. If you refer to a C function +from C++, ensure that its prototype is declared as extern +"C". If there are several such function declarations, it + may be more convenient to enclose them within the following: +

        #ifdef __cplusplus +extern "C" + { + #endif + ... + #ifdef __cplusplus + } +#endif

        See for example examples\stdlib\GUIApp\extern.h.

      • +
      • Stack usage

        Some programs produce the following error:

        unresolved external symbol __chkstk +

        unless the amount of stack they use is reduced. Symbian +threads have only 8k stack by default.

      • +
      • Resource cleanup

        The Symbian platform has +a requirement that all resources which were allocated by an application +must be cleaned up by the time the program terminates. On the +Emulator, in debug builds, failure to do this will cause a panic +from the __UHEAP_MARKEND macro.

        Because the data allocated in the thread-local storage for STDLIB's + DLL (the _reent structure) is not automatically +cleaned up when the environment is destroyed, it must be cleaned +up by the user of STDLIB.

        The function to achieve +this is CloseSTDLIB(). To use this function, +file epoc32\include\libc\sys\reent.h must be + included in the project. Call CloseSTDLIB() after +the point at which it is known that code in STDLIB's DLL will +no longer be called and its thread-local storage no longer needed. +

        For example, see the destructor for CExampleDocument in examples\stdlib\GUIApp\GUIApp.cpp.

      • +
      +
      +DLLs +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BB8B3A11-0BBC-4759-A7F4-A28C9E70573F.dita --- a/Symbian3/PDK/Source/GUID-BB8B3A11-0BBC-4759-A7F4-A28C9E70573F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BB8B3A11-0BBC-4759-A7F4-A28C9E70573F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -27,7 +27,7 @@

      Adaptive search

      - +

      Single tap on the find pane activates this item.

      @@ -35,7 +35,7 @@

      Find pane

      - +

      Single tap activates this item.

      @@ -43,7 +43,7 @@

      Generic Button

      - +

      Single tap activates this item.

      @@ -51,7 +51,7 @@

      Discreet pop-up

      - +

      Touch down keeps the pop-up visible. Touch release either dismisses the pop-up or activates the application-specific functionality. @@ -61,14 +61,14 @@

      Stylus pop-up menu

      - +

      Long tap activates the item.

      Toolbar

      - +

      A short tap activates the item (emulates a selection key press).

      @@ -77,14 +77,14 @@

      Choice list

      - +

      A short tap activates the item.

      Forms

      - +

      In the view state (a normal two-row list item), a short tap activates it (emulates a selection key press).

      In the edit @@ -99,7 +99,7 @@

    • Slider

    - +

    Same as for equivalent setting items

    @@ -108,7 +108,7 @@

    Grouped soft notification, List query, Grid query

    - +

    A short tap activates the item (emulates a selection key press).

    @@ -116,7 +116,7 @@

    Left/Right arrows in the Navi pane

    - +

    A short tap activates the item and navigates between the @@ -126,7 +126,7 @@

    Markable list

    Selection list

    - +

    A short tap activates the item (emulates a selection key press).

    @@ -134,7 +134,7 @@

    Menu list (for example,Options menu and submenus)

    - +

    A short tap activates the item (emulates a selection key press).

    @@ -143,7 +143,7 @@

    Multi-selection list

    - +

    A short tap marks/unmarks the item.

    @@ -151,14 +151,14 @@

    Preview pop-up

    - +

    Scrollbar.

    - +
    @@ -170,7 +170,7 @@

    Pop-up setting

    - +

    A short tap activates the item (emulates a selection key press).

    @@ -178,7 +178,7 @@

    Multi-selection list setting

    - +

    A short tap activates the item.

    @@ -186,7 +186,7 @@

    Text setting

    - +

    The cursor can be moved with the text field. Dragging selects a block of text.

    @@ -195,7 +195,7 @@

    Slider setting

    - +

    The slider thumb is draggable.

    @@ -203,7 +203,7 @@

    Setting list

    - +

    A short tap activates the item(emulates a selection key press).

    @@ -211,7 +211,7 @@

    Softkeys (left and right) in the Control pane

    There is no middle softkey label in Touch UI
    - +
    @@ -232,7 +232,7 @@ Pane

    - +

    A short tap activates the functionality if the sub-pane has one (the signal and battery panes are inactive).

    @@ -243,7 +243,7 @@ Controller

    - +

    Draggable slider thumb. Icons can be set as tappable.

    Volume slider thumb is draggable, and muting can be done directly by tapping the speaker icon.

    @@ -252,7 +252,7 @@

    Universal indicator pop-up

    - +

    Tapping the link performs the application-specific functionality. Most commonly, opens the application. Tapping the description text diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BBBA5C6C-4E8B-513A-8FA1-C7A04C54C140.dita --- a/Symbian3/PDK/Source/GUID-BBBA5C6C-4E8B-513A-8FA1-C7A04C54C140.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BBBA5C6C-4E8B-513A-8FA1-C7A04C54C140.dita Fri Jul 16 17:23:46 2010 +0100 @@ -27,13 +27,13 @@ of the store.

    The essential features of the CClipboard class are shown in the following diagram:

    Clipboard class structure - +

    Any type of data can be placed on the clipboard. When retrieving data, applications check the UID in the stream dictionary to determine whether there is any data relevant to them. The following diagram illustrates a typical situation:

    Clipboard store - +
    Using Clipboard diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BBBB5000-90A2-503A-9521-2FC6DEC69DC8.dita --- a/Symbian3/PDK/Source/GUID-BBBB5000-90A2-503A-9521-2FC6DEC69DC8.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -MMP file syntax \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BBC374AD-88E6-5C58-88BB-B939C2948DDA.dita --- a/Symbian3/PDK/Source/GUID-BBC374AD-88E6-5C58-88BB-B939C2948DDA.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BBC374AD-88E6-5C58-88BB-B939C2948DDA.dita Fri Jul 16 17:23:46 2010 +0100 @@ -26,7 +26,7 @@ functions are virtual and implemented in the derived AppUi classes.

    - +
    • View Management

      The diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BBCC018A-BBD3-5609-8FCB-C9BF7EC5F627.dita --- a/Symbian3/PDK/Source/GUID-BBCC018A-BBD3-5609-8FCB-C9BF7EC5F627.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BBCC018A-BBD3-5609-8FCB-C9BF7EC5F627.dita Fri Jul 16 17:23:46 2010 +0100 @@ -41,6 +41,6 @@ transition to be complete, whether or not all expected acknowledgements have been received. Any acknowledgement received after the time limit are ignored.

      - + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BBDC3880-DFC3-42C0-913D-E90AB318E015_d0e65829_href.png Binary file Symbian3/PDK/Source/GUID-BBDC3880-DFC3-42C0-913D-E90AB318E015_d0e65829_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BBDC3880-DFC3-42C0-913D-E90AB318E015_d0e70052_href.png Binary file Symbian3/PDK/Source/GUID-BBDC3880-DFC3-42C0-913D-E90AB318E015_d0e70052_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BC498630-E802-5A36-8DB1-D67F739CAD64_d0e527935_href.png Binary file Symbian3/PDK/Source/GUID-BC498630-E802-5A36-8DB1-D67F739CAD64_d0e527935_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BC498630-E802-5A36-8DB1-D67F739CAD64_d0e535395_href.png Binary file Symbian3/PDK/Source/GUID-BC498630-E802-5A36-8DB1-D67F739CAD64_d0e535395_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BC7AFCC5-0052-479E-99AE-F3F982ED1F84-master.png Binary file Symbian3/PDK/Source/GUID-BC7AFCC5-0052-479E-99AE-F3F982ED1F84-master.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BC7AFCC5-0052-479E-99AE-F3F982ED1F84_d0e95236_href.png Binary file Symbian3/PDK/Source/GUID-BC7AFCC5-0052-479E-99AE-F3F982ED1F84_d0e95236_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BCD83E02-9645-530C-8BD9-CCA1B8756842_d0e54862_href.png Binary file Symbian3/PDK/Source/GUID-BCD83E02-9645-530C-8BD9-CCA1B8756842_d0e54862_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BCD83E02-9645-530C-8BD9-CCA1B8756842_d0e59096_href.png Binary file Symbian3/PDK/Source/GUID-BCD83E02-9645-530C-8BD9-CCA1B8756842_d0e59096_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BCDCB147-865F-58B0-816F-5FBF0E7CCDD7-GENID-1-12-1-26-1-1-11-1-1-3-1-3-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-BCDCB147-865F-58B0-816F-5FBF0E7CCDD7-GENID-1-12-1-26-1-1-11-1-1-3-1-3-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,307 @@ + + + + + +CryptoSPI +Overview +
      Introduction

      CryptoSPI +(cryptospi.dll) is a library introduced in Symbian^3 +that manages the selection and loading of cryptographic algorithms. Cryptographic +algorithms enable data to be encrypted and decrypted. The services provided +by CryptoSPI are used by the following components: Certman (Certificate Management), +Software Installation, Secure Communication Protocols (for example, SSL, TLS, +IPSEC), and WTLS.

      CryptoSPI also provides a framework that allows +licensees and partners to implement additional cryptographic algorithms as +plug-ins to CryptoSPI.

      The benefits of CryptoSPI are:

        +
      • Plug-ins can use cryptographic +acceleration hardware, which can improve performance and reduce power consumption. +Client applications do not need to know whether an operation is implemented +in software or hardware.

      • +
      • Its architecture allows +new algorithms or modes of operation to be added by licensees without impacting +the existing APIs or client code.

      • +
      • The legacy cryptography +libraries (cryptography.dll, hash.dll and random.dll) +have been preserved. Legacy client code can continue to use them without needing +modification or re-compilation. This is achieved via an internal BC layer +that routes legacy function calls to use the new SPI.

      • +
      • CryptoSPI adds support +for non-extractable keys, which may be used to protect sensitive or high-value +content.

      • +
      • CryptoSPI is more secure +against malicious code than the legacy API, because it does not store any +data, it has no server component and plugins must be located in ROM, so cannot +be replaced or eclipsed.

      • +
      +
      Architectural +relationships

      CryptoSPI was introduced in Symbian^3. Before Symbian^3, +cryptographic algorithms, hash algorithms and random number generation were +implemented by Symbian in cryptography.dll, hash.dll and random.dll. +As shown in the CryptoSPI dependencies diagram, Symbian's legacy implementations +and APIs were retained in Symbian^3, so that existing code does not need to +be modified or recompiled.

      softwarecrypto.dll is +a plug-in module implemented by Symbian that provides software-based implementations +of all the cryptographic algorithms that were previously implemented by the +legacy components (cryptography.dll, hash.dll and random.dll). +The legacy APIs have been re-implemented internally to use the new framework +via shim classes. hardwarecrypto.dll is an arbitrary +name used in the diagram to represent a licensee-provided plug-in module. +The plug-ins and cryptospi.dll have a dependency on cryptography.dll because +it implements big integers.

      + CryptoSPI dependencies + +
      +
      API summary

      The CryptoSpi namespace +is defined for all CryptoSPI classes to differentiate them from the legacy +APIs with the same names.

      CryptoSPI scope

      CryptoSPI +provides equivalent implementations of all algorithms supported by the legacy +APIs, including hashing and random number generation. The following algorithms +are implemented by Symbian in softwarecrypto.dll

      This +section includes summary details of the following:

        +
      • cryptographic algorithms

      • +
      • hash algorithms.

      • +
      • random number generator

      • +

      Cryptographic algorithms

        +
      • Symmetric ciphers - The following symmetric algorithms are supported:

        + + + +Symmetric algorithm +Type +Specified in: + + + + +

        AES (Advanced Encryption Standard)

        +

        Block cipher

        +

        FIPS-197

        +
        + +

        DES (Data Encryption Standard)

        +

        Block cipher

        +

        FIPS 46-3

        +
        + +

        3DES (Triple Data Encryption Standard)

        +

        Block cipher

        +

        FIPS 46-3

        +
        + +

        RC2-128

        +

        Block cipher

        +

        RFC +2268

        +
        + +

        ARC4 ('alleged' RC4)

        +

        Stream cipher

        +

        The internet and a posting to sci.crypt in 1994.

        +
        + + +

        Note: Algorithm identifiers for MISTY1, MISTY2 and Kasumi +(A5/3) block ciphers are in the cryptography library. These identifiers allow +clients of the cryptography library to request implementations of these algorithms +from the symmetric cipher factory. Symbian does not provide implementations +of these algorithms, so the default behavior is for the factory function to +return an error indicating that there is no implementation available.

        Note: +Until Symbian^3, the classes implementing the symmetric and asymmetric ciphers +were provided in cryptography.dll.

      • +
      • Asymmetric ciphers - The following asymmetric algorithms are +supported:

        + + + +Asymmetric algorithm +What is's used for +Specified in: + + + + +

        RSA PKCS#1 v1.5

        +

        Signing data

        Key pair generation

        +

        PKCS#1 v1.5

        +
        + +

        DSA

        +

        Signing data

        Key pair generation

        +

        FIPS 186-2 CR1

        +
        + +

        Diffie Hellman

        +

        Key agreement

        Key pair generation

        +

        PKCS#3

        +
        + + +
      • +
      • Hash algorithms - The following hash algorithms are supported:

        + + + +

        Hash algorithms

        +

        Specified in

        +
        + + + +

        MD2

        +

        RFC +1319

        +
        + +

        MD4

        +

        RFC +1320

        +
        + +

        MD5

        +

        RFC +1321

        +
        + +

        SHA1

        +

        FIPS +180-1 and RFC +3174

        +
        + +

        SHA-224

        +

        FIPS 180-2

        +
        + +

        SHA-256

        +

        FIPS 180-2

        +
        + +

        SHA-384

        +

        FIPS 180-2

        +
        + +

        SHA-512

        +

        FIPS 180-2

        +
        + + +

      • +
      • Hashes in HMAC mode

          +
        • MD2

        • +
        • MD4

        • +
        • MD5

        • +
        • SHA1

        • +
        • SHA-224

        • +
        • SHA-256

        • +
        • SHA-384

        • +
        • SHA-512

        • +

        HMAC mode is specified in RFC 2104

      • +

      Instantiating algorithms

      Clients request cryptographic +algorithms using static factory functions.

      For instance, to create +a hash algorithm, use the generic hash factory function CryptoSpi::CHashFactory::CreateHashL(), +specifying the UID of the required algorithm. UIDs are defined in cryptospidef.h, +for instance KMd2Uid, KMd5Uid, KSha1Uid. +CryptoSPI uses a plug-in +selector to search for a plug-in that implements the requested algorithm. +When a plug-in is found, CryptoSPI loads it if required, and calls the function +defined at the relevant ordinal in the plug-in DLL, in this case ECreateHashOrdinal, +to instantiate a hash object, which is returned to the caller.

      Operation +and padding modes

      CryptoSPI has been designed to be simpler and +more compact than the API that it replaces. Rather than defining separate +classes to do encryption and decryption, for instance, C3DESEncryptor and C3DESDecryptor, +CryptoSPI implements a single, generic symmetric cipher class, CryptoSpi::CSymmetricCipher. +The characteristics of the algorithm, for instance whether it does encryption +or decryption, the operation mode for block ciphers (KOperationModeECB, KOperationModeCBC etc.), +and the padding mode (KPaddingModeSSLv3, KPaddingModePKCS7 etc.) +are all passed by the client to the factory function as UIDs — see CryptoSpi::CSymmetricCipherFactory::CreateSymmetricCipherL().

      The client can switch the algorithm between modes by setting a +flag, see for example CSymmetricCipherBase::SetCryptoModeL(), CSymmetricCipherBase::SetPaddingModeL() and CSymmetricCipherBase::SetOperationModeL().

        +
      • Operation modes

        Symbian platform provides default software +implementations of the following operation modes:

          +
        • ECB

        • +
        • CBC

        • +
        • CTR (counter)

        • +

        They are specified in NIST Special Publication 800-38A.

      • +
      • Padding modes

        Symbian platform supports the following +padding modes:

          +
        • SSLv3-style padding

        • +
        • PKCS#7-style padding

        • +
        • PKCS#1 v1.5 Encryption-style +padding

        • +
        • PKCS#1 v1.5 Signature-style +padding

        • +
      • +

      Asynchronous operation and cancellation

      The legacy +cryptography library only supports synchronous operations. By enabling cryptographic +acceleration hardware, CryptoSPI supports more advanced use cases. In order +for users to be able to cancel potentially long-running operations such as +the decryption of high-quality audio/visual content, CryptoSPI supports both +synchronous and asynchronous interfaces for each cryptographic operation, +the latter providing a Cancel() function.

      Note: +Symbian's software plug-in module (softwarecrypto.dll) +only implements the synchronous interfaces.

      Plug-ins

      A +CryptoSPI plugin DLL can implement zero, one or more algorithms, and may provide +alternative implementations of the same algorithm. The set of plugin DLLs +is defined in a configuration file in ROM (Z:\resource\cryptospi\plug-ins.txt). +CryptoSPI will only load plugins stored in ROM (Z:\sys\bin\), +so plug-in modules cannot be added by third parties after-market.

      cryptospi.dll and +all plug-ins have ALL capabilities, which ensures that they +can be loaded by client applications with any capabilities.

      The abstract +base class for all cryptographic plug-ins is CryptoSpi::MPlugin().

      See +also: How to create +a CryptoSPI plugin.

      UIDs and plug-in characteristics

      Plug-ins +are identified by three UIDs:

        +
      • the interface supported, +for instance hash (KHashInterfaceUid),

      • +
      • the algorithm implemented, +for instance MD2 (KMd2Uid), and

      • +
      • the unique implementation +ID.

      • +

      These three UIDs are part of the plug-in's characteristics. +Plug-in characteristics are defined at compile time as constant data. They +describe the type and capabilities of a plug-in implementation. Some characteristics +are relevant to all plug-in types, for instance the name and UID of the algorithm +implemented, the name of the plug-in vendor and whether the plug-in uses hardware +acceleration. These are termed common characteristics and are defined +in CryptoSpi::TCommonCharacteristics(). Other characteristics +are specific to a particular interface type, for instance the modes of operation +for a symmetric cipher. These are defined in an interface-specific characteristics +class, for instance CryptoSpi::TSymmetricCipherCharacteristics(), +that have a TCommonCharacteristics data member. Plug-in characteristics +can be retrieved using CCryptoBase::GetCharacteristicsL().

      Plug-ins +may optionally also have 'extended' characteristics. These are set at runtime, +for instance the number of concurrent operations supported by the plug-in, +and can be retrieved using CryptoSpi::MPlugin::GetExtendedCharacteristicsL().

      Selection rules

      Symbian +has implemented a plug-in selector, CryptoSpi::CLegacySelector(), +which is used both by the legacy API and by default by CryptoSPI to select +algorithms implemented in softwarecrypto.dll. In other +words, by default, CryptoSPI and the legacy API use the same algorithm implementations. +The legacy selector works by loading DLLs one by one according to their order +in the ROM configuration file until a suitable implementation is found.

      As +an alternative to using the default selector, clients can specify a rule-based +selector (CryptoSpi::CRuleSelector()). This causes CryptoSPI +to re-generate the list of plug-ins, according to a set of selection rules. +The API is described in How +to use a rule-based selector.

      In general, it is recommended +that applications should not specify selection rules unless it is critical +to the operation of the application. The preferred approach is to use the +plugin chosen by the default selector, which can be assumed to provide good +performance for the most common use cases.

      +
      +Hash (message +digest) algorithms +Generating +random bytes +Basic encryption +and decryption using a symmetric cipher +Signing and +verification +How to use +a rule-based selector +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BCDCB147-865F-58B0-816F-5FBF0E7CCDD7-GENID-1-12-1-26-1-1-9-1-3-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-BCDCB147-865F-58B0-816F-5FBF0E7CCDD7-GENID-1-12-1-26-1-1-9-1-3-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,307 @@ + + + + + +CryptoSPI +Overview +
      Introduction

      CryptoSPI +(cryptospi.dll) is a library introduced in Symbian^3 +that manages the selection and loading of cryptographic algorithms. Cryptographic +algorithms enable data to be encrypted and decrypted. The services provided +by CryptoSPI are used by the following components: Certman (Certificate Management), +Software Installation, Secure Communication Protocols (for example, SSL, TLS, +IPSEC), and WTLS.

      CryptoSPI also provides a framework that allows +licensees and partners to implement additional cryptographic algorithms as +plug-ins to CryptoSPI.

      The benefits of CryptoSPI are:

        +
      • Plug-ins can use cryptographic +acceleration hardware, which can improve performance and reduce power consumption. +Client applications do not need to know whether an operation is implemented +in software or hardware.

      • +
      • Its architecture allows +new algorithms or modes of operation to be added by licensees without impacting +the existing APIs or client code.

      • +
      • The legacy cryptography +libraries (cryptography.dll, hash.dll and random.dll) +have been preserved. Legacy client code can continue to use them without needing +modification or re-compilation. This is achieved via an internal BC layer +that routes legacy function calls to use the new SPI.

      • +
      • CryptoSPI adds support +for non-extractable keys, which may be used to protect sensitive or high-value +content.

      • +
      • CryptoSPI is more secure +against malicious code than the legacy API, because it does not store any +data, it has no server component and plugins must be located in ROM, so cannot +be replaced or eclipsed.

      • +
      +
      Architectural +relationships

      CryptoSPI was introduced in Symbian^3. Before Symbian^3, +cryptographic algorithms, hash algorithms and random number generation were +implemented by Symbian in cryptography.dll, hash.dll and random.dll. +As shown in the CryptoSPI dependencies diagram, Symbian's legacy implementations +and APIs were retained in Symbian^3, so that existing code does not need to +be modified or recompiled.

      softwarecrypto.dll is +a plug-in module implemented by Symbian that provides software-based implementations +of all the cryptographic algorithms that were previously implemented by the +legacy components (cryptography.dll, hash.dll and random.dll). +The legacy APIs have been re-implemented internally to use the new framework +via shim classes. hardwarecrypto.dll is an arbitrary +name used in the diagram to represent a licensee-provided plug-in module. +The plug-ins and cryptospi.dll have a dependency on cryptography.dll because +it implements big integers.

      + CryptoSPI dependencies + +
      +
      API summary

      The CryptoSpi namespace +is defined for all CryptoSPI classes to differentiate them from the legacy +APIs with the same names.

      CryptoSPI scope

      CryptoSPI +provides equivalent implementations of all algorithms supported by the legacy +APIs, including hashing and random number generation. The following algorithms +are implemented by Symbian in softwarecrypto.dll

      This +section includes summary details of the following:

        +
      • cryptographic algorithms

      • +
      • hash algorithms.

      • +
      • random number generator

      • +

      Cryptographic algorithms

        +
      • Symmetric ciphers - The following symmetric algorithms are supported:

        + + + +Symmetric algorithm +Type +Specified in: + + + + +

        AES (Advanced Encryption Standard)

        +

        Block cipher

        +

        FIPS-197

        +
        + +

        DES (Data Encryption Standard)

        +

        Block cipher

        +

        FIPS 46-3

        +
        + +

        3DES (Triple Data Encryption Standard)

        +

        Block cipher

        +

        FIPS 46-3

        +
        + +

        RC2-128

        +

        Block cipher

        +

        RFC +2268

        +
        + +

        ARC4 ('alleged' RC4)

        +

        Stream cipher

        +

        The internet and a posting to sci.crypt in 1994.

        +
        + + +

        Note: Algorithm identifiers for MISTY1, MISTY2 and Kasumi +(A5/3) block ciphers are in the cryptography library. These identifiers allow +clients of the cryptography library to request implementations of these algorithms +from the symmetric cipher factory. Symbian does not provide implementations +of these algorithms, so the default behavior is for the factory function to +return an error indicating that there is no implementation available.

        Note: +Until Symbian^3, the classes implementing the symmetric and asymmetric ciphers +were provided in cryptography.dll.

      • +
      • Asymmetric ciphers - The following asymmetric algorithms are +supported:

        + + + +Asymmetric algorithm +What is's used for +Specified in: + + + + +

        RSA PKCS#1 v1.5

        +

        Signing data

        Key pair generation

        +

        PKCS#1 v1.5

        +
        + +

        DSA

        +

        Signing data

        Key pair generation

        +

        FIPS 186-2 CR1

        +
        + +

        Diffie Hellman

        +

        Key agreement

        Key pair generation

        +

        PKCS#3

        +
        + + +
      • +
      • Hash algorithms - The following hash algorithms are supported:

        + + + +

        Hash algorithms

        +

        Specified in

        +
        + + + +

        MD2

        +

        RFC +1319

        +
        + +

        MD4

        +

        RFC +1320

        +
        + +

        MD5

        +

        RFC +1321

        +
        + +

        SHA1

        +

        FIPS +180-1 and RFC +3174

        +
        + +

        SHA-224

        +

        FIPS 180-2

        +
        + +

        SHA-256

        +

        FIPS 180-2

        +
        + +

        SHA-384

        +

        FIPS 180-2

        +
        + +

        SHA-512

        +

        FIPS 180-2

        +
        + + +

      • +
      • Hashes in HMAC mode

          +
        • MD2

        • +
        • MD4

        • +
        • MD5

        • +
        • SHA1

        • +
        • SHA-224

        • +
        • SHA-256

        • +
        • SHA-384

        • +
        • SHA-512

        • +

        HMAC mode is specified in RFC 2104

      • +

      Instantiating algorithms

      Clients request cryptographic +algorithms using static factory functions.

      For instance, to create +a hash algorithm, use the generic hash factory function CryptoSpi::CHashFactory::CreateHashL(), +specifying the UID of the required algorithm. UIDs are defined in cryptospidef.h, +for instance KMd2Uid, KMd5Uid, KSha1Uid. +CryptoSPI uses a plug-in +selector to search for a plug-in that implements the requested algorithm. +When a plug-in is found, CryptoSPI loads it if required, and calls the function +defined at the relevant ordinal in the plug-in DLL, in this case ECreateHashOrdinal, +to instantiate a hash object, which is returned to the caller.

      Operation +and padding modes

      CryptoSPI has been designed to be simpler and +more compact than the API that it replaces. Rather than defining separate +classes to do encryption and decryption, for instance, C3DESEncryptor and C3DESDecryptor, +CryptoSPI implements a single, generic symmetric cipher class, CryptoSpi::CSymmetricCipher. +The characteristics of the algorithm, for instance whether it does encryption +or decryption, the operation mode for block ciphers (KOperationModeECB, KOperationModeCBC etc.), +and the padding mode (KPaddingModeSSLv3, KPaddingModePKCS7 etc.) +are all passed by the client to the factory function as UIDs — see CryptoSpi::CSymmetricCipherFactory::CreateSymmetricCipherL().

      The client can switch the algorithm between modes by setting a +flag, see for example CSymmetricCipherBase::SetCryptoModeL(), CSymmetricCipherBase::SetPaddingModeL() and CSymmetricCipherBase::SetOperationModeL().

        +
      • Operation modes

        Symbian platform provides default software +implementations of the following operation modes:

          +
        • ECB

        • +
        • CBC

        • +
        • CTR (counter)

        • +

        They are specified in NIST Special Publication 800-38A.

      • +
      • Padding modes

        Symbian platform supports the following +padding modes:

          +
        • SSLv3-style padding

        • +
        • PKCS#7-style padding

        • +
        • PKCS#1 v1.5 Encryption-style +padding

        • +
        • PKCS#1 v1.5 Signature-style +padding

        • +
      • +

      Asynchronous operation and cancellation

      The legacy +cryptography library only supports synchronous operations. By enabling cryptographic +acceleration hardware, CryptoSPI supports more advanced use cases. In order +for users to be able to cancel potentially long-running operations such as +the decryption of high-quality audio/visual content, CryptoSPI supports both +synchronous and asynchronous interfaces for each cryptographic operation, +the latter providing a Cancel() function.

      Note: +Symbian's software plug-in module (softwarecrypto.dll) +only implements the synchronous interfaces.

      Plug-ins

      A +CryptoSPI plugin DLL can implement zero, one or more algorithms, and may provide +alternative implementations of the same algorithm. The set of plugin DLLs +is defined in a configuration file in ROM (Z:\resource\cryptospi\plug-ins.txt). +CryptoSPI will only load plugins stored in ROM (Z:\sys\bin\), +so plug-in modules cannot be added by third parties after-market.

      cryptospi.dll and +all plug-ins have ALL capabilities, which ensures that they +can be loaded by client applications with any capabilities.

      The abstract +base class for all cryptographic plug-ins is CryptoSpi::MPlugin().

      See +also: How to create +a CryptoSPI plugin.

      UIDs and plug-in characteristics

      Plug-ins +are identified by three UIDs:

        +
      • the interface supported, +for instance hash (KHashInterfaceUid),

      • +
      • the algorithm implemented, +for instance MD2 (KMd2Uid), and

      • +
      • the unique implementation +ID.

      • +

      These three UIDs are part of the plug-in's characteristics. +Plug-in characteristics are defined at compile time as constant data. They +describe the type and capabilities of a plug-in implementation. Some characteristics +are relevant to all plug-in types, for instance the name and UID of the algorithm +implemented, the name of the plug-in vendor and whether the plug-in uses hardware +acceleration. These are termed common characteristics and are defined +in CryptoSpi::TCommonCharacteristics(). Other characteristics +are specific to a particular interface type, for instance the modes of operation +for a symmetric cipher. These are defined in an interface-specific characteristics +class, for instance CryptoSpi::TSymmetricCipherCharacteristics(), +that have a TCommonCharacteristics data member. Plug-in characteristics +can be retrieved using CCryptoBase::GetCharacteristicsL().

      Plug-ins +may optionally also have 'extended' characteristics. These are set at runtime, +for instance the number of concurrent operations supported by the plug-in, +and can be retrieved using CryptoSpi::MPlugin::GetExtendedCharacteristicsL().

      Selection rules

      Symbian +has implemented a plug-in selector, CryptoSpi::CLegacySelector(), +which is used both by the legacy API and by default by CryptoSPI to select +algorithms implemented in softwarecrypto.dll. In other +words, by default, CryptoSPI and the legacy API use the same algorithm implementations. +The legacy selector works by loading DLLs one by one according to their order +in the ROM configuration file until a suitable implementation is found.

      As +an alternative to using the default selector, clients can specify a rule-based +selector (CryptoSpi::CRuleSelector()). This causes CryptoSPI +to re-generate the list of plug-ins, according to a set of selection rules. +The API is described in How +to use a rule-based selector.

      In general, it is recommended +that applications should not specify selection rules unless it is critical +to the operation of the application. The preferred approach is to use the +plugin chosen by the default selector, which can be assumed to provide good +performance for the most common use cases.

      +
      +Hash (message +digest) algorithms +Generating +random bytes +Basic encryption +and decryption using a symmetric cipher +Signing and +verification +How to use +a rule-based selector +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BCDCB147-865F-58B0-816F-5FBF0E7CCDD7.dita --- a/Symbian3/PDK/Source/GUID-BCDCB147-865F-58B0-816F-5FBF0E7CCDD7.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,307 +0,0 @@ - - - - - -CryptoSPI -Overview -
      Introduction

      CryptoSPI -(cryptospi.dll) is a library introduced in Symbian^3 -that manages the selection and loading of cryptographic algorithms. Cryptographic -algorithms enable data to be encrypted and decrypted. The services provided -by CryptoSPI are used by the following components: Certman (Certificate Management), -Software Installation, Secure Communication Protocols (for example, SSL, TLS, -IPSEC), and WTLS.

      CryptoSPI also provides a framework that allows -licensees and partners to implement additional cryptographic algorithms as -plug-ins to CryptoSPI.

      The benefits of CryptoSPI are:

        -
      • Plug-ins can use cryptographic -acceleration hardware, which can improve performance and reduce power consumption. -Client applications do not need to know whether an operation is implemented -in software or hardware.

      • -
      • Its architecture allows -new algorithms or modes of operation to be added by licensees without impacting -the existing APIs or client code.

      • -
      • The legacy cryptography -libraries (cryptography.dll, hash.dll and random.dll) -have been preserved. Legacy client code can continue to use them without needing -modification or re-compilation. This is achieved via an internal BC layer -that routes legacy function calls to use the new SPI.

      • -
      • CryptoSPI adds support -for non-extractable keys, which may be used to protect sensitive or high-value -content.

      • -
      • CryptoSPI is more secure -against malicious code than the legacy API, because it does not store any -data, it has no server component and plugins must be located in ROM, so cannot -be replaced or eclipsed.

      • -
      -
      Architectural -relationships

      CryptoSPI was introduced in Symbian^3. Before Symbian^3, -cryptographic algorithms, hash algorithms and random number generation were -implemented by Symbian in cryptography.dll, hash.dll and random.dll. -As shown in the CryptoSPI dependencies diagram, Symbian's legacy implementations -and APIs were retained in Symbian^3, so that existing code does not need to -be modified or recompiled.

      softwarecrypto.dll is -a plug-in module implemented by Symbian that provides software-based implementations -of all the cryptographic algorithms that were previously implemented by the -legacy components (cryptography.dll, hash.dll and random.dll). -The legacy APIs have been re-implemented internally to use the new framework -via shim classes. hardwarecrypto.dll is an arbitrary -name used in the diagram to represent a licensee-provided plug-in module. -The plug-ins and cryptospi.dll have a dependency on cryptography.dll because -it implements big integers.

      - CryptoSPI dependencies - -
      -
      API summary

      The CryptoSpi namespace -is defined for all CryptoSPI classes to differentiate them from the legacy -APIs with the same names.

      CryptoSPI scope

      CryptoSPI -provides equivalent implementations of all algorithms supported by the legacy -APIs, including hashing and random number generation. The following algorithms -are implemented by Symbian in softwarecrypto.dll

      This -section includes summary details of the following:

        -
      • cryptographic algorithms

      • -
      • hash algorithms.

      • -
      • random number generator

      • -

      Cryptographic algorithms

        -
      • Symmetric ciphers - The following symmetric algorithms are supported:

        - - - -Symmetric algorithm -Type -Specified in: - - - - -

        AES (Advanced Encryption Standard)

        -

        Block cipher

        -

        FIPS-197

        -
        - -

        DES (Data Encryption Standard)

        -

        Block cipher

        -

        FIPS 46-3

        -
        - -

        3DES (Triple Data Encryption Standard)

        -

        Block cipher

        -

        FIPS 46-3

        -
        - -

        RC2-128

        -

        Block cipher

        -

        RFC -2268

        -
        - -

        ARC4 ('alleged' RC4)

        -

        Stream cipher

        -

        The internet and a posting to sci.crypt in 1994.

        -
        - - -

        Note: Algorithm identifiers for MISTY1, MISTY2 and Kasumi -(A5/3) block ciphers are in the cryptography library. These identifiers allow -clients of the cryptography library to request implementations of these algorithms -from the symmetric cipher factory. Symbian does not provide implementations -of these algorithms, so the default behavior is for the factory function to -return an error indicating that there is no implementation available.

        Note: -Until Symbian^3, the classes implementing the symmetric and asymmetric ciphers -were provided in cryptography.dll.

      • -
      • Asymmetric ciphers - The following asymmetric algorithms are -supported:

        - - - -Asymmetric algorithm -What is's used for -Specified in: - - - - -

        RSA PKCS#1 v1.5

        -

        Signing data

        Key pair generation

        -

        PKCS#1 v1.5

        -
        - -

        DSA

        -

        Signing data

        Key pair generation

        -

        FIPS 186-2 CR1

        -
        - -

        Diffie Hellman

        -

        Key agreement

        Key pair generation

        -

        PKCS#3

        -
        - - -
      • -
      • Hash algorithms - The following hash algorithms are supported:

        - - - -

        Hash algorithms

        -

        Specified in

        -
        - - - -

        MD2

        -

        RFC -1319

        -
        - -

        MD4

        -

        RFC -1320

        -
        - -

        MD5

        -

        RFC -1321

        -
        - -

        SHA1

        -

        FIPS -180-1 and RFC -3174

        -
        - -

        SHA-224

        -

        FIPS 180-2

        -
        - -

        SHA-256

        -

        FIPS 180-2

        -
        - -

        SHA-384

        -

        FIPS 180-2

        -
        - -

        SHA-512

        -

        FIPS 180-2

        -
        - - -

      • -
      • Hashes in HMAC mode

          -
        • MD2

        • -
        • MD4

        • -
        • MD5

        • -
        • SHA1

        • -
        • SHA-224

        • -
        • SHA-256

        • -
        • SHA-384

        • -
        • SHA-512

        • -

        HMAC mode is specified in RFC 2104

      • -

      Instantiating algorithms

      Clients request cryptographic -algorithms using static factory functions.

      For instance, to create -a hash algorithm, use the generic hash factory function CryptoSpi::CHashFactory::CreateHashL(), -specifying the UID of the required algorithm. UIDs are defined in cryptospidef.h, -for instance KMd2Uid, KMd5Uid, KSha1Uid. -CryptoSPI uses a plug-in -selector to search for a plug-in that implements the requested algorithm. -When a plug-in is found, CryptoSPI loads it if required, and calls the function -defined at the relevant ordinal in the plug-in DLL, in this case ECreateHashOrdinal, -to instantiate a hash object, which is returned to the caller.

      Operation -and padding modes

      CryptoSPI has been designed to be simpler and -more compact than the API that it replaces. Rather than defining separate -classes to do encryption and decryption, for instance, C3DESEncryptor and C3DESDecryptor, -CryptoSPI implements a single, generic symmetric cipher class, CryptoSpi::CSymmetricCipher. -The characteristics of the algorithm, for instance whether it does encryption -or decryption, the operation mode for block ciphers (KOperationModeECB, KOperationModeCBC etc.), -and the padding mode (KPaddingModeSSLv3, KPaddingModePKCS7 etc.) -are all passed by the client to the factory function as UIDs — see CryptoSpi::CSymmetricCipherFactory::CreateSymmetricCipherL().

      The client can switch the algorithm between modes by setting a -flag, see for example CSymmetricCipherBase::SetCryptoModeL(), CSymmetricCipherBase::SetPaddingModeL() and CSymmetricCipherBase::SetOperationModeL().

        -
      • Operation modes

        Symbian platform provides default software -implementations of the following operation modes:

          -
        • ECB

        • -
        • CBC

        • -
        • CTR (counter)

        • -

        They are specified in NIST Special Publication 800-38A.

      • -
      • Padding modes

        Symbian platform supports the following -padding modes:

          -
        • SSLv3-style padding

        • -
        • PKCS#7-style padding

        • -
        • PKCS#1 v1.5 Encryption-style -padding

        • -
        • PKCS#1 v1.5 Signature-style -padding

        • -
      • -

      Asynchronous operation and cancellation

      The legacy -cryptography library only supports synchronous operations. By enabling cryptographic -acceleration hardware, CryptoSPI supports more advanced use cases. In order -for users to be able to cancel potentially long-running operations such as -the decryption of high-quality audio/visual content, CryptoSPI supports both -synchronous and asynchronous interfaces for each cryptographic operation, -the latter providing a Cancel() function.

      Note: -Symbian's software plug-in module (softwarecrypto.dll) -only implements the synchronous interfaces.

      Plug-ins

      A -CryptoSPI plugin DLL can implement zero, one or more algorithms, and may provide -alternative implementations of the same algorithm. The set of plugin DLLs -is defined in a configuration file in ROM (Z:\resource\cryptospi\plug-ins.txt). -CryptoSPI will only load plugins stored in ROM (Z:\sys\bin\), -so plug-in modules cannot be added by third parties after-market.

      cryptospi.dll and -all plug-ins have ALL capabilities, which ensures that they -can be loaded by client applications with any capabilities.

      The abstract -base class for all cryptographic plug-ins is CryptoSpi::MPlugin().

      See -also: How to create -a CryptoSPI plugin.

      UIDs and plug-in characteristics

      Plug-ins -are identified by three UIDs:

        -
      • the interface supported, -for instance hash (KHashInterfaceUid),

      • -
      • the algorithm implemented, -for instance MD2 (KMd2Uid), and

      • -
      • the unique implementation -ID.

      • -

      These three UIDs are part of the plug-in's characteristics. -Plug-in characteristics are defined at compile time as constant data. They -describe the type and capabilities of a plug-in implementation. Some characteristics -are relevant to all plug-in types, for instance the name and UID of the algorithm -implemented, the name of the plug-in vendor and whether the plug-in uses hardware -acceleration. These are termed common characteristics and are defined -in CryptoSpi::TCommonCharacteristics(). Other characteristics -are specific to a particular interface type, for instance the modes of operation -for a symmetric cipher. These are defined in an interface-specific characteristics -class, for instance CryptoSpi::TSymmetricCipherCharacteristics(), -that have a TCommonCharacteristics data member. Plug-in characteristics -can be retrieved using CCryptoBase::GetCharacteristicsL().

      Plug-ins -may optionally also have 'extended' characteristics. These are set at runtime, -for instance the number of concurrent operations supported by the plug-in, -and can be retrieved using CryptoSpi::MPlugin::GetExtendedCharacteristicsL().

      Selection rules

      Symbian -has implemented a plug-in selector, CryptoSpi::CLegacySelector(), -which is used both by the legacy API and by default by CryptoSPI to select -algorithms implemented in softwarecrypto.dll. In other -words, by default, CryptoSPI and the legacy API use the same algorithm implementations. -The legacy selector works by loading DLLs one by one according to their order -in the ROM configuration file until a suitable implementation is found.

      As -an alternative to using the default selector, clients can specify a rule-based -selector (CryptoSpi::CRuleSelector()). This causes CryptoSPI -to re-generate the list of plug-ins, according to a set of selection rules. -The API is described in How -to use a rule-based selector.

      In general, it is recommended -that applications should not specify selection rules unless it is critical -to the operation of the application. The preferred approach is to use the -plugin chosen by the default selector, which can be assumed to provide good -performance for the most common use cases.

      -
      -Hash (message -digest) algorithms -Generating -random bytes -Basic encryption -and decryption using a symmetric cipher -Signing and -verification -How to use -a rule-based selector -
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BD1DBD2B-A4C1-4769-B454-2A9B4D056446_d0e1845_href.png Binary file Symbian3/PDK/Source/GUID-BD1DBD2B-A4C1-4769-B454-2A9B4D056446_d0e1845_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BD1DBD2B-A4C1-4769-B454-2A9B4D056446_d0e1853_href.png Binary file Symbian3/PDK/Source/GUID-BD1DBD2B-A4C1-4769-B454-2A9B4D056446_d0e1853_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BD347690-2644-59E5-8CC6-769A77274D51_d0e464150_href.png Binary file Symbian3/PDK/Source/GUID-BD347690-2644-59E5-8CC6-769A77274D51_d0e464150_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BD347690-2644-59E5-8CC6-769A77274D51_d0e469995_href.png Binary file Symbian3/PDK/Source/GUID-BD347690-2644-59E5-8CC6-769A77274D51_d0e469995_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BD649ABC-4DBC-5E37-B80D-2BB86F94F26A.dita --- a/Symbian3/PDK/Source/GUID-BD649ABC-4DBC-5E37-B80D-2BB86F94F26A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BD649ABC-4DBC-5E37-B80D-2BB86F94F26A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,101 +1,97 @@ - - - - - -How to -use the non-modifiable buffer descriptor — TBufC<TInt>Non-modifiable buffer descriptors are useful for holding constant -strings or data and providing safe ways to access that data. -
        -
      • For text data, it is -usual to construct a TBufC<TInt> type and allow the appropriate -variant, either a TBufC8<TInt> or a TBufC16<TInt> to -be selected at build time.

      • -
      • For binary data, an -explicit TBufC8<TInt> is used.

      • -
      • It is rare to use an -explicit TBufC16<TInt>.

      • -
      -

      Data cannot be changed through this descriptor although it can be replaced -using the assignment operators.

      -

      By using the Des() function to construct a TPtr/TPtr8/TPtr16 modifiable -pointer descriptor for the buffer's data, it becomes possible to modify that -data.

      -

      Although, the following notes refer to the build independent types; they -are equally valid for the explicit 8 bit and 16 bit types.

      -
      Constructing a TBufC<TInt>

      A non-modifiable -buffer descriptor can be constructed in a number of ways:

        -
      • as an empty buffer descriptor.

      • -
      • by copying data from -any other type of descriptor.

      • -
      • by copying data from -another non-modifiable buffer descriptor of the same size.

      • -

      The following code fragment constructs a TBufC<16> object. -The buffer descriptor is uninitialised, i.e. it contains no data. The assignment -operator can be used to put data into the buffer descriptor after construction:

      _LIT(KText,"Hello World!"); -... -TBufC<16> buf1; // length of buf1 is 0 -... -buf1 = KText; // data assigned

      The following code fragment -constructs a TBufC<16> object, initialised with the 12 -characters making up the English language phrase "Hello World!".

      The -source descriptor is a literal which is converted to descriptor type.

      _LIT(KText,"Hello World!"); -... -TBufC<16> buf1(KText); // length of buf1 is 12

      The following -code fragment constructs a TBufC<16> object, initialised -with the content of another TBufC<16> object.

      _LIT(KText,"Hello World!"); -... -TBufC<16> buf1(KText); -TBufC<16> buf2(buf1); // data copied from descriptor buf1 - // length of buf2 is 12
      -
      Replacing data

      Data within a non-modifiable buffer -descriptor can be completely replaced by using the assignment operator:

      _LIT(KText,"Hello World!"); -_LIT(KNewText,"New text"); -... -TBufC<16> buf1(KText); -TBufC<16> buf2; -... -buf2 = buf1; // buf2 now contains "Hello World!" -... -buf2 = KNewText; // buf2 now contains "New text". - // the literal is converted to a descriptor - // type.

      To prevent data replacement, -declare buf2 as const.

      -
      Constructing a modifiable pointer descriptor to change the -data

      The data contained in non-modifiable buffer descriptor TBufC<TInt> can be -changed by constructing a TPtr modifiable pointer descriptor -using theDes() member function and then changing the data -through that TPtr.

      The maximum length of the TPtr is -the value of the TBufC<TInt> template parameter.

      The -following code fragment shows data being changed:

      _LIT(KText,"Hello World!"); -_LIT(KExtraText," & Hi"); -... -TBufC<16> buf1(KText); -... -TPtr ptr = buf1.Des(); -... -ptr.Delete((ptr.Length()-1),1); -ptr.Append(KExtraText); -...

      This deletes the last character in buf1 and -adds the characters " & Hi" so that buf1 now contains -the text "Hello World & Hi" and its length is 16. Note that the length -of both buf1 and ptr change to reflect the -data that they now both represent.

      Note that any attempt to append -more data raises a panic.

      -
      Accessing data

      Once a non-modifiable buffer descriptor -has been constructed, the functions in the base class, TDesC, -are available to access the data.

      _LIT(KText,"Hello World!"); -... -TBufC<16> buf1(KText); -... buf1.Length();
      -
      - -Literal Descriptors - + + + + + +How to use the non-modifiable buffer descriptor — TBufC<TInt>Non-modifiable buffer descriptors are useful for holding +constant strings or data and providing safe ways to access that data. +
        +
      • For text data, +it is usual to construct a TBufC<TInt> type and +allow the appropriate variant, either a TBufC8<TInt> or a TBufC16<TInt> to be selected at build time.

      • +
      • For binary data, +an explicit TBufC8<TInt> is used.

      • +
      • It is rare to +use an explicit TBufC16<TInt>.

      • +
      +

      Data cannot be changed through this descriptor although it can +be replaced using the assignment operators.

      +

      By using the Des() function to construct a TPtr/TPtr8/TPtr16 modifiable pointer descriptor for the +buffer's data, it becomes possible to modify that data.

      +

      Although, the following notes refer to the build independent types; +they are equally valid for the explicit 8 bit and 16 bit types.

      +
      Constructing +a TBufC<TInt>

      A non-modifiable buffer descriptor can +be constructed in a number of ways:

        +
      • as an empty +buffer descriptor.

      • +
      • by copying data +from any other type of descriptor.

      • +
      • by copying data +from another non-modifiable buffer descriptor of the same size.

      • +

      The following code fragment constructs a TBufC<16> object. The buffer descriptor is uninitialised, i.e. it contains +no data. The assignment operator can be used to put data into the +buffer descriptor after construction:

      _LIT(KText,"Hello World!"); +... +TBufC<16> buf1; // length of buf1 is 0 +... +buf1 = KText; // data assigned

      The following code +fragment constructs a TBufC<16> object, initialised +with the 12 characters making up the English language phrase "Hello +World!".

      The source descriptor is a literal which is converted +to descriptor type.

      _LIT(KText,"Hello World!"); +... +TBufC<16> buf1(KText); // length of buf1 is 12

      The following code fragment constructs a TBufC<16> object, initialised with the content of another TBufC<16> object.

      _LIT(KText,"Hello World!"); +... +TBufC<16> buf1(KText); +TBufC<16> buf2(buf1); // data copied from descriptor buf1 + // length of buf2 is 12
      +
      Replacing +data

      Data within a non-modifiable buffer descriptor can +be completely replaced by using the assignment operator:

      _LIT(KText,"Hello World!"); +_LIT(KNewText,"New text"); +... +TBufC<16> buf1(KText); +TBufC<16> buf2; +... +buf2 = buf1; // buf2 now contains "Hello World!" +... +buf2 = KNewText; // buf2 now contains "New text". + // the literal is converted to a descriptor + // type.

      To prevent data +replacement, declare buf2 as const.

      +
      Constructing +a modifiable pointer descriptor to change the data

      The +data contained in non-modifiable buffer descriptor TBufC<TInt> can be changed by constructing a TPtr modifiable +pointer descriptor using theDes() member function +and then changing the data through that TPtr.

      The maximum length of the TPtr is the value +of the TBufC<TInt> template parameter.

      The following code fragment shows data being changed:

      _LIT(KText,"Hello World!"); +_LIT(KExtraText," & Hi"); +... +TBufC<16> buf1(KText); +... +TPtr ptr = buf1.Des(); +... +ptr.Delete((ptr.Length()-1),1); +ptr.Append(KExtraText); +...

      This deletes the last character in buf1 and adds the characters " & Hi" so that buf1 now contains the text "Hello World & Hi" and +its length is 16. Note that the length of both buf1 and ptr change to reflect the data that they now +both represent.

      Note that any attempt to append more data raises +a panic.

      +
      Accessing +data

      Once a non-modifiable buffer descriptor has been constructed, +the functions in the base class, TDesC, are available +to access the data.

      _LIT(KText,"Hello World!"); +... +TBufC<16> buf1(KText); +... buf1.Length();
      +
      + +Literal Descriptors
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BDAC640A-FBFE-4DC2-BB29-1A780BCA8ADA_d0e79232_href.png Binary file Symbian3/PDK/Source/GUID-BDAC640A-FBFE-4DC2-BB29-1A780BCA8ADA_d0e79232_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BDAC640A-FBFE-4DC2-BB29-1A780BCA8ADA_d0e80583_href.png Binary file Symbian3/PDK/Source/GUID-BDAC640A-FBFE-4DC2-BB29-1A780BCA8ADA_d0e80583_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BDAC640A-FBFE-4DC2-BB29-1A780BCA8ADA_d0e83430_href.png Binary file Symbian3/PDK/Source/GUID-BDAC640A-FBFE-4DC2-BB29-1A780BCA8ADA_d0e83430_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BDAC640A-FBFE-4DC2-BB29-1A780BCA8ADA_d0e84781_href.png Binary file Symbian3/PDK/Source/GUID-BDAC640A-FBFE-4DC2-BB29-1A780BCA8ADA_d0e84781_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BDDDF68F-F7C3-43AF-8B6C-C77C701FD2A9.dita --- a/Symbian3/PDK/Source/GUID-BDDDF68F-F7C3-43AF-8B6C-C77C701FD2A9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BDDDF68F-F7C3-43AF-8B6C-C77C701FD2A9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,7 +17,7 @@ in GUI-based applications. In this approach, the application is split into three separate logical parts. Each part contains a different aspect of the entire application, and has a specific role.

      -Logical dependencies in the MVC pattern +Logical dependencies in the MVC pattern

      In this approach, the model:

      • contains and manipulates the data in the application

        @@ -53,7 +53,7 @@ classes.

      The pattern is implemented with the following classes.

      -Relationship between the classes that make up a typical Symbian application +Relationship between the classes that make up a typical Symbian application

      The CAknApplication-derived class:

      • provides the application object expected by the application diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BE11D652-3B39-51D2-ACE9-571E8EB71E94_d0e534503_href.png Binary file Symbian3/PDK/Source/GUID-BE11D652-3B39-51D2-ACE9-571E8EB71E94_d0e534503_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BE11D652-3B39-51D2-ACE9-571E8EB71E94_d0e541963_href.png Binary file Symbian3/PDK/Source/GUID-BE11D652-3B39-51D2-ACE9-571E8EB71E94_d0e541963_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BE2497DB-999F-5CF8-88E1-A94E8084C841_d0e449958_href.png Binary file Symbian3/PDK/Source/GUID-BE2497DB-999F-5CF8-88E1-A94E8084C841_d0e449958_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BE2497DB-999F-5CF8-88E1-A94E8084C841_d0e455803_href.png Binary file Symbian3/PDK/Source/GUID-BE2497DB-999F-5CF8-88E1-A94E8084C841_d0e455803_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BE2D9AAB-203B-471A-984D-91E917611641.dita --- a/Symbian3/PDK/Source/GUID-BE2D9AAB-203B-471A-984D-91E917611641.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BE2D9AAB-203B-471A-984D-91E917611641.dita Fri Jul 16 17:23:46 2010 +0100 @@ -34,7 +34,7 @@ for the IP address change.

    Process Flow Application-level roaming - +
    Additional information

    The following APIs are used to implement application-level diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BE3B53A8-B06D-53C4-8FC0-85B3BA4F39EF.dita --- a/Symbian3/PDK/Source/GUID-BE3B53A8-B06D-53C4-8FC0-85B3BA4F39EF.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ - - - - - -PIM Application Engines -and Services GuideThese topics provide information about the Personal Information -Management components. Functionality includes Calendar, Contacts and Time -zone. \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BE3F31A9-959C-5854-8515-052774D8358E_d0e516289_href.png Binary file Symbian3/PDK/Source/GUID-BE3F31A9-959C-5854-8515-052774D8358E_d0e516289_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BE3F31A9-959C-5854-8515-052774D8358E_d0e523749_href.png Binary file Symbian3/PDK/Source/GUID-BE3F31A9-959C-5854-8515-052774D8358E_d0e523749_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BE4BA4D8-8FA4-5330-BFF8-311BCADBB7E7_d0e450903_href.png Binary file Symbian3/PDK/Source/GUID-BE4BA4D8-8FA4-5330-BFF8-311BCADBB7E7_d0e450903_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BE4BA4D8-8FA4-5330-BFF8-311BCADBB7E7_d0e456748_href.png Binary file Symbian3/PDK/Source/GUID-BE4BA4D8-8FA4-5330-BFF8-311BCADBB7E7_d0e456748_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BE66CF87-E750-40BE-A5EB-18A43E927257_d0e91670_href.png Binary file Symbian3/PDK/Source/GUID-BE66CF87-E750-40BE-A5EB-18A43E927257_d0e91670_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BE66CF87-E750-40BE-A5EB-18A43E927257_d0e95868_href.png Binary file Symbian3/PDK/Source/GUID-BE66CF87-E750-40BE-A5EB-18A43E927257_d0e95868_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BE6AFD38-5952-537F-848C-C76C8F5FA9BF.dita --- a/Symbian3/PDK/Source/GUID-BE6AFD38-5952-537F-848C-C76C8F5FA9BF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BE6AFD38-5952-537F-848C-C76C8F5FA9BF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,10 +15,10 @@ MultiMediaCard media driver defines and implements the standard media driver interface derived from DMediaDriver. This is the client of the MultiMediaCard controller.

    - +

    Requests to the controller can also come from other device drivers. This means that the architectural picture can be extended as shown below:

    - +

    The controller currently supports a single stack capable of holding up to 4 cards. In a future development, it may become capable of supporting more than 1 stack. Note however, that Symbian platform allows more than one @@ -47,7 +47,7 @@

    Class architecture

    The following diagram gives a more detailed view of the MultiMediaCard controller in terms of the socket, stack, session, power supply and media change objects.

    - +

    The socket

    The Symbian platform implementation of MultiMediaCard uses the idea of a socket. A socket corresponds to a physical device on a given peripheral bus.

    In @@ -100,6 +100,6 @@ through all possible socket numbers, from 0 to KMaxPBusSockets, calling TMMCardControllerInterface::IsMMCSocket() for each socket number to determine whether the socket number is a MultiMediaCard socket.

    - +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BE893F87-E7F6-56E5-BD27-328B532F8332.dita --- a/Symbian3/PDK/Source/GUID-BE893F87-E7F6-56E5-BD27-328B532F8332.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BE893F87-E7F6-56E5-BD27-328B532F8332.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,68 +1,55 @@ - - - - - -Hello -World Example: Using P.I.P.S. -

    This example application shows a simple EXE and DLL written using P.I.P.S. -(P.I.P.S. Is POSIX on Symbian Platform). It also shows the dynamic lookup -of symbols by name mechanism used in Unix-like operating systems, instead -of the native Symbian Platform lookup by ordinal mechanism. P.I.P.S., from -Symbian OS v9.3, provides APIs from libdl library to -implement this lookup by name mechanism.

    -

    The example defines a simple DLL using the P.I.P.S. STDDLL target -type, with an exported function. It also creates a simple EXE, using the STDEXE target -type, which calls the DLL's exported function using the lookup by name mechanism. -These P.I.P.S. specific target types are required to enable the specific options -for compilers and linkers to generate P.I.P.S. executables and to make symbol -information available in the executable image.

    -
    Download

    Click on the following link to download -the example: HelloWorldExample.zip

    Click: browse to view the example code.

    -
    Description

    The following sections provide more -information about the example.

    Creating a simple DLL using P.I.P.S. -STDDLL target type

    The example creates a DLL file that declares -and defines an exported function. The target type of this DLL file is STDDLL. -It contains a header and a source file:

      -
    • helloworlddllexample.h: -this declares a function with external linkage. Note that for a STDDLL library, -functions and data with external linkage are exported by default, without -any requirement for IMPORT_C and EXPORT_C declarations -in header or source files.

    • -
    • helloworlddllexample.cpp: -this defines the function declared in the header file, which displays a hello -world message to the console.

    • -

    Creating a simple EXE using P.I.P.S. STDEXE target type

    The -example creates an EXE file which calls the exported function of the loaded -DLL. The target type of this EXE file is STDEXE. It calls -the following libdl functions to use the lookup by name -mechanism:

      -
    • dlopen(): -This function is used to load the DLL file which contains an exported function.

    • -
      -
    • dlsysm(): -This function gets the address of a symbol defined within the DLL loaded by -the dlopen() call.

    • -
      -
    • dlclose(): -This function informs the system that the DLL loaded by a previous dlopen() call -is no longer needed by the application.

    • -
      -
    • dlerror(): -This function is used to get the last error that occurred from any of the libdl APIs.

    • -

    The EXE links to libdl.lib to use these functions.

    -
    Build

    The Symbian -build process describes how to build this example application.

    The HelloWorldExample builds -two files, a DLL file helloworlddllexample.dll, and an -EXE file helloworldexeexample.exe, in the standard locations.

    To -run the example, start helloworldexeexample.exe from -the file system or from your IDE. After launching the executable, depending -on the emulator you are using, you may need to navigate away from the application -launcher or shell screen to view the console.

    + + + + + +Hello World Example: Using P.I.P.S. +

    This example application shows a simple EXE and DLL written using +P.I.P.S. (P.I.P.S. Is POSIX on Symbian Platform). It also shows the +dynamic lookup of symbols by name mechanism used in Unix-like operating +systems, instead of the native Symbian Platform lookup by ordinal +mechanism. P.I.P.S., from Symbian OS v9.3, provides APIs from libdl library to implement this lookup by name mechanism.

    +

    The example defines a simple DLL using the P.I.P.S. STDDLL target type, with an exported function. It also creates a simple +EXE, using the STDEXE target type, which calls the +DLL's exported function using the lookup by name mechanism. These +P.I.P.S. specific target types are required to enable the specific +options for compilers and linkers to generate P.I.P.S. executables +and to make symbol information available in the executable image.

    +
    Download

    Click on the following link to +download the example: HelloWorldExample.zip

    Click: browse to view the example code.

    +
    Description

    The following sections provide +more information about the example.

    Creating a simple +DLL using P.I.P.S. STDDLL target type

    The example creates +a DLL file that declares and defines an exported function. The target +type of this DLL file is STDDLL. It contains a header +and a source file:

      +
    • helloworlddllexample.h: this declares a function with external linkage. Note that for a STDDLL library, functions and data with external linkage +are exported by default, without any requirement for IMPORT_C and EXPORT_C declarations in header or source files.

    • +
    • helloworlddllexample.cpp: this defines the function declared in the header file, which displays +a hello world message to the console.

    • +

    Creating a simple EXE using P.I.P.S. STDEXE target type

    The example creates an EXE file which calls the exported +function of the loaded DLL. The target type of this EXE file is STDEXE. It calls the following libdl functions to use the lookup by name mechanism:

      +
    • dlopen(): This function is used to load the DLL file which contains an exported +function.

    • +
      +
    • dlsysm(): This function gets the address of a symbol defined within the DLL +loaded by the dlopen() call.

    • +
      +
    • dlclose(): This function informs the system that the DLL loaded by a previous dlopen() call is no longer needed by the application.

    • +
      +
    • dlerror(): This function is used to get the last error that occurred from +any of the libdl APIs.

    • +

    The EXE links to libdl.lib to use these +functions.

    +
    Build

    The HelloWorldExample builds two files, a DLL file helloworlddllexample.dll, and an EXE file helloworldexeexample.exe, +in the standard locations.

    To run the example, start helloworldexeexample.exe from the file system or from +your IDE. After launching the executable, depending on the emulator +you are using, you may need to navigate away from the application +launcher or shell screen to view the console.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BEA8B4D3-992B-591E-8E2A-BCAC847E0B6E_d0e535518_href.jpg Binary file Symbian3/PDK/Source/GUID-BEA8B4D3-992B-591E-8E2A-BCAC847E0B6E_d0e535518_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BEA8B4D3-992B-591E-8E2A-BCAC847E0B6E_d0e542978_href.jpg Binary file Symbian3/PDK/Source/GUID-BEA8B4D3-992B-591E-8E2A-BCAC847E0B6E_d0e542978_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BEDF6765-4BF4-532F-A2C7-F052FE8A9CA2_d0e334730_href.png Binary file Symbian3/PDK/Source/GUID-BEDF6765-4BF4-532F-A2C7-F052FE8A9CA2_d0e334730_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BEDF6765-4BF4-532F-A2C7-F052FE8A9CA2_d0e340702_href.png Binary file Symbian3/PDK/Source/GUID-BEDF6765-4BF4-532F-A2C7-F052FE8A9CA2_d0e340702_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BF155E49-35AF-5BC1-80C5-8D6C68C464F8_d0e316625_href.png Binary file Symbian3/PDK/Source/GUID-BF155E49-35AF-5BC1-80C5-8D6C68C464F8_d0e316625_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BF155E49-35AF-5BC1-80C5-8D6C68C464F8_d0e322615_href.png Binary file Symbian3/PDK/Source/GUID-BF155E49-35AF-5BC1-80C5-8D6C68C464F8_d0e322615_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BF157EE2-B680-554A-AE32-69C652B61FA6_d0e390195_href.png Binary file Symbian3/PDK/Source/GUID-BF157EE2-B680-554A-AE32-69C652B61FA6_d0e390195_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BF157EE2-B680-554A-AE32-69C652B61FA6_d0e396048_href.png Binary file Symbian3/PDK/Source/GUID-BF157EE2-B680-554A-AE32-69C652B61FA6_d0e396048_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BF1AAA0D-DF2F-4E1D-A0D2-F419BD32F97A.dita --- a/Symbian3/PDK/Source/GUID-BF1AAA0D-DF2F-4E1D-A0D2-F419BD32F97A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BF1AAA0D-DF2F-4E1D-A0D2-F419BD32F97A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,112 +1,112 @@ - - - - - -Creating -registration resource files -

    You need to register your applications -in order to make them visible to the application menu and to provide other -information to the underlying system. To register, you need to provide a registration -resource file, typically named <application_name>_reg.rss, -that contains the non-localized information for your application. You also -need to provide the localizable -registration information. The registration resource file is compiled -during the build process and included in the pkg file -used to make the sis installation file.

    - - -

    To create a registration resource file:

    -
      -
    1. Determine -the requirements of your application.

    2. -
    3. Create a text -file with the name <application_name>_reg.rss.

      -
    4. -
    5. Include the -appropriate header files. Typically, you need to include the following files:

      - -
        -
      • appinfo.rh, which is the resource header -file that includes the data structure declaration for the resource statement -used in the registration resource file.

      • -
      • compiled resource header file for the resource file with -the symbolic ID for the localizable -registration information.

      • -
      • localization file, depending on you implementation of the -registration resource file.

      • -
      -

      For more information on pre-processor statement syntax, see C++ pre-processor statements.

      -
      -
    6. -
    7. Add a statement -for the UID2 value for the registration resource file as follows:

      - -UID2 KUidAppRegistrationResourceFile -

      UID2 always has the same value in registration resource files.

      -
      -
    8. -
    9. Add a statement -for the UID3 value -of the application as follows:

      - -UID3 <uid3 value for application> - -
    10. -
    11. Create a APP_REGISTRATION_INFO resource -for your application. The definition for the registration code block is as -follows:

      - - -RESOURCE APP_REGISTRATION_INFO - { - app_file = ""; // name of application binary file (not including extension) - mandatory - attributes = 0; - localisable_resource_file = ""; // path (not including drive) and name of localisable resource file - localisable_resource_id = r_name36; - hidden = KAppNotHidden; - embeddability = KAppNotEmbeddable; - newfile = KAppDoesNotSupportNewFile; - launch = KAppLaunchInForeground; - group_name(KAppMaxGroupName) = ""; - default_screen_number = 0; - datatype_list[]; // SUPPORTED DATATYPES - file_ownership_list[]; // FILE_OWNERSHIP_INFO - service_list[]; // SERVICE_INFO - opaque_data = 0; // use for opaque data to send to non-native application launchers i.e. MIDlet id - } -

      where,

      -
        -
      • app_file indicates the name of the application -executable binary file without the extension.

      • -
      • localisable_resource_file indicates -the path and name of the localizable resource file for the application.

        -
      • -
      • localisable_resource_id indicates the -symbolic name of the resource for the localizable -registration resource.

      • -
      • newfile indicates whether the application -is document-based and supports the creation of new files. The default value -is KAppDoesNotSupportNewFile.

      • -
      • embeddability indicates whether an application -is embeddable.

        - -

        The default value is KAppNotEmbeddable.

        -

        For more information on embeddability, see FAQ-1129 What is an embeddable application?.

        -
        -
      • -
      -

      The header file for the registration resource files is appinfo.rh and -is located in the ./epoc32/include folder.

      -

      For more information on the other values in the resource, see Defining application icons, captions and properties.

      -
      -
    12. -
    -

    For a commented example, see HelloWorldBasic_reg.rss.

    + + + + + +Creating registration resource files +

    You need to register your +applications in order to make them visible to the application menu +and to provide other information to the underlying system. To register, +you need to provide a registration resource file, typically named <application_name>_reg.rss, that contains the non-localized +information for your application. You also need to provide the localizable registration +information. The registration resource file is compiled during +the build process and included in the pkg file +used to make the sis installation file.

    + + +

    To create a registration resource file:

    +
      +
    1. Determine +the requirements of your application.

    2. +
    3. Create +a text file with the name <application_name>_reg.rss.

    4. +
    5. Include +the appropriate header files. Typically, you need to include the following +files:

      + +
        +
      • appinfo.rh, which is the resource +header file that includes the data structure declaration for the resource +statement used in the registration resource file.

      • +
      • compiled resource header file for the resource file +with the symbolic ID for the localizable registration +information.

      • +
      • localization file, depending on you implementation +of the registration resource file.

      • +
      +

      For more information on pre-processor statement syntax, see C++ pre-processor statements.

      +
      +
    6. +
    7. Add +a statement for the UID2 value for the registration resource file +as follows:

      + +UID2 KUidAppRegistrationResourceFile +

      UID2 always has the same value in registration resource files.

      +
      +
    8. +
    9. Add +a statement for the UID3 value +of the application as follows:

      + +UID3 <uid3 value for application> + +
    10. +
    11. Create +a APP_REGISTRATION_INFO resource for your application. +The definition for the registration code block is as follows:

      + + +RESOURCE APP_REGISTRATION_INFO + { + app_file = ""; // name of application binary file (not including extension) - mandatory + attributes = 0; + localisable_resource_file = ""; // path (not including drive) and name of localisable resource file + localisable_resource_id = r_name36; + hidden = KAppNotHidden; + embeddability = KAppNotEmbeddable; + newfile = KAppDoesNotSupportNewFile; + launch = KAppLaunchInForeground; + group_name(KAppMaxGroupName) = ""; + default_screen_number = 0; + datatype_list[]; // SUPPORTED DATATYPES + file_ownership_list[]; // FILE_OWNERSHIP_INFO + service_list[]; // SERVICE_INFO + opaque_data = 0; // use for opaque data to send to non-native application launchers i.e. MIDlet id + } +

      where,

      +
        +
      • app_file indicates the name +of the application executable binary file without the extension.

        +
      • +
      • localisable_resource_file indicates +the path and name of the localizable resource file for the application.

        +
      • +
      • localisable_resource_id indicates +the symbolic name of the resource for the localizable registration +resource.

      • +
      • newfile indicates whether the +application is document-based and supports the creation of new files. +The default value is KAppDoesNotSupportNewFile.

      • +
      • embeddability indicates whether +an application is embeddable.

        + +

        The default value is KAppNotEmbeddable.

        +

        For more information on embeddability, see FAQ-1129 What is an embeddable +application?.

        +
        +
      • +
      +

      The header file for the registration resource files is appinfo.rh and is located in the ./epoc32/include folder.

      +

      For more information on the other values in the resource, see Defining application icons, captions and properties.

      +
      +
    12. +
    +

    For a commented example, see HelloWorldBasic_reg.rss.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BF4E220C-2388-517B-87D8-78AB1EA6382E.dita --- a/Symbian3/PDK/Source/GUID-BF4E220C-2388-517B-87D8-78AB1EA6382E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BF4E220C-2388-517B-87D8-78AB1EA6382E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,7 +12,7 @@ ArchitectureThis topic describes the Network Interface Manager (NifMan) architecture.
    NifMan Architecture

    The following diagram outlines the main components in the NifMan architecture:

    - +

    As shown, the NIFMAN configuration daemon architecture consists of two parts:

    • An ECom plug-in for diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BF626AFA-F8E5-4049-BC3E-E947AD2D39A1_d0e4934_href.png Binary file Symbian3/PDK/Source/GUID-BF626AFA-F8E5-4049-BC3E-E947AD2D39A1_d0e4934_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BF626AFA-F8E5-4049-BC3E-E947AD2D39A1_d0e4943_href.png Binary file Symbian3/PDK/Source/GUID-BF626AFA-F8E5-4049-BC3E-E947AD2D39A1_d0e4943_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BF822A89-F932-400F-82FC-FB998B768EBF_d0e165387_href.png Binary file Symbian3/PDK/Source/GUID-BF822A89-F932-400F-82FC-FB998B768EBF_d0e165387_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BF822A89-F932-400F-82FC-FB998B768EBF_d0e171480_href.png Binary file Symbian3/PDK/Source/GUID-BF822A89-F932-400F-82FC-FB998B768EBF_d0e171480_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BFA254D4-5104-5B15-8035-2491B57D136D_d0e272739_href.png Binary file Symbian3/PDK/Source/GUID-BFA254D4-5104-5B15-8035-2491B57D136D_d0e272739_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BFA254D4-5104-5B15-8035-2491B57D136D_d0e278739_href.png Binary file Symbian3/PDK/Source/GUID-BFA254D4-5104-5B15-8035-2491B57D136D_d0e278739_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BFCFD93E-D591-50D2-8263-D13D08DD9F15.dita --- a/Symbian3/PDK/Source/GUID-BFCFD93E-D591-50D2-8263-D13D08DD9F15.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -uid

      uid [uid2] [uid3 ]

      Use the uid statement to specify the UIDs for a project.

      Each executable has three UIDs. The first is dictated by the target type of the project (whether an EXE or DLL), so is never specified in an MMP file. The second and third are optional. An MMP file may define none, one or two. See How to use UIDs for details.

      UIDs may be specified in either hex or decimal.

      Under WINSCW, a separate source file is created with the generated makefile containing code to incorporate UIDs into the executable. The name of this file is created by taking the basename of the executable and adding the extension .uid.cpp.

      In OS versions with platform security, the Secure ID for a binary is taken to be the same as the third UID for that file. If no UID statement appears in an MMP file, then zero is used for uid3. If an application (EXE) has a Secure ID of zero, this means 'undefined', and has several consequences, including lack of privacy for data used by that application.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BFD09EE5-CCB3-5498-BAA6-86F537DE9155_d0e245061_href.png Binary file Symbian3/PDK/Source/GUID-BFD09EE5-CCB3-5498-BAA6-86F537DE9155_d0e245061_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BFD09EE5-CCB3-5498-BAA6-86F537DE9155_d0e251072_href.png Binary file Symbian3/PDK/Source/GUID-BFD09EE5-CCB3-5498-BAA6-86F537DE9155_d0e251072_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-BFEEECCA-190B-4DDE-8A04-4FE918BE8690.dita --- a/Symbian3/PDK/Source/GUID-BFEEECCA-190B-4DDE-8A04-4FE918BE8690.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-BFEEECCA-190B-4DDE-8A04-4FE918BE8690.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ labeled Options opens the Options menu.

      Options menu - +

      The Options menu is a menu list displayed in a pop-up window. An item is selected by pressing either the left softkey (Select) diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C014FC75-732F-558F-8E6A-77DDAA032930_d0e316185_href.png Binary file Symbian3/PDK/Source/GUID-C014FC75-732F-558F-8E6A-77DDAA032930_d0e316185_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C014FC75-732F-558F-8E6A-77DDAA032930_d0e322175_href.png Binary file Symbian3/PDK/Source/GUID-C014FC75-732F-558F-8E6A-77DDAA032930_d0e322175_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C02F7A8B-E6D1-5DB5-A3CA-08875A196199_d0e159505_href.png Binary file Symbian3/PDK/Source/GUID-C02F7A8B-E6D1-5DB5-A3CA-08875A196199_d0e159505_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C02F7A8B-E6D1-5DB5-A3CA-08875A196199_d0e165606_href.png Binary file Symbian3/PDK/Source/GUID-C02F7A8B-E6D1-5DB5-A3CA-08875A196199_d0e165606_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C07B506E-A1C8-537C-A7BF-DD7F449DF8A5.dita --- a/Symbian3/PDK/Source/GUID-C07B506E-A1C8-537C-A7BF-DD7F449DF8A5.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -How to write an extension makefile template

      A makefile can be defined as a collection of instructions (build steps) that are needed to build a program. The Symbian build process generates the required makefiles from project (.mmp) files, and these makefiles cater to all the usual build steps. There might be few build steps which are specific to your project, and are not catered for by the generated makefiles. These build steps are addressed by separate set of makefiles called extension makefiles. The need for extension makefiles purely depend on requirements of the project you are working with.

      Since Symbian OS v9.3 the functionality and data for extension makefiles are kept separate. That is, extension makefiles with similar functionality can be generalised into a template makefile, which contains only the basic functionality. The same template can be used for various use cases by passing appropriate parameters (data). The parameters can be passed using the prj_extensions and prj_testextensions call mechanism in the bld.inf file, which deprecates the old approach of referring to the extension makefiles using the makefile or gnumakefile directive.

      This template makefile approach reduces the number of makefiles, as the extension makefiles with similar functionality are generalized into a single template.

      The following provides an overview of designing an extension makefile template. Details of the syntax are given in the reference topic Template extension makefiles.

      1. Define the input variables used by the template. The values for these variables are passed through a component's bld.inf file. If necessary, assign the default values for these variables in the corresponding meta file (see Meta files).

      2. Specify the set of targets that the makefile should respond to. An extension makefile responds to a few mandatory targets, apart from the project-specific targets. For more information on mandatory targets, refer to Extension makefile targets.

      3. Specify the build steps to create/update the target. These build steps can include basic shell operations, called through platform independent variables, such as CP to copy a file, and RM to delete a file. Other than calling these basic shell commands, the makefile can call other tools required to complete the build step, such as calling a Perl program.

      For more information on the syntax of template extension makefiles and variables, refer to Template extension makefiles.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C08C9AE9-99A6-4EB7-B665-41E92EDD9747.dita --- a/Symbian3/PDK/Source/GUID-C08C9AE9-99A6-4EB7-B665-41E92EDD9747.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C08C9AE9-99A6-4EB7-B665-41E92EDD9747.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ device. It is a general purpose component and does not directly control device volume. Volume setting item - + Text

      Default touch events for volume setting item diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C0A4DA51-3168-4F99-9A8E-66A326186E29_d0e93997_href.png Binary file Symbian3/PDK/Source/GUID-C0A4DA51-3168-4F99-9A8E-66A326186E29_d0e93997_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C0A4DA51-3168-4F99-9A8E-66A326186E29_d0e98195_href.png Binary file Symbian3/PDK/Source/GUID-C0A4DA51-3168-4F99-9A8E-66A326186E29_d0e98195_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C0CC6EEF-E95F-4DE1-9E53-2B777D9E433D_d0e104820_href.png Binary file Symbian3/PDK/Source/GUID-C0CC6EEF-E95F-4DE1-9E53-2B777D9E433D_d0e104820_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C0CFFE13-579C-5A93-9B63-DC2DCF98EC61_d0e318616_href.png Binary file Symbian3/PDK/Source/GUID-C0CFFE13-579C-5A93-9B63-DC2DCF98EC61_d0e318616_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C0CFFE13-579C-5A93-9B63-DC2DCF98EC61_d0e324606_href.png Binary file Symbian3/PDK/Source/GUID-C0CFFE13-579C-5A93-9B63-DC2DCF98EC61_d0e324606_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C103A584-3498-5F0A-8F0B-F97D33749CEF_d0e446297_href.png Binary file Symbian3/PDK/Source/GUID-C103A584-3498-5F0A-8F0B-F97D33749CEF_d0e446297_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C103A584-3498-5F0A-8F0B-F97D33749CEF_d0e452142_href.png Binary file Symbian3/PDK/Source/GUID-C103A584-3498-5F0A-8F0B-F97D33749CEF_d0e452142_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C1318E0A-0104-51DA-98BB-E92286F10E0D-GENID-1-12-1-26-1-1-4-1-3-1-5-1-3-1.dita --- a/Symbian3/PDK/Source/GUID-C1318E0A-0104-51DA-98BB-E92286F10E0D-GENID-1-12-1-26-1-1-4-1-3-1-5-1-3-1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Backup and Restore TypesBackup works by copying files (installed applications, Secure ID and data) from a Symbian device to a PC. Restore works by copying previously backed up files from the PC to the Symbian device. This section describes the different types of backup and restore.

      Note: In each of the following sections, the backup process is explained. The restore process works in the same way, but it is a process from a PC to a device.

      Base and incremental backup and restore

      For an easy and quick backup and restore, the Symbian platform implements base and incremental backups. A base backup (sometimes described as a full backup) is a backup of all or part of a drive that includes all the selected files. An incremental backup is a backup of all or part of a drive that only includes files that are new or changed since a previous backup. An incremental backup is smaller than a base backup and takes less time.

      There are (at least) two possible patterns of use for incremental backups:

      • The first pattern involves taking one base backup and then a series of incremental backups with each increment including only the files that are new or changed since the last increment. This pattern minimizes the time taken for each increment but has some drawbacks for restoring private files (because all the increments are required for restores).

      • The second pattern involves taking one base backup and then a series of incremental backups with each increment including only the files that are new or changed since the base backup. In this pattern, the time taken for an incremental backup is not minimized and may approach the time taken for a base backup but a restore operation only requires the base and a single increment.

      The choice of which pattern to use is made by the PC software - not by the phone software.

      Note: An incremental backup cannot be created purely based on a date and time stamp. If a new file is added with an old time-stamp, a time-based increment would omit it. Therefore, any incremental backup requires a list of the files included in the preceding backup.

      Full and partial backup and restore

      By default, a backup (whether base or incremental) aims to include all files on a specified drive. In practice, the application developer may only care about data belonging to one or more specific applications. By omitting other data files the time taken for the backup (or restore) is reduced.

      An additional benefit of partial backup and restore is that a data owner may be able to participate in backup or restore without requiring all file locks to be freed. For example, if a data owner only deals with its own private files, it is possible to back up its data in isolation. This allows backups to have less impact on the application developer.

      Active and passive backup and restore

      Based on the types of the data owner, backup and restore can be passive, active or active proxy:

      • Active backup: The data owner application or server must implement Active Backup Client and registers with the Backup Engine using a registration file (see Backup Registration Files). The Backup Engine starts the registered process for active backup if not already started. The data owning process then responds to a central signal when a backup or restore operation takes place and actively provides its private data to or receives it from the Backup Engine. This requires that the data-owning process include specific code to take part in backup and restore, and that it must be running when a backup or restore takes place. In this model the data-owning process registers with the Backup Engine but exercises complete control of which data is backed up and restored.

      • Passive backup: The data owner application or server registers with the Backup Engine using a backup registration file which lists the files and directories to be backed up. The data-owning process then releases file locks. The files are backed up by the Backup Engine. The Backup Engine has the required capability to access private data files belonging to other processes.

        Passive backup is very simple for application developers to implement – all that is required is a backup registration file. Active backup requires more effort to implement but provides the data-owning process with more control over the data backed up and restored.

      • Active Proxy: Some processes manage data on behalf of other data owners and they are referred to as active proxy data owners. For example, the Central Repository manages data in repositories for other data owners.

        Active proxy data owners must have a backup registration file that registers them as active data owners. They must implement Active Backup Client methods that allow the Backup Engine to request backup data or supply restore data associated with the secure ID of the actual data owner. The APIs to request or supply data are similar to the Active Backup Client APIs but include an additional argument for the secure ID of the actual data owner.

      Backup-aware Software (Data Owner) Active Backup Client
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C1318E0A-0104-51DA-98BB-E92286F10E0D-GENID-1-12-1-28-1-1-4-1-3-1-5-1-3-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-C1318E0A-0104-51DA-98BB-E92286F10E0D-GENID-1-12-1-28-1-1-4-1-3-1-5-1-3-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Backup and Restore TypesBackup works by copying files (installed applications, Secure ID and data) from a Symbian device to a PC. Restore works by copying previously backed up files from the PC to the Symbian device. This section describes the different types of backup and restore.

      Note: In each of the following sections, the backup process is explained. The restore process works in the same way, but it is a process from a PC to a device.

      Base and incremental backup and restore

      For an easy and quick backup and restore, the Symbian platform implements base and incremental backups. A base backup (sometimes described as a full backup) is a backup of all or part of a drive that includes all the selected files. An incremental backup is a backup of all or part of a drive that only includes files that are new or changed since a previous backup. An incremental backup is smaller than a base backup and takes less time.

      There are (at least) two possible patterns of use for incremental backups:

      • The first pattern involves taking one base backup and then a series of incremental backups with each increment including only the files that are new or changed since the last increment. This pattern minimizes the time taken for each increment but has some drawbacks for restoring private files (because all the increments are required for restores).

      • The second pattern involves taking one base backup and then a series of incremental backups with each increment including only the files that are new or changed since the base backup. In this pattern, the time taken for an incremental backup is not minimized and may approach the time taken for a base backup but a restore operation only requires the base and a single increment.

      The choice of which pattern to use is made by the PC software - not by the phone software.

      Note: An incremental backup cannot be created purely based on a date and time stamp. If a new file is added with an old time-stamp, a time-based increment would omit it. Therefore, any incremental backup requires a list of the files included in the preceding backup.

      Full and partial backup and restore

      By default, a backup (whether base or incremental) aims to include all files on a specified drive. In practice, the application developer may only care about data belonging to one or more specific applications. By omitting other data files the time taken for the backup (or restore) is reduced.

      An additional benefit of partial backup and restore is that a data owner may be able to participate in backup or restore without requiring all file locks to be freed. For example, if a data owner only deals with its own private files, it is possible to back up its data in isolation. This allows backups to have less impact on the application developer.

      Active and passive backup and restore

      Based on the types of the data owner, backup and restore can be passive, active or active proxy:

      • Active backup: The data owner application or server must implement Active Backup Client and registers with the Backup Engine using a registration file (see Backup Registration Files). The Backup Engine starts the registered process for active backup if not already started. The data owning process then responds to a central signal when a backup or restore operation takes place and actively provides its private data to or receives it from the Backup Engine. This requires that the data-owning process include specific code to take part in backup and restore, and that it must be running when a backup or restore takes place. In this model the data-owning process registers with the Backup Engine but exercises complete control of which data is backed up and restored.

      • Passive backup: The data owner application or server registers with the Backup Engine using a backup registration file which lists the files and directories to be backed up. The data-owning process then releases file locks. The files are backed up by the Backup Engine. The Backup Engine has the required capability to access private data files belonging to other processes.

        Passive backup is very simple for application developers to implement – all that is required is a backup registration file. Active backup requires more effort to implement but provides the data-owning process with more control over the data backed up and restored.

      • Active Proxy: Some processes manage data on behalf of other data owners and they are referred to as active proxy data owners. For example, the Central Repository manages data in repositories for other data owners.

        Active proxy data owners must have a backup registration file that registers them as active data owners. They must implement Active Backup Client methods that allow the Backup Engine to request backup data or supply restore data associated with the secure ID of the actual data owner. The APIs to request or supply data are similar to the Active Backup Client APIs but include an additional argument for the secure ID of the actual data owner.

      Backup-aware Software (Data Owner) Active Backup Client
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C156607A-5929-5971-8077-E8974FA43B3C.dita --- a/Symbian3/PDK/Source/GUID-C156607A-5929-5971-8077-E8974FA43B3C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C156607A-5929-5971-8077-E8974FA43B3C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Basics: Store and Restore Object using Clipboard -
      Download

      Click +

      Download

      Click on the following link to download the example: Clipboard.zip

      Download some additional files required by the example: CommonFramework

      Click: browse to view the example code.

      View the additional files: browse.
      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C1612638-4C5A-5C37-AF1A-16F9EBEF09FD.dita --- a/Symbian3/PDK/Source/GUID-C1612638-4C5A-5C37-AF1A-16F9EBEF09FD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C1612638-4C5A-5C37-AF1A-16F9EBEF09FD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,182 +1,159 @@ - - - - - -transient: -transient server exampleThis example demonstrates the use of transient servers that are -started on demand when a client needs to use the server, and exit after the -last client has disconnected, sometimes after a short delay. It demonstrates -how to handle startup and shutdown situations correctly. -
      Class summary
        -
      • RSessionBase - Client-side handle to a session with -a server.

      • -
      • CTimer - Base class for a timer active object.

      • -
      • CServer2 - Abstract base class for servers (version -2).

      • -
      • CSession2 - Represents a session (version 2) for -a client thread on the server-side.

      • -
      -
      Download

      Click -on the following link to download the example: transient.zip

      click: browse to view the example code.

      -
      Background

      The -client-server framework is an important part of the Symbian platform. There -is a level of complexity in implementing a server for an application, but -this example provides client interface code and server code that can be re-used -in your own implementations.

      Symbian platform servers are of three -basic types:

        -
      • Transient servers: these -are started on demand when a client needs the server, and exit after the last -client has disconnected - sometimes after a short delay, for example, the -socket server.

      • -
      • System servers: these -are started as part of the system boot process, for example, the kernel, the -file server, the window server etc.

      • -
      • Local servers: these -are "local" to a process to provide multi-threaded access to thread-specific -resources, for example, the posix server (in the C Standard Library).

      • -
      -
      Description

      The -transient server supplied here runs in a thread in its own process. This gives -the server independence from its clients. This is important because if the -client were to create the server as a separate thread within its own process, -then the server would exit, i.e. terminate, if its owning process terminated. -This would be true even if clients in other processes were still connected -to it.

      Equally as important:

        -
      • a client does not explicitly -need to start the server prior to connecting; this is done by the client interface.

      • -
      • the server terminates -when not in use shortly after the last client disconnects.

      • -
      • the code handles concurrency -issues, the most common of which is handling the case where the server is -closing down or exiting at the same time that another client is trying to -connect.

      • -

      The example consists of four main parts:

        -
      • Client interface: this -is a DLL (t-client.dll) that is used by clients.

        The -client interface effectively forms the gateway to the server. All requests -to the server, including requests to connect to it are routed through this.

        The -client interface defines just one class: RMySession, derived -from RSessionBase. An RSessionBase (derived) -object represents the client side session and forms a channel of communication -between the client and the server. Requests to the server, and information -received from the server are channelled through this object. Note that the -client side session object is mirrored by a server side session object; an -instance of a class derived from CSession2, which in this -server is called CMySession.

        The client calls Connect() to -set up a connection to the server. This function attempts to start the server -if necessary and then issues a request to create a session with the server. -If the server fails to start, or a session cannot be created then this is -reported back.Simultaneous launching of two server processes is also detected, -with the second attempt failing with KErrAlreadyExists. -On successful completion the connection is established, and a session is created -with the server.

        The client uses the Send() method -to send messages to the server and the Receive() method to -request information from the server. Send() is implemented -by calling down to the synchronous variant of RSessionBase::SendReceive() in -the base class. Synchronous means that it does not return until the server -has dealt with the request.

        Send() passes an operation -code (or function number) identifying the request and a descriptor containing -information to the server. The descriptor is wrapped into a TIpcArgs object. -In practice, your client interface would probably be richer, having variants -of the Send() function that take more than one parameter. -You might also choose to have asynchronous variants of Send(); -your client code (not the client interface) would then need to use active -objects to deal with this.

        Receive() is implemented -by calling down to the asynchronous variant of RSessionBase::SendReceive() in -the base class. Asynchronous means that the call returns immediately, but -the request itself may not complete until some time later.

        Receive() passes -an operation code (or function number) identifying the request, a descriptor -into which the server will place the information, and a TRequestStatus object, -which the server will use to report how the request completes. The descriptor -is wrapped into a TIpcArgs object. Again, you might want -a richer client interface; perhaps different function names to represent different -request types.

        CancelReceive() allows the client -to cancel a pending Receive() request. It is usual to provide -some mechanism to cancel asynchronous requests. This is implemented by calling -down into the asynchronous variant of RSessionBase::SendReceive() in -the base class. Note: the Receive() method simply passes -an operation code (or function number) and no data.

        The operation -codes (or function numbers) are defined by an enum in the header file clientserver.h. -This file is included in both the client interface code and server code as -both need access to these common symbols.

      • -
      • Server: this is an EXE -(t-server.exe) that runs in its own process, and E32Main() -is the entry point. After setting up heap checking (in debug builds only) -the implementation creates a cleanup stack and then executes the main body -of the code inside a trap harness.

        The server code implements several -classes:

        CMyServer: this class derives from the -class CServer2. The main role of this class is to handle -messages sent by client threads; this includes requests from clients for connection -to the server. The connection is established by starting a session with the -server. The session is represented by a session object, in this case the CMySession object.

        Once -the CMyServer object has been created, the active scheduler -can be started by the call to CActiveScheduler::Start(). -This call will not return until the active scheduler is stopped by the CShutdown timer, -which is primed after the last client has disconnected. In simple terms, the -active scheduler is a wait loop. It sits inactive until it receives a message -from (potential) clients (or until the timer completes and stops the active -scheduler). Messages that represent requests for connection result in the -creation of a session. Other messages are passed to the relevant CMySession active -object.

        CMySession: one of these objects is created -for each session, i.e. as a result of a request by a client for connection -to the server. Once sessions have been created, requests received by CMyServer are -then forwarded to the corresponding session, and specifically to the virtual -function ServiceL(), which handles Send(), Receive() and CancelReceive() requests.

        CShutdown: this class represents a timer that is started -before the first client has connected, and after the last client has disconnected. -The timer is stopped once the server has at least one client attached to it. -If the server has no clients, then there is 2 second interval before the server -terminates. This is implemented as an active object.

      • -
      • Test code:this corresponds -to the client, and uses the client interface to communicate with the server -- application developers should make use of the principles applied here and -include them into their own client code.

      • -
      • bld.inf: which is a -component description file.

      • -

      Related APIs

        -
      • CActiveScheduler::Start()

      • -
      • CMySession

      • -
      • CServer2 - Abstract base class for servers (version -2).

      • -
      • CSession2 - Represents a session (version 2) for -a client thread on the server-side.

      • -
      • KErrAlreadyExists - System wide error code -11 : -an object already exists.

      • -
      • RSessionBase - Client-side handle to a session with -a server.

      • -
      • RSessionBase::SendReceive()

      • -
      • TIpcArgs - A Version 2 client/server class that -clients use to package the arguments to be sent to a server.

      • -
      • TRequestStatus - Indicates the completion status -of a request made to a service provider.

      • -
      -
      Building and -configuring

      To build the example:

        -
      • You can build the example -from your IDE or the command line.

        If you use an IDE, import the bld.inf file -of the example into your IDE, and use the build command of the IDE.

        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:

        bldmake -bldfiles

        abld build

        How to use bldmake and How to use abld describe -how to use the SBSv1 build tools.

      • -
      • For the emulator, the -example builds the following executables :

        t-client.dll

        t-server.exe

        t-test.exe (test executable)

        t-testc.dll (test -client)

        in the epoc32\release\winscw\<udeb or urel>\ folder.

      • -
      -
      -Platform -security -Build tools -guide -How - to build DLLs -MMP file -syntax + + + + + +transient: transient server exampleThis example demonstrates the use of transient servers +that are started on demand when a client needs to use the server, +and exit after the last client has disconnected, sometimes after a +short delay. It demonstrates how to handle startup and shutdown situations +correctly. +
      Class +summary
        +
      • RSessionBase - Client-side handle to a session +with a server.

      • +
      • CTimer - Base class for a timer active object.

      • +
      • CServer2 - Abstract base class for servers +(version 2).

      • +
      • CSession2 - Represents a session (version +2) for a client thread on the server-side.

      • +
      +
      Download

      Click on the following link to download the example: transient.zip

      click: browse to view the example code.

      +
      Background

      The client-server framework is an important part of the Symbian +platform. There is a level of complexity in implementing a server +for an application, but this example provides client interface code +and server code that can be re-used in your own implementations.

      Symbian platform servers are of three basic types:

        +
      • Transient +servers: these are started on demand when a client needs the server, +and exit after the last client has disconnected - sometimes after +a short delay, for example, the socket server.

      • +
      • System servers: these are started as part of the system boot process, for example, +the kernel, the file server, the window server etc.

      • +
      • Local servers: these are "local" to a process to provide multi-threaded access +to thread-specific resources, for example, the posix server (in the +C Standard Library).

      • +
      +
      Description

      The transient server supplied here runs in a thread in its own +process. This gives the server independence from its clients. This +is important because if the client were to create the server as a +separate thread within its own process, then the server would exit, +i.e. terminate, if its owning process terminated. This would be true +even if clients in other processes were still connected to it.

      Equally as important:

        +
      • a client does +not explicitly need to start the server prior to connecting; this +is done by the client interface.

      • +
      • the server terminates +when not in use shortly after the last client disconnects.

      • +
      • the code handles +concurrency issues, the most common of which is handling the case +where the server is closing down or exiting at the same time that +another client is trying to connect.

      • +

      The example consists of four main parts:

        +
      • Client interface: +a DLL (t-client.dll) that is used by clients.

        The client interface effectively forms the gateway to the server. +All requests to the server, including requests to connect to it are +routed through this.

        The client interface defines just one +class: RMySession, derived from RSessionBase. An RSessionBase (derived) object represents the +client side session and forms a channel of communication between the +client and the server. Requests to the server, and information received +from the server are channelled through this object. Note that the +client side session object is mirrored by a server side session object; +an instance of a class derived from CSession2, +which in this server is called CMySession.

        The client calls Connect() to set up a connection +to the server. This function attempts to start the server if necessary +and then issues a request to create a session with the server. If +the server fails to start, or a session cannot be created then this +is reported back.Simultaneous launching of two server processes is +also detected, with the second attempt failing with KErrAlreadyExists. On successful completion the connection is established, and a session +is created with the server.

        The client uses the Send() method to send messages to the server and the Receive() method to request information from the server. Send() is implemented by calling down to the synchronous variant of RSessionBase::SendReceive() in the base class. Synchronous +means that it does not return until the server has dealt with the +request.

        Send() passes an operation code +(or function number) identifying the request and a descriptor containing +information to the server. The descriptor is wrapped into a TIpcArgs object. In practice, your client interface would +probably be richer, having variants of the Send() function that take more than one parameter. You might also choose +to have asynchronous variants of Send(); your client +code (not the client interface) would then need to use active objects +to deal with this.

        Receive() is implemented +by calling down to the asynchronous variant of RSessionBase::SendReceive() in the base class. Asynchronous means that the call returns immediately, +but the request itself may not complete until some time later.

        Receive() passes an operation code (or function +number) identifying the request, a descriptor into which the server +will place the information, and a TRequestStatus object, which the server will use to report how the request completes. +The descriptor is wrapped into a TIpcArgs object. +Again, you might want a richer client interface; perhaps different +function names to represent different request types.

        CancelReceive() allows the client to cancel a pending Receive() request. It is usual to provide some mechanism +to cancel asynchronous requests. This is implemented by calling down +into the asynchronous variant of RSessionBase::SendReceive() in the base class. Note: the Receive() method simply +passes an operation code (or function number) and no data.

        The operation codes (or function numbers) are defined by an enum +in the header file clientserver.h. This file +is included in both the client interface code and server code as both +need access to these common symbols.

      • +
      • Server: an EXE +(t-server.exe) that runs in its own process, +and E32Main() is the entry point. After setting up heap checking (in +debug builds only) the implementation creates a cleanup stack and +then executes the main body of the code inside a trap harness.

        The server code implements several classes:

        CMyServer: this class derives from the class CServer2. The main role of this class is to handle messages sent by client +threads; this includes requests from clients for connection to the +server. The connection is established by starting a session with the +server. The session is represented by a session object, in this case +the CMySession object.

        Once the CMyServer object has been created, the active scheduler +can be started by the call to CActiveScheduler::Start(). This call will not return until the active scheduler is stopped +by the CShutdown timer, which is primed after the +last client has disconnected. In simple terms, the active scheduler +is a wait loop. It sits inactive until it receives a message from +(potential) clients (or until the timer completes and stops the active +scheduler). Messages that represent requests for connection result +in the creation of a session. Other messages are passed to the relevant CMySession active object.

        CMySession: one of these objects is created for each session, i.e. as a result +of a request by a client for connection to the server. Once sessions +have been created, requests received by CMyServer are then forwarded to the corresponding session, and specifically +to the virtual function ServiceL(), which handles Send(), Receive() and CancelReceive() requests.

        CShutdown: this class represents +a timer that is started before the first client has connected, and +after the last client has disconnected. The timer is stopped once +the server has at least one client attached to it. If the server has +no clients, then there is 2 second interval before the server terminates. +This is implemented as an active object.

      • +
      • Test code: corresponds +to the client, and uses the client interface to communicate with the +server - application developers should make use of the principles +applied here and include them into their own client code.

      • +
      • bld.inf: a component +description file.

      • +

      Related APIs

        +
      • CActiveScheduler::Start()

      • +
      • CMySession

      • +
      • CServer2 - Abstract base class for servers +(version 2).

      • +
      • CSession2 - Represents a session (version +2) for a client thread on the server-side.

      • +
      • KErrAlreadyExists - System wide error code +-11 : an object already exists.

      • +
      • RSessionBase - Client-side handle to a session +with a server.

      • +
      • RSessionBase::SendReceive()

      • +
      • TIpcArgs - A Version 2 client/server class +that clients use to package the arguments to be sent to a server.

      • +
      • TRequestStatus - Indicates the completion +status of a request made to a service provider.

      • +
      +
      Building +and configuring

      To build the example:

        +
      • You can build +the example from your IDE or the command line.

        If you use +an IDE, import the bld.inf file of the example +into your IDE, and use the build command of the IDE.

        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:

        bldmake bldfiles

        abld +build

      • +
      • For the emulator, +the example builds the following executables :

        t-client.dll

        t-server.exe

        t-test.exe (test executable)

        t-testc.dll (test client)

        in the epoc32\release\winscw\<udeb or urel>\ folder.

      • +
      +
      +Platform +security
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C193535D-8756-5A2C-BD3A-280F7DDAF73E_d0e641357_href.jpg Binary file Symbian3/PDK/Source/GUID-C193535D-8756-5A2C-BD3A-280F7DDAF73E_d0e641357_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C193535D-8756-5A2C-BD3A-280F7DDAF73E_d0e654179_href.jpg Binary file Symbian3/PDK/Source/GUID-C193535D-8756-5A2C-BD3A-280F7DDAF73E_d0e654179_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C1A6477D-2130-5664-A845-898212F96381_d0e498070_href.png Binary file Symbian3/PDK/Source/GUID-C1A6477D-2130-5664-A845-898212F96381_d0e498070_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C1A6477D-2130-5664-A845-898212F96381_d0e505532_href.png Binary file Symbian3/PDK/Source/GUID-C1A6477D-2130-5664-A845-898212F96381_d0e505532_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C1B080D9-9C6C-520B-B73E-4EB344B1FC5E.dita --- a/Symbian3/PDK/Source/GUID-C1B080D9-9C6C-520B-B73E-4EB344B1FC5E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C1B080D9-9C6C-520B-B73E-4EB344B1FC5E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -62,7 +62,7 @@ holds settings and supports drawing to bitmapped devices and screens independent of the display.

      - +
      Colour Palette

      The Colour diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C213B26D-32EC-5CD9-956E-1C2143E5D0CA_d0e471503_href.jpg Binary file Symbian3/PDK/Source/GUID-C213B26D-32EC-5CD9-956E-1C2143E5D0CA_d0e471503_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C213B26D-32EC-5CD9-956E-1C2143E5D0CA_d0e477339_href.jpg Binary file Symbian3/PDK/Source/GUID-C213B26D-32EC-5CD9-956E-1C2143E5D0CA_d0e477339_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C218732C-E675-5116-96FE-2604495C2C92_d0e597089_href.png Binary file Symbian3/PDK/Source/GUID-C218732C-E675-5116-96FE-2604495C2C92_d0e597089_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C218732C-E675-5116-96FE-2604495C2C92_d0e615473_href.png Binary file Symbian3/PDK/Source/GUID-C218732C-E675-5116-96FE-2604495C2C92_d0e615473_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C218732C-E675-5116-96FE-2604495C2C92_d0e624983_href.png Binary file Symbian3/PDK/Source/GUID-C218732C-E675-5116-96FE-2604495C2C92_d0e624983_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C21BB0E4-7AF7-58E5-AAD6-8CE67399460C.dita --- a/Symbian3/PDK/Source/GUID-C21BB0E4-7AF7-58E5-AAD6-8CE67399460C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C21BB0E4-7AF7-58E5-AAD6-8CE67399460C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -28,7 +28,7 @@ More information about running the example is given in the build section of this document.

      Design

      The following block diagram describes the example in more detail.

      - +

      CCollector.exe is the Collector process. The user starts the Collector and creates an active scheduler and two global message queues. It also starts the Inverter process called Inverter.exe. The Collector creates one active object @@ -46,8 +46,9 @@ result to InverterOutQ.

      In the Collector process, the active object that monitors the InveterOutQ opens the message queue, receives the received words and displays them -in its console. It uses the NotifyDataAvailable(TRequestStatus&) API to monitor the queue for the next set of data.

      The Class diagram of the example is shown below

      - +in its console. It uses the NotifyDataAvailable(TRequestStatus&) API to monitor the queue for the next set of data.

      The Class +diagram of the example is shown below

      +
      Class summary
        @@ -57,8 +58,7 @@
      • CActive - The core class of the active object abstraction.

      -
      Build

      The Symbian -build process describes how to build this example application.

      The example builds an executable called Inverter.exe and Collector.exe in the standard locations.

      To run the example, first build Inverter.exe and start Collector.exe from the file system +

      Build

      The example builds an executable called Inverter.exe and Collector.exe in the standard locations.

      To run the example, first build Inverter.exe and start Collector.exe from the file system or from your IDE. After launching the .exes (and depending on the emulator you are using) you may need to navigate away from the application launcher or shell screen to view the console.

      A message input diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C23196E8-FDD3-4A10-9DA2-DA83A2AD49D9.dita --- a/Symbian3/PDK/Source/GUID-C23196E8-FDD3-4A10-9DA2-DA83A2AD49D9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C23196E8-FDD3-4A10-9DA2-DA83A2AD49D9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,26 +9,27 @@ --> -Applications -with a user interface -

      If you are developing an application with a user interface, consider -the following issues:

      +Applications with a user interface +

      If you are developing an application with a user interface, +consider the following issues:

        -
      • Other applications may have access to the information that -the user inputs.

      • -
      • A hostile application may lure the user to enter information -that belongs to another application.

      • +
      • Other applications may have access to the information +that the user inputs.

      • +
      • A hostile application may lure the user to enter +information that belongs to another application.

      -

      Password dialogs in particular should be designed so that the user easily -recognizes the currently running application.

      -
      User input -

      It is possible for the user to unintentionally enter incorrect data -that can interfere with the normal operation of the application. All input -should be checked and validated before processing. A one-time check may not -be enough because the content of data can change during processing, so it -is therefore advisable to quickly check the data every time it is used.

      +

      Password dialogs in particular should be designed so that the +user easily recognizes the currently running application.

      +
      User +input +

      It is possible for the user to unintentionally enter incorrect +data that can interfere with the normal operation of the application. +All input should be checked and validated before processing. A one-time +check may not be enough because the content of data can change during +processing, so it is therefore advisable to quickly check the data +every time it is used.

      The following figure shows an example of input processing phases.

      -Examples of input processing +Examples of input processing

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C244E0D1-DF89-5C86-9C4C-419900BE0DDA.dita --- a/Symbian3/PDK/Source/GUID-C244E0D1-DF89-5C86-9C4C-419900BE0DDA.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -CapImportCheck Guide \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C253D792-7470-5D9F-B39B-1CF42438215A_d0e21325_href.png Binary file Symbian3/PDK/Source/GUID-C253D792-7470-5D9F-B39B-1CF42438215A_d0e21325_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C253D792-7470-5D9F-B39B-1CF42438215A_d0e23292_href.png Binary file Symbian3/PDK/Source/GUID-C253D792-7470-5D9F-B39B-1CF42438215A_d0e23292_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C2709212-FD91-5245-9A1D-0E8114D7B202.dita --- a/Symbian3/PDK/Source/GUID-C2709212-FD91-5245-9A1D-0E8114D7B202.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ - - - - - -cleanexport

      abld cleanexport ( ( [-c] | [-w] ) | ( [-k] [-v] ) )

      This command will erase the files created by the corresponding abld - export command.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C28FDA4B-0099-4258-8255-6CF7C44FD4E8_d0e95874_href.png Binary file Symbian3/PDK/Source/GUID-C28FDA4B-0099-4258-8255-6CF7C44FD4E8_d0e95874_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C28FDA4B-0099-4258-8255-6CF7C44FD4E8_d0e99993_href.png Binary file Symbian3/PDK/Source/GUID-C28FDA4B-0099-4258-8255-6CF7C44FD4E8_d0e99993_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C29FE12C-C412-40A8-A067-27C63A519D71.dita --- a/Symbian3/PDK/Source/GUID-C29FE12C-C412-40A8-A067-27C63A519D71.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C29FE12C-C412-40A8-A067-27C63A519D71.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,7 +14,7 @@ items. Choice list - +

      You can use the Choice list API in all GUI applications. It is a library API that provides an interface for constructing and using the choice list diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C2C9C55E-C09F-534A-9A00-A7BCE3BC1650_d0e430395_href.png Binary file Symbian3/PDK/Source/GUID-C2C9C55E-C09F-534A-9A00-A7BCE3BC1650_d0e430395_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C2C9C55E-C09F-534A-9A00-A7BCE3BC1650_d0e436240_href.png Binary file Symbian3/PDK/Source/GUID-C2C9C55E-C09F-534A-9A00-A7BCE3BC1650_d0e436240_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C2D6BAB9-89BA-4E8D-82B4-2FAE04B9086C_d0e76308_href.png Binary file Symbian3/PDK/Source/GUID-C2D6BAB9-89BA-4E8D-82B4-2FAE04B9086C_d0e76308_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C2D6BAB9-89BA-4E8D-82B4-2FAE04B9086C_d0e80521_href.png Binary file Symbian3/PDK/Source/GUID-C2D6BAB9-89BA-4E8D-82B4-2FAE04B9086C_d0e80521_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C2D99C88-09C7-55FA-AF95-3F689BA27484_d0e512272_href.jpg Binary file Symbian3/PDK/Source/GUID-C2D99C88-09C7-55FA-AF95-3F689BA27484_d0e512272_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C2D99C88-09C7-55FA-AF95-3F689BA27484_d0e519734_href.jpg Binary file Symbian3/PDK/Source/GUID-C2D99C88-09C7-55FA-AF95-3F689BA27484_d0e519734_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C2FAEBB2-4A1A-5BB0-9670-4801525CBC6A.dita --- a/Symbian3/PDK/Source/GUID-C2FAEBB2-4A1A-5BB0-9670-4801525CBC6A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C2FAEBB2-4A1A-5BB0-9670-4801525CBC6A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,461 +1,477 @@ - - - - - -SQL Index -TipsThis document includes several tips for using SQL indexes. -

      Introduction

      You can use indexes to speed up access. -You create indexes automatically using PRIMARY KEY and UNIQUE.

      Intended -audience:

      This document is intended to be used by Symbian platform -licensees and third party application developers.

      -
      Use an Index -to Speed up Access

      Suppose you have a table like this:

      -CREATE TABLE demo5( - id INTEGER, - content BLOB -); -

      Further suppose that this table contains thousands or millions -of rows and you want to access a single row with a particular ID:

      -SELECT content FROM demo5 WHERE id=? -

      The only want that SQLite can perform this query, and be certain -to get every row with the chosen ID, is to examine every single row, check -the ID of that row, and return the content if the ID matches. Examining every -single row this way is called a full table scan.

      Reading and -checking every row of a large table can be very slow, so you want to avoid -full table scans. The usual way to do this is to create an index on the column -you are searching against. In the example above, an appropriate index would -be this:

      -CREATE INDEX demo5_idx1 ON demo5(id); -

      With an index on the ID column, SQLite is able to use a binary -search to locate entries that contain a particular value of ID. So if the -table contains a million rows, the query can be satisfied with about 20 accesses -rather than 1000000 accesses. This is a huge performance improvement.

      One -of the features of the SQL language is that you do not have to figure out -what indexes you may need in advance of coding your application. It is perfectly -acceptable, even preferable, to write the code for your application using -a database without any indexes. Then once the application is running and you -can make speed measurements, add whatever indexes are needed in order to make -it run faster.

      When you add indexes, the query optimizer within the -SQL compiler is able to find new more efficient bytecode procedures for carrying -out the operations that your SQL statements specify. In other words, by adding -indexes late in the development cycle you have the power to completely reorganize -your data access patterns without changing a single line of code.

      -
      Create Indexes -Automatically Using PRIMARY KEY and UNIQUE

      Any column of a table -that is declared to be the PRIMARY KEY or that is declared UNIQUE will be -indexed automatically. There is no need to create a separate index on that -column using the CREATE INDEX statement. So, for example, this table declaration:

      -CREATE TABLE demo39a( - id INTEGER, - content BLOB -); - -CREATE INDEX demo39_idx1 ON demo39a(id); -

      Is roughly equivalent to the following:

      -CREATE TABLE demo39b( - id INTEGER UNIQUE, - content BLOB -); -

      The two examples above are “roughly” equivalent, but not exactly -equivalent. Both tables have an index on the ID column. In the first case, -the index is created explicitly. In the second case, the index is implied -by the UNIQUE keyword in the type declaration of the ID column. Both table -designs use exactly the same amount of disk space, and both will run queries -such as

      -SELECT content FROM demo39 WHERE id=? -

      using exactly the same bytecode. The only difference is that -table demo39a lets you insert multiple rows with the same ID whereas table -demo39b will raise an exception if you try to insert a new row with the same -ID as an existing row.

      If you use the UNIQUE keyword in the CREATE -INDEX statement of demo39a, like this:

      -CREATE UNIQUE INDEX demo39_idx1 ON demo39a(id); -

      Then both table designs really would be exactly the same in -every way. In fact, whenever SQLite sees the UNIQUE keyword on a column type -declaration, all it does is create an automatic unique index on that column.

      The -PRIMARY KEY modifier on a column type declaration works like UNIQUE; it causes -a unique index to be created automatically. The main difference is that you -are only allowed to have a single PRIMARY KEY. This restriction of only allowing -a single PRIMARY KEY is part of the official SQL language definition.

      The -idea is that a PRIMARY KEY is used to order the rows on disk. Some SQL database -engines actually implement PRIMARY KEYs this way. But with SQLite, a PRIMARY -KEY is like any other UNIQUE column, with only one exception: INTEGER PRIMARY -KEY is a special case which is handled differently, as described in the next -section.

      -
      Use Multi-Column -Indexes

      SQLite is able to make use of multi-column indexes. The -rule is that if an index is over columns X 0 , X 1 , X 2 , -..., X n of some table, then the index can be used if the -WHERE clause contains equality constraints for some prefix of those columns X 0 , X 1 , X 2 , -..., X i where i is less than n.

      As -an example, suppose you have a table and index declared as follows:

      -CREATE TABLE demo314(a,b,c,d,e,f,g); -CREATE INDEX demo314_idx ON demo314(a,b,c,d,e,f); -

      Then the index might be used to help with a query that contained -a WHERE clause like this:

      -... WHERE a=1 AND b='Smith' AND c=1 -

      All three terms of the WHERE clause would be used together -with the index in order to narrow the search. But the index could not be used -if there WHERE clause said:

      -... WHERE b='Smith' AND c=1 -

      The second WHERE clause does not contain equality terms for -a prefix of the columns in the index because it omits a term for the “a” column.

      In -a case like this:

      -... WHERE a=1 AND c=1 -

      Only the “a=1” term in the WHERE clause could be used to help -narrow the search. The “c=1” term is not part of the prefix of terms in the -index which have equality constraints because there is no equality constraint -on the “b” column.

      SQLite only allows a single index to be used per -table within a simple SQL statement. For UPDATE and DELETE statements, this -means that only a single index can ever be used, since those statements can -only operate on a single table at a time.

      In a simple SELECT statement -multiple indexes can be used if the SELECT statement is a join – one index -per table in the join. In a compound SELECT statement (two or more SELECT -statements connected by UNION or INTERSECT or EXCEPT) each SELECT statement -is treated separately and can have its own indexes. Likewise, SELECT statements -that appear in subexpressions are treated separately.

      Some other SQL -database engines (for example PostgreSQL) allow multiple indexes to be used -for each table in a SELECT. For example, if you had a table and index in PostgreSQL -like this:

      -CREATE TABLE pg1(a INT, b INT, c INT, d INT); -CREATE INDEX pg1_ix1 ON pg1(a); -CREATE INDEX pg1_ix2 ON pg1(b); -CREATE INDEX pg1_ix3 ON pg1(c); -

      And if you were to run a query like the following:

      -SELECT d FROM pg1 WHERE a=5 AND b=11 AND c=99; -

      Then PostgreSQL might attempt to optimize the query by using -all three indexes, one for each term of the WHERE clause.

      SQLite does -not work this way. SQLite is compelled to select a single index to use in -the query. It might select any of the three indexes shown, depending on which -one the optimizer things will give the best speedup. But in every case it -will only select a single index and only a single term of the WHERE clause -will be used.

      SQLite prefers to use a multi-column index such as this:

      -CREATE INDEX pg1_ix_all ON pg1(a,b,c); -

      If the pg1_ix_all index is available for use when the SELECT -statement above is prepared, SQLite will likely choose it over any of the -single-column indexes because the multi-column index is able to make use of -all 3 terms of the WHERE clause.

      You can trick SQLite into using multiple -indexes on the same table by rewriting the query. Instead of the SELECT statement -shown above, if you rewrite it as this:

      -SELECT d FROM pg1 WHERE RowID IN ( - SELECT RowID FROM pg1 WHERE a=5 - INTERSECT - SELECT RowID FROM pg1 WHERE b=11 - INTERSECT - SELECT RowID FROM pg1 WHERE c=99 -) -

      Then each of the individual SELECT statements will using a -different single-column index and their results will be combined by the outer -SELECT statement to give the correct result. The other SQL database engines -like PostgreSQL that are able to make use of multiple indexes per table do -so by treating the simpler SELECT statement shown first as if they where the -more complicated SELECT statement shown here.

      -
      Use Inequality -Constraints on the Last Index Term

      Terms in the WHERE clause of -a query or UPDATE or DELETE statement are mostly likely to trigger the use -of an index if they are an equality constraint – in other words if the term -consists of the name of an indexed column, an equal sign (“=”), and an expression.

      So, -for example, if you have a table and index that look like this:

      -CREATE TABLE demo315(a,b,c,d); -CREATE INDEX demo315_idx1 ON demo315(a,b,c); -

      And a query like this:

      -SELECT d FROM demo315 WHERE a=512; -

      The single “a=512” term of the WHERE clause qualifies as an -equality constraint and is likely to provoke the use of the demo315_idx1 index.

      SQLite -supports two other kinds of equality constraints. One is the IN operator:

      -SELECT d FROM demo315 WHERE a IN (512,1024); -SELECT d FROM demo315 WHERE a IN (SELECT x FROM someothertable); -

      There other is the IS NULL constraint:

      -SELECT d FROM demo315 WHERE a IS NULL; -

      SQLite allows at most one term of an index to be constrained -by an inequality such as less than “<”, greater than “>”, less than or -equal to “<=”, or greater than or equal to “>=”.

      The column that -the inequality constrains will be the right-most term of the index that is -used. So, for example, in this query:

      -SELECT d FROM demo315 WHERE a=5 AND b>11 AND c=1; -

      Only the first two terms of the WHERE clause will be used -with the demo315_idx1 index. The third term, the “c=1” constraint, cannot -be used because the “c” column occurs to the right of the “b” column in the -index and the “b” column is constrained by an inequality.

      SQLite allows -up to two inequalities on the same column as long as the two inequalities -provide an upper and lower bound on the column. For example, in this query:

      -SELECT d FROM demo315 WHERE a=5 AND b>11 AND b<23; -

      All three terms of the WHERE clause will be used because the -two inequalities on the “b” column provide an upper and lower bound on the -value of “b”.

      SQLite will only use the four inequalities mentioned -above to help constrain a search: “<”, “>”, “<=”, and “>=”. Other inequality -operators such as not equal to (“!=” or “<>”) and NOT NULL are not helpful -to the query optimizer and will never be used to control an index and help -make the query run faster.

      -
      Use Indexes -To Help ORDER BY Clauses Evaluate Faster

      The default method for -evaluating an ORDER BY clause in a SELECT statement is to first evaluate the -SELECT statement and store the results in a temporary tables, then sort the -temporary table according to the ORDER BY clause and scan the sorted temporary -table to generate the final output.

      This method always works, but -it requires three passes over the data (one pass to generate the result set, -a second pass to sort the result set, and a third pass to output the results) -and it requires a temporary storage space sufficiently large to contain the -entire results set.

      Where possible, SQLite will avoid storing and -sorting the result set by using an index that causes the results to emerge -from the query in sorted order in the first place.

      The way to get -SQLite to use an index for sorting is to provide an index that covers the -same columns specified in the ORDER BY clause. For example, if the table and -index are like this:

      -CREATE TABLE demo316(a,b,c,data); -CREATE INDEX idx316 ON demo316(a,b,c); -

      And you do a query like this:

      -SELECT data FROM demo316 ORDER BY a,b,c; -

      SQLite will use the idx316 index to implement the ORDER BY -clause, obviating the need for temporary storage space and a separate sorting -pass.

      An index can be used to satisfy the search constraints of a -WHERE clause and to impose the ORDER BY ordering of outputs all at once. The -trick is for the ORDER BY clause terms to occur immediately after the WHERE -clause terms in the index. For example, one can write:

      -SELECT data FROM demo316 WHERE a=5 ORDER BY b,c; -

      The “a” column is used in the WHERE clause and the immediately -following terms of the index, “b” and “c” are used in the ORDER BY clause. -So in this case the idx316 index would be used both to speed up the search -and to satisfy the ORDER BY clause.

      This query also uses the idx316 -index because, once again, the ORDER BY clause term “c” immediate follows -the WHERE clause terms “a” and “b” in the index:

      -SELECT data FROM demo316 WHERE a=5 AND b=17 ORDER BY c; -

      But now consider this:

      -SELECT data FROM demo316 WHERE a=5 ORDER BY c; -

      Here there is a gap between the ORDER BY term “c” and the -WHERE clause term “a”. So the idx316 index cannot be used to satisfy both -the WHERE clause and the ORDER BY clause. The index will be used on the WHERE -clause and a separate sorting pass will occur to put the results in the correct -order.

      -
      Add Result -Columns To The End Of Indexes

      Queries will sometimes run faster -if their result columns appear in the right-most entries of an index. Consider -the following example:

      -CREATE TABLE demo317(a,b,c,data); -CREATE INDEX idx317 ON demo316(a,b,c); -

      A query where all result column terms appears in the index, -such as

      -SELECT c FROM demo317 WHERE a=5 ORDER BY b; -

      will typically run about twice as fast or faster than a query -that uses columns that are not in the index, e.g.

      -SELECT data FROM demo317 WHERE a=5 ORDER BY b; -

      The reason for this is that when all information is contained -within the index entry only a single search has to be made for each row of -output. But when some of the information is in the index and other parts are -in the table, first there must be a search for the appropriate index entry -then a separate search is made for the appropriate table row based on the -RowID found in the index entry. Twice as much searching has to be done for -each row of output generated.

      The extra query speed does not come -for free, however. Adding additional columns to an index makes the database -file larger. So when developing an application, the programmer will need to -make a space versus time trade-off to determine whether the extra columns -should be added to the index or not.

      Note that if any column of the -result must be obtained from the original table, then the table row will have -to be searched for anyhow. There will be no speed advantage, so you might -as well omit the extra columns from the end of the index and save on storage -space. The speed-up described in this section can only be realized when every -column in a table is obtainable from the index.

      Taking into account -the results of the previous few sections, the best set of columns to put in -an index can be described as follows:

        -
      • The first columns in -the index should be columns that have equality constraints in the WHERE clause -of the query.

      • -
      • The second group of -columns should match the columns specified in the ORDER BY clause.

      • -
      • Add additional columns -to the end of the index that are used in the result set of the query.

      • -
      -
      Resolve Indexing -Ambiguities Using the Unary “+” Operator

      The SQLite query optimizer -usually does a good job of choosing the best index to use for a particular -query, especially if ANALYZE has been run to provide it with index performance -statistics. But occasions do arise where it is useful to give the optimizer -hints.

      One of the easiest ways to control the operation of the optimizer -is to disqualify terms in the WHERE clause or ORDER BY clause as candidates -for optimization by using the unary “+” operator.

      In SQLite, a unary -“+” operator is a no-op. It makes no change to its operand, even if the operand -is something other than a number. So you can always prefix a “+” to an expression -in without changing the meaning of the expression. As the optimizer will only -use terms in WHERE, HAVING, or ON clauses that have an index column name on -one side of a comparison operator, you can prevent such a term from being -used by the optimizer by prefixing the column name with a “+”.

      For -example, suppose you have a database with a schema like this:

      -CREATE TABLE demo321(a,b,c,data); -CREATE INDEX idx321a ON demo321(a); -CREATE INDEX idx321b ON demo321(b); -

      If you issue a query such as this:

      -SELECT data FROM demo321 WHERE a=5 AND b=11; -

      The query optimizer might use the “a=5” term with idx321a -or it might use the “b=11” term with the idx321b index. But if you want to -force the use of the idx321a index you can accomplish that by disqualifying -the second term of the WHERE clause as a candidate for optimization using -a unary “+” like this:

      -SELECT data FROM demo321 WHERE a=5 AND +b=11; -

      The “+” in front of the “b=11” turns the left-hand side of -the equals comparison operator into an expression instead of an indexed column -name. The optimizer will then not recognize that the second term can be used -with an index and so the optimizer is compelled to use the first “a=5” term.

      The -unary “+” operator can also be used to disable ORDER BY clause optimizations. -Consider this query:

      -SELECT data FROM demo321 WHERE a=5 ORDER BY b; -

      The optimizer has the choice of using the “a=5” term of the -WHERE clause with idx321a to restrict the search. Or it might choose to use -do a full table scan with idx321b to satisfy the ORDER BY clause and thus -avoid a separate sorting pass. You can force one choice or the other using -a unary “+”.

      To force the use of idx321a on the WHERE clause, add -the unary “+” in from of the “b” in the ORDER BY clause:

      -SELECT data FROM demo321 WHERE a=5 ORDER BY +b; -

      To go the other way and force the idx321b index to be used -to satisfy the ORDER BY clause, disqualify the WHERE term by prefixing with -a unary “+”:

      -SELECT data FROM demo321 WHERE +a=5 ORDER BY b; -

      The reader is cautioned not to overuse the unary “+” operator. -The SQLite query optimizer usually picks the best index without any outside -help. Premature use of unary “+” can confuse the optimizer and cause less -than optimal performance. But in some cases it is useful to be able override -the decisions of the optimizer, and the unary “+” operator is an excellent -way to do this when it becomes necessary.

      -
      Avoid Indexing -Large BLOBs and CLOBs

      SQLite stores indexes as b-trees. Each b-tree -node uses one page of the database file. In order to maintain an acceptable -fan-out, the b-tree module within SQLite requires that at least 4 entries -must fit on each page of a b-tree. There is also some overhead associated -with each b-tree page. So at the most there is about 250 bytes of space available -on the main b-tree page for each index entry.

      If an index entry exceeds -this allotment of approximately 250 bytes excess bytes are spilled to overflow -pages. There is no arbitrary limit on the number of overflow pages or on the -length of a b-tree entry, but for maximum efficiency it is best to avoid overflow -pages, especially in indexes. This means that you should strive to keep the -number of bytes in each index entry below 250.

      If you keep the size -of indexes significantly smaller than 250 bytes, then the b-tree fan-out is -increased and the binary search algorithm used to search for entries in an -index has fewer pages to examine and therefore runs faster. So the fewer bytes -used in each index entry the better, at least from a performance perspective.

      For -these reasons, it is recommended that you avoid indexing large BLOBs and CLOBs. -SQLite will continue to work when large BLOBs and CLOBs are indexed, but there -will be a performance impact.

      On the other hand, if you need to lookup -entries using a large BLOB or CLOB as the key, then by all means use an index. -An index on a large BLOB or CLOB is not as fast as an index using more compact -data types such as integers, but it is still many order of magnitude faster -than doing a full table scan. So to be more precise, the advice of this section -is that you should design your applications so that you do not need to lookup -entries using a large BLOB or CLOB as the key. Try to arrange to have compact -keys consisting of short strings or integers.

      Note that many other -SQL database engines disallow the indexing of BLOBs and CLOBs in the first -place. You simple cannot do it. SQLite is more flexible that most in that -it does allow BLOBs and CLOBs to be indexed and it will use those indexes -when appropriate. But for maximum performance, it is best to use smaller search -keys.

      -
      Avoid Excess -Indexes

      Some developers approach SQL-based application development -with the attitude that indexes never hurt and that the more indexes you have, -the faster your application will run. This is definitely not the case. There -is a costs associated with each new index you create:

        -
      • Each new index takes -up additional space in the database file. The more indexes you have, the larger -your database files will become for the same amount of data.

      • -
      • Every INSERT and UPDATE -statement modifies both the original table and all indexes on that table. -So the performance of INSERT and UPDATE decreases linearly with the number -of indexes.

      • -
      • Compiling new SQL statements -using Prepare() takes longer when there are more indexes -for the optimizer to choose between.

      • -
      • Surplus indexes give -the optimizer more opportunities to make a bad choice.

      • -

      Your policy on indexes should be to avoid them wherever you can. -Indexes are powerful medicine and can work wonders to improve the performance -of a program. But just as too many drugs can be worse than none at all, so -also can too many indexes cause more harm than good.

      When building -a new application, a good approach is to omit all explicitly declared indexes -in the beginning and only add indexes as needed to address specific performance -problems.

      Take care to avoid redundant indexes. For example, consider -this schema:

      -CREATE TABLE demo323a(a,b,c); -CREATE INDEX idx323a1 ON demo323(a); -CREATE INDEX idx323a2 ON demo323(a,b); -

      The idx323a1 index is redundant and can be eliminated. Anything -that the idx323a1 index can do the idx323a2 index can do better.

      Other -redundancies are not quite as apparent as the above. Recall that any column -or columns that are declared UNIQUE or PRIMARY KEY (except for the special -case of INTEGER PRIMARY KEY) are automatically indexed. So in the following -schema:

      -CREATE TABLE demo323b(x TEXT PRIMARY KEY, y INTEGER UNIQUE); -CREATE INDEX idx323b1 ON demo323b(x); -CREATE INDEX idx323b2 ON demo323b(y); -

      Both indexes are redundant and can be eliminated with no loss -in query performance. Occasionally one sees a novice SQL programmer use both -UNIQUE and PRIMARY KEY on the same column:

      -CREATE TABLE demo323c(p TEXT UNIQUE PRIMARY KEY, q); -

      This has the effect of creating two indexes on the “p” column -– one for the UNIQUE keywords and another for the PRIMARY KEY keyword. Both -indexes are identical so clearly one can be omitted. A PRIMARY KEY is guaranteed -to always be unique so the UNIQUE keyword can be removed from the demo323c -table definition with no ambiguity or loss of functionality.

      It is -not a fatal error to create too many indexes or redundant indexes. SQLite -will continue to generate the correct answers but it may take longer to produce -those answers and the resulting database files might be a little larger. So -for best results, keep the number of indexes to a minimum.

      -
      Avoid Tables -and Indexes with an Excessive Number of Columns

      SQLite places no -arbitrary limits on the number of columns in a table or index. There are known -commercial applications using SQLite that construct tables with tens of thousands -of columns each. And these applications actually work.

      However the -database engine is optimized for the common case of tables with no more than -a few dozen columns. For best performance you should try to stay in the optimized -region. Furthermore, we note that relational databases with a large number -of columns are usually not well normalized. So even apart from performance -considerations, if you find your design has tables with more than a dozen -or so columns, you really need to rethink how you are building your application.

      There -are a number of places in Prepare() that run in time O(N2) -where N is the number of columns in the table. The constant of proportionality -is small in these cases so you should not have any problems for N of less -than one hundred but for N on the order of a thousand, the time to run Prepare() can -start to become noticeable.

      When the bytecode is running and it needs -to access the i-th column of a table, the values of the previous i-1 columns -must be accessed first. So if you have a large number of columns, accessing -the last column can be an expensive operation. This fact also argues for putting -smaller and more frequently accessed columns early in the table.

      There -are certain optimizations that will only work if the table has 30 or fewer -columns. The optimization that extracts all necessary information from an -index and never refers to the underlying table works this way. So in some -cases, keeping the number of columns in a table at or below 30 can result -in a 2-fold speed improvement.

      Indexes will only be used if they contain -30 or fewer columns. You can put as many columns in an index as you want, -but if the number is greater than 30, the index will never improve performance -and will never do anything but take up space in your database file.

      -
      -SQL Overview - -SQL Server -Guide -SQLite - -SQL DB Overview - -Avoid Transient -Tables -Prevent Datafile -Corruption - -SQL Insertion -Tips -SQL Schema -Tips -SQL Expressions - -SQL Statement -Tips -SQL Joins - - ANALYZE -Command - SQL WHERE -CLause Tips + + + + + +SQL Index TipsThis document includes several tips for using SQL indexes. +
      Introduction

      You can use indexes to speed up access. You create indexes automatically +using PRIMARY KEY and UNIQUE.

      Intended audience:

      This document is intended to be +used by Symbian platform licensees and third party application developers.

      +
      Use +an Index to Speed up Access

      Suppose you have a table like +this:

      +CREATE TABLE demo5( + id INTEGER, + content BLOB +); +

      Further suppose that this table contains thousands +or millions of rows and you want to access a single row with a particular +ID:

      +SELECT content FROM demo5 WHERE id=? +

      The only want that SQLite can perform this query, +and be certain to get every row with the chosen ID, is to examine +every single row, check the ID of that row, and return the content +if the ID matches. Examining every single row this way is called a full table scan.

      Reading and checking every row of a +large table can be very slow, so you want to avoid full table scans. +The usual way to do this is to create an index on the column you are +searching against. In the example above, an appropriate index would +be this:

      +CREATE INDEX demo5_idx1 ON demo5(id); +

      With an index on the ID column, SQLite is able to +use a binary search to locate entries that contain a particular value +of ID. So if the table contains a million rows, the query can be satisfied +with about 20 accesses rather than 1000000 accesses. This is a huge +performance improvement.

      One of the features of the SQL language +is that you do not have to figure out what indexes you may need in +advance of coding your application. It is perfectly acceptable, even +preferable, to write the code for your application using a database +without any indexes. Then once the application is running and you +can make speed measurements, add whatever indexes are needed in order +to make it run faster.

      When you add indexes, the query optimizer +within the SQL compiler is able to find new more efficient bytecode +procedures for carrying out the operations that your SQL statements +specify. In other words, by adding indexes late in the development +cycle you have the power to completely reorganize your data access +patterns without changing a single line of code.

      +
      Create +Indexes Automatically Using PRIMARY KEY and UNIQUE

      Any +column of a table that is declared to be the PRIMARY KEY or that is +declared UNIQUE will be indexed automatically. There is no need to +create a separate index on that column using the CREATE INDEX statement. +So, for example, this table declaration:

      +CREATE TABLE demo39a( + id INTEGER, + content BLOB +); + +CREATE INDEX demo39_idx1 ON demo39a(id); +

      Is roughly equivalent to the following:

      +CREATE TABLE demo39b( + id INTEGER UNIQUE, + content BLOB +); +

      The two examples above are “roughly” equivalent, but +not exactly equivalent. Both tables have an index on the ID column. +In the first case, the index is created explicitly. In the second +case, the index is implied by the UNIQUE keyword in the type declaration +of the ID column. Both table designs use exactly the same amount of +disk space, and both will run queries such as

      +SELECT content FROM demo39 WHERE id=? +

      using exactly the same bytecode. The only difference +is that table demo39a lets you insert multiple rows with the same +ID whereas table demo39b will raise an exception if you try to insert +a new row with the same ID as an existing row.

      If you use +the UNIQUE keyword in the CREATE INDEX statement of demo39a, like +this:

      +CREATE UNIQUE INDEX demo39_idx1 ON demo39a(id); +

      Then both table designs really would be exactly the +same in every way. In fact, whenever SQLite sees the UNIQUE keyword +on a column type declaration, all it does is create an automatic unique +index on that column.

      The PRIMARY KEY modifier on a column +type declaration works like UNIQUE; it causes a unique index to be +created automatically. The main difference is that you are only allowed +to have a single PRIMARY KEY. This restriction of only allowing a +single PRIMARY KEY is part of the official SQL language definition.

      The idea is that a PRIMARY KEY is used to order the rows on disk. +Some SQL database engines actually implement PRIMARY KEYs this way. +But with SQLite, a PRIMARY KEY is like any other UNIQUE column, with +only one exception: INTEGER PRIMARY KEY is a special case which is +handled differently, as described in the next section.

      +
      Use +Multi-Column Indexes

      SQLite is able to make use of multi-column +indexes. The rule is that if an index is over columns X 0 , X 1 , X 2 , ..., X n of some table, then the index can be used if the WHERE +clause contains equality constraints for some prefix of those columns X 0 , X 1 , X 2 , ..., X i where i is less than n.

      As +an example, suppose you have a table and index declared as follows:

      +CREATE TABLE demo314(a,b,c,d,e,f,g); +CREATE INDEX demo314_idx ON demo314(a,b,c,d,e,f); +

      Then the index might be used to help with a query +that contained a WHERE clause like this:

      +... WHERE a=1 AND b='Smith' AND c=1 +

      All three terms of the WHERE clause would be used +together with the index in order to narrow the search. But the index +could not be used if there WHERE clause said:

      +... WHERE b='Smith' AND c=1 +

      The second WHERE clause does not contain equality +terms for a prefix of the columns in the index because it omits a +term for the “a” column.

      In a case like this:

      +... WHERE a=1 AND c=1 +

      Only the “a=1” term in the WHERE clause could be used +to help narrow the search. The “c=1” term is not part of the prefix +of terms in the index which have equality constraints because there +is no equality constraint on the “b” column.

      SQLite only allows +a single index to be used per table within a simple SQL statement. +For UPDATE and DELETE statements, this means that only a single index +can ever be used, since those statements can only operate on a single +table at a time.

      In a simple SELECT statement multiple indexes +can be used if the SELECT statement is a join – one index per table +in the join. In a compound SELECT statement (two or more SELECT statements +connected by UNION or INTERSECT or EXCEPT) each SELECT statement is +treated separately and can have its own indexes. Likewise, SELECT +statements that appear in subexpressions are treated separately.

      Some other SQL database engines (for example PostgreSQL) allow +multiple indexes to be used for each table in a SELECT. For example, +if you had a table and index in PostgreSQL like this:

      +CREATE TABLE pg1(a INT, b INT, c INT, d INT); +CREATE INDEX pg1_ix1 ON pg1(a); +CREATE INDEX pg1_ix2 ON pg1(b); +CREATE INDEX pg1_ix3 ON pg1(c); +

      And if you were to run a query like the following:

      +SELECT d FROM pg1 WHERE a=5 AND b=11 AND c=99; +

      Then PostgreSQL might attempt to optimize the query +by using all three indexes, one for each term of the WHERE clause.

      SQLite does not work this way. SQLite is compelled to select +a single index to use in the query. It might select any of the three +indexes shown, depending on which one the optimizer things will give +the best speedup. But in every case it will only select a single index +and only a single term of the WHERE clause will be used.

      SQLite +prefers to use a multi-column index such as this:

      +CREATE INDEX pg1_ix_all ON pg1(a,b,c); +

      If the pg1_ix_all index is available for use when +the SELECT statement above is prepared, SQLite will likely choose +it over any of the single-column indexes because the multi-column +index is able to make use of all 3 terms of the WHERE clause.

      You can trick SQLite into using multiple indexes on the same +table by rewriting the query. Instead of the SELECT statement shown +above, if you rewrite it as this:

      +SELECT d FROM pg1 WHERE RowID IN ( + SELECT RowID FROM pg1 WHERE a=5 + INTERSECT + SELECT RowID FROM pg1 WHERE b=11 + INTERSECT + SELECT RowID FROM pg1 WHERE c=99 +) +

      Then each of the individual SELECT statements will +using a different single-column index and their results will be combined +by the outer SELECT statement to give the correct result. The other +SQL database engines like PostgreSQL that are able to make use of +multiple indexes per table do so by treating the simpler SELECT statement +shown first as if they where the more complicated SELECT statement +shown here.

      +
      Use +Inequality Constraints on the Last Index Term

      Terms in +the WHERE clause of a query or UPDATE or DELETE statement are mostly +likely to trigger the use of an index if they are an equality constraint +– in other words if the term consists of the name of an indexed column, +an equal sign (“=”), and an expression.

      So, for example, if +you have a table and index that look like this:

      +CREATE TABLE demo315(a,b,c,d); +CREATE INDEX demo315_idx1 ON demo315(a,b,c); +

      And a query like this:

      +SELECT d FROM demo315 WHERE a=512; +

      The single “a=512” term of the WHERE clause qualifies +as an equality constraint and is likely to provoke the use of the +demo315_idx1 index.

      SQLite supports two other kinds of equality +constraints. One is the IN operator:

      +SELECT d FROM demo315 WHERE a IN (512,1024); +SELECT d FROM demo315 WHERE a IN (SELECT x FROM someothertable); +

      There other is the IS NULL constraint:

      +SELECT d FROM demo315 WHERE a IS NULL; +

      SQLite allows at most one term of an index to be constrained +by an inequality such as less than “<”, greater than “>”, less +than or equal to “<=”, or greater than or equal to “>=”.

      The column that the inequality constrains will be the right-most +term of the index that is used. So, for example, in this query:

      +SELECT d FROM demo315 WHERE a=5 AND b>11 AND c=1; +

      Only the first two terms of the WHERE clause will +be used with the demo315_idx1 index. The third term, the “c=1” constraint, +cannot be used because the “c” column occurs to the right of the “b” +column in the index and the “b” column is constrained by an inequality.

      SQLite allows up to two inequalities on the same column as long +as the two inequalities provide an upper and lower bound on the column. +For example, in this query:

      +SELECT d FROM demo315 WHERE a=5 AND b>11 AND b<23; +

      All three terms of the WHERE clause will be used because +the two inequalities on the “b” column provide an upper and lower +bound on the value of “b”.

      SQLite will only use the four inequalities +mentioned above to help constrain a search: “<”, “>”, “<=”, +and “>=”. Other inequality operators such as not equal to (“!=” or +“<>”) and NOT NULL are not helpful to the query optimizer and will +never be used to control an index and help make the query run faster.

      +
      Use +Indexes To Help ORDER BY Clauses Evaluate Faster

      The default +method for evaluating an ORDER BY clause in a SELECT statement is +to first evaluate the SELECT statement and store the results in a +temporary tables, then sort the temporary table according to the ORDER +BY clause and scan the sorted temporary table to generate the final +output.

      This method always works, but it requires three passes +over the data (one pass to generate the result set, a second pass +to sort the result set, and a third pass to output the results) and +it requires a temporary storage space sufficiently large to contain +the entire results set.

      Where possible, SQLite will avoid +storing and sorting the result set by using an index that causes the +results to emerge from the query in sorted order in the first place.

      The way to get SQLite to use an index for sorting is to provide +an index that covers the same columns specified in the ORDER BY clause. +For example, if the table and index are like this:

      +CREATE TABLE demo316(a,b,c,data); +CREATE INDEX idx316 ON demo316(a,b,c); +

      And you do a query like this:

      +SELECT data FROM demo316 ORDER BY a,b,c; +

      SQLite will use the idx316 index to implement the +ORDER BY clause, obviating the need for temporary storage space and +a separate sorting pass.

      An index can be used to satisfy the +search constraints of a WHERE clause and to impose the ORDER BY ordering +of outputs all at once. The trick is for the ORDER BY clause terms +to occur immediately after the WHERE clause terms in the index. For +example, one can write:

      +SELECT data FROM demo316 WHERE a=5 ORDER BY b,c; +

      The “a” column is used in the WHERE clause and the +immediately following terms of the index, “b” and “c” are used in +the ORDER BY clause. So in this case the idx316 index would be used +both to speed up the search and to satisfy the ORDER BY clause.

      This query also uses the idx316 index because, once again, the +ORDER BY clause term “c” immediate follows the WHERE clause terms +“a” and “b” in the index:

      +SELECT data FROM demo316 WHERE a=5 AND b=17 ORDER BY c; +

      But now consider this:

      +SELECT data FROM demo316 WHERE a=5 ORDER BY c; +

      Here there is a gap between the ORDER BY term “c” +and the WHERE clause term “a”. So the idx316 index cannot be used +to satisfy both the WHERE clause and the ORDER BY clause. The index +will be used on the WHERE clause and a separate sorting pass will +occur to put the results in the correct order.

      +
      Add +Result Columns To The End Of Indexes

      Queries will sometimes +run faster if their result columns appear in the right-most entries +of an index. Consider the following example:

      +CREATE TABLE demo317(a,b,c,data); +CREATE INDEX idx317 ON demo316(a,b,c); +

      A query where all result column terms appears in the +index, such as

      +SELECT c FROM demo317 WHERE a=5 ORDER BY b; +

      will typically run about twice as fast or faster than +a query that uses columns that are not in the index, e.g.

      +SELECT data FROM demo317 WHERE a=5 ORDER BY b; +

      The reason for this is that when all information is +contained within the index entry only a single search has to be made +for each row of output. But when some of the information is in the +index and other parts are in the table, first there must be a search +for the appropriate index entry then a separate search is made for +the appropriate table row based on the RowID found in the index entry. +Twice as much searching has to be done for each row of output generated.

      The extra query speed does not come for free, however. Adding +additional columns to an index makes the database file larger. So +when developing an application, the programmer will need to make a +space versus time trade-off to determine whether the extra columns +should be added to the index or not.

      Note that if any column +of the result must be obtained from the original table, then the table +row will have to be searched for anyhow. There will be no speed advantage, +so you might as well omit the extra columns from the end of the index +and save on storage space. The speed-up described in this section +can only be realized when every column in a table is obtainable from +the index.

      Taking into account the results of the previous +few sections, the best set of columns to put in an index can be described +as follows:

        +
      • The first columns +in the index should be columns that have equality constraints in the +WHERE clause of the query.

      • +
      • The second group +of columns should match the columns specified in the ORDER BY clause.

      • +
      • Add additional +columns to the end of the index that are used in the result set of +the query.

      • +
      +
      Resolve +Indexing Ambiguities Using the Unary “+” Operator

      The SQLite +query optimizer usually does a good job of choosing the best index +to use for a particular query, especially if ANALYZE has been run +to provide it with index performance statistics. But occasions do +arise where it is useful to give the optimizer hints.

      One +of the easiest ways to control the operation of the optimizer is to +disqualify terms in the WHERE clause or ORDER BY clause as candidates +for optimization by using the unary “+” operator.

      In SQLite, +a unary “+” operator is a no-op. It makes no change to its operand, +even if the operand is something other than a number. So you can always +prefix a “+” to an expression in without changing the meaning of the +expression. As the optimizer will only use terms in WHERE, HAVING, +or ON clauses that have an index column name on one side of a comparison +operator, you can prevent such a term from being used by the optimizer +by prefixing the column name with a “+”.

      For example, suppose +you have a database with a schema like this:

      +CREATE TABLE demo321(a,b,c,data); +CREATE INDEX idx321a ON demo321(a); +CREATE INDEX idx321b ON demo321(b); +

      If you issue a query such as this:

      +SELECT data FROM demo321 WHERE a=5 AND b=11; +

      The query optimizer might use the “a=5” term with +idx321a or it might use the “b=11” term with the idx321b index. But +if you want to force the use of the idx321a index you can accomplish +that by disqualifying the second term of the WHERE clause as a candidate +for optimization using a unary “+” like this:

      +SELECT data FROM demo321 WHERE a=5 AND +b=11; +

      The “+” in front of the “b=11” turns the left-hand +side of the equals comparison operator into an expression instead +of an indexed column name. The optimizer will then not recognize that +the second term can be used with an index and so the optimizer is +compelled to use the first “a=5” term.

      The unary “+” operator +can also be used to disable ORDER BY clause optimizations. Consider +this query:

      +SELECT data FROM demo321 WHERE a=5 ORDER BY b; +

      The optimizer has the choice of using the “a=5” term +of the WHERE clause with idx321a to restrict the search. Or it might +choose to use do a full table scan with idx321b to satisfy the ORDER +BY clause and thus avoid a separate sorting pass. You can force one +choice or the other using a unary “+”.

      To force the use of +idx321a on the WHERE clause, add the unary “+” in from of the “b” +in the ORDER BY clause:

      +SELECT data FROM demo321 WHERE a=5 ORDER BY +b; +

      To go the other way and force the idx321b index to +be used to satisfy the ORDER BY clause, disqualify the WHERE term +by prefixing with a unary “+”:

      +SELECT data FROM demo321 WHERE +a=5 ORDER BY b; +

      The reader is cautioned not to overuse the unary “+” +operator. The SQLite query optimizer usually picks the best index +without any outside help. Premature use of unary “+” can confuse the +optimizer and cause less than optimal performance. But in some cases +it is useful to be able override the decisions of the optimizer, and +the unary “+” operator is an excellent way to do this when it becomes +necessary.

      +
      Avoid +Indexing Large BLOBs and CLOBs

      SQLite stores indexes as +b-trees. Each b-tree node uses one page of the database file. In order +to maintain an acceptable fan-out, the b-tree module within SQLite +requires that at least 4 entries must fit on each page of a b-tree. +There is also some overhead associated with each b-tree page. So at +the most there is about 250 bytes of space available on the main b-tree +page for each index entry.

      If an index entry exceeds this +allotment of approximately 250 bytes excess bytes are spilled to overflow +pages. There is no arbitrary limit on the number of overflow pages +or on the length of a b-tree entry, but for maximum efficiency it +is best to avoid overflow pages, especially in indexes. This means +that you should strive to keep the number of bytes in each index entry +below 250.

      If you keep the size of indexes significantly smaller +than 250 bytes, then the b-tree fan-out is increased and the binary +search algorithm used to search for entries in an index has fewer +pages to examine and therefore runs faster. So the fewer bytes used +in each index entry the better, at least from a performance perspective.

      For these reasons, it is recommended that you avoid indexing +large BLOBs and CLOBs. SQLite will continue to work when large BLOBs +and CLOBs are indexed, but there will be a performance impact.

      On the other hand, if you need to lookup entries using a large +BLOB or CLOB as the key, then by all means use an index. An index +on a large BLOB or CLOB is not as fast as an index using more compact +data types such as integers, but it is still many order of magnitude +faster than doing a full table scan. So to be more precise, the advice +of this section is that you should design your applications so that +you do not need to lookup entries using a large BLOB or CLOB as the +key. Try to arrange to have compact keys consisting of short strings +or integers.

      Note that many other SQL database engines disallow +the indexing of BLOBs and CLOBs in the first place. You simple cannot +do it. SQLite is more flexible that most in that it does allow BLOBs +and CLOBs to be indexed and it will use those indexes when appropriate. +But for maximum performance, it is best to use smaller search keys.

      +
      Avoid +Excess Indexes

      Some developers approach SQL-based application +development with the attitude that indexes never hurt and that the +more indexes you have, the faster your application will run. This +is definitely not the case. There is a costs associated with each +new index you create:

        +
      • Each new index +takes up additional space in the database file. The more indexes you +have, the larger your database files will become for the same amount +of data.

      • +
      • Every INSERT +and UPDATE statement modifies both the original table and all indexes +on that table. So the performance of INSERT and UPDATE decreases linearly +with the number of indexes.

      • +
      • Compiling new +SQL statements using Prepare() takes longer when +there are more indexes for the optimizer to choose between.

      • +
      • Surplus indexes +give the optimizer more opportunities to make a bad choice.

      • +

      Your policy on indexes should be to avoid them wherever you +can. Indexes are powerful medicine and can work wonders to improve +the performance of a program. But just as too many drugs can be worse +than none at all, so also can too many indexes cause more harm than +good.

      When building a new application, a good approach is +to omit all explicitly declared indexes in the beginning and only +add indexes as needed to address specific performance problems.

      Take care to avoid redundant indexes. For example, consider this +schema:

      +CREATE TABLE demo323a(a,b,c); +CREATE INDEX idx323a1 ON demo323(a); +CREATE INDEX idx323a2 ON demo323(a,b); +

      The idx323a1 index is redundant and can be eliminated. +Anything that the idx323a1 index can do the idx323a2 index can do +better.

      Other redundancies are not quite as apparent as the +above. Recall that any column or columns that are declared UNIQUE +or PRIMARY KEY (except for the special case of INTEGER PRIMARY KEY) +are automatically indexed. So in the following schema:

      +CREATE TABLE demo323b(x TEXT PRIMARY KEY, y INTEGER UNIQUE); +CREATE INDEX idx323b1 ON demo323b(x); +CREATE INDEX idx323b2 ON demo323b(y); +

      Both indexes are redundant and can be eliminated with +no loss in query performance. Occasionally one sees a novice SQL programmer +use both UNIQUE and PRIMARY KEY on the same column:

      +CREATE TABLE demo323c(p TEXT UNIQUE PRIMARY KEY, q); +

      This has the effect of creating two indexes on the +“p” column – one for the UNIQUE keywords and another for the PRIMARY +KEY keyword. Both indexes are identical so clearly one can be omitted. +A PRIMARY KEY is guaranteed to always be unique so the UNIQUE keyword +can be removed from the demo323c table definition with no ambiguity +or loss of functionality.

      It is not a fatal error to create +too many indexes or redundant indexes. SQLite will continue to generate +the correct answers but it may take longer to produce those answers +and the resulting database files might be a little larger. So for +best results, keep the number of indexes to a minimum.

      +
      Avoid +Tables and Indexes with an Excessive Number of Columns

      SQLite places no arbitrary limits on the number of columns in a table +or index. There are known commercial applications using SQLite that +construct tables with tens of thousands of columns each. And these +applications actually work.

      However the database engine is +optimized for the common case of tables with no more than a few dozen +columns. For best performance you should try to stay in the optimized +region. Furthermore, we note that relational databases with a large +number of columns are usually not well normalized. So even apart from +performance considerations, if you find your design has tables with +more than a dozen or so columns, you really need to rethink how you +are building your application.

      There are a number of places +in Prepare() that run in time O(N2) where +N is the number of columns in the table. The constant of proportionality +is small in these cases so you should not have any problems for N +of less than one hundred but for N on the order of a thousand, the +time to run Prepare() can start to become noticeable.

      When the bytecode is running and it needs to access the i-th +column of a table, the values of the previous i-1 columns must be +accessed first. So if you have a large number of columns, accessing +the last column can be an expensive operation. This fact also argues +for putting smaller and more frequently accessed columns early in +the table.

      There are certain optimizations that will only +work if the table has 30 or fewer columns. The optimization that extracts +all necessary information from an index and never refers to the underlying +table works this way. So in some cases, keeping the number of columns +in a table at or below 30 can result in a 2-fold speed improvement.

      Indexes will only be used if they contain 30 or fewer columns. +You can put as many columns in an index as you want, but if the number +is greater than 30, the index will never improve performance and will +never do anything but take up space in your database file.

      +
      +SQL +Overview +SQL +Server Guide +SQLite + +SQL +DB Overview +Avoid +Transient Tables +Prevent +Datafile Corruption + +SQL Insertion Tips +SQL +Schema Tips +SQL +Expressions +SQL +Statement Tips +SQL +Joins + ANALYZE +Command + SQL +WHERE CLause Tips
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C31DA918-8DEA-5816-B0A6-4AE90B06DD0D_d0e210683_href.jpg Binary file Symbian3/PDK/Source/GUID-C31DA918-8DEA-5816-B0A6-4AE90B06DD0D_d0e210683_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C31DA918-8DEA-5816-B0A6-4AE90B06DD0D_d0e216684_href.jpg Binary file Symbian3/PDK/Source/GUID-C31DA918-8DEA-5816-B0A6-4AE90B06DD0D_d0e216684_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C33BAB87-9CFA-58F4-95B7-7A05AB529708_d0e257772_href.png Binary file Symbian3/PDK/Source/GUID-C33BAB87-9CFA-58F4-95B7-7A05AB529708_d0e257772_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C33BAB87-9CFA-58F4-95B7-7A05AB529708_d0e263783_href.png Binary file Symbian3/PDK/Source/GUID-C33BAB87-9CFA-58F4-95B7-7A05AB529708_d0e263783_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C37790B3-967C-489C-8753-0434938CBE2B.dita --- a/Symbian3/PDK/Source/GUID-C37790B3-967C-489C-8753-0434938CBE2B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C37790B3-967C-489C-8753-0434938CBE2B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,5 +17,5 @@ interface.

      The following figure shows the relationship between applications, secure socket classes, and secure socket plug-ins.

      -Relationship between applications and secure socket +Relationship between applications and secure socket \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C39CA508-86F7-5B99-9390-56980DD0EFFB.dita --- a/Symbian3/PDK/Source/GUID-C39CA508-86F7-5B99-9390-56980DD0EFFB.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ - - - - - -Lexical conventions

      Resource files obey the following lexical conventions:

      • Whitespace, except when enclosed in quotes for strings, is ignored by the compiler.

      • Both C-style (/* */) and C++-style (//) comments are supported.

      • Strings must be enclosed with double-quotes.

      • To include a double-quote within a string, enter a double-quote preceded by a backslash. The following resource:

        RESOURCE SIMPLE quote_example - { - string="\"text\""; - }

        where string is of type BUF, generates the output string "text".

      • To include a backslash within a string, enter two backslash characters. The following resource:

        RESOURCE SIMPLE backslash_example - { - string="\\text\\"; - }

        generates the output string \text\.

      • You can use the syntax number, to specify a character by character code. If a Unicode resource is being created, this must be a Unicode character value.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C3A3D9CF-4826-4BEB-8778-ECD8E6B6463C.dita --- a/Symbian3/PDK/Source/GUID-C3A3D9CF-4826-4BEB-8778-ECD8E6B6463C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C3A3D9CF-4826-4BEB-8778-ECD8E6B6463C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -43,7 +43,7 @@ required.

      The diagrammatic representation of the Image Processor library is as follows:

      The architectural relationship diagram for the Image Processor library

      - +
      Image Processor

      Image Processor is a high-level library and framework. Image Processor encapsulates all the internal processing diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C3A8290D-44BA-5AAD-8F0D-745FF3F10E0B_d0e516822_href.png Binary file Symbian3/PDK/Source/GUID-C3A8290D-44BA-5AAD-8F0D-745FF3F10E0B_d0e516822_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C3A8290D-44BA-5AAD-8F0D-745FF3F10E0B_d0e524282_href.png Binary file Symbian3/PDK/Source/GUID-C3A8290D-44BA-5AAD-8F0D-745FF3F10E0B_d0e524282_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C3B6E5F6-74DC-5C0E-94C8-B4822F4A2EB6.dita --- a/Symbian3/PDK/Source/GUID-C3B6E5F6-74DC-5C0E-94C8-B4822F4A2EB6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C3B6E5F6-74DC-5C0E-94C8-B4822F4A2EB6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -55,9 +55,9 @@ a NewL() function. Call the dedicated function, CHRMPower::SetBatteryChargingObserver().

      Procedure
        -
      1. Derive +

      2. Derive a class from one or more of the above interfaces.

      3. -
      4. Implement +

      5. Implement the appropriate observer functions.

      6. Create a power client using CHWRMPower::NewL() or NewLC().

        You diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C3CE35FF-240E-5385-9088-38EF926ABB7B_d0e390105_href.png Binary file Symbian3/PDK/Source/GUID-C3CE35FF-240E-5385-9088-38EF926ABB7B_d0e390105_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C3CE35FF-240E-5385-9088-38EF926ABB7B_d0e395958_href.png Binary file Symbian3/PDK/Source/GUID-C3CE35FF-240E-5385-9088-38EF926ABB7B_d0e395958_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C3D0BA4A-AEC5-5002-916E-CB3F9FE5AC27_d0e257933_href.png Binary file Symbian3/PDK/Source/GUID-C3D0BA4A-AEC5-5002-916E-CB3F9FE5AC27_d0e257933_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C3D0BA4A-AEC5-5002-916E-CB3F9FE5AC27_d0e263944_href.png Binary file Symbian3/PDK/Source/GUID-C3D0BA4A-AEC5-5002-916E-CB3F9FE5AC27_d0e263944_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C4461397-04A0-5056-B8A5-8FEFF9AF052C_d0e450936_href.png Binary file Symbian3/PDK/Source/GUID-C4461397-04A0-5056-B8A5-8FEFF9AF052C_d0e450936_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C4461397-04A0-5056-B8A5-8FEFF9AF052C_d0e456781_href.png Binary file Symbian3/PDK/Source/GUID-C4461397-04A0-5056-B8A5-8FEFF9AF052C_d0e456781_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C45FFBDD-37D4-5892-8D13-CFE292264268.dita --- a/Symbian3/PDK/Source/GUID-C45FFBDD-37D4-5892-8D13-CFE292264268.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C45FFBDD-37D4-5892-8D13-CFE292264268.dita Fri Jul 16 17:23:46 2010 +0100 @@ -42,7 +42,7 @@ UI notifier plug-in which displays the content of the Class 0 SMS message on the UI without storing it in the message store (SMS service Inbox).

        Architecture of the Class 0 plug-in - +
        SMS stack
        @@ -65,7 +65,7 @@ licensees can override it by writing a new ECom plug-in using the CSmsClass0Base exported class. For instructions on writing a new ECom plug-in, see the ECom guide.

        Class diagram - +

        void CClass0Sms::DisplayMessageHandler(TDesC8& aSmsMessage, TBool aIsCompleteMsg)

      @@ -151,7 +151,7 @@ must be read at the UI side in the same order; that is, TInt aStartPos, TInt endPos, TBool aIsLastMessage, and TPtr aSmsData.

      -
      Example

      The +

      Example

      The following example code shows how to write a UI notifier and extract the Class 0 SMS message:

      class0smsUInotifier.h

      // class0smsUInotifier.h // diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C47514B1-2DD2-5E75-962A-B8E6358E9880_d0e346339_href.png Binary file Symbian3/PDK/Source/GUID-C47514B1-2DD2-5E75-962A-B8E6358E9880_d0e346339_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C47514B1-2DD2-5E75-962A-B8E6358E9880_d0e352290_href.png Binary file Symbian3/PDK/Source/GUID-C47514B1-2DD2-5E75-962A-B8E6358E9880_d0e352290_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C4805C18-9BE7-47BA-9E50-D5F9CAAD36B7_d0e79307_href.png Binary file Symbian3/PDK/Source/GUID-C4805C18-9BE7-47BA-9E50-D5F9CAAD36B7_d0e79307_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C4805C18-9BE7-47BA-9E50-D5F9CAAD36B7_d0e83505_href.png Binary file Symbian3/PDK/Source/GUID-C4805C18-9BE7-47BA-9E50-D5F9CAAD36B7_d0e83505_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C4805C18-9BE7-47BA-9E50-D5F9CAAD36B7_d0e86800_href.png Binary file Symbian3/PDK/Source/GUID-C4805C18-9BE7-47BA-9E50-D5F9CAAD36B7_d0e86800_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C4805C18-9BE7-47BA-9E50-D5F9CAAD36B7_d0e87023_href.png Binary file Symbian3/PDK/Source/GUID-C4805C18-9BE7-47BA-9E50-D5F9CAAD36B7_d0e87023_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C4805C18-9BE7-47BA-9E50-D5F9CAAD36B7_d0e90998_href.png Binary file Symbian3/PDK/Source/GUID-C4805C18-9BE7-47BA-9E50-D5F9CAAD36B7_d0e90998_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C4805C18-9BE7-47BA-9E50-D5F9CAAD36B7_d0e91221_href.png Binary file Symbian3/PDK/Source/GUID-C4805C18-9BE7-47BA-9E50-D5F9CAAD36B7_d0e91221_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C4945844-643F-5479-AA2C-61C35817555A_d0e489937_href.jpg Binary file Symbian3/PDK/Source/GUID-C4945844-643F-5479-AA2C-61C35817555A_d0e489937_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C4945844-643F-5479-AA2C-61C35817555A_d0e495755_href.jpg Binary file Symbian3/PDK/Source/GUID-C4945844-643F-5479-AA2C-61C35817555A_d0e495755_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C4C8395E-F982-4D6A-88D3-28EDC494817F.dita --- a/Symbian3/PDK/Source/GUID-C4C8395E-F982-4D6A-88D3-28EDC494817F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C4C8395E-F982-4D6A-88D3-28EDC494817F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -18,8 +18,8 @@

      Requesting free RAM asynchronously is recommended as the application is not blocked during the method call handling.

      - -Start an asynchronous + +Start an asynchronous request for a block of memory. CMemoryAllocatingObject::StartFunctionalityRequiringAllocationL() { @@ -29,7 +29,7 @@ } -Implement the active +Implement the active object and request for free memory. void CMemoryRequester::Start(TInt aBytesRequested) { diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C4D0B083-CCF9-52BD-A6BC-5187BEF3B0CB_d0e207170_href.png Binary file Symbian3/PDK/Source/GUID-C4D0B083-CCF9-52BD-A6BC-5187BEF3B0CB_d0e207170_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C4D0B083-CCF9-52BD-A6BC-5187BEF3B0CB_d0e213171_href.png Binary file Symbian3/PDK/Source/GUID-C4D0B083-CCF9-52BD-A6BC-5187BEF3B0CB_d0e213171_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C4D0F943-442D-5F3B-BB5E-6B52C33ABBC6_d0e210740_href.jpg Binary file Symbian3/PDK/Source/GUID-C4D0F943-442D-5F3B-BB5E-6B52C33ABBC6_d0e210740_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C4D0F943-442D-5F3B-BB5E-6B52C33ABBC6_d0e216741_href.jpg Binary file Symbian3/PDK/Source/GUID-C4D0F943-442D-5F3B-BB5E-6B52C33ABBC6_d0e216741_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C4E728B4-3E84-49A4-83CB-DF146420D78A.dita --- a/Symbian3/PDK/Source/GUID-C4E728B4-3E84-49A4-83CB-DF146420D78A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C4E728B4-3E84-49A4-83CB-DF146420D78A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,7 +17,7 @@ be attached to almost all the items.

      Stylus pop-up menu opened from a list. - +

      Stylus pop-up is mainly used to offer dynamic functions, and the functions supported by touch-enabled devices. The stylus pop-up menu can also be used diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C4EFAB2B-5154-56E0-A4B7-234A5EABB796_d0e39288_href.png Binary file Symbian3/PDK/Source/GUID-C4EFAB2B-5154-56E0-A4B7-234A5EABB796_d0e39288_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C4EFAB2B-5154-56E0-A4B7-234A5EABB796_d0e43522_href.png Binary file Symbian3/PDK/Source/GUID-C4EFAB2B-5154-56E0-A4B7-234A5EABB796_d0e43522_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C5103B39-6F67-47E3-938A-32933E75F98E.dita --- a/Symbian3/PDK/Source/GUID-C5103B39-6F67-47E3-938A-32933E75F98E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C5103B39-6F67-47E3-938A-32933E75F98E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,25 +1,24 @@ - - - - - -C++ -Standard Library (STLport v4)C++ Standard Library is a Symbian platform port of STLport v4. -It enables applications written using Standard C++ to be ported to Symbian -platform. -

      Notes:

        -
      • It is recommended that you use the latest version of Standard -C++ Library (STLport v5) to take advantage of it's latest features. -For more information about STLport, see http://www.stlport.org/. -For information about how to migrate to STLport v5, see Migrating from STLport v4 -to v5.

      • -
      • For more information about Open C++ (C++ Standard Library - STLport -v4) API reference and examples, see Forum Nokia Library.

      • -

      + + + + + +C++ Standard Library (STLport v4)C++ Standard Library is a Symbian platform port of STLport +v4. It enables applications written using Standard C++ to be ported +to Symbian platform. +

      Notes:

        +
      • It is recommended that you use the latest version of Standard C++ Library +(STLport v5) to take advantage of it's latest features. For +more information about STLport, see http://www.stlport.org/. For information about +how to migrate to STLport v5, see Migrating from STLport +v4 to v5.

      • +
      • For more information about Open C++ (C++ Standard Library - +STLport v4) API reference and examples, see Forum Nokia Library.

      • +

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C549EC51-D81F-5AEC-80EA-EF83B2D9AF51.dita --- a/Symbian3/PDK/Source/GUID-C549EC51-D81F-5AEC-80EA-EF83B2D9AF51.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C549EC51-D81F-5AEC-80EA-EF83B2D9AF51.dita Fri Jul 16 17:23:46 2010 +0100 @@ -22,6 +22,6 @@

      The following diagram shows a typical mix of free and allocated cells.

      Example of the allocated and free cells in a heap - + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C588B869-6940-42B2-84F9-71467F6A4306_d0e3004_href.png Binary file Symbian3/PDK/Source/GUID-C588B869-6940-42B2-84F9-71467F6A4306_d0e3004_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C588B869-6940-42B2-84F9-71467F6A4306_d0e3014_href.png Binary file Symbian3/PDK/Source/GUID-C588B869-6940-42B2-84F9-71467F6A4306_d0e3014_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C595C1E9-9371-5449-823F-ECEBDE13FB7B_d0e450914_href.png Binary file Symbian3/PDK/Source/GUID-C595C1E9-9371-5449-823F-ECEBDE13FB7B_d0e450914_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C595C1E9-9371-5449-823F-ECEBDE13FB7B_d0e456759_href.png Binary file Symbian3/PDK/Source/GUID-C595C1E9-9371-5449-823F-ECEBDE13FB7B_d0e456759_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C5AC5FAF-A55F-44B5-BB43-858861BAB11E_d0e79143_href.png Binary file Symbian3/PDK/Source/GUID-C5AC5FAF-A55F-44B5-BB43-858861BAB11E_d0e79143_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C5AC5FAF-A55F-44B5-BB43-858861BAB11E_d0e80310_href.png Binary file Symbian3/PDK/Source/GUID-C5AC5FAF-A55F-44B5-BB43-858861BAB11E_d0e80310_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C5AC5FAF-A55F-44B5-BB43-858861BAB11E_d0e83341_href.png Binary file Symbian3/PDK/Source/GUID-C5AC5FAF-A55F-44B5-BB43-858861BAB11E_d0e83341_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C5AC5FAF-A55F-44B5-BB43-858861BAB11E_d0e84508_href.png Binary file Symbian3/PDK/Source/GUID-C5AC5FAF-A55F-44B5-BB43-858861BAB11E_d0e84508_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C5C42C02-1C22-5537-B966-0F5F78E4D7BE_d0e332284_href.png Binary file Symbian3/PDK/Source/GUID-C5C42C02-1C22-5537-B966-0F5F78E4D7BE_d0e332284_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C5C42C02-1C22-5537-B966-0F5F78E4D7BE_d0e338256_href.png Binary file Symbian3/PDK/Source/GUID-C5C42C02-1C22-5537-B966-0F5F78E4D7BE_d0e338256_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C5DDFD3F-7778-56D6-A10B-741959206C5F_d0e522374_href.png Binary file Symbian3/PDK/Source/GUID-C5DDFD3F-7778-56D6-A10B-741959206C5F_d0e522374_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C5DDFD3F-7778-56D6-A10B-741959206C5F_d0e529834_href.png Binary file Symbian3/PDK/Source/GUID-C5DDFD3F-7778-56D6-A10B-741959206C5F_d0e529834_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C5E7D88B-C73D-56D8-A8F4-2393E5EEDC8E_d0e423967_href.png Binary file Symbian3/PDK/Source/GUID-C5E7D88B-C73D-56D8-A8F4-2393E5EEDC8E_d0e423967_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C5E7D88B-C73D-56D8-A8F4-2393E5EEDC8E_d0e429820_href.png Binary file Symbian3/PDK/Source/GUID-C5E7D88B-C73D-56D8-A8F4-2393E5EEDC8E_d0e429820_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C5F4CF0F-EC1B-595D-8C95-41891CB5930D.dita --- a/Symbian3/PDK/Source/GUID-C5F4CF0F-EC1B-595D-8C95-41891CB5930D.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ - - - - - -resource

      abld [ test ] resource [-k] [-v] [ platform ] [ build [ program ] ]

      This command builds the resource files, bitmaps and application information files for a component by calling the RESOURCE targets in makefiles generated by makmake.

      These resources are created implicitly when abld - target (and thus, abld build) is called. The resources will not be regenerated if they have later datestamps than their source dependencies.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C5F77A45-EEE9-4190-B240-E9FCCFC15E72.dita --- a/Symbian3/PDK/Source/GUID-C5F77A45-EEE9-4190-B240-E9FCCFC15E72.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C5F77A45-EEE9-4190-B240-E9FCCFC15E72.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,8 +12,8 @@ Running Tests Manually You can manually run the tests on armv5 and winscw platforms using the TestExecute tool. - -Build the ROM image + +Build the ROM image if you are running the tests on armv5.

      You can use the following command to build the ROM image:

      buildrom -D_EABI=ARMV5 –DRVCT -DUSE_STRONG_CRYPTOGRAPHY h4hrp techview t_ecom

      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C60254EC-85B4-52A9-A694-A5F6EA0B1DAF_d0e449876_href.png Binary file Symbian3/PDK/Source/GUID-C60254EC-85B4-52A9-A694-A5F6EA0B1DAF_d0e449876_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C60254EC-85B4-52A9-A694-A5F6EA0B1DAF_d0e455721_href.png Binary file Symbian3/PDK/Source/GUID-C60254EC-85B4-52A9-A694-A5F6EA0B1DAF_d0e455721_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C6086C67-963B-455F-8BA6-58DC568084F0_d0e99781_href.png Binary file Symbian3/PDK/Source/GUID-C6086C67-963B-455F-8BA6-58DC568084F0_d0e99781_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C60DAE3D-7FB9-5619-9E5D-476A430705AF.dita --- a/Symbian3/PDK/Source/GUID-C60DAE3D-7FB9-5619-9E5D-476A430705AF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C60DAE3D-7FB9-5619-9E5D-476A430705AF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -72,7 +72,7 @@ record

      only. Getting all matches in a database is briefly discussed at the end of this

      section.

      -

      Now that you have +

      Now that you have performed a basic database query you can start thinking about more advanced querying options. The following will show you how:

      • Querying diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C60DC070-572B-5960-B394-550426FDB909.dita --- a/Symbian3/PDK/Source/GUID-C60DC070-572B-5960-B394-550426FDB909.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C60DC070-572B-5960-B394-550426FDB909.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,263 +1,188 @@ - - - - - Advanced Pointer Tutorial -This tutorial provides step-by-step instructions and sample -code to help you write applications using advanced pointers. - - - - -

        Variant: ScreenPlay. Target audience: Application developers.

        -
        Required background

        This topic builds -on the material in the following topics:

          -
        • Advanced Pointer -Overview

        • -
        • Advanced Pointer -States and Event Communication

        • -
        -
        Using advanced pointers

        This topic covers -the following:

          -
        • Enabling multiple pointers in a window

        • -
        • Getting Z coordinates from TPointerEvent

        • -
        • Pinch zooming

        • -
        -
        Enabling -multiple pointers in a window
          -
        1. RWindow provides a handle to a standard window. Call RWindow to create an instance of a window.

          -RWindow window(ws); - -User::LeaveIfError(window.Construct(wg, reinterpret_cast<TUint32>(&wg) + 1)); -
        2. -
        3. Call RWindow::EnableAdvancedPointers() to enable -advanced pointers. Then call RWindowBase::Activate() to display the -window and enable the window to receive events. RWindow inherits from RWindowBase, so you can call the Activate() function -on RWindow.

          -window.EnableAdvancedPointers(); -window.Activate(); -

          When an application needs to receive advanced pointer -events in a window, it must call RWindowBase::EnableAdvancedPointers() for the window before it is activated.

          If advanced -pointers are not enabled for a window, it receives only -standard TPointerEvent information from a single -pointer with no pressure and proximity data. The single pointer environment -rules describe the way in which pointer events coming from many pointers -in the multiple pointer model are transformed into events of one pointer. -They are necessary to ensure that old single-pointer applications -work in a multiple pointer environment intuitively and as expected -by the user.

          However, the new TPointerEvent types, EEnterCloseProximity, EExitCloseProximity, EEnterHighPressure and EExitHighPressure, are delivered to all windows, even to those that do not -enable advanced pointers.

        4. -
        -
        Getting -Z coordinates from TPointerEvent
          -
        1. Call TPointerEvent::AdvancedPointerEvent() on -a TPointerEvent to return a pointer to a TAdvancedPointerEvent.

          -TZType aZType; -TPointerEvent& aPointerEvent; -TInt* aZ; -TInt* aPoint3D; - -TAdvancedPointerEvent *advancedP = aPointerEvent.AdvancedPointerEvent(); -

          TPointerEvent is a struct that contains -details of a pointer event. TZType is a struct provided -by the programmer containing members to hold proximity, pressure, -and "proximity and pressure" data.

        2. -
        3. Now we need -to test whether the pointer event contains advanced pointer data. -If it is not an advanced pointer, the code leaves.

          If it is -an advanced pointer, we call functions to detect proximity, pressure, -"proximity and pressure" data and coordinates.

          -if(!advancedP) - { - // The TPointerEvent isn't an instance of TAdvancedPointerEvent - User::Leave(KErrArgument); - } - -switch(aZType) - { - case EZTypeProximity: - aZ = advancedP->Proximity(); - aPoint3D = advancedP->Proximity3D(); - break; - case EZTypePressure: - aZ = advancedP->Pressure(); - aPoint3D = advancedP->Pressure3D(); - break; - case EZTypeProximityAndPressure: - aZ = advancedP->ProximityAndPressure(); - aPoint3D = advancedP->ProximityAndPressure3D(); - break; - default: - User::Leave(KErrArgument); - break; - } -
            -
          • TAdvancedPointerEvent::Proximity() returns -the proximity.

          • -
          • TAdvancedPointerEvent::Pressure() returns -the pressure.

          • -
          • TAdvancedPointerEvent::ProximityAndPressure() returns the proximity and pressure combined.

          • -
          • TAdvancedPointerEvent:: Position3D() returns -the proximity and the X, Y and Z coordinates.

          • -
          • TAdvancedPointerEvent::Pressure3D() returns -the pressure and the X and Y coordinates.

          • -

          Proximity is always negative and pressure is always positive. Internally they are combined together as a Z coordinate. -When Z > 0, the proximity is 0 and the Z value represents the pressure. -When Z < 0, the pressure is 0 and the Z value represents the proximity. -Some APIs use only a Z coordinate (such as the threshold getters and -setters and TAdvancedPointerEvent::ProximityAndPressure()). In these, the Z coordinate is interpreted in terms of pressure -and proximity.

        4. -
        - Relationships between the pointer proximity, pressure and -Z coordinate -
        -
        Pinch -zooming

        This example shows an easy way to pinch zoom an -image when the screen receives pointer events from two pointers. There -are two functions in this code that must be implemented by the programmer: BitmapCoordinates() and MoveBitmap(). They -are not included in the example because they involve complex calculations -that are not related to advanced pointers.

        The high-level -steps to perform pinch zooming are:

          -
        1. Define the coordinates, -equivalent to the given on-screen coordinates. In the code example, -this is done using the function BitmapCoordinates().

        2. -
        3. Define the ID -of the pointer by using TAdvancedPointerEvent::PointerNumber(). -If the device can handle two pointers (two fingers) at the same time, -their numbers are 0 and 1. The pointer number enables you to distinguish -a given pointer from other pointers.

        4. -
        5. For each pointer -assign its coordinates to a local variable. We assume there are only -two pointers handled by the system here.

        6. -
        7. Use the MoveBitmap() function to achieve the zoom effect.

          -/** -Receives pointer events from two pointers to perform Pinch Zoom of the image. -Function will finish when EButton1Up is received for any of the pointers. -@param aPointer1 Coordinates of pointer number 1 when zoom is started -@param aPointer2 Coordinates of pointer number 2 when zoom is started -*/ - -void PinchZoom(TPoint aPointer1, TPoint aPointer2) - { - TPoint actualP1 = aPointer1; - TPoint actualP2 = aPointer2; - - // translate on-screen pointer coordinates to coordinates of displayed bitmap - TPoint bitmapCatching1 = BitmapCoordinates(aPointer1); - TPoint bitmapCatching2 = BitmapCoordinates(aPointer2); - - TBool repaint = EFalse; - - while (ETrue) - { - TAdvancedPointerEvent event = GetNextPointerEvent(); - - if (event.iType == TPointerEvent::EDrag) - { - if (event.PointerNumber() == 1) - { - actualP1 = event.iPosition; - repaint = ETrue; - } - else if (event.PointerNumber() == 2) - { - actualP2 = event.iPosition; - repaint = ETrue; - } - } - else if (event.iType == TPointerEvent::EButton1Up) - { - break; - } - - if (repaint) - { - // move bitmap on the screen in the way that - // bitmapCatching1 point of the bitmap will be displayed at actualP1 screen coordinate, - // bitmapCatching2 point of the bitmap will be displayed at actualP2 screen coordinate. - MoveBitmap(bitmapCatching1, actualP1, bitmapCatching2, actualP2); - repaint = EFalse; - } - } - } -
        8. -
        - - -Advanced Pointer Overview -Advanced Pointer States and Event Communication - - - - + + + + + + Advanced Pointer TutorialThis tutorial provides step-by-step instructions and sample +code to help you write applications using advanced pointers. +

        Variant: ScreenPlay. Target audience: Application developers.

        +
        Required background

        This topic builds +on the material in the following topics:

          +
        • Advanced Pointer +Overview

        • +
        • Advanced Pointer +States and Event Communication

        • +
        +
        Using advanced pointers

        This topic covers +the following:

          +
        • Enabling multiple pointers in a window

        • +
        • Getting Z coordinates from TPointerEvent

        • +
        • Pinch zooming

        • +
        +
        Enabling +multiple pointers in a window
          +
        1. RWindow provides +a handle to a standard window. Call RWindow to create +an instance of a window.

          +RWindow window(ws); + +User::LeaveIfError(window.Construct(wg, reinterpret_cast<TUint32>(&wg) + 1)); +
        2. +
        3. Call RWindow::EnableAdvancedPointers() to enable advanced pointers. +Then call RWindowBase::Activate() to display the +window and enable the window to receive events. RWindow inherits from RWindowBase, so you can call the Activate() function on RWindow.

          +window.EnableAdvancedPointers(); +window.Activate(); +

          When an application needs to receive advanced pointer +events in a window, it must call RWindowBase::EnableAdvancedPointers() for the window before it is activated.

          If advanced +pointers are not enabled for a window, it receives only standard TPointerEvent information from a single pointer with no +pressure and proximity data. The single pointer environment rules +describe the way in which pointer events coming from many pointers +in the multiple pointer model are transformed into events of one pointer. +They are necessary to ensure that old single-pointer applications +work in a multiple pointer environment intuitively and +as expected by the user.

          However, the new TPointerEvent types, EEnterCloseProximity, EExitCloseProximity, EEnterHighPressure and EExitHighPressure, are delivered to all windows, even to those that do not enable +advanced pointers.

        4. +
        +
        Getting +Z coordinates from TPointerEvent
          +
        1. Call TPointerEvent::AdvancedPointerEvent() on a TPointerEvent to return a pointer to a TAdvancedPointerEvent.

          +TZType aZType; +TPointerEvent& aPointerEvent; +TInt* aZ; +TInt* aPoint3D; + +TAdvancedPointerEvent *advancedP = aPointerEvent.AdvancedPointerEvent(); +

          TPointerEvent is a struct that contains +details of a pointer event. TZType is a struct provided +by the programmer containing members to hold proximity, pressure, +and "proximity and pressure" data.

        2. +
        3. Now we need +to test whether the pointer event contains advanced pointer data. +If it is not an advanced pointer, the code leaves.

          If it is +an advanced pointer, we call functions to detect proximity, pressure, +"proximity and pressure" data and coordinates.

          +if(!advancedP) + { + // The TPointerEvent isn't an instance of TAdvancedPointerEvent + User::Leave(KErrArgument); + } + +switch(aZType) + { + case EZTypeProximity: + aZ = advancedP->Proximity(); + aPoint3D = advancedP->Proximity3D(); + break; + case EZTypePressure: + aZ = advancedP->Pressure(); + aPoint3D = advancedP->Pressure3D(); + break; + case EZTypeProximityAndPressure: + aZ = advancedP->ProximityAndPressure(); + aPoint3D = advancedP->ProximityAndPressure3D(); + break; + default: + User::Leave(KErrArgument); + break; + } +
            +
          • TAdvancedPointerEvent::Proximity() returns the proximity.

          • +
          • TAdvancedPointerEvent::Pressure() returns the pressure.

          • +
          • TAdvancedPointerEvent::ProximityAndPressure() returns the proximity and pressure combined.

          • +
          • TAdvancedPointerEvent:: +Position3D() returns the proximity and the X, Y and Z coordinates.

          • +
          • TAdvancedPointerEvent::Pressure3D() returns the pressure and the X and Y coordinates.

          • +

          Proximity is always negative and pressure is always positive. Internally they are combined together as a Z coordinate. +When Z > 0, the proximity is 0 and the Z value represents the pressure. +When Z < 0, the pressure is 0 and the Z value represents the proximity. +Some APIs use only a Z coordinate (such as the threshold getters and +setters and TAdvancedPointerEvent::ProximityAndPressure()). In these, the Z coordinate is interpreted in terms of pressure +and proximity.

        4. +
        + Relationships between the pointer proximity, pressure and +Z coordinate + +
        +
        Pinch +zooming

        This example shows an easy way to pinch zoom an +image when the screen receives pointer events from two pointers. There +are two functions in this code that must be implemented by the programmer: BitmapCoordinates() and MoveBitmap(). They +are not included in the example because they involve complex calculations +that are not related to advanced pointers.

        The high-level +steps to perform pinch zooming are:

          +
        1. Define the coordinates, +equivalent to the given on-screen coordinates. In the code example, +this is done using the function BitmapCoordinates().

        2. +
        3. Define the ID +of the pointer by using TAdvancedPointerEvent::PointerNumber(). If the device can handle two pointers (two fingers) at the same +time, their numbers are 0 and 1. The pointer number enables you to +distinguish a given pointer from other pointers.

        4. +
        5. For each pointer +assign its coordinates to a local variable. We assume there are only +two pointers handled by the system here.

        6. +
        7. Use the MoveBitmap() function to achieve the zoom effect.

          +/** +Receives pointer events from two pointers to perform Pinch Zoom of the image. +Function will finish when EButton1Up is received for any of the pointers. +@param aPointer1 Coordinates of pointer number 1 when zoom is started +@param aPointer2 Coordinates of pointer number 2 when zoom is started +*/ + +void PinchZoom(TPoint aPointer1, TPoint aPointer2) + { + TPoint actualP1 = aPointer1; + TPoint actualP2 = aPointer2; + + // translate on-screen pointer coordinates to coordinates of displayed bitmap + TPoint bitmapCatching1 = BitmapCoordinates(aPointer1); + TPoint bitmapCatching2 = BitmapCoordinates(aPointer2); + + TBool repaint = EFalse; + + while (ETrue) + { + TAdvancedPointerEvent event = GetNextPointerEvent(); + + if (event.iType == TPointerEvent::EDrag) + { + if (event.PointerNumber() == 1) + { + actualP1 = event.iPosition; + repaint = ETrue; + } + else if (event.PointerNumber() == 2) + { + actualP2 = event.iPosition; + repaint = ETrue; + } + } + else if (event.iType == TPointerEvent::EButton1Up) + { + break; + } + + if (repaint) + { + // move bitmap on the screen in the way that + // bitmapCatching1 point of the bitmap will be displayed at actualP1 screen coordinate, + // bitmapCatching2 point of the bitmap will be displayed at actualP2 screen coordinate. + MoveBitmap(bitmapCatching1, actualP1, bitmapCatching2, actualP2); + repaint = EFalse; + } + } + } +
        8. +
        +
        +Advanced +Pointer Overview +Advanced +Pointer States and Event Communication +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C64D200D-32A9-5F50-ACF1-4D93DDD0B0A4_d0e547818_href.png Binary file Symbian3/PDK/Source/GUID-C64D200D-32A9-5F50-ACF1-4D93DDD0B0A4_d0e547818_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C64D200D-32A9-5F50-ACF1-4D93DDD0B0A4_d0e555274_href.png Binary file Symbian3/PDK/Source/GUID-C64D200D-32A9-5F50-ACF1-4D93DDD0B0A4_d0e555274_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C65D4AB3-4F4B-5005-A9C4-96807EDB3EEC_d0e470190_href.jpg Binary file Symbian3/PDK/Source/GUID-C65D4AB3-4F4B-5005-A9C4-96807EDB3EEC_d0e470190_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C65D4AB3-4F4B-5005-A9C4-96807EDB3EEC_d0e476026_href.jpg Binary file Symbian3/PDK/Source/GUID-C65D4AB3-4F4B-5005-A9C4-96807EDB3EEC_d0e476026_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C69E4379-F62A-5791-975C-9F3A60D3C6D7.dita --- a/Symbian3/PDK/Source/GUID-C69E4379-F62A-5791-975C-9F3A60D3C6D7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C69E4379-F62A-5791-975C-9F3A60D3C6D7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,5 +12,5 @@ Network Gateway OverviewThe Network Gateway handles interactions between the LBS subsystem and the network.
        Purpose

        The Network Gateway handles interactions between the LBS subsystem and a network. It communicates with a network using a Network Protocol Module ECom plug-in.

        Required background

        Knowledge of LBS architecture is required.

        Key concepts and terms
        Network Protocol Module

        A Network Protocol Module is an ECOM plug-in that is loaded by the Network Gateway to support a location services architecture and network protocol. Symbian provides two Network Protocol Modules: the SUPL Protocol Module and the Privacy Protocol Module.

        Architecture

        The Network Gateway process is used by the LBS subsystem to communicate with a network. The Network Gateway can load up to two Network Protocol Modules, one for use in the home network and one when the device user is roaming outside of the home network.

        Figure 1 shows the Network Gateway and the Symbian SUPL Protocol Module.

        Figure 1. LBS Network Gateway and Network Protocol Module ECOM plug-in. -
        APIs

        The Network Gateway is an executable that does not export any APIs. It loads a Protocol Module ECom plug-in that implements the Network Protocol Module API.

        Typical uses

        The Network Gateway performs the following functions:

        • Receiving location requests from the network (MT-LR, Emergency MT-LR and NI-LR) and forwarding them to the Network Request Handler Server.

        • Sending a calculated position to the network (for terminal based mode and autonomous mode GPS).

        • Sending GPS measurements to the network and receiving the calculated device position (for terminal assisted mode or terminal assisted mode).

        • Sending requests for A-GPS assistance data to the network and receiving the response (for terminal based mode or terminal assisted mode).

        • Sending location to a remote party over the network (MO-LR transmit to third party).

        Network +
      APIs

      The Network Gateway is an executable that does not export any APIs. It loads a Protocol Module ECom plug-in that implements the Network Protocol Module API.

      Typical uses

      The Network Gateway performs the following functions:

      • Receiving location requests from the network (MT-LR, Emergency MT-LR and NI-LR) and forwarding them to the Network Request Handler Server.

      • Sending a calculated position to the network (for terminal based mode and autonomous mode GPS).

      • Sending GPS measurements to the network and receiving the calculated device position (for terminal assisted mode or terminal assisted mode).

      • Sending requests for A-GPS assistance data to the network and receiving the response (for terminal based mode or terminal assisted mode).

      • Sending location to a remote party over the network (MO-LR transmit to third party).

      Network Adaptation Network Protocol Module API \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C6DDF01D-DF54-5C65-9FAC-D3693D30819F_d0e437117_href.png Binary file Symbian3/PDK/Source/GUID-C6DDF01D-DF54-5C65-9FAC-D3693D30819F_d0e437117_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C6DDF01D-DF54-5C65-9FAC-D3693D30819F_d0e442962_href.png Binary file Symbian3/PDK/Source/GUID-C6DDF01D-DF54-5C65-9FAC-D3693D30819F_d0e442962_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C6E29524-AD59-4EBB-9004-13F731FA1F3C.dita --- a/Symbian3/PDK/Source/GUID-C6E29524-AD59-4EBB-9004-13F731FA1F3C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C6E29524-AD59-4EBB-9004-13F731FA1F3C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -62,7 +62,7 @@ such as an incoming call, occurs when a menu list is open, the list is cancelled and the new event takes control.

      Menu list - +

      The API to use for menu lists is the Lists API. For implementation information, see Using the Lists API.

      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C6EA2CFE-EA35-5B05-8103-B06A87BE1828.dita --- a/Symbian3/PDK/Source/GUID-C6EA2CFE-EA35-5B05-8103-B06A87BE1828.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C6EA2CFE-EA35-5B05-8103-B06A87BE1828.dita Fri Jul 16 17:23:46 2010 +0100 @@ -54,8 +54,8 @@ };

      The following diagram shows the flat classes and their relationships.

      Flat data type -
      API Description

      TMTPTypeFlatBase

      The base class of MTP flat data types.

      TMTPTypeEvent

      Represents MTP event dataset.

      TMTPTypeRequest

      Represents MTP operation request dataset.

      TMTPTypeResponse

      Represents MTP operation response dataset.

      Complex data type –a variable-length contiguous array or string. The following diagram shows the complex classes and their relationships.

      + API Description

      TMTPTypeFlatBase

      The base class of MTP flat data types.

      TMTPTypeEvent

      Represents MTP event dataset.

      TMTPTypeRequest

      Represents MTP operation request dataset.

      TMTPTypeResponse

      Represents MTP operation response dataset.

      Complex data type –a variable-length contiguous array or string. The following diagram shows the complex classes and their relationships.

      Complex data type - API Description

      CMTPTypeArray

      Represents MTP array data type.

      CMTPTypeFile

      Represents MTP binary object data type.

      CMTPTypeString

      Represents MTP string data type.

      Compound data type –a mixed sequence of simple, flat, complex and compound types.

      Compound classes were initially derived from CMTPTypeCompoundBase. The derived class can represent a list dataset or an element of a list dataset. For example, CMTPTypeObjectPropListElement is an element of CMTPTypeObjectPropList. They are both derived from CMTPTypeCompoundBase.

      CMTTypeList is then added to represent list dataset. It derives from CMTPTypeCompoundBase. The list classes added later are derived from CMTTypeList. For example, CMTPTypeServicePropertyList is derived from CMTTypeList and its elment CMTPTypeServicePropertyElement is derived from CMTPTypeCompoundBase.

      Note:CMTPTypeCompoundBase::ChunkAppendL() can be used to append any MMTPType data types to the compound data.

      The following diagram and table describe the compound base classes. For a complete set of the derived classes, refer the MTP API references.

      + API Description

      CMTPTypeArray

      Represents MTP array data type.

      CMTPTypeFile

      Represents MTP binary object data type.

      CMTPTypeString

      Represents MTP string data type.

      Compound data type –a mixed sequence of simple, flat, complex and compound types.

      Compound classes were initially derived from CMTPTypeCompoundBase. The derived class can represent a list dataset or an element of a list dataset. For example, CMTPTypeObjectPropListElement is an element of CMTPTypeObjectPropList. They are both derived from CMTPTypeCompoundBase.

      CMTTypeList is then added to represent list dataset. It derives from CMTPTypeCompoundBase. The list classes added later are derived from CMTTypeList. For example, CMTPTypeServicePropertyList is derived from CMTTypeList and its elment CMTPTypeServicePropertyElement is derived from CMTPTypeCompoundBase.

      Note:CMTPTypeCompoundBase::ChunkAppendL() can be used to append any MMTPType data types to the compound data.

      The following diagram and table describe the compound base classes. For a complete set of the derived classes, refer the MTP API references.

      Compound data type-base classes - API Description

      CMTPTypeCompoundBase

      The base class of MTP compound data types.

      CMTPTypeList

      The base class of MTP list dataset.

      RMTPType

      The general class for containing, accessing, and manipulating a reference to any MMTPType -derived data type.

    Using MTP Data Types library

    MTP data providers use the MTP Data Types library to process datasets for MTP operations and events. Device creators can provide their extended data types.

    \ No newline at end of file + API Description

    CMTPTypeCompoundBase

    The base class of MTP compound data types.

    CMTPTypeList

    The base class of MTP list dataset.

    RMTPType

    The general class for containing, accessing, and manipulating a reference to any MMTPType -derived data type.

    Using MTP Data Types library

    MTP data providers use the MTP Data Types library to process datasets for MTP operations and events. Device creators can provide their extended data types.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C71311A7-F747-57EB-B31F-6E634D5976A3.dita --- a/Symbian3/PDK/Source/GUID-C71311A7-F747-57EB-B31F-6E634D5976A3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C71311A7-F747-57EB-B31F-6E634D5976A3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -28,7 +28,7 @@ Device creators can write additional plug-in converters by implementing the CCharacterSetConverterPluginInterface interface.

    Charconv Framework collection - +

    Using the Character Conversion Framework

    Application developers can use the Charconv API to convert text between various encodings diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C7150120-74C2-5FF1-99F0-0A267393E342.dita --- a/Symbian3/PDK/Source/GUID-C7150120-74C2-5FF1-99F0-0A267393E342.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C7150120-74C2-5FF1-99F0-0A267393E342.dita Fri Jul 16 17:23:46 2010 +0100 @@ -65,7 +65,7 @@ by Symbian and the blue blocks represent components that must be implemented by device creators.

    CryptoToken Framework Architecture - +
    Key classes diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C7560CDB-E8F4-55E8-953C-3731B690CF76_d0e471475_href.jpg Binary file Symbian3/PDK/Source/GUID-C7560CDB-E8F4-55E8-953C-3731B690CF76_d0e471475_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C7560CDB-E8F4-55E8-953C-3731B690CF76_d0e477311_href.jpg Binary file Symbian3/PDK/Source/GUID-C7560CDB-E8F4-55E8-953C-3731B690CF76_d0e477311_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C75726D3-E815-503D-8267-26DA27AD4787-GENID-1-12-1-26-1-1-11-1-1-5-1-10-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-C75726D3-E815-503D-8267-26DA27AD4787-GENID-1-12-1-26-1-1-11-1-1-5-1-10-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,122 @@ + + + + + +Big integers +
      +
    • What does the big integer library do?

    • +
    • How do I use the big integer library?

    • +
    • Base classes and their derived classes

        +
      • RInteger class

      • +
    • +
    +
    What does the +big integer library do?

    Some types of cryptography require the handling +of finite arbitrary length integers. This big integer library attempts to +provide support for that requirement.

    It is capable of representing +both negative and positive integers with an absolute value of less than 2^(237).

    +
    How do I use +the big integer library?

    There are four categories of exposed APIs:

      +
    1. Creation of new integers +given some other representation (descriptor, TUint, etc). RInteger::NewL()

    2. +
    3. Creation of new integers +given some criteria (range, bitcount, prime). RInteger::NewRandomL(), RInteger::NewPrimeL()

    4. +
    5. Exporting of previously +created integers to descriptors. TInteger::BufferLC()

    6. +
    7. Querying attributes +about the size of a previously created integer. TInteger::BitCount(), TInteger::ByteCount(), TInteger::WordCount().

    8. +

    The following code demonstrates how to create an RInteger from +a bit string representation of a big integer.

    +//This creates an RInteger from the following binary hexadecimal (base 16) +//descriptor. Note that the number is written overall in big endian (most +//significant digit is first, least significant digit (ones digit) is last). +//P.S. The hexadecimal binary descriptor below is the base 16 representation +//of the base 10 number 123456789012345678901234567890. +RInteger integer = RInteger::NewL(_L8("18EE90FF6C373E0EE4E3F0AD2")); +CleanupStack::PushL(integer); + +//This next line converts the number stored by an RInteger into a binary, big +//endian, hexadecimal descriptor. +HBufC8* descriptor = integer.BufferLC(); +CleanupStack::Pop(descriptor); +CleanupStack::PopAndDestroy(integer); +//descriptor is the same as the original _L8 input value now. +

    For more information on integers, including important memory +management information and additional creation overloads, see RInteger in +the Cryptography API Reference material.

    +
    Base classes +and their derived classes

    The diagram below shows the main classes +used in bigint and which are implemented in cryptography.dll. +The color of the boxes indicates the type of Symbian class, that is, M, C, R or T class. For detailed information on each component see the Cryptography API +Reference material.

    +The inheritance diagram above shows the <codeph>TInteger</codeph> and <codeph>RInteger</codeph> classes. + +

    RInteger class

    RInteger is +a TInteger derived class allowing the construction of variable +length big integers.

    This class follows standard R class +rules. As a quick refresher, the following rules apply to RInteger s:

      +
    • You can construct an +empty RInteger.

      +RInteger integer; +

      This is a constructed, but uninitialized integer. It does +not own memory and no operations can be performed on it. It is useful, mostly, +to assign the result of another integer operation to. Push ing +and then PopAndDestroy ing an empty RInteger works, +although it's not needed.

    • +
    • RInteger s +can be bitwised copied (the default assignment operator and copy constructor +are valid), but you need to be careful you don't lose your original memory +in the process. You should only use the assignment operator on a newly declared +integer. To set an RInteger to another value without losing +memory see TInteger::Set().

      +RInteger a = anotherInteger; // OK -- you now have two integers that point to the same memory +RInteger b = RInteger::NewL(aDesc); // OK +b = a; // NOT OK, b's original memory has been lost +
    • +
    • You own any RInteger returned +by value from a TInteger function.

      +RInteger integer = a.MinusL(b); // We now own integer +CleanupStack::PushL(integer); +
    • +
    • You must call Close() on +all RInteger s that own memory before they go out of scope. +(The cleanup stack can do this for you as well, see further bullet points +below).

      +void foo(void) + { + RInteger integer = a.TimesL(TInteger::Two); + //< all sorts of non-leaving code here > + integer.Close(); + } +
    • +
    • RInteger has +a operator TCleanupItem() cast function that allows you to +call CleanupStack::PushL(RInteger&). Use this in preference +to CleanupClosePushL(RInteger&), which although it does +the same thing, generates more code.

      +RInteger integer = a.ModularExponentiateL(b, p); +CleanupStack::PushL(integer); +//< all sorts of leaving code here > +CleanupStack::PopAndDestroy(&integer); +
    • +
    • Be careful calling TInteger::Set(). +After calling this, two RInteger s have a pointer to the +same heap-based integer. Calling Close() on one, either explicitly +or through the cleanup stack, leaves a dangling pointer to the other. You +probably want to use code similar to the following:

      +RInteger first = RInteger::NewL(298728); +CleanupStack::PushL(first); +//< all sorts of leaving code here > +RInteger second.Set(first); +CleanupStack::Pop(first); +CleanupStack::PushL(second); +
    • +
    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C75726D3-E815-503D-8267-26DA27AD4787-GENID-1-12-1-26-1-1-9-1-5-1-11-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-C75726D3-E815-503D-8267-26DA27AD4787-GENID-1-12-1-26-1-1-9-1-5-1-11-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,122 @@ + + + + + +Big integers +
      +
    • What does the big integer library do?

    • +
    • How do I use the big integer library?

    • +
    • Base classes and their derived classes

        +
      • RInteger class

      • +
    • +
    +
    What does the +big integer library do?

    Some types of cryptography require the handling +of finite arbitrary length integers. This big integer library attempts to +provide support for that requirement.

    It is capable of representing +both negative and positive integers with an absolute value of less than 2^(237).

    +
    How do I use +the big integer library?

    There are four categories of exposed APIs:

      +
    1. Creation of new integers +given some other representation (descriptor, TUint, etc). RInteger::NewL()

    2. +
    3. Creation of new integers +given some criteria (range, bitcount, prime). RInteger::NewRandomL(), RInteger::NewPrimeL()

    4. +
    5. Exporting of previously +created integers to descriptors. TInteger::BufferLC()

    6. +
    7. Querying attributes +about the size of a previously created integer. TInteger::BitCount(), TInteger::ByteCount(), TInteger::WordCount().

    8. +

    The following code demonstrates how to create an RInteger from +a bit string representation of a big integer.

    +//This creates an RInteger from the following binary hexadecimal (base 16) +//descriptor. Note that the number is written overall in big endian (most +//significant digit is first, least significant digit (ones digit) is last). +//P.S. The hexadecimal binary descriptor below is the base 16 representation +//of the base 10 number 123456789012345678901234567890. +RInteger integer = RInteger::NewL(_L8("18EE90FF6C373E0EE4E3F0AD2")); +CleanupStack::PushL(integer); + +//This next line converts the number stored by an RInteger into a binary, big +//endian, hexadecimal descriptor. +HBufC8* descriptor = integer.BufferLC(); +CleanupStack::Pop(descriptor); +CleanupStack::PopAndDestroy(integer); +//descriptor is the same as the original _L8 input value now. +

    For more information on integers, including important memory +management information and additional creation overloads, see RInteger in +the Cryptography API Reference material.

    +
    Base classes +and their derived classes

    The diagram below shows the main classes +used in bigint and which are implemented in cryptography.dll. +The color of the boxes indicates the type of Symbian class, that is, M, C, R or T class. For detailed information on each component see the Cryptography API +Reference material.

    +The inheritance diagram above shows the <codeph>TInteger</codeph> and <codeph>RInteger</codeph> classes. + +

    RInteger class

    RInteger is +a TInteger derived class allowing the construction of variable +length big integers.

    This class follows standard R class +rules. As a quick refresher, the following rules apply to RInteger s:

      +
    • You can construct an +empty RInteger.

      +RInteger integer; +

      This is a constructed, but uninitialized integer. It does +not own memory and no operations can be performed on it. It is useful, mostly, +to assign the result of another integer operation to. Push ing +and then PopAndDestroy ing an empty RInteger works, +although it's not needed.

    • +
    • RInteger s +can be bitwised copied (the default assignment operator and copy constructor +are valid), but you need to be careful you don't lose your original memory +in the process. You should only use the assignment operator on a newly declared +integer. To set an RInteger to another value without losing +memory see TInteger::Set().

      +RInteger a = anotherInteger; // OK -- you now have two integers that point to the same memory +RInteger b = RInteger::NewL(aDesc); // OK +b = a; // NOT OK, b's original memory has been lost +
    • +
    • You own any RInteger returned +by value from a TInteger function.

      +RInteger integer = a.MinusL(b); // We now own integer +CleanupStack::PushL(integer); +
    • +
    • You must call Close() on +all RInteger s that own memory before they go out of scope. +(The cleanup stack can do this for you as well, see further bullet points +below).

      +void foo(void) + { + RInteger integer = a.TimesL(TInteger::Two); + //< all sorts of non-leaving code here > + integer.Close(); + } +
    • +
    • RInteger has +a operator TCleanupItem() cast function that allows you to +call CleanupStack::PushL(RInteger&). Use this in preference +to CleanupClosePushL(RInteger&), which although it does +the same thing, generates more code.

      +RInteger integer = a.ModularExponentiateL(b, p); +CleanupStack::PushL(integer); +//< all sorts of leaving code here > +CleanupStack::PopAndDestroy(&integer); +
    • +
    • Be careful calling TInteger::Set(). +After calling this, two RInteger s have a pointer to the +same heap-based integer. Calling Close() on one, either explicitly +or through the cleanup stack, leaves a dangling pointer to the other. You +probably want to use code similar to the following:

      +RInteger first = RInteger::NewL(298728); +CleanupStack::PushL(first); +//< all sorts of leaving code here > +RInteger second.Set(first); +CleanupStack::Pop(first); +CleanupStack::PushL(second); +
    • +
    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C75726D3-E815-503D-8267-26DA27AD4787.dita --- a/Symbian3/PDK/Source/GUID-C75726D3-E815-503D-8267-26DA27AD4787.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,122 +0,0 @@ - - - - - -Big integers -
      -
    • What does the big integer library do?

    • -
    • How do I use the big integer library?

    • -
    • Base classes and their derived classes

        -
      • RInteger class

      • -
    • -
    -
    What does the -big integer library do?

    Some types of cryptography require the handling -of finite arbitrary length integers. This big integer library attempts to -provide support for that requirement.

    It is capable of representing -both negative and positive integers with an absolute value of less than 2^(237).

    -
    How do I use -the big integer library?

    There are four categories of exposed APIs:

      -
    1. Creation of new integers -given some other representation (descriptor, TUint, etc). RInteger::NewL()

    2. -
    3. Creation of new integers -given some criteria (range, bitcount, prime). RInteger::NewRandomL(), RInteger::NewPrimeL()

    4. -
    5. Exporting of previously -created integers to descriptors. TInteger::BufferLC()

    6. -
    7. Querying attributes -about the size of a previously created integer. TInteger::BitCount(), TInteger::ByteCount(), TInteger::WordCount().

    8. -

    The following code demonstrates how to create an RInteger from -a bit string representation of a big integer.

    -//This creates an RInteger from the following binary hexadecimal (base 16) -//descriptor. Note that the number is written overall in big endian (most -//significant digit is first, least significant digit (ones digit) is last). -//P.S. The hexadecimal binary descriptor below is the base 16 representation -//of the base 10 number 123456789012345678901234567890. -RInteger integer = RInteger::NewL(_L8("18EE90FF6C373E0EE4E3F0AD2")); -CleanupStack::PushL(integer); - -//This next line converts the number stored by an RInteger into a binary, big -//endian, hexadecimal descriptor. -HBufC8* descriptor = integer.BufferLC(); -CleanupStack::Pop(descriptor); -CleanupStack::PopAndDestroy(integer); -//descriptor is the same as the original _L8 input value now. -

    For more information on integers, including important memory -management information and additional creation overloads, see RInteger in -the Cryptography API Reference material.

    -
    Base classes -and their derived classes

    The diagram below shows the main classes -used in bigint and which are implemented in cryptography.dll. -The color of the boxes indicates the type of Symbian class, that is, M, C, R or T class. For detailed information on each component see the Cryptography API -Reference material.

    -The inheritance diagram above shows the <codeph>TInteger</codeph> and <codeph>RInteger</codeph> classes. - -

    RInteger class

    RInteger is -a TInteger derived class allowing the construction of variable -length big integers.

    This class follows standard R class -rules. As a quick refresher, the following rules apply to RInteger s:

      -
    • You can construct an -empty RInteger.

      -RInteger integer; -

      This is a constructed, but uninitialized integer. It does -not own memory and no operations can be performed on it. It is useful, mostly, -to assign the result of another integer operation to. Push ing -and then PopAndDestroy ing an empty RInteger works, -although it's not needed.

    • -
    • RInteger s -can be bitwised copied (the default assignment operator and copy constructor -are valid), but you need to be careful you don't lose your original memory -in the process. You should only use the assignment operator on a newly declared -integer. To set an RInteger to another value without losing -memory see TInteger::Set().

      -RInteger a = anotherInteger; // OK -- you now have two integers that point to the same memory -RInteger b = RInteger::NewL(aDesc); // OK -b = a; // NOT OK, b's original memory has been lost -
    • -
    • You own any RInteger returned -by value from a TInteger function.

      -RInteger integer = a.MinusL(b); // We now own integer -CleanupStack::PushL(integer); -
    • -
    • You must call Close() on -all RInteger s that own memory before they go out of scope. -(The cleanup stack can do this for you as well, see further bullet points -below).

      -void foo(void) - { - RInteger integer = a.TimesL(TInteger::Two); - //< all sorts of non-leaving code here > - integer.Close(); - } -
    • -
    • RInteger has -a operator TCleanupItem() cast function that allows you to -call CleanupStack::PushL(RInteger&). Use this in preference -to CleanupClosePushL(RInteger&), which although it does -the same thing, generates more code.

      -RInteger integer = a.ModularExponentiateL(b, p); -CleanupStack::PushL(integer); -//< all sorts of leaving code here > -CleanupStack::PopAndDestroy(&integer); -
    • -
    • Be careful calling TInteger::Set(). -After calling this, two RInteger s have a pointer to the -same heap-based integer. Calling Close() on one, either explicitly -or through the cleanup stack, leaves a dangling pointer to the other. You -probably want to use code similar to the following:

      -RInteger first = RInteger::NewL(298728); -CleanupStack::PushL(first); -//< all sorts of leaving code here > -RInteger second.Set(first); -CleanupStack::Pop(first); -CleanupStack::PushL(second); -
    • -
    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C762E5B4-A7E3-5CAD-B639-A31F5D1899D3.dita --- a/Symbian3/PDK/Source/GUID-C762E5B4-A7E3-5CAD-B639-A31F5D1899D3.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Overview of DLL building

    Building a DLL target generates two files:

    • The compiled DLL binary: this file contains the executable code that is called at run-time. It often has the extension .DLL, though some DLLs have extensions that indicate their particular purpose, e.g. .ANI for animation DLLs.

    • Import library: represents the exported interface of the DLL. This allows other programs to use the DLL, by linking against the import library at build time.

      Import libraries have the extension .lib in the Symbian emulator and ARM ABIv1 builds, or .dso in the ARM ABIv2 builds.

    Other programs can use DLLs in two ways:

    • By linking against them at build time, using the interface defined in a C++ header file, and in the DLL's import library.

      DLLs designed to be used in this way are called static interface DLLs.

    • By using an API to dynamically load and call the DLL at run-time. DLLs designed to be used in this way are called polymorphic interface DLLs.

      See Frameworks, libraries and DLLs for more on this idiom, and Dynamically Loading Link Libraries API for details of the API.

    The following pages discuss the special configuration issues associated with building for DLL targets.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C7B748CF-D080-5448-98AF-1634D821E713.dita --- a/Symbian3/PDK/Source/GUID-C7B748CF-D080-5448-98AF-1634D821E713.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C7B748CF-D080-5448-98AF-1634D821E713.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,49 +9,47 @@ --> - SMP -ExampleThis example demonstrates symmetric multiprocessing using multiple -threads. -

    This example shows the differences between code running in a unicore environment -and in a multiprocessor environment.

    -
    Download

    Click on the following link to download -the example: SmpExample.zip

    Click: browse to view the example code.

    -
    Class summary
      + SMP ExampleThis example demonstrates symmetric multiprocessing using +multiple threads. +

      This example shows the differences between code running in a unicore +environment and in a multiprocessor environment.

      +
      Download

      Click on the following link to download the example: SmpExample.zip

      Click: browse to view the example code.

      +
      Class +summary
      • RThread - A handle to a thread.

      • RDbStoreDatabase - DBMS Store database implementation

      -
      Design and implementation

      The example creates two -databases named DBforSMP1.db and DBforSMP2.db and three threads:

        -
      • WriterThread1: -It creates the DBforSMP1.db database and writes integers to it. The thread -has the lowest priority amongst all the threads.

      • -
      • WriterThread2: -It creates the DBforSMP2.db database and writes some integers to it. The thread -has highest priority amongst all the threads.

      • -
      • ReaderThread: -It reads the two databases and prints the output to the console. It has normal -priority.

      • -

      In a unicore enviroment, the threads are executed according to their -priorities. This means first WriterThread2, then ReaderThread and -finally WriterThread1 is executed. Hence ReaderThead can -only print the contents of the DBforSMP2.db in the console because DBforSMP1 -is empty. in an SMP environment, threads run simultaneously and ReaderThread can -print the contents of both the databases.

      -
      Building and configuring

      To build the example:

        -
      • The example builds an -executable called smpexample.exe in the standard location.

      • -
      • You can build the example -from your IDE or the command line.

        If you use an IDE, import the bld.inf file -of the example into your IDE, and use the build command of the IDE.

        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:

        bldmake -bldfiles

        abld build

        How to use bldmake and How to use abld describe -how to use the SBSv1 build tools.

      • +
        Design +and implementation

        The example creates two databases named +DBforSMP1.db and DBforSMP2.db and three threads:

          +
        • WriterThread1: It creates the DBforSMP1.db database and writes integers to it. +The thread has the lowest priority amongst all the threads.

        • +
        • WriterThread2: It creates the DBforSMP2.db database and writes some integers to +it. The thread has highest priority amongst all the threads.

        • +
        • ReaderThread: It reads the two databases and prints the output to the console. +It has normal priority.

        • +

        In a unicore enviroment, the threads are executed according +to their priorities. This means first WriterThread2, then ReaderThread and finally WriterThread1 is executed. Hence ReaderThead can only print the +contents of the DBforSMP2.db in the console because DBforSMP1 is empty. +in an SMP environment, threads run simultaneously and ReaderThread can print the contents of both the databases.

        +
        Building +and configuring

        To build the example:

          +
        • The example +builds an executable called smpexample.exe in +the standard location.

        • +
        • You can build +the example from your IDE or the command line.

          If you use +an IDE, import the bld.inf file of the example +into your IDE, and use the build command of the IDE.

          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:

          bldmake bldfiles

          abld +build

        -
        Running the example

        To test the example in an SMP -environment, add crazyscheduling onin the epoc32\data\epoc.ini file. -This emulates SMP behaviour in the techview emulator. Execute the example -in both unicore and multiprocessor environment and see the difference. Run -the example following the instructions provided in the console.

        +
        Running +the example

        To test the example in an SMP environment, +add crazyscheduling onin the epoc32\data\epoc.ini file. This emulates SMP behaviour in the techview emulator. Execute +the example in both unicore and multiprocessor environment and see +the difference. Run the example following the instructions provided +in the console.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C7D026AF-9C07-4221-AEDE-8CC0654A9D57.dita --- a/Symbian3/PDK/Source/GUID-C7D026AF-9C07-4221-AEDE-8CC0654A9D57.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C7D026AF-9C07-4221-AEDE-8CC0654A9D57.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,7 +21,7 @@ that have one.

        Text selection in an editor - +

        If the user presses an Arrow key alone when there is a text selection, the selection disappears and the cursor reappears in the respective position.

        diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C7F3EDA1-B935-5F5F-AFD4-A3CABA0C031C.dita --- a/Symbian3/PDK/Source/GUID-C7F3EDA1-B935-5F5F-AFD4-A3CABA0C031C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C7F3EDA1-B935-5F5F-AFD4-A3CABA0C031C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -32,14 +32,14 @@ images below illustrate how the interface extensibility feature works.

        The class diagram shows the implementation of the original interface.

        Class diagram of the original interface - +

        The next class diagram shows an example of the original class CImplementationClass supporting two extensions . The extensions have been added to the CExampleInterface each using a different implementation methodology .

        CExampleInterfaceExtended requires no data and so has been added to the inheritance of the original plug-in CImplementationClass object. MExampleInterfaceExtended2 shows how extensions can be realized in separate objects with their own data.

        Class diagram of the extended interface - +

        The extended interfaces should maintain the binary compatibility by not changing the original interface class definition. The functional compatibility should be maintained by incorporating interface extensions as optional. This diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C7F900F4-7C8E-4922-8785-D6EF9AE23B22.dita --- a/Symbian3/PDK/Source/GUID-C7F900F4-7C8E-4922-8785-D6EF9AE23B22.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C7F900F4-7C8E-4922-8785-D6EF9AE23B22.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,7 +17,7 @@ first touch down and release only checks or unchecks the item. Touch down and release second time activates the item and the pop-up closes.

        - +
    The default touch events for list selection item diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C830420C-FBBD-5265-8746-7690C0ADCE81_d0e276368_href.png Binary file Symbian3/PDK/Source/GUID-C830420C-FBBD-5265-8746-7690C0ADCE81_d0e276368_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C830420C-FBBD-5265-8746-7690C0ADCE81_d0e282368_href.png Binary file Symbian3/PDK/Source/GUID-C830420C-FBBD-5265-8746-7690C0ADCE81_d0e282368_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C842C016-0D1B-5462-8B04-49CFE941A964_d0e375243_href.jpg Binary file Symbian3/PDK/Source/GUID-C842C016-0D1B-5462-8B04-49CFE941A964_d0e375243_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C842C016-0D1B-5462-8B04-49CFE941A964_d0e381087_href.jpg Binary file Symbian3/PDK/Source/GUID-C842C016-0D1B-5462-8B04-49CFE941A964_d0e381087_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C8450E58-A603-5CF8-993E-053C990DDA19_d0e380027_href.png Binary file Symbian3/PDK/Source/GUID-C8450E58-A603-5CF8-993E-053C990DDA19_d0e380027_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C8450E58-A603-5CF8-993E-053C990DDA19_d0e385880_href.png Binary file Symbian3/PDK/Source/GUID-C8450E58-A603-5CF8-993E-053C990DDA19_d0e385880_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita --- a/Symbian3/PDK/Source/GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C85EECD6-2CFD-5BA9-A60B-F7AF3A74E832.dita Fri Jul 16 17:23:46 2010 +0100 @@ -62,9 +62,9 @@
  • RBuf::Swap(RBuf8&)

  • Copying data to an RBuf using the assignment operator

    The example -creates two resizable buffers and allocates memory using RBuf::Create(const TDesC8&). It then copies -data to these buffers. It also copies data from the first buffer to -the second buffer using the assignment operator.

    Notes:

      +creates two resizable buffers and allocates memory using RBuf::Create(const TDesC8&). It then copies data to +these buffers. It also copies data from the first buffer to the second +buffer using the assignment operator.

      Notes:

      • When you use RBuf::Assign(const RBuf8&), ownership of the buffer is transferred. Assign(const RBuf8&) neither checks nor frees any pre-existing owned allocated memory. If this @@ -108,9 +108,7 @@ a stream from a file.

      • RFs

      -
      Build

      The Symbian -build process describes how to build this example application. -The example builds an executable file called rbufexample.exe in the standard location (\epoc32\release\winscw\<build_variant> for the emulator). After launching the executable, depending on +

      Build

      The example builds an executable file called rbufexample.exe in the standard location (\epoc32\release\winscw\<build_variant> for the emulator). After launching the executable, depending on the emulator you are using, you may need to navigate away from the application launcher/shell screen to view the console.

      See diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C86A7929-DC0F-50FA-93CB-662A22C4CD35.dita --- a/Symbian3/PDK/Source/GUID-C86A7929-DC0F-50FA-93CB-662A22C4CD35.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C86A7929-DC0F-50FA-93CB-662A22C4CD35.dita Fri Jul 16 17:23:46 2010 +0100 @@ -35,11 +35,11 @@ settings. The higher ROFS layers cannot modify the global properties of the keyspaces like metadata, owner information and the access control information. </p> <fig id="GUID-BABA2027-0E54-575A-8A59-EB771CF46529"> <title> Central repository - Modify a setting - +

      The figure below shows how a new setting is added to the central repository keyspace.

      Central repository - Add a new setting - +
      Advantages

      The advantages of using multiple ROFS layer to create device variant are:

        diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C8938826-52F7-5040-B59C-3C06DAEB6F03_d0e174360_href.jpg Binary file Symbian3/PDK/Source/GUID-C8938826-52F7-5040-B59C-3C06DAEB6F03_d0e174360_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C8938826-52F7-5040-B59C-3C06DAEB6F03_d0e180428_href.jpg Binary file Symbian3/PDK/Source/GUID-C8938826-52F7-5040-B59C-3C06DAEB6F03_d0e180428_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C8AD9E54-F93D-5E04-A958-95934D29180B_d0e245295_href.png Binary file Symbian3/PDK/Source/GUID-C8AD9E54-F93D-5E04-A958-95934D29180B_d0e245295_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C8AD9E54-F93D-5E04-A958-95934D29180B_d0e251306_href.png Binary file Symbian3/PDK/Source/GUID-C8AD9E54-F93D-5E04-A958-95934D29180B_d0e251306_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C8C804F9-860D-590D-B247-FBB1714604B7_d0e228570_href.png Binary file Symbian3/PDK/Source/GUID-C8C804F9-860D-590D-B247-FBB1714604B7_d0e228570_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C8C804F9-860D-590D-B247-FBB1714604B7_d0e234569_href.png Binary file Symbian3/PDK/Source/GUID-C8C804F9-860D-590D-B247-FBB1714604B7_d0e234569_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C8D04D54-D391-5505-9E80-596589410179_d0e548048_href.png Binary file Symbian3/PDK/Source/GUID-C8D04D54-D391-5505-9E80-596589410179_d0e548048_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C8D04D54-D391-5505-9E80-596589410179_d0e555504_href.png Binary file Symbian3/PDK/Source/GUID-C8D04D54-D391-5505-9E80-596589410179_d0e555504_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C8D5B104-3F34-513B-BA08-5F2FEE60265C_d0e8909_href.png Binary file Symbian3/PDK/Source/GUID-C8D5B104-3F34-513B-BA08-5F2FEE60265C_d0e8909_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C8D5B104-3F34-513B-BA08-5F2FEE60265C_d0e9031_href.png Binary file Symbian3/PDK/Source/GUID-C8D5B104-3F34-513B-BA08-5F2FEE60265C_d0e9031_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C9208CCB-1802-5819-AD42-3403807FC3AA_d0e275098_href.png Binary file Symbian3/PDK/Source/GUID-C9208CCB-1802-5819-AD42-3403807FC3AA_d0e275098_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C9208CCB-1802-5819-AD42-3403807FC3AA_d0e281098_href.png Binary file Symbian3/PDK/Source/GUID-C9208CCB-1802-5819-AD42-3403807FC3AA_d0e281098_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C93C2E54-06CE-5BE4-9618-7B62FA086D6B_d0e450854_href.png Binary file Symbian3/PDK/Source/GUID-C93C2E54-06CE-5BE4-9618-7B62FA086D6B_d0e450854_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C93C2E54-06CE-5BE4-9618-7B62FA086D6B_d0e456699_href.png Binary file Symbian3/PDK/Source/GUID-C93C2E54-06CE-5BE4-9618-7B62FA086D6B_d0e456699_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C9429505-EEE7-4E64-BE0A-BC5D57D5B42C_d0e64799_href.png Binary file Symbian3/PDK/Source/GUID-C9429505-EEE7-4E64-BE0A-BC5D57D5B42C_d0e64799_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C9429505-EEE7-4E64-BE0A-BC5D57D5B42C_d0e69022_href.png Binary file Symbian3/PDK/Source/GUID-C9429505-EEE7-4E64-BE0A-BC5D57D5B42C_d0e69022_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C98DF912-A903-4FDB-B27A-CC8E75E3E40F.dita --- a/Symbian3/PDK/Source/GUID-C98DF912-A903-4FDB-B27A-CC8E75E3E40F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C98DF912-A903-4FDB-B27A-CC8E75E3E40F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,6 +20,6 @@ class, constructed by the DLogicalDevice factory object.

        Device driver logical channel classes - +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C99BA704-4E9F-482C-942F-1B4D7F385BD8.dita --- a/Symbian3/PDK/Source/GUID-C99BA704-4E9F-482C-942F-1B4D7F385BD8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C99BA704-4E9F-482C-942F-1B4D7F385BD8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,77 +1,76 @@ - - - - - -HelloWorldBasic_reg.rss -

      You need to register your applications in order to make them visible -to the application launcher and to provide other information to the underlying -system. To register, you need to provide a registration resource file, typically -named <application_name>_reg.rss, that contains the -non-localized information for your application. This section contains an example -of such a file.

      -

      For more information on registration files in general, see Registration.

      -

      For information on creating your own registration resource files, see Creating -registration resource files.

      -#include "Helloworldbasic.rls" - -

      This pre-processor statement adds the rls project -file that controls the strings loaded for different languages based on the -Symbian platform language setting to the preprocessing path. For more information -on localization, see Internationalization -and localization.

      -#include <appinfo.rh> - -

      This preprocessor statement adds the resource header file that provides -the data structure used for the RESOURCE statement in -this registration resource file.

      -#include <HelloWorldBasic.rsg> - - -

      This preprocessor statement adds the generated resource header file -for the HelloWorldBasic application to the preprocessor path to allow -access to the R_HELLOWORLDBASIC_LOCALISABLE_APP_INFO resource.

      -UID2 KUidAppRegistrationResourceFile - -

      This required statement defines the UID2 value for a registration resource -file.

      -UID3 0xA000017F - - -

      This required statement defines the UID3 of -the application.

      -RESOURCE APP_REGISTRATION_INFO - { - app_file="HelloWorldBasic"; - localisable_resource_file = STRING_r_helloworldbasic_loc_resource_file_1; - localisable_resource_id = R_HELLOWORLDBASIC_LOCALISABLE_APP_INFO; - - embeddability=KAppNotEmbeddable; - newfile=KAppDoesNotSupportNewFile; - } - - -

      This RESOURCE definition contains the non-localizable -properties of the HelloWorldBasic application, where

      -
        -
      • HelloWorldBasic is the name of the application -executable

      • -
      • STRING_r_helloworldbasic_loc_resource_file_1 contains -the value \\resource\\apps\\HelloWorldBasic in all rls files. -This is the location of the HelloWorldBasic resource files.

        -
      • -
      • R_HELLOWORLDBASIC_LOCALISABLE_APP_INFO is -the identifier for the resource declared in helloworldbasic.rss that -contains the short caption, caption, and icon information

      • -
      • KAppNotEmbeddable indicates that HelloWorldBasic is -not embeddable

      • -
      • KAppDoesNotSupportNewFile indicates -that HelloWorldBasic does not support new files

      • -
      + + + + + +HelloWorldBasic_reg.rss +

      You need to register your applications in order to make them visible +to the application launcher and to provide other information to the underlying +system. To register, you need to provide a registration resource file, typically +named <application_name>_reg.rss, that contains the +non-localized information for your application. This section contains an example +of such a file.

      +

      For more information on registration files in general, see Registration.

      +

      For information on creating your own registration resource files, see Creating registration resource files.

      +#include "Helloworldbasic.rls" + +

      This pre-processor statement adds the rls project +file that controls the strings loaded for different languages based on the +Symbian platform language setting to the preprocessing path. For more information +on localization, see Internationalization +and localization.

      +#include <appinfo.rh> + +

      This preprocessor statement adds the resource header file that provides +the data structure used for the RESOURCE statement in +this registration resource file.

      +#include <HelloWorldBasic.rsg> + + +

      This preprocessor statement adds the generated resource header file +for the HelloWorldBasic application to the preprocessor path to allow +access to the R_HELLOWORLDBASIC_LOCALISABLE_APP_INFO resource.

      +UID2 KUidAppRegistrationResourceFile + +

      This required statement defines the UID2 value for a registration resource +file.

      +UID3 0xA000017F + + +

      This required statement defines the UID3 of +the application.

      +RESOURCE APP_REGISTRATION_INFO + { + app_file="HelloWorldBasic"; + localisable_resource_file = STRING_r_helloworldbasic_loc_resource_file_1; + localisable_resource_id = R_HELLOWORLDBASIC_LOCALISABLE_APP_INFO; + + embeddability=KAppNotEmbeddable; + newfile=KAppDoesNotSupportNewFile; + } + + +

      This RESOURCE definition contains the non-localizable +properties of the HelloWorldBasic application, where

      +
        +
      • HelloWorldBasic is the name of the application +executable

      • +
      • STRING_r_helloworldbasic_loc_resource_file_1 contains +the value \\resource\\apps\\HelloWorldBasic in all rls files. +This is the location of the HelloWorldBasic resource files.

        +
      • +
      • R_HELLOWORLDBASIC_LOCALISABLE_APP_INFO is +the identifier for the resource declared in helloworldbasic.rss that +contains the short caption, caption, and icon information

      • +
      • KAppNotEmbeddable indicates that HelloWorldBasic is +not embeddable

      • +
      • KAppDoesNotSupportNewFile indicates +that HelloWorldBasic does not support new files

      • +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-C9BEF1C4-F14A-5386-9DA8-29358694D7AA.dita --- a/Symbian3/PDK/Source/GUID-C9BEF1C4-F14A-5386-9DA8-29358694D7AA.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-C9BEF1C4-F14A-5386-9DA8-29358694D7AA.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,32 +1,29 @@ - - - - - -CClasses: -typical ‘C’ class -
      Description

      This shows a typical ‘C’ class, derived -from CBase, and highlights the use of two phase construction -and use of the cleanup stack to implement the complete construction of an -instance of that class on the heap.

      -
      Download

      Click on the following link to download -the example: CClasses.zip

      Click on the following link to -download additional files: CommonFramework.zip.

      Click browse CClasses to view the example code.

      Click browse CommonFramework to view additional -files.

      -
      Class summary

      CBase CleanupStack

      -
      Build

      The example source code includes the two -project files needed for building: bld.inf and the .mmp file.

      The Symbian platform build -process describes how to build this application, which results in an -executable called:

      \epoc32\release\<target>\<urel -or udeb>\CCLASSES.EXE.

      -
      Usage

      Run the executable CCLASSES.EXE.

      Executables -for the emulator targets wins and winscw can -be run on your PC. Executables for ARM targets must be copied to your target -platform before being run.

      + + + + + +CClasses: typical ‘C’ class +
      Description

      This shows a typical ‘C’ class, +derived from CBase, and highlights the use of two +phase construction and use of the cleanup stack to implement the complete +construction of an instance of that class on the heap.

      +
      Download

      Click on the following link to +download the example: CClasses.zip

      Click on the following +link to download additional files: CommonFramework.zip.

      Click browse CClasses to view the example code.

      Click browse CommonFramework to view additional files.

      +
      Class summary

      CBase CleanupStack

      +
      Build

      The example source code includes +the two project files needed for building: bld.inf and the .mmp file.

      The Symbian platform +build process describes how to build this application, which results +in an executable called:

      \epoc32\release\<target>\<urel +or udeb>\CCLASSES.EXE.

      +
      Usage

      Run the executable CCLASSES.EXE.

      Executables for the emulator targets wins and winscw can be run on your PC. Executables +for ARM targets must be copied to your target platform before being +run.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CA1CE18E-DB40-5608-BE09-3767FB094AB2_d0e684979_href.png Binary file Symbian3/PDK/Source/GUID-CA1CE18E-DB40-5608-BE09-3767FB094AB2_d0e684979_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CA1CE18E-DB40-5608-BE09-3767FB094AB2_d0e697806_href.png Binary file Symbian3/PDK/Source/GUID-CA1CE18E-DB40-5608-BE09-3767FB094AB2_d0e697806_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CA2AACD9-A99D-4C34-80AF-C1B61AC9331F.dita --- a/Symbian3/PDK/Source/GUID-CA2AACD9-A99D-4C34-80AF-C1B61AC9331F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CA2AACD9-A99D-4C34-80AF-C1B61AC9331F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ pane is with touch.

      Clock pane - +
    Default touch events for clock pane diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CA7B2B53-B0DD-4830-90CF-15FD101C66F1_d0e67869_href.png Binary file Symbian3/PDK/Source/GUID-CA7B2B53-B0DD-4830-90CF-15FD101C66F1_d0e67869_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CA7B2B53-B0DD-4830-90CF-15FD101C66F1_d0e72082_href.png Binary file Symbian3/PDK/Source/GUID-CA7B2B53-B0DD-4830-90CF-15FD101C66F1_d0e72082_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CAB2A21A-B2EE-4B49-AC97-7F70BDC95755_d0e4941_href.png Binary file Symbian3/PDK/Source/GUID-CAB2A21A-B2EE-4B49-AC97-7F70BDC95755_d0e4941_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CAB2A21A-B2EE-4B49-AC97-7F70BDC95755_d0e4950_href.png Binary file Symbian3/PDK/Source/GUID-CAB2A21A-B2EE-4B49-AC97-7F70BDC95755_d0e4950_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CAB30473-7829-5F2E-9F45-A2344DEDFC35_d0e352049_href.jpg Binary file Symbian3/PDK/Source/GUID-CAB30473-7829-5F2E-9F45-A2344DEDFC35_d0e352049_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CAB30473-7829-5F2E-9F45-A2344DEDFC35_d0e357977_href.jpg Binary file Symbian3/PDK/Source/GUID-CAB30473-7829-5F2E-9F45-A2344DEDFC35_d0e357977_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CAC07A47-1475-5152-83AA-E59FD3AFF321.dita --- a/Symbian3/PDK/Source/GUID-CAC07A47-1475-5152-83AA-E59FD3AFF321.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,421 +0,0 @@ - - - - - -elf2e32 -command syntax -
    Overview

    The elf2e32 tool's -primary function is to create executables (DLLs and EXEs) in the format required -by Symbian platform, known as the E32Image format. The tool takes as input, -the executables produced by a compiler in the standard Executable and Linking -Format (ELF), and Symbian platform-specific options specified as command-line -arguments to the tool. The tool is located in at epoc32\tools\elf2e32.exe.

    Invocation -syntax

    elf2e32 [--capability=<capabilities>] [--compressionmethod - [none | inflate | bytepair]] [--debuggable] [--dlldata] - [--definput=<file-path>] [--defoutput=<file-path>] [--dso=<file-path>] -[--dump=<dump-options>] [--e32input=<file-path>] [--elfinput=<file-path>] -[--fixedaddress] [--heap=<committed-size>[,<reserved-size>]] -[--help] [--libpath=<search-paths>] [--linkas=<name>] [--namedlookup] - [--noexportlibrary] [--output=<file-path>] [--sid=<secure-ID>] - [--stack=<size>] [--sysdef=<ordinal-number>,<symbol>] - [--targettype=<target-type>] [--uid1=<UID>] [--uid2=<UID>] - [--uid3=<UID>] [--uncompressed]

    -
    Options
    - - - -

    Option

    -

    Description

    -
    - -

    capability=<capabilities>

    -

    Platform security capabilities to be assigned to the executable.

    Capabilities -can be specified by name using the set of identifiers used in mmp files, i.e.: TCB, CommDD, PowerMgmt, MultimediaDD, ReadDeviceData, WriteDeviceData, DRM, TrustedUI, ProtServ, DiskAdmin, NetworkControl, AllFiles, SwEvent, NetworkServices, LocalServices, ReadUserData, WriteUserData, Location, SurroundingsDD, and UserEnvironment.

    Multiple -capabilities can be specified using "+" as a separator. For example:

    --capability=LocalServices+ReadDeviceData+ReadUserData

    The -special capability name ALL can be used to represent all -capabilities supported by the current version of Symbian platform. This can -also be used together with capability names prefixed with a '-' to indicate -which capabilities to exclude. For example:

    --capability=ALL-TCB-TrustedUI

    The default is no capabilities though the word NONE can -be used explicitly.

    -
    - -

    debuggable

    -

    Specifies that the application can be debugged using the run-mode -debug subsystem. Only executables (EXEs and EXEXPs) can be specified as debuggable.

    -
    - -

    definput=<file-path>

    -

    Input DEF file.

    This is used to specify a DEF file when -constructing a DLL and/or import library.

    -
    - -

    defoutput=<file-path>

    -

    Output DEF file.

    Specifies a DEF file to be constructed -by the tool.

    -
    - -

    dlldata

    -

    Allow writable static data in the DLL.

    The default is that -a DLL may not have writable static data. For more information, see Static -data.

    -
    - -

    dso=<file-path>

    -

    Output DSO (or library) file.

    Specifies the LIB file to -be constructed by the tool.

    -
    - -

    dump=<dump-options>

    -

    Used to specify the information generated when the e32input option -is used. The sections to include are specified as follows:

      -
    • h: -Header

    • -
    • s: -Security information

    • -
    • c: -Code section

    • -
    • d: -Data section

    • -
    • e: -Export information

    • -
    • I: -Import table

    • -
    -
    - -

    e32input=<file-path>

    -

    Dumps a description of the specified E32Image file to standard output. -The output describes the executable's properties such as its header, its imports -and exports, and the contents of its code and data sections. Output options -are specified using the --dump parameter.

    -
    - -

    elfinput=<file-path>

    -

    Input ELF file.

    Specifies a compiler-generated executable -in ELF format to be converted into E32Image format by the tool.

    -
    - -

    fixedaddress

    -

    Indicates that the process must have a fixed address.

    See Fixed processes for -more information.

    The default is no fixed address.

    -
    - -

    heap=<committed-size>[,<reserved-size>]

    -

    The committed size and reserved size of the heap for the process, -specified in bytes.

    The first value given is the committed size, followed -by the reserved size which is optional.

    The default committed size -is 0x1000 and the default reserved size is 0x100000.

    See Memory -Management concepts for more information.

    -
    - -

    help

    -

    Displays help text for the tool.

    -
    - -

    libpath=<search-paths>

    -

    A semi-colon separated list of search paths that the tool should -use to locate import libraries.

    -
    - -

    linkas=<name>

    -

    The internal name used in the image file for the executable. This -can include information that specifies the executable version (in braces) -and the UID3 (in square brackets). For example, foo{00020001}[10011235].exe, -would be used for an executable foo.exe, at version 2.1, -with UID3 0x10011235.

    -
    - -

    log=<file-path>

    -

    Redirects console log messages to the specified file

    -
    - -

    compressionmethod [none | inflate | bytepair]

    -

    The compression method to be used to compress the files. The tool -uses the inflate method by default.

    The following -compression methods can be used:

    - - - -

    none

    -

    The files are not compressed. This is equivalent to using the uncompressed keyword.

    Note: -The uncompressed keyword, when specified, takes precedence -over any compressionmethod.

    -
    - -

    inflate

    -

    Compresses executable files using the default (Deflate, Huffman+LZ77) -algorithm.

    -
    - -

    bytepair

    -

    Compresses executable files using the bytepair algorithm. Bytepair -compression allows faster decompression than the default Deflate, Huffman+LZ77 -algorithm and supports demand paging by performing compression and decompression -of code in independent 4KB pages.

    -
    - - -

    - - -

    namedlookup

    -

    Enables symbol lookup by name using the dlsym Open Group API. This option has an impact on -the binary size as Symbian platform binaries do not include symbol information -by default.

    Note: If the tool is invoked by the Symbian platform -build toolchain, symbol lookup is enabled for the STDEXE and STDDLL target -types only. To enable symbol lookup for other target types, the tool must -be invoked independently.

    -
    - -

    noexportlibrary

    -

    Suppress implicit exports.

    As part of the library exports, -the RVCT tools generate items not marked as EXPORT_C in the -source code. These include Virtual Table and Run-time Type Information entries. -Specifying this option causes the tool not to include these exports.

    For -background information, see cedar\generic\tools\documentation\Migrating_from_RVCT21_build_328_to_build_416_v1.0.doc.

    The default is to include these items generated by RVCT.

    -
    - -

    output=<file-path>

    -

    Output E32 image file name.

    -
    - -

    sid=<secure-ID>

    -

    Secure ID (SID) of the executable.

    An SID identifies an -executable uniquely on a phone. This allows service providers such as servers -to make security checks on the basis of the executable making the request.

    -
    - -

    stack=<size>

    -

    Specifies the stack size for a process in bytes.

    The default -is 0.

    -
    - -

    sysdef=<ordinal-number>, <symbol>

    -

    This option forces the specified symbol to be exported at the specified -ordinal position.

    This is required for some target types (polymorphic -DLLs).

    -
    - -

    targettype=<target-type>

    -

    Target type. The vaild types are as specified by the mmp targettype keyword.

    If elfinput is specified and there is no targettype, -a Custom -target is assumed.

    An IMPLIB target is assumed -if --elfinput is not specified and -deffilein is -specified.

    -
    - -

    uid1=<UID>

    -

    UID 1 value for output executable.

    -
    - -

    uid2=<UID>

    -

    UID 2 value for output executable.

    The default is 0.

    -
    - -

    uid3=<UID>

    -

    UID 3 value for output executable.

    The default is 0.

    -
    - -

    uncompressed

    -

    Specifies that the target executable must not be compressed.

    By -default, the target executable is compressed.

    -
    - -

    unfrozen

    -

    Specifies that the input DEF file (specified with --definput) -is not treated as frozen. This means that the tool will not report errors -if the executable does not contain symbols that are specified in the DEF file.

    -
    - -

    vid

    -

    Vendor ID (VID) of the executable.

    A VID allows service -providers such as servers to make security checks on the basis of the supplier -of the executable making the request.

    -
    - - -

    The following table specifies whether an option is required, optional -or not applicable (N/A) for the main use cases of the tool (namely creating -DLLs, EXEs, EXEs with exports (EXEXP target), and import libraries (IMPLIB -target)).

    - - - -

    Option

    -

    DLL (static/polymorphic)

    -

    EXE

    -

    EXEXP

    -

    IMPORT LIB

    -
    - -

    capability

    -

    optional

    -

    optional

    -

    optional

    -

    N/A

    -
    - -

    debuggable

    -

    N/A

    -

    optional

    -

    optional

    -

    N/A

    -
    - -

    dlldata

    -

    optional

    -

    N/A

    -

    N/A

    -

    N/A

    -
    - -

    definput

    -

    optional

    -

    N/A

    -

    optional

    -

    required

    -
    - -

    defoutput

    -

    required

    -

    N/A

    -

    required

    -

    N/A

    -
    - -

    dso

    -

    required

    -

    N/A

    -

    required

    -

    required

    -
    - -

    elfinput

    -

    required

    -

    required

    -

    required

    -

    N/A

    -
    - -

    fixedaddress

    -

    N/A

    -

    optional

    -

    optional

    -

    N/A

    -
    - -

    heap

    -

    N/A

    -

    optional

    -

    optional

    -

    N/A

    -
    - -

    libpath

    -

    optional

    -

    optional

    -

    optional

    -

    N/A

    -
    - -

    linkas

    -

    required

    -

    required

    -

    required

    -

    required

    -
    - -

    noexportlibrary

    -

    optional

    -

    N/A

    -

    optional

    -

    N/A

    -
    - -

    output

    -

    required

    -

    required

    -

    required

    -

    N/A

    -
    - -

    sid

    -

    required

    -

    required

    -

    required

    -

    N/A

    -
    - -

    stack

    -

    N/A

    -

    optional

    -

    optional

    -

    no

    -
    - -

    sysdef

    -

    Required for polymorphic DLL target types only

    -

    N/A

    -

    N/A

    -

    N/A

    -
    - -

    targettype

    -

    DLL, or polymorphic DLL target type

    -

    EXE

    -

    EXEXP

    -

    IMPLIB

    -
    - -

    uid1

    -

    required

    -

    required

    -

    required

    -

    N/A

    -
    - -

    uid2

    -

    optional

    -

    optional

    -

    optional

    -

    N/A

    -
    - -

    uid3

    -

    optional

    -

    optional

    -

    optional

    -

    N/A

    -
    - -

    uncompressed

    -

    optional

    -

    optional

    -

    optional

    -

    N/A

    -
    - -

    unfrozen

    -

    optional

    -

    N/A

    -

    optional

    -

    N/A

    -
    - -

    vid

    -

    required

    -

    required

    -

    required

    -

    N/A

    -
    - - -
    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CADAFAF2-24E9-5007-9C2F-5453E8062074.dita --- a/Symbian3/PDK/Source/GUID-CADAFAF2-24E9-5007-9C2F-5453E8062074.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CADAFAF2-24E9-5007-9C2F-5453E8062074.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ audio resources, initialization and configuration of hardware devices, and playing and recording audio. -
    Required background

    Before +

    Required background

    Before you start, you must:

    • Understand the A3F DevSound Component to which the DevSound library belongs.

    • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CB163645-CB5E-4DB5-9830-B97D12FDCBF5.dita --- a/Symbian3/PDK/Source/GUID-CB163645-CB5E-4DB5-9830-B97D12FDCBF5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CB163645-CB5E-4DB5-9830-B97D12FDCBF5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -26,7 +26,7 @@ In this case it is fixed in the layout.

      Volume control UI component - + Default touch events for volume pop-up diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CB3FC449-7994-5510-BD78-F1638CD48A9D.dita --- a/Symbian3/PDK/Source/GUID-CB3FC449-7994-5510-BD78-F1638CD48A9D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CB3FC449-7994-5510-BD78-F1638CD48A9D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -87,7 +87,7 @@ it is not recommended.

      If required, the client can disable a profile. The client can then delete the CSIPProfile object.

      The following illustration shows the SDP Profile API class structure.

      - +
      Memory used

      The amount of memory used by a profile depends on its content. A normal usage diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CB4E1B33-470F-581A-BC32-99752C2A0DFE_d0e535589_href.jpg Binary file Symbian3/PDK/Source/GUID-CB4E1B33-470F-581A-BC32-99752C2A0DFE_d0e535589_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CB4E1B33-470F-581A-BC32-99752C2A0DFE_d0e543049_href.jpg Binary file Symbian3/PDK/Source/GUID-CB4E1B33-470F-581A-BC32-99752C2A0DFE_d0e543049_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CB548959-A1D6-4585-B8E3-B09E37E0CB43.dita --- a/Symbian3/PDK/Source/GUID-CB548959-A1D6-4585-B8E3-B09E37E0CB43.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CB548959-A1D6-4585-B8E3-B09E37E0CB43.dita Fri Jul 16 17:23:46 2010 +0100 @@ -32,7 +32,7 @@ but application can decide to disable it.

      Two row list in stretched mode in landscape layout - +
      Using list layouts in applications

      The API to use for lists is the Lists API. For implementation information, see Using the Lists API.

      For grids, the APIs to use diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CB6B4D1A-ACB9-5571-8C23-4BC095209782.dita --- a/Symbian3/PDK/Source/GUID-CB6B4D1A-ACB9-5571-8C23-4BC095209782.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CB6B4D1A-ACB9-5571-8C23-4BC095209782.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,17 +11,17 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Network Protocol Module APIThis document describes the Network Protocol Module API that device creators use to develop their own Network Protocol Modules.

      Contents
      • Purpose

      • Introduction

      • Network Protocol Module API description

      • Using the Network Protocol Module API

      • Network Protocol Module configuration

      • Loading the Network Protocol Module

      • See also

      Purpose

      A Network Protocol Module is an ECOM plug-in that provides network connectivity for the LBS subsystem. A Network Protocol Module typically supports one Location Based Services network protocol. Location Based Services network protocols are used by the LBS subsystem for the following purposes:

      • To receive location requests from the network.

      • To send requests for A-GPS assistance data to the network and to receive it.

      • To send GPS-calculated positions and GPS measurements to the network and to receive calculated positions from the network.

      Network Protocol Modules can be classified into two groups, depending on the network operator's network architecture that they are intended to interface with:

      • Control plane architectures use the circuit-switched mobile network and signalling layer to support Location Based Services.

        To integrate the Symbian LBS subsystem with a control plane architecture, a Symbian licensee must implement their own control plane Network Protocol Module using the Network Protocol Module API described in this document.

      • User plane architectures use IP bearers independently of the circuit-switched signalling layer. SMS or WAP Push can also be used to initiate location requests. The OMA Secure User Plane Location (SUPL) architecture describes a model for supporting IP-based Location Based Services.

        Symbian provides a reference SUPL Protocol Module that supports the OMA SUPL v1.0 standard, using the 3GPP Radio Resource LCS Protocol (RRLP) as the protocol payload. The reference SUPL Protocol Module implements the Network Protocol Module API.

      LBS architecture overview gives more details of how a Network Protocol Module fits into the LBS subsystem.

      Introduction

      A Network Protocol Module is an ECOM plug-in DLL. It communicates with the LBS Network Gateway process via the Network Protocol API and with the network via either the ETel or ESock APIs as shown in figure 1.

      Figure 1. The Network Gateway Framework -

      A Network Protocol Module has several functions:

      • Translating method calls from the LBS subsystem into protocol specific messages which are sent over the network

      • Translating protocol specific messages received from the network into method calls on the LBS subsystem

      • Queueing and prioritising messages received from the network and messages to be sent to the network

      • Performing conflict resolution when a request is made which conflicts with ongoing location requests being processed by the LBS subsystem

      Licensees can configure the LBS subsystem to load a different Network Protocol Module when the mobile device is in the home network and when roaming. For example, it is possible to configure LBS to load a licensee control plane Network Protocol Module in the home network and the Symbian reference SUPL Protocol Module when roaming. See Loading the Network Protocol Module for more details.

      A Symbian licensee must create a Network Protocol Module to integrate the Symbian LBS subsystem with a control plane architecture. A control plane Network Protocol Module uses the ETel API and the telephony stack for network communications. Symbian does not provide a reference control plane Network Protocol Module.

      Symbian provides a reference Network Protocol Module that implements the SUPL v1.0 user plane architecture with RRLP as the protocol data payload. See SUPL Protocol Module documentation for more information about this reference module. The SUPL Protocol Module may meet the requirements of Symbian licensees and network operators and so it may not be necessary for licensees to create a custom Network Protocol Module using the API described in this document.

      Symbian also provide a Test Network Protocol Module as part of the LBS subsystem code distribution which can be found at <LBS_ROOT>\LbsProtocolModule. The test protocol module is not a production quality module for use in a mobile device, neither is it a reference implementation. Its main purpose is to facilitate Symbian's own testing of the LBS subsystem.

      Network Protocol Module API description

      This section describes the classes of the Network Protocol Module API.

      API class diagram

      A Network Protocol Module and the LBS Network Gateway process communicate using the Network Protocol Module API. The API consists of classes in an observer/observable design pattern.

      Figure 2 shows the main classes of the Network Protocol Module API. Note that this diagram does not list all of the classes of the API and excludes numerous T classes that are used as method parameters.

      Note that the virtual methods of CLbsNetworkProtocolBase and CLbsNetworkProtocolBase2 are synchronous and their implementations must return quickly (for example by queueing requests and returning immediately).

      +

      A Network Protocol Module has several functions:

      • Translating method calls from the LBS subsystem into protocol specific messages which are sent over the network

      • Translating protocol specific messages received from the network into method calls on the LBS subsystem

      • Queueing and prioritising messages received from the network and messages to be sent to the network

      • Performing conflict resolution when a request is made which conflicts with ongoing location requests being processed by the LBS subsystem

      Licensees can configure the LBS subsystem to load a different Network Protocol Module when the mobile device is in the home network and when roaming. For example, it is possible to configure LBS to load a licensee control plane Network Protocol Module in the home network and the Symbian reference SUPL Protocol Module when roaming. See Loading the Network Protocol Module for more details.

      A Symbian licensee must create a Network Protocol Module to integrate the Symbian LBS subsystem with a control plane architecture. A control plane Network Protocol Module uses the ETel API and the telephony stack for network communications. Symbian does not provide a reference control plane Network Protocol Module.

      Symbian provides a reference Network Protocol Module that implements the SUPL v1.0 user plane architecture with RRLP as the protocol data payload. See SUPL Protocol Module documentation for more information about this reference module. The SUPL Protocol Module may meet the requirements of Symbian licensees and network operators and so it may not be necessary for licensees to create a custom Network Protocol Module using the API described in this document.

      Symbian also provide a Test Network Protocol Module as part of the LBS subsystem code distribution which can be found at <LBS_ROOT>\LbsProtocolModule. The test protocol module is not a production quality module for use in a mobile device, neither is it a reference implementation. Its main purpose is to facilitate Symbian's own testing of the LBS subsystem.

      Network Protocol Module API description

      This section describes the classes of the Network Protocol Module API.

      API class diagram

      A Network Protocol Module and the LBS Network Gateway process communicate using the Network Protocol Module API. The API consists of classes in an observer/observable design pattern.

      Figure 2 shows the main classes of the Network Protocol Module API. Note that this diagram does not list all of the classes of the API and excludes numerous T classes that are used as method parameters.

      Note that the virtual methods of CLbsNetworkProtocolBase and CLbsNetworkProtocolBase2 are synchronous and their implementations must return quickly (for example by queueing requests and returning immediately).

      Figure 2. Main classes of the Network Protocol API -

      API classes and types

      Table 1 lists the main classes of the Network Protocol Module API. Further details about the classes can be found by following the links to reference documentation.

      The main classes are defined in lbsnetprotocolbase.h. Additional API classes and types that are used as API method parameters are defined in lbsnetcommon.h and lbsnetclasstypes.h.

      The Network Protocol Module API has publishedPartner interface access.

      Class/type name Description Header file

      CLbsNetworkProtocolBase

      The original base class for Network Protocol Module implementations. This class is extended by CLbsNetworkProtocolBase2 which should be used for new Network Protocol Module implementations.

      lbsnetprotocolbase.h

      CLbsNetworkProtocolBase2

      Extended base class for Network Protocol Module implementations that should be used for new Network Protocol Module implementations.

      lbsnetprotocolbase.h

      MLbsNetworkProtocolObserver

      The observer interface implemented by the LBS Network Gateway and used by a Network Protocol Module to forward network requests and information to the LBS subsystem. It is also the interface that a protocol module uses to provide responses to requests made by the LBS subsystem via CLbsNetworkProtocolBase.

      lbsnetprotocolbase.h

      MLbsNetworkProtocolObserver2

      An extended observer interface. This is not yet implemented by the LBS subsystem.

      lbsnetprotocolbase.h

      Table 1 Classes of the Network Protocol Module API.

      Network Protocol Modules derive from CLbsNetworkProtocolBase or CLbsNetworkProtocolBase2. The LBS subsystem implements the MLbsNetworkProtocolObserver interface to interact with a Network Protocol Module.

      Libraries

      The main classes of the Network Protocol Module API are packaged in lbsnetprotocol.dll. Network Protocol Module implementations link to lbsnetprotocol.lib.

      LBS configuration

      In addition to creating and installing a Network Protocol Module, the LBS administration settings KLbsSettingHomeProtocolModule and KLbsSettingRoamingProtocolModule must be set to the implementation UIDs of the appropriate Network Protocol Module ECOM plug-ins for LBS to load and use them. See Loading the Network Protocol Module for more information.

    Using the Network Protocol Module API

    A Network Protocol Module communicates with two other software components:

    • The LBS Network Gateway process

      The Network Gateway process communicates with the other components of the LBS subsystem. It is responsible for:

      1. Handling requests for location from the LBS subsystem and sending them to the network via the Network Protocol Module

      2. Receiving a reference position (based on Cell ID) from the network via the Network Protocol Module and sending it into LBS in response to 1.

      3. Handling requests for A-GPS assistance data from an A-GPS Integration Module and sending them to the network via the Network Protocol Module

      4. Receiving A-GPS assistance data from the network via the Network Protocol Module and sending it to the A-GPS Location Manager in response to 3.

      5. Handling requests from the LBS subsystem to send device location data to a third party over the network (MO-LR transmit to third party).

      6. Receiving privacy requests and location requests from the network (MT-LR and Emergency MT-LR) via the Network Protocol Module and forwarding them to the LBS subsystem.

      7. Sending responses to MT-LR privacy requests and location requests to the network via the Network Protocol Module in response to 6.

    • A network communications stack

      A Network Protocol Module that integrates with the control plane uses the Symbian ETel API.

      A Network Protocol Module that integrates with the user plane uses the Symbian ESock API. The Symbian reference SUPL Protocol Module is a user plane Network Protocol Module.

    Figures 3, 4 and 5 show simple sequences of interaction between the LBS Network Gateway process, the Network Protocol Module and the network for MO-LR (self locate), MO-LR (transfer to third party) and MT-LR.

    The behaviour of a Network Protocol Module can be complex when it is linked to a A-GPS Integration Module. Several detailed end-to-end sequence diagrams that document the behaviour of the LBS subsystem including the behaviour expected from a Network Protocol Module can be found in LBS Sequence Diagrams.

    +

    API classes and types

    Table 1 lists the main classes of the Network Protocol Module API. Further details about the classes can be found by following the links to reference documentation.

    The main classes are defined in lbsnetprotocolbase.h. Additional API classes and types that are used as API method parameters are defined in lbsnetcommon.h and lbsnetclasstypes.h.

    The Network Protocol Module API has publishedPartner interface access.

    Class/type name Description Header file

    CLbsNetworkProtocolBase

    The original base class for Network Protocol Module implementations. This class is extended by CLbsNetworkProtocolBase2 which should be used for new Network Protocol Module implementations.

    lbsnetprotocolbase.h

    CLbsNetworkProtocolBase2

    Extended base class for Network Protocol Module implementations that should be used for new Network Protocol Module implementations.

    lbsnetprotocolbase.h

    MLbsNetworkProtocolObserver

    The observer interface implemented by the LBS Network Gateway and used by a Network Protocol Module to forward network requests and information to the LBS subsystem. It is also the interface that a protocol module uses to provide responses to requests made by the LBS subsystem via CLbsNetworkProtocolBase.

    lbsnetprotocolbase.h

    MLbsNetworkProtocolObserver2

    An extended observer interface. This is not yet implemented by the LBS subsystem.

    lbsnetprotocolbase.h

    Table 1 Classes of the Network Protocol Module API.

    Network Protocol Modules derive from CLbsNetworkProtocolBase or CLbsNetworkProtocolBase2. The LBS subsystem implements the MLbsNetworkProtocolObserver interface to interact with a Network Protocol Module.

    Libraries

    The main classes of the Network Protocol Module API are packaged in lbsnetprotocol.dll. Network Protocol Module implementations link to lbsnetprotocol.lib.

    LBS configuration

    In addition to creating and installing a Network Protocol Module, the LBS administration settings KLbsSettingHomeProtocolModule and KLbsSettingRoamingProtocolModule must be set to the implementation UIDs of the appropriate Network Protocol Module ECOM plug-ins for LBS to load and use them. See Loading the Network Protocol Module for more information.

    Using the Network Protocol Module API

    A Network Protocol Module communicates with two other software components:

    • The LBS Network Gateway process

      The Network Gateway process communicates with the other components of the LBS subsystem. It is responsible for:

      1. Handling requests for location from the LBS subsystem and sending them to the network via the Network Protocol Module

      2. Receiving a reference position (based on Cell ID) from the network via the Network Protocol Module and sending it into LBS in response to 1.

      3. Handling requests for A-GPS assistance data from an A-GPS Integration Module and sending them to the network via the Network Protocol Module

      4. Receiving A-GPS assistance data from the network via the Network Protocol Module and sending it to the A-GPS Location Manager in response to 3.

      5. Handling requests from the LBS subsystem to send device location data to a third party over the network (MO-LR transmit to third party).

      6. Receiving privacy requests and location requests from the network (MT-LR and Emergency MT-LR) via the Network Protocol Module and forwarding them to the LBS subsystem.

      7. Sending responses to MT-LR privacy requests and location requests to the network via the Network Protocol Module in response to 6.

    • A network communications stack

      A Network Protocol Module that integrates with the control plane uses the Symbian ETel API.

      A Network Protocol Module that integrates with the user plane uses the Symbian ESock API. The Symbian reference SUPL Protocol Module is a user plane Network Protocol Module.

    Figures 3, 4 and 5 show simple sequences of interaction between the LBS Network Gateway process, the Network Protocol Module and the network for MO-LR (self locate), MO-LR (transfer to third party) and MT-LR.

    The behaviour of a Network Protocol Module can be complex when it is linked to a A-GPS Integration Module. Several detailed end-to-end sequence diagrams that document the behaviour of the LBS subsystem including the behaviour expected from a Network Protocol Module can be found in LBS Sequence Diagrams.

    Figure 3. Simple MO-LR self locate sequence (for terminal based positioning) - + Figure 4. Simple MO-LR transfer to third party sequence (for terminal based positioning) - + Figure 5. Simple MT-LR sequence (for terminal based positioning) -

    CLbsNetworkProtocolBase

    The following briefly describes the CLbsNetworkProtocolBase methods grouped according to their function. The LBS Network Gateway process calls these methods on the licensee Network Protocol Module. More detailed information about the purpose of these methods and their parameter lists can be found by following the links to the Symbian platform reference documentation.

    Setting tracking mode (if necessary)

    For MO-LR self locate, an application client can ask the LBS subsystem for periodic location updates. This is known as tracking and is described in the Location Acquisition API document How to get location information.

    When a client requests tracking, the LBS subsystem notifies a Network Protocol Module of this requirement by calling CLbsNetworkProtocolBase::AdviceSystemStatus() with a parameter value CLbsNetworkProtocolBase::ESystemStatusClientTracking. This method is called before the first location request CLbsNetworkProtocolBase::RequestSelfLocation() described below.

    When there are no longer any tracking LBS clients, the LBS subsystem notifies a Network Protocol Module by calling AdviceSystemStatus() with a parameter value CLbsNetworkProtocolBase::ESystemStatusNone.

    Requesting and cancelling MO-LR (self locate)

    • CLbsNetworkProtocolBase::RequestSelfLocation()

      This method is called to initiate an MO-LR (self locate) when GPS is to be used to obtain a location. In cases where the precision of a GPS fix is not required (for example because of less demanding location quality criteria), the method CLbsNetworkProtocolBase::RequestNetworkLocation() may be called instead for MO-LR (see below).

    • CLbsNetworkProtocolBase::CancelSelfLocation()

      This method is called to cancel an outstanding MO-LR which was made by calling CLbsNetworkProtocolBase::RequestSelfLocation().

    Requesting and cancelling MO-LR (self locate) from the network

    • CLbsNetworkProtocolBase::RequestNetworkLocation()

      This method is called to initiate an MO-LR when the precision of GPS is not required. In cases where the precision of a GPS fix is required, the method CLbsNetworkProtocolBase::RequestSelfLocation() is called instead.

    • CLbsNetworkProtocolBase::CancelNetworkLocation()

      This method is called to cancel an outstanding MO-LR which was made by calling CLbsNetworkProtocolBase::RequestNetworkLocation().

    Requesting and cancelling of MO-LR (transmit to third party)

    • CLbsNetworkProtocolBase::RequestTransmitLocation()

      This method is called to send location to a third party.

    • CLbsNetworkProtocolBase::CancelTransmitLocation()

      This method is called to cancel an outstanding request to send location to a third party.

    Responding to MT-LR privacy requests

    • CLbsNetworkProtocolBase::RespondPrivacyRequest()

      This method is called in response to an MT-LR privacy request in order to accept or reject the request.

      See Privacy requests for more information about how privacy requests are handled by the LBS subsystem.

    Processing location requests

    As shown in figures 3, 4 and 5, MO-LR self locate, MO-LR transfer to third party and MT-LR cause the Network Protocol Module to call MLbsNetworkProtocolObserver::ProcessLocationRequest() on the LBS Network Gateway process.

    An instance of TLbsNetPosRequestMethod is passed when the Protocol Module calls MLbsNetworkProtocolObserver::ProcessLocationRequest(). It defines the type(s) of positioning method the LBS subsystem should use to calculate the device location.

    A Network Protocol Module can specify up to two positioning methods, if required: TLbsNetPosRequestMethod contains an array of elements of type TLbsNetPosMethod. Each TLbsNetPosMethod element specifies a technology type and the positioning mode that should be used by the LBS subsystem to calculate location.

    If the array contains two elements, the first element contains the preferred technology type and positioning mode. The second element contains an alternative positioning mode.

    If the array contains only one element then this specifies the technology type and positioning mode that must be used by the LBS subsystem.

    Examples of how a Network Protocol Module specifies the positioning mode follows:

    • Terminal based positioning mode only

      The Protocol Module creates a single TLbsNetPosMethod element and calls TLbsNetPosMethod::SetPosMethod() passing the parameters:

      aPosMeans = KLbsPositioningMeansGps

      aPosMode = TPositionModuleInfo::ETechnologyTerminal | +

      CLbsNetworkProtocolBase

      The following briefly describes the CLbsNetworkProtocolBase methods grouped according to their function. The LBS Network Gateway process calls these methods on the licensee Network Protocol Module. More detailed information about the purpose of these methods and their parameter lists can be found by following the links to the Symbian platform reference documentation.

      Setting tracking mode (if necessary)

      For MO-LR self locate, an application client can ask the LBS subsystem for periodic location updates. This is known as tracking and is described in the Location Acquisition API document How to get location information.

      When a client requests tracking, the LBS subsystem notifies a Network Protocol Module of this requirement by calling CLbsNetworkProtocolBase::AdviceSystemStatus() with a parameter value CLbsNetworkProtocolBase::ESystemStatusClientTracking. This method is called before the first location request CLbsNetworkProtocolBase::RequestSelfLocation() described below.

      When there are no longer any tracking LBS clients, the LBS subsystem notifies a Network Protocol Module by calling AdviceSystemStatus() with a parameter value CLbsNetworkProtocolBase::ESystemStatusNone.

      Requesting and cancelling MO-LR (self locate)

      • CLbsNetworkProtocolBase::RequestSelfLocation()

        This method is called to initiate an MO-LR (self locate) when GPS is to be used to obtain a location. In cases where the precision of a GPS fix is not required (for example because of less demanding location quality criteria), the method CLbsNetworkProtocolBase::RequestNetworkLocation() may be called instead for MO-LR (see below).

      • CLbsNetworkProtocolBase::CancelSelfLocation()

        This method is called to cancel an outstanding MO-LR which was made by calling CLbsNetworkProtocolBase::RequestSelfLocation().

      Requesting and cancelling MO-LR (self locate) from the network

      • CLbsNetworkProtocolBase::RequestNetworkLocation()

        This method is called to initiate an MO-LR when the precision of GPS is not required. In cases where the precision of a GPS fix is required, the method CLbsNetworkProtocolBase::RequestSelfLocation() is called instead.

      • CLbsNetworkProtocolBase::CancelNetworkLocation()

        This method is called to cancel an outstanding MO-LR which was made by calling CLbsNetworkProtocolBase::RequestNetworkLocation().

      Requesting and cancelling of MO-LR (transmit to third party)

      • CLbsNetworkProtocolBase::RequestTransmitLocation()

        This method is called to send location to a third party.

      • CLbsNetworkProtocolBase::CancelTransmitLocation()

        This method is called to cancel an outstanding request to send location to a third party.

      Responding to MT-LR privacy requests

      • CLbsNetworkProtocolBase::RespondPrivacyRequest()

        This method is called in response to an MT-LR privacy request in order to accept or reject the request.

        See Privacy requests for more information about how privacy requests are handled by the LBS subsystem.

      Processing location requests

      As shown in figures 3, 4 and 5, MO-LR self locate, MO-LR transfer to third party and MT-LR cause the Network Protocol Module to call MLbsNetworkProtocolObserver::ProcessLocationRequest() on the LBS Network Gateway process.

      An instance of TLbsNetPosRequestMethod is passed when the Protocol Module calls MLbsNetworkProtocolObserver::ProcessLocationRequest(). It defines the type(s) of positioning method the LBS subsystem should use to calculate the device location.

      A Network Protocol Module can specify up to two positioning methods, if required: TLbsNetPosRequestMethod contains an array of elements of type TLbsNetPosMethod. Each TLbsNetPosMethod element specifies a technology type and the positioning mode that should be used by the LBS subsystem to calculate location.

      If the array contains two elements, the first element contains the preferred technology type and positioning mode. The second element contains an alternative positioning mode.

      If the array contains only one element then this specifies the technology type and positioning mode that must be used by the LBS subsystem.

      Examples of how a Network Protocol Module specifies the positioning mode follows:

      • Terminal based positioning mode only

        The Protocol Module creates a single TLbsNetPosMethod element and calls TLbsNetPosMethod::SetPosMethod() passing the parameters:

        aPosMeans = KLbsPositioningMeansGps

        aPosMode = TPositionModuleInfo::ETechnologyTerminal | TPositionModuleInfo::ETechnologyAssisted

        In this case, the LBS subsystem attempts to calculate a GPS location fix using assistance data from the network.

      • Terminal assisted positioning mode only

        The Protocol Module creates a single TLbsNetPosMethod element and calls TLbsNetPosMethod::SetPosMethod() passing the parameters:

        aPosMeans = KLbsPositioningMeansGps

        aPosMode = TPositionModuleInfo::ETechnologyNetwork | TPositionModuleInfo::ETechnologyAssisted

        In this case, the LBS subsystem attempts to calculate a GPS location fix using assistance data from the network.

      • Terminal based positioning mode (1st choice) & terminal assisted positioning mode (2nd choice)

        The Protocol Module creates two TLbsNetPosMethod elements and calls TLbsNetPosMethod::SetPosMethod() for each:

        • 1st Element:

          aPosMeans = KLbsPositioningMeansGps

          aPosMode = TPositionModuleInfo::ETechnologyTerminal | TPositionModuleInfo::ETechnologyAssisted

        • 2nd Element:

          aPosMeans = KLbsPositioningMeansGps

          aPosMode = TPositionModuleInfo::ETechnologyNetwork | diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CB7A54D9-C6C8-562A-8A52-4B17B37242AD_d0e232744_href.png Binary file Symbian3/PDK/Source/GUID-CB7A54D9-C6C8-562A-8A52-4B17B37242AD_d0e232744_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CB7A54D9-C6C8-562A-8A52-4B17B37242AD_d0e238739_href.png Binary file Symbian3/PDK/Source/GUID-CB7A54D9-C6C8-562A-8A52-4B17B37242AD_d0e238739_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CB82C5D5-5714-5F31-A24F-E2259E6E9BD6_d0e430885_href.png Binary file Symbian3/PDK/Source/GUID-CB82C5D5-5714-5F31-A24F-E2259E6E9BD6_d0e430885_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CB82C5D5-5714-5F31-A24F-E2259E6E9BD6_d0e436730_href.png Binary file Symbian3/PDK/Source/GUID-CB82C5D5-5714-5F31-A24F-E2259E6E9BD6_d0e436730_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CBAF83A9-815E-5C48-BD4A-3B31A115E3FE_d0e160768_href.png Binary file Symbian3/PDK/Source/GUID-CBAF83A9-815E-5C48-BD4A-3B31A115E3FE_d0e160768_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CBAF83A9-815E-5C48-BD4A-3B31A115E3FE_d0e166869_href.png Binary file Symbian3/PDK/Source/GUID-CBAF83A9-815E-5C48-BD4A-3B31A115E3FE_d0e166869_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CBB00F6A-CBA7-4872-B0A1-A86A863725F5.dita --- a/Symbian3/PDK/Source/GUID-CBB00F6A-CBA7-4872-B0A1-A86A863725F5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CBB00F6A-CBA7-4872-B0A1-A86A863725F5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,43 +1,39 @@ - - - - - -Precompiled -resource values available from the Symbian platform -

          The Symbian platform provides a generated resource header file that -contains symbolic IDs to resources in the Symbian platform for use in your -code. The file with the symbolic IDs is the avkon.rsg file -and it is in the ./epoc32/include folder. The file contains -commonly used resource structures for your resource file declarations.

          -

          A common example is the R_AVKON_SOFTKEYS_OPTIONS_EXIT symbolic -ID, which maps to the CBA resource that results in the -softkeys Options and Exit. The Options softkey -is bound to a command that results in the application framework opening the -options menu based on the MENU_PANE resource. The Exit softkey -returns the EAknSoftkeyExit command, which would need -to be handled in the appropriate place for command -handling in your application architecture.

          - -

          The Symbian platform enumerations are in the avkon.hrh file, -which is in the /epoc32/include folder.

          -
          -

          In general, you can map the commands returned from the CBA options by -comparing the names of the symbolic IDs to the symbolic names in the enumerated -list.

          -

          Other symbolic IDs for other purposes are also available in the avkon.rsg file.

          -

          When the precompiled resources fit the needs of your application, you -can use them to access already existing resource structures.

          -

          For examples of how these symbolic IDs are used, see

          -
            -
          • Using -precompiled CBA button resources

            -
          • -
          + + + + + +Precompiled resource values available from the Symbian platform +

          The Symbian platform provides a generated resource header file +that contains symbolic IDs to resources in the Symbian platform for +use in your code. The file with the symbolic IDs is the avkon.rsg file and it is in the ./epoc32/include folder. The file contains commonly used resource structures for +your resource file declarations.

          +

          A common example is the R_AVKON_SOFTKEYS_OPTIONS_EXIT symbolic ID, which maps to the CBA resource +that results in the softkeys Options and Exit. The Options softkey is bound +to a command that results in the application framework opening the +options menu based on the MENU_PANE resource. +The Exit softkey returns the EAknSoftkeyExit command, which would need to be handled in the appropriate place +for command +handling in your application architecture.

          + +

          The Symbian platform enumerations are in the avkon.hrh file, which is in the /epoc32/include folder.

          +
          +

          In general, you can map the commands returned from the CBA options +by comparing the names of the symbolic IDs to the symbolic names in +the enumerated list.

          +

          Other symbolic IDs for other purposes are also available in +the avkon.rsg file.

          +

          When the precompiled resources fit the needs of your application, +you can use them to access already existing resource structures.

          +

          For examples of how these symbolic IDs are used, see

          +
            +
          • Using +precompiled CBA button resources

          • +
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CBC1E46A-E254-5A01-86AE-F5EB6135E3E3.dita --- a/Symbian3/PDK/Source/GUID-CBC1E46A-E254-5A01-86AE-F5EB6135E3E3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CBC1E46A-E254-5A01-86AE-F5EB6135E3E3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,44 +1,46 @@ - - - - - -Vector -Floating Point (VFP)ARM provide a hardware floating point coprocessor that provides -floating point computation that is fully compliant with IEEE Std 754-1985. -

          When a phone has this hardware, the base port must be configured to use -it.

          -

          The ARM architecture is called the ARM Vector Floating Point Architecture -(VFPv2), and the coprocessor is also called the VFP unit.

          -

          Symbian platform supports the use of VFPv2 on platforms where the required -hardware is present in both RunFast mode and in IEEE-without-exceptions mode. -See ARM's Vector Floating-point Coprocessor Technical reference Manual for -more details on the coprocessor, its architecture, and its execution modes.

          -

          Applications and, in a more limited sense, kernel side code can use VFP -in one of two ways:

          -
            -
          • indirectly through the -use of floating point support (helper) functions generated by the compiler.

          • -
          • directly, either through -instructions generated by the compiler, or hand-written instructions written -in assembler.

          • -
          -

          An application uses the armfpu statement in its .mmp file -to specify how it wants floating point to be handled. By choosing to use the -floating point support functions, an application does not need to know how -they are implemented or even whether these functions make use of a VFP unit. -However, if a device does have a VFP unit, then the base port needs to replace -the default floating point support functions with VFP-enabled functions if -applications are to take advantage of the hardware.

          -
          -Floating -point support -Vector Floating -Point Implementation Tutorial -
          \ No newline at end of file + + + + + +Vector Floating Point (VFP)ARM provide a hardware floating point coprocessor that +provides floating point computation that is fully compliant with IEEE +Std 754-1985. +

          When a phone has this hardware, the base port must be configured +to use it.

          +

          The ARM architecture is called the ARM Vector Floating Point Architecture +(VFPv2), and the coprocessor is also called the VFP unit.

          +

          Symbian platform supports the use of VFPv2 on platforms where the +required hardware is present in both RunFast mode and in IEEE-without-exceptions mode. See ARM's Vector Floating-point +Coprocessor Technical reference Manual for more details on the coprocessor, +its architecture, and its execution modes.

          +

          Applications and, in a more limited sense, kernel side code can +use VFP in one of two ways:

          +
            +
          • indirectly through +the use of floating point support (helper) functions generated by +the compiler.

          • +
          • directly, either +through instructions generated by the compiler, or hand-written instructions +written in assembler.

          • +
          +

          An application uses the armfpu statement in its .mmp file to specify how it wants floating point to be +handled. By choosing to use the floating point support functions, +an application does not need to know how they are implemented or even +whether these functions make use of a VFP unit. However, if a device +does have a VFP unit, then the base port needs to replace the default +floating point support functions with VFP-enabled functions if applications +are to take advantage of the hardware.

          +
          See also

            +
          • Floating point support in Symbian^3 Tools Guide +> Building

          • +
          • Vector +Floating Point Implementation Tutorial

          • +

          +
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CBD78250-3EF4-5DF0-B356-19996E15BBBD_d0e214193_href.png Binary file Symbian3/PDK/Source/GUID-CBD78250-3EF4-5DF0-B356-19996E15BBBD_d0e214193_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CBD78250-3EF4-5DF0-B356-19996E15BBBD_d0e220201_href.png Binary file Symbian3/PDK/Source/GUID-CBD78250-3EF4-5DF0-B356-19996E15BBBD_d0e220201_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CBE1CE3A-5C8B-475D-9F5E-8ACD839EB7E6_d0e1734_href.png Binary file Symbian3/PDK/Source/GUID-CBE1CE3A-5C8B-475D-9F5E-8ACD839EB7E6_d0e1734_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CBE1CE3A-5C8B-475D-9F5E-8ACD839EB7E6_d0e1739_href.png Binary file Symbian3/PDK/Source/GUID-CBE1CE3A-5C8B-475D-9F5E-8ACD839EB7E6_d0e1739_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CBE1CE3A-5C8B-475D-9F5E-8ACD839EB7E6_d0e1852_href.png Binary file Symbian3/PDK/Source/GUID-CBE1CE3A-5C8B-475D-9F5E-8ACD839EB7E6_d0e1852_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CBE1CE3A-5C8B-475D-9F5E-8ACD839EB7E6_d0e1860_href.png Binary file Symbian3/PDK/Source/GUID-CBE1CE3A-5C8B-475D-9F5E-8ACD839EB7E6_d0e1860_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CBF1D046-92D4-5936-9946-71BB8FC51AB2_d0e268193_href.png Binary file Symbian3/PDK/Source/GUID-CBF1D046-92D4-5936-9946-71BB8FC51AB2_d0e268193_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CBF1D046-92D4-5936-9946-71BB8FC51AB2_d0e274193_href.png Binary file Symbian3/PDK/Source/GUID-CBF1D046-92D4-5936-9946-71BB8FC51AB2_d0e274193_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CC3454B1-21DA-542E-8949-52C30755AC77.dita --- a/Symbian3/PDK/Source/GUID-CC3454B1-21DA-542E-8949-52C30755AC77.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CC3454B1-21DA-542E-8949-52C30755AC77.dita Fri Jul 16 17:23:46 2010 +0100 @@ -133,7 +133,7 @@ with other LBS and Symbian components.

          Figure 1. SUPL Protocol Module and associated Symbian APIs. - +

          Subsystem components

          This section describes the subsystem components and APIs that support the SUPL Protocol Module.

          SUPL Protocol Module (SPM)

          The SUPL Protocol Module implements diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CC4CA423-0A14-457C-8CBE-4A9F0E8D0B96_d0e64172_href.png Binary file Symbian3/PDK/Source/GUID-CC4CA423-0A14-457C-8CBE-4A9F0E8D0B96_d0e64172_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CC4CA423-0A14-457C-8CBE-4A9F0E8D0B96_d0e68395_href.png Binary file Symbian3/PDK/Source/GUID-CC4CA423-0A14-457C-8CBE-4A9F0E8D0B96_d0e68395_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CC95D475-98B9-5279-94BD-1E12449AC0CC.dita --- a/Symbian3/PDK/Source/GUID-CC95D475-98B9-5279-94BD-1E12449AC0CC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CC95D475-98B9-5279-94BD-1E12449AC0CC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> OpenMAX IL Overview

          This document introduces you to the Symbian approach to OpenMAX IL (Integration Layer).

          Purpose

          OpenMAX IL is a low-level interface used in mobile devices that allows the Multimedia Device Framework (MDF) to

          • load audio, video and imaging components

          • control audio, video and imaging components

          • connect audio, video and imaging components

          • unload audio, video and imaging components.

          Required background

          You should be familiar with the OpenMAX IL standard developed by The Khronos Group, which enables the portability of media components across any OS platform.

          Key concepts/terms

          The following terms are introduced here and will be used throughout this documentation:

          OpenMAX IL Client

          MDF plays the role of the OpenMAX IL client within the OpenMAX IL architecture.

          OpenMAX IL Core

          OpenMAX IL Core is a platform-specific entity which is used to load and unload OpenMAX IL Components, and to facilitate communication between them.

          OpenMAX IL Component

          OpenMAX IL Component is an individual block of functionality such as codec, source, sink, filter, splitter, mixer, or any data processing functionality.

          OpenMAX IL Content Pipe

          OpenMAX IL Content Pipe is an entity that provides abstraction of access to content data.

          Note: The OpenMAX IL libraries have the same naming convention as the key terms described above.

          Architectural relationships

          MDF interacts with OpenMAX IL to communicate with the OpenMAX IL Components.

          Architectural relationship between MDF and OpenMAX IL -

          OpenMAX IL Core uses OpenMAX IL Loader to load and unload OpenMAX IL Components. The high-level view of the Symbian implementation of OpenMAX IL using the OpenMAX IL Loader pattern is shown below:

          +

          OpenMAX IL Core uses OpenMAX IL Loader to load and unload OpenMAX IL Components. The high-level view of the Symbian implementation of OpenMAX IL using the OpenMAX IL Loader pattern is shown below:

          OpenMAX IL Component loading using OpenMAX IL Core and Loaders -
          OpenMAX IL library summary

          The Symbian platform provides support to OpenMAX IL with the following libraries:

          OpenMAX IL Core

          OpenMAX IL Core handles the IL client requests to load or unload components by delegating these requests to the appropriate OpenMAX IL Loader. OpenMAX IL Core also facilitates communication with these components. For more information see OpenMAX IL Core Overview.

          OpenMAX IL Loader Interface

          You need to install the OpenMAX IL Loader interface, which is an ECom plug-in. This interface is used to instantiate and access a group of OpenMAX IL Components. For more information see OpenMAX IL Loader Interface Overview.

          OpenMAX IL Component Interface

          You need to install the OpenMAX IL Component interface, which is an ECom plug-in. This interface is loaded by OpenMAX IL Loader to provide access to OpenMAX IL Component. For more information see OpenMAX IL Component Overview.

          OpenMAX IL Content Pipe Interface

          You need to install the OpenMAX IL Content Pipe interface, which is an ECom plug-in. This interface is loaded by OpenMAX IL Core to provide access to OpenMAX IL Content Pipe. For more information see OpenMAX IL Content Pipe Overview.

          Typical uses

          OpenMAX IL Components are used like any typical Multimedia features such as playing video, recording audio and capturing images. For example, two OpenMAX IL Components, decoder and render, are loaded by OpenMAX IL and communicate with each other for decoding and rendering.

          \ No newline at end of file +
    OpenMAX IL library summary

    The Symbian platform provides support to OpenMAX IL with the following libraries:

    OpenMAX IL Core

    OpenMAX IL Core handles the IL client requests to load or unload components by delegating these requests to the appropriate OpenMAX IL Loader. OpenMAX IL Core also facilitates communication with these components. For more information see OpenMAX IL Core Overview.

    OpenMAX IL Loader Interface

    You need to install the OpenMAX IL Loader interface, which is an ECom plug-in. This interface is used to instantiate and access a group of OpenMAX IL Components. For more information see OpenMAX IL Loader Interface Overview.

    OpenMAX IL Component Interface

    You need to install the OpenMAX IL Component interface, which is an ECom plug-in. This interface is loaded by OpenMAX IL Loader to provide access to OpenMAX IL Component. For more information see OpenMAX IL Component Overview.

    OpenMAX IL Content Pipe Interface

    You need to install the OpenMAX IL Content Pipe interface, which is an ECom plug-in. This interface is loaded by OpenMAX IL Core to provide access to OpenMAX IL Content Pipe. For more information see OpenMAX IL Content Pipe Overview.

    Typical uses

    OpenMAX IL Components are used like any typical Multimedia features such as playing video, recording audio and capturing images. For example, two OpenMAX IL Components, decoder and render, are loaded by OpenMAX IL and communicate with each other for decoding and rendering.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CCC121FA-C180-5103-915D-583A0CE9FB45_d0e167645_href.png Binary file Symbian3/PDK/Source/GUID-CCC121FA-C180-5103-915D-583A0CE9FB45_d0e167645_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CCC121FA-C180-5103-915D-583A0CE9FB45_d0e173738_href.png Binary file Symbian3/PDK/Source/GUID-CCC121FA-C180-5103-915D-583A0CE9FB45_d0e173738_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CCC5BE18-E90D-4B81-AE6F-333B96E7A3F7.dita --- a/Symbian3/PDK/Source/GUID-CCC5BE18-E90D-4B81-AE6F-333B96E7A3F7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CCC5BE18-E90D-4B81-AE6F-333B96E7A3F7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -23,7 +23,7 @@ user can browse through the list with scroll keys or with the touch event.

    Example of Choice list - + Default key events in a choice list diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12.dita --- a/Symbian3/PDK/Source/GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CCE5DBCC-41D6-53D0-B929-ADB478B53F12.dita Fri Jul 16 17:23:46 2010 +0100 @@ -30,7 +30,7 @@ MAKEDEF WARNING: 1 export(s) not yet Frozen in \src\example\MyDLLU.DEF: ..\..\..\EPOC32\BUILD\src\example\group\MyDLL\ARMV5\MyDll{000a0000}.def(7) : _ZThn12_N7Derived3fooEv @6

    This shows a problem with a frozen DEF file: the export at ordinal 2 is missing, and a new unfrozen export has been added at ordinal 6. When comparing the two symbols, they look suspiciously similar to each other, and to a third symbol in the DEF file:

    _ZN7Derived3fooEv @1 _ZThn8_N7Derived3fooEv @2 // this one is missing -_ZThn12_N7Derived3fooEv @6 // this one has appeared

    The exports beginning with _ZTh are compiler generated functions called thunks (see Class Impedimenta), and the information between _ZTh and the next underscore is the offset associated with the thunk. Our problem is that for some reason, the offset associated with the thunk has changed from –8 to –12 (the n denotes a negative offset). Note that there is another variant of this problem that involves thunks beginning with _ZTv.

    These generated functions are a feature of the Itanium C++ ABI, on which the ABI for the ARM architecture builds upon. Hence the name "ARM ABI Thunk Offset Problem".

    What causes this problem?

    The problem is caused because the symbol name generated for the thunk contains an offset number. More details can be found in http://www.codesourcery.com/cxx-abi/abi.html under section 5.1.4. This offset may change, when the signature of the base class is changed. For example when a data member is added or removed.

    Another condition to trigger the problem needs to hold as well: multiple inheritance with virtual functions in more than one of the base classes. If this condition does not hold, the compiler will not generate a thunk and thus there is no problem.

    Note that this is always a Binary Compatibility break, which shows up as a change to symbols in DEF files.

    How do I fix it?

    There are three choices to fix it:

    1. The first option is to refreeze the DEF file: this would be OK if you are not maintaining a frozen interface, and your customers will in any case need to rebuild because of the Binary Compatibility break. The easiest way to refreeze is to delete all of the exports from your existing DEF file, build again, and then use "abld freeze armv5 " to update the DEF file. After updating the DEF file, build again: this time it should build cleanly.

    2. The second option is to use the attached script to fix the ABI Thunk Offsets. It expects to read a build log containing the MAKEDEF errors and warnings and will modify the DEF file to replace each missing export with the corresponding unfrozen export. Run the script with no arguments to get further details.

      After fixing the DEF file, you will need to rebuild the DLL which uses the DEF file.

    3. The last option is that you could change your mind about adding that extra member data. This will only be an option if it is your change which causes the problem: if your supplier has changed the size of a class that they own and caused this problem, then you are forced to change your DEF file.

      If you own the class which has the extra member data, it is worth noting that this change is likely to affect your customers as well. They will have to rebuild because of the BC break. Adding to this they will also see the ABI Thunk Offset Problem if they derive from your class. This includes simple inheritance from a class which shows the problem, if it re-implements any of the virtual functions which require thunks.

      When Symbian breaks compatibility in a way likely to cause this problem, the corresponding entry in the Compatibility Break spreadsheet will say "BC+ Break: Rebuild & Check/Fix Def-File EABI Thunk Offsets".

    Tell me the full details: What is a thunk? What causes its offset to change?

    In a C++ class hierarchy involving both virtual functions and multiple inheritance, objects can be accessed as though they were several different types. A typical Symbian platform example would be a CBase-derived class which also derives from an M-class, perhaps to provide an observer interface: for example CCoeControl, which derives from both CBase and MObjectProvider.

    The virtual functions which can be called on an object depends on the type it currently appears to be.A CCoeControl object can be viewed as a CBase object, in which case it has one set of virtual functions, or as an MObjectProvider, in which case it has another. The compiler constructs separate virtual tables for each of the possible interfaces, and these tables contain information about how to convert back to the underlying CCoeControl object. When converting from a CCoeControl pointer to an MObjectProvider pointer, the compiler will adjust the value of the pointer, so that it points to the "MObjectProvider" part of the object, and not the full CCoeControl object.

    The MObjectProvider class defines a pure virtual function MopSupplyObject, which is implemented in CCoeControl. Even when the object is presenting it's MObjectProvider interface, the vtable must use the correct implementation of MopSupplyObject, which expects to be used in the context of a CCoeControl. The solution used by the compiler is to create a virtual function override thunk function which makes any necessary adjustments between the calling context (a pointer to MObjectProvider) and the execution context (a pointer to CCoeControl).

    This could have been implemented using the names of the two contexts, but instead the ABI uses the amount by which the this pointer needs to be adjusted to make the switch: this is the offset encoded in the name.

    Here is a small example:

    eabi_thunk_offset_problem.cpp

    #ifndef COUNT +_ZThn12_N7Derived3fooEv @6 // this one has appeared

    The exports beginning with _ZTh are compiler generated functions called thunks (see Class Impedimenta), and the information between _ZTh and the next underscore is the offset associated with the thunk. Our problem is that for some reason, the offset associated with the thunk has changed from –8 to –12 (the n denotes a negative offset). Note that there is another variant of this problem that involves thunks beginning with _ZTv.

    These generated functions are a feature of the Itanium C++ ABI, on which the ABI for the ARM architecture builds upon. Hence the name "ARM ABI Thunk Offset Problem".

    What causes this problem?

    The problem is caused because the symbol name generated for the thunk contains an offset number. More details can be found in http://www.codesourcery.com/cxx-abi/abi.html under section 5.1.4. This offset may change, when the signature of the base class is changed. For example when a data member is added or removed.

    Another condition to trigger the problem needs to hold as well: multiple inheritance with virtual functions in more than one of the base classes. If this condition does not hold, the compiler will not generate a thunk and thus there is no problem.

    Note that this is always a Binary Compatibility break, which shows up as a change to symbols in DEF files.

    How do I fix it?

    There are three choices to fix it:

    1. The first option is to refreeze the DEF file: this would be OK if you are not maintaining a frozen interface, and your customers will in any case need to rebuild because of the Binary Compatibility break. The easiest way to refreeze is to delete all of the exports from your existing DEF file, build again, and then use "abld freeze armv5 " to update the DEF file. After updating the DEF file, build again: this time it should build cleanly.

    2. The second option is to use the attached script to fix the ABI Thunk Offsets. It expects to read a build log containing the MAKEDEF errors and warnings and will modify the DEF file to replace each missing export with the corresponding unfrozen export. Run the script with no arguments to get further details.

      After fixing the DEF file, you will need to rebuild the DLL which uses the DEF file.

    3. The last option is that you could change your mind about adding that extra member data. This will only be an option if it is your change which causes the problem: if your supplier has changed the size of a class that they own and caused this problem, then you are forced to change your DEF file.

      If you own the class which has the extra member data, it is worth noting that this change is likely to affect your customers as well. They will have to rebuild because of the BC break. Adding to this they will also see the ABI Thunk Offset Problem if they derive from your class. This includes simple inheritance from a class which shows the problem, if it re-implements any of the virtual functions which require thunks.

      When Symbian breaks compatibility in a way likely to cause this problem, the corresponding entry in the Compatibility Break spreadsheet will say "BC+ Break: Rebuild & Check/Fix Def-File EABI Thunk Offsets".

    Tell me the full details: What is a thunk? What causes its offset to change?

    In a C++ class hierarchy involving both virtual functions and multiple inheritance, objects can be accessed as though they were several different types. A typical Symbian platform example would be a CBase-derived class which also derives from an M-class, perhaps to provide an observer interface: for example CCoeControl, which derives from both CBase and MObjectProvider.

    The virtual functions which can be called on an object depends on the type it currently appears to be.A CCoeControl object can be viewed as a CBase object, in which case it has one set of virtual functions, or as an MObjectProvider, in which case it has another. The compiler constructs separate virtual tables for each of the possible interfaces, and these tables contain information about how to convert back to the underlying CCoeControl object. When converting from a CCoeControl pointer to an MObjectProvider pointer, the compiler will adjust the value of the pointer, so that it points to the "MObjectProvider" part of the object, and not the full CCoeControl object.

    The MObjectProvider class defines a pure virtual function MopSupplyObject, which is implemented in CCoeControl. Even when the object is presenting it's MObjectProvider interface, the vtable must use the correct implementation of MopSupplyObject, which expects to be used in the context of a CCoeControl. The solution used by the compiler is to create a virtual function override thunk function which makes any necessary adjustments between the calling context (a pointer to MObjectProvider) and the execution context (a pointer to CCoeControl).

    This could have been implemented using the names of the two contexts, but instead the ABI uses the amount by which the this pointer needs to be adjusted to make the switch: this is the offset encoded in the name.

    Here is a small example:

    eabi_thunk_offset_problem.cpp

    #ifndef COUNT #define COUNT 1 #endif @@ -68,7 +68,7 @@ int MoreDerived::foo() { return iMoreDerived; } MoreDerived* fun3() { return new MoreDerived; } MInterface* fun4() { return new MoreDerived; } -

    Compile this with armcc -S eabi_thunk_offset_problem.cpp to get an assembly listing. Compile it again with an extra argument "-DCOUNT=2" to change the size of the base class, and compare the two files: there will be various differences in the code, but also differences in the _ZTh symbols - including the differences used in the "typical symptom" above.

    If you use virtual inheritance, then you may see another version of the problem. With virtual inheritance, there are two offsets involved and the thunk symbols will begin with _ZTv. The same symbol may appear in several thunks, each with different offsets.

    The Shared DEF File Problem

    What is the Problem with Shared DEF Files?

    The class exporting rules (see Class Exporting Rules) by default will generate non-callable exports for all classes that are not marked non-sharable in source. Say two DLLs, A and B share one DEF file, in effect implementing similar but different functionality towards the same public interface. Further say, no classes are marked non-sharable. Say there are some classes that are shared between DLL A and DLL B and that these classes have names of the form CShared<xyz>. Classes that are specific to DLL A have names of the form CA<xyz>, classes specific to DLL B have names of the form CB<xyz>. When DLL A is built, DEF file entries for non-callable exports from CShared<xyz> and CA<XYZ> are automatically added to the DEF file. When DLL B is built, exports from CShared<xyz> and CB<XYZ> are added. So in fact the DEF file would be the sum of all non-callable exports from CShared<xyz>, CA<xyz> and CB<XYZ>. It also will contain symbols from functions that are marked for export using EXPORT_C. However, this means that neither A or B can be linked. This is because when A is built, the code linking against the non-callable exports of CB<XYZ> do not exist in A and vice versa.

    Use-cases for Fixing Shared DEF Files

    Use-Case 1: Polymorphic “Plug-ins”

    Several DLLs are built using the same DLL interface (DEF file). Typically the DEF file has very few entries (1 or 2) and is maintained manually. This means that new functions are added by editing the shared DEF file. Also typically no import libraries are needed as the knowledge about the DLL interface is hard-coded into the client code of the "plug-in". The plug-ins do not have to be loaded at run-time. Some are always built but not always included in the ROM.

    The Fix:

    1. If the shared DEF file is in \epoc32\include\def\EABI then locate the original DEF file by searching all BLD.INF files for the appropriate line in PRJ_EXPORTS

    2. Remove all non-callable exports that have caused warnings or errors from the original DEF file.

    3. Add NOEXPORTLIBRARY to all MMP files that share that component, ensuring that the build system does NOT try and re-freeze these automatically the next time you build. Otherwise the build system will re-introduce these non-callable exports.

    Note:

    If you want to use the re-freeze mechanism – say to add a new export, you have to temporarily remove NOEXPORTLIBRARY from the MMP file, then generate a new DEF file by re-building the component, re-freeze, possibly edit (to remove unwanted non-callable exports) and then insert the keyword NOEXPORTLIBRARY into the MMP file again.

    Use-Case 2: Polymorphic “Plug-ins” on which Other Components Depend

    This is very similar to use-case 1, except that some other component depends on one of the plug-ins. This means that an import library is required.

    The Fix: The build structure must be such that

    • One MMP file generates the import library from the shared DEF file using the target type IMPLIB. It may be necessary to create a new MMP file which does this.

    • All the other MMP files use NOEXPORTLIBRARY as described in use-case 1

    Note:

    If you want to use the re-freeze mechanism – say to add a new export, you have to temporarily remove NOEXPORTLIBRARY from the MMP file, then generate a new DEF file by re-building the component, re-freeze, possibly edit (to remove unwanted non-callable exports) and then insert the keyword NOEXPORTLIBRARY into the MMP file again.

    Use-Case 3: Annotate Classes as Non-sharable

    Where a DEF file must be shared between components for whatever reason and none of the above use-cases can be applied, the build would fail for at least one component. An example of this may be a class MyPrivateClass that exists in the debug build (UDEV) of the OS, but not in the release build (UREL).

    In such a case all classes that should not contribute to the DEF file, i.e. that are really private to the implementation of a component, must be annotated in the source as NONSHARABLE_CLASS(X) or NONSHARABLE_STRUCT(X). As a result no non-callable exports will be generated for such a class. Say for example, class MyPrivateClass is truly private to a component that must share a DEF file with another component. Then it should be declared:

    NONSHARABLE_CLASS(MyPrivateClass) +

    Compile this with armcc -S eabi_thunk_offset_problem.cpp to get an assembly listing. Compile it again with an extra argument "-DCOUNT=2" to change the size of the base class, and compare the two files: there will be various differences in the code, but also differences in the _ZTh symbols - including the differences used in the "typical symptom" above.

    If you use virtual inheritance, then you may see another version of the problem. With virtual inheritance, there are two offsets involved and the thunk symbols will begin with _ZTv. The same symbol may appear in several thunks, each with different offsets.

    The Shared DEF File Problem

    What is the Problem with Shared DEF Files?

    The class exporting rules (see Class Exporting Rules) by default will generate non-callable exports for all classes that are not marked non-sharable in source. Say two DLLs, A and B share one DEF file, in effect implementing similar but different functionality towards the same public interface. Further say, no classes are marked non-sharable. Say there are some classes that are shared between DLL A and DLL B and that these classes have names of the form CShared<xyz>. Classes that are specific to DLL A have names of the form CA<xyz>, classes specific to DLL B have names of the form CB<xyz>. When DLL A is built, DEF file entries for non-callable exports from CShared<xyz> and CA<XYZ> are automatically added to the DEF file. When DLL B is built, exports from CShared<xyz> and CB<XYZ> are added. So in fact the DEF file would be the sum of all non-callable exports from CShared<xyz>, CA<xyz> and CB<XYZ>. It also will contain symbols from functions that are marked for export using EXPORT_C. However, this means that neither A or B can be linked. This is because when A is built, the code linking against the non-callable exports of CB<XYZ> do not exist in A and vice versa.

    Use-cases for Fixing Shared DEF Files

    Use-Case 1: Polymorphic “Plug-ins”

    Several DLLs are built using the same DLL interface (DEF file). Typically the DEF file has very few entries (1 or 2) and is maintained manually. This means that new functions are added by editing the shared DEF file. Also typically no import libraries are needed as the knowledge about the DLL interface is hard-coded into the client code of the "plug-in". The plug-ins do not have to be loaded at run-time. Some are always built but not always included in the ROM.

    The Fix:

    1. If the shared DEF file is in \epoc32\include\def\EABI then locate the original DEF file by searching all BLD.INF files for the appropriate line in PRJ_EXPORTS

    2. Remove all non-callable exports that have caused warnings or errors from the original DEF file.

    3. Add NOEXPORTLIBRARY to all MMP files that share that component, ensuring that the build system does NOT try and re-freeze these automatically the next time you build. Otherwise the build system will re-introduce these non-callable exports.

    Note:

    If you want to use the re-freeze mechanism – say to add a new export, you have to temporarily remove NOEXPORTLIBRARY from the MMP file, then generate a new DEF file by re-building the component, re-freeze, possibly edit (to remove unwanted non-callable exports) and then insert the keyword NOEXPORTLIBRARY into the MMP file again.

    Use-Case 2: Polymorphic “Plug-ins” on which Other Components Depend

    This is very similar to use-case 1, except that some other component depends on one of the plug-ins. This means that an import library is required.

    The Fix: The build structure must be such that

    • One MMP file generates the import library from the shared DEF file using the target type IMPLIB. It may be necessary to create a new MMP file which does this.

    • All the other MMP files use NOEXPORTLIBRARY as described in use-case 1

    Note:

    If you want to use the re-freeze mechanism – say to add a new export, you have to temporarily remove NOEXPORTLIBRARY from the MMP file, then generate a new DEF file by re-building the component, re-freeze, possibly edit (to remove unwanted non-callable exports) and then insert the keyword NOEXPORTLIBRARY into the MMP file again.

    Use-Case 3: Annotate Classes as Non-sharable

    Where a DEF file must be shared between components for whatever reason and none of the above use-cases can be applied, the build would fail for at least one component. An example of this may be a class MyPrivateClass that exists in the debug build (UDEV) of the OS, but not in the release build (UREL).

    In such a case all classes that should not contribute to the DEF file, i.e. that are really private to the implementation of a component, must be annotated in the source as NONSHARABLE_CLASS(X) or NONSHARABLE_STRUCT(X). As a result no non-callable exports will be generated for such a class. Say for example, class MyPrivateClass is truly private to a component that must share a DEF file with another component. Then it should be declared:

    NONSHARABLE_CLASS(MyPrivateClass) { ... };

    This will prevent the compiler from exporting non-callables for MyPrivateClass. However this means that it is not possible to DLL-derive (for the definition of DLL-derive see Terminology and Background) from MyPrivateClass and that all classes derived from MyPrivateClass must also be marked non-sharable (see Terminology and Background).

    Use-Case 4: Optimisation

    A consequence of the Simple Rule (see The Simple Rule – Sharable Classes) is that some components may emit entries in their DEF files which are not needed. In the worst case the overhead is 8 bytes of ROM size per class (2 DLL entry points). In the typical case an increase of 4 bytes will occur and in some cases no increase at all.

    For code that is private to an implementation, i.e. where it is known that a class would never be used outside of that component, this footprint increase is unnecessary. In order to avoid the footprint increase mark all private classes (and classes derived from them) in the source as NONSHARABLE_CLASS(X) or NONSHARABLE_STRUCT(X) as described for use-case 3.

    Use-Case 5: The Build Tools Automatically Ignore Non-callable Exports

    For most components the build tools automatically ignore all non-callable exports. This is the case because the build tools know the situations when non-callable exports cannot be needed. Non-callable exports are only needed, if:

    • The target type is either DLL, EXEDLL or EXEXP and the MMP file has no NOEXPORTLIBRARY keyword

    • If the MMP file contains the DEFFILE keyword and the MMP file has no NOEXPORTLIBRARY keyword

    The reason for this is that target types, such as APP, always map directly onto one of the above use-cases. For example the target type APP is an example of use-case 1, i.e. the APP is a DLL that always has the same DEF file. However no other DLL but the APP loader will ever link against this binary, unless its MMP file contains the DEFFILE keyword.

    Use-Case 6: Best Practice

    Note that it is good practice to avoid unnecessary footprint increases by marking private classes as non-sharable as outlined in use-case 4. Further note, that at some point in the future Symbian may add this to the Symbian Coding Standards or withdraw tools support for some of the cases described above.

    Optimisation

    This section discusses advantages of marking “private” classes as described in use-cases 4 and 6 in the previous section as non-sharable

    Reasons for Optimisation:

    • Small footprint saving

    • DEF files are more “pretty”, i.e. they will have fewer entries for non-callable exports in it and may have fewer holes in them.

    • When changing code that is private to a module as described in use-case 4 and not marked non-sharable, DEF file changes are required when:

      • Renaming a private class

      • Removing a private class

      • Adding a private class

      This makes it harder to maintain DEF files and will ultimately lead to less “pretty” DEF files when Binary Compatibility must be maintained.

    • More non-sharable classes mean that it is less likely to have problems with shared DEF files as outlined in use-cases 1 and 2 in the previous section.

    When not to use Optimisation:

    It is not advisable to use optimisation in the following circumstances, as the build tools suppress non-callable exports automatically in these cases:

    • The target type of the component containing private classes is neither DLL, EXEDLL nor EXEXP and no DEFFILE keyword is contained the components MMP file

    • The MMP file of the component contains the NOEXPORTLIBRARY keyword.

      If the NOEXPORTLIBRARY keyword has been introduced to work around problems introduced by shared DEF files and the Simple Rule it may be better to remove the NOEXPORTLIBRARY keyword and mark private classes as non-sharable instead.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CCE61F55-DDCC-566B-B4C6-E094E8E8B073_d0e524074_href.png Binary file Symbian3/PDK/Source/GUID-CCE61F55-DDCC-566B-B4C6-E094E8E8B073_d0e524074_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CCE61F55-DDCC-566B-B4C6-E094E8E8B073_d0e531534_href.png Binary file Symbian3/PDK/Source/GUID-CCE61F55-DDCC-566B-B4C6-E094E8E8B073_d0e531534_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CCE6DC36-625C-487C-9AD8-F1BF8E36080A.dita --- a/Symbian3/PDK/Source/GUID-CCE6DC36-625C-487C-9AD8-F1BF8E36080A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CCE6DC36-625C-487C-9AD8-F1BF8E36080A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -27,28 +27,28 @@

    Adaptive search

    - +

    Searchfield API

    Find pane

    - +

    Searchfield API and Popups API

    Generic Button

    - +

    Generic Button API

    Home screen

    - +

    Home Screen Publishing API

    @@ -67,7 +67,7 @@
  • Universal indicators

  • - +
    • Indicators API for indicatiors.

    • @@ -79,14 +79,14 @@

      Lists and grids

      - +

      Lists API for lists and Grids API

      Menu

      - +
      @@ -103,7 +103,7 @@
    • Warning note

    - + Notes API and Notifier API @@ -111,7 +111,7 @@

    Menu list (for example,Options menu and sub-menus)

    - +

    Options menu API

    @@ -128,9 +128,9 @@
  • Tooltips

  • - + - +

    • Discreet pop-up API for discreet pop-ups

    • @@ -142,7 +142,7 @@

      Toolbar

      - +

      Toolbar API, Generic @@ -151,7 +151,7 @@

      Choice list

      - +

      Choice list API

      @@ -160,7 +160,7 @@

      Forms

      - +

      Form API

      @@ -172,7 +172,7 @@
    • Slider

    - +

    Form API

    @@ -182,7 +182,7 @@ query, Grid query

    - +

    Queries API

    @@ -190,7 +190,7 @@

    Left/Right arrows in the Navi pane

    - +

    Navigation pane API

    @@ -199,7 +199,7 @@ list

    Selection list

    - +

    Lists API

    @@ -207,7 +207,7 @@

    Multi-selection list

    - +

    Lists API

    @@ -215,7 +215,7 @@

    Scrollbar

    - +

    Scroller API

    @@ -227,28 +227,28 @@

    Pop-up setting

    - +

    Multi-selection list setting

    - +

    Text setting

    - +

    Slider setting

    - +

    @@ -256,7 +256,7 @@

    Setting list

    - +

    Setting pages API, Lists API

    @@ -265,7 +265,7 @@ pane

    There is no middle softkey label in Touch UI - +

    Buttons API

    @@ -285,7 +285,7 @@
  • Clock Pane

  • - +
    • Status pane API for the entire status pane

    • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CCEE3988-C10A-538A-8107-E2636594443B_d0e533124_href.png Binary file Symbian3/PDK/Source/GUID-CCEE3988-C10A-538A-8107-E2636594443B_d0e533124_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CCEE3988-C10A-538A-8107-E2636594443B_d0e540584_href.png Binary file Symbian3/PDK/Source/GUID-CCEE3988-C10A-538A-8107-E2636594443B_d0e540584_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CD2BF0EE-5437-4ADA-A447-4B06147754A8.dita --- a/Symbian3/PDK/Source/GUID-CD2BF0EE-5437-4ADA-A447-4B06147754A8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CD2BF0EE-5437-4ADA-A447-4B06147754A8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,7 +20,7 @@ illustrates the relationships between the different Symbian Bluetooth classes.

      For more information, see Bluetooth Management Collection.

      -Bluetooth API +Bluetooth API

      Use the Bluetooth Security Manager to set the appropriate security requirements (authentication, authorization, and encryption) that incoming connections to the device's Bluetooth services must meet. For more information, see Using Bluetooth Security diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CD350815-1387-5C46-9D80-905022A90D8A_d0e605026_href.jpg Binary file Symbian3/PDK/Source/GUID-CD350815-1387-5C46-9D80-905022A90D8A_d0e605026_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CD350815-1387-5C46-9D80-905022A90D8A_d0e644188_href.jpg Binary file Symbian3/PDK/Source/GUID-CD350815-1387-5C46-9D80-905022A90D8A_d0e644188_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CD4B8ECA-AFE7-593C-B095-5D642EA2EC61.dita --- a/Symbian3/PDK/Source/GUID-CD4B8ECA-AFE7-593C-B095-5D642EA2EC61.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CD4B8ECA-AFE7-593C-B095-5D642EA2EC61.dita Fri Jul 16 17:23:46 2010 +0100 @@ -31,7 +31,7 @@ Symbian Window Server API.

      Usage of DirectGDI - +

      The Symbian DirectGDI adaptation uses the Graphics Resource component, which provides an abstraction layer for the memory @@ -45,7 +45,7 @@ and terms

      The key elements of DirectGDI are driver, resources and drawing context as shown in the following diagram.

      DirectGDI key elements - +

      Driver. The driver class CDirectGdiDriver implements platform-specific functionality to create and manage device-dependent drawing contexts and resources. It defines the Hardware Adaptation Interface (HAI) @@ -77,7 +77,7 @@ and hardware adaptations use the same HAI. However, only one adaptation can be present on a phone.

      DirectGDI architecture - +

      For more information about the DirectGDI adaptation layer, see the DirectGDI Adaptation Overview.

      DLL summary

      DirectGDI consists of one DLL, directgdi.dll. For more information, diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CD506806-FC59-547A-B5CD-03314DF847F7.dita --- a/Symbian3/PDK/Source/GUID-CD506806-FC59-547A-B5CD-03314DF847F7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CD506806-FC59-547A-B5CD-03314DF847F7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,61 +1,58 @@ - - - - - -Date And -Time Handling OverviewFunctions that manipulates date and time values. -

      Architectural relationships

      The system maintains -two clocks:

        -
      • a secure clock that -can only be set by kernel code or by an application that has TCB capability. -This is a clock that can be used by secure DRM applications.

      • -
      • a non-secure clock that -can be set by applications that require no specific capability. This is the -clock that is used for user-visible time displays.

      • -

      The non-secure clock is implemented in terms of an offset from the -secure clock.

      Both the secure time and the non-secure time can be -set using the System Static Functions API, and specifically:

      -
      Secure time
        -
      • User::SetHomeTimeSecure(0

      • -
      • User::SetUTCTimeSecure()

      • -
      -
      Non-secure time
        -
      • User::SetHomeTime()

      • -
      • User::SetUTCTime()

      • -

      System locale settings, which affect date and time formatting, are -set through TLocale in the Locale Settings API.

      -
      Description

      The API has three key concepts: point -in time, time utilities, and time interval.

      Point -in time

      The point in time is a 64-bit integer that represents -time as the number of microseconds since midnight on 1st January 0 AD, using -a nominal Gregorian calendar. It can be set to the current system time, can -have arithmetic and comparison operations performed on it, and can be converted -into a string formatted according to the locale and other options.

      The -main point in time interface is provided by TTime. A support -class TDateTime is provided that allows time values to -be get and set in an easy-to-use format, such as year, month, day, rather -than as an integer.

      The time value in a TTime object -can be set using either the secure time or the non-secure time.

      Time utilities

      The time utilities provides miscellaneous time -functions, for such things as checking for leap years.

      The time utilities -interface is provided by Time.

      Time interval

      The time interval represents a period between -two points in time. Time intervals can be added or subtracted, either to or -from each other or to or from points in time.

      The time interval interface -is provided by a base class TTimeIntervalBase and by a -family of derived classes for second, minute, hour, etc. intervals. A class -outside this hierarchy, TTimeIntervalMicroSeconds, is provided -for efficiency reasons (it alone stores its value as a 64-bit number).

      - - -Locale Settings -Overview - -System Static -Functions Overview + + + + + +Date And Time Handling OverviewFunctions that manipulates date and time values. +
      Architectural +relationships

      The system maintains two clocks:

        +
      • a secure clock +that can only be set by kernel code or by an application that has +TCB capability. This is a clock that can be used by secure DRM applications.

      • +
      • a non-secure +clock that can be set by applications that require no specific capability. +This is the clock that is used for user-visible time displays.

      • +

      The non-secure clock is implemented in terms of an offset +from the secure clock.

      Both the secure time and the non-secure +time can be set using the System Static Functions API, and specifically:

      +
      Secure +time
        +
      • User::SetHomeTimeSecure(0

      • +
      • User::SetUTCTimeSecure()

      • +
      +
      Non-secure +time
        +
      • User::SetHomeTime()

      • +
      • User::SetUTCTime()

      • +

      System locale settings, which affect date and time formatting, +are set through TLocale in the Locale Settings +API.

      +
      Description

      The API has three key concepts: point in time, time utilities, +and time interval.

      Point in time

      The point in time is a 64-bit integer +that represents time as the number of microseconds since midnight +on 1st January 0 AD, using a nominal Gregorian calendar. It can be +set to the current system time, can have arithmetic and comparison +operations performed on it, and can be converted into a string formatted +according to the locale and other options.

      The main point +in time interface is provided by TTime. A support +class TDateTime is provided that allows time values +to be get and set in an easy-to-use format, such as year, month, day, +rather than as an integer.

      The time value in a TTime object can be set using either the secure time or the non-secure +time.

      Time utilities

      The time utilities provides miscellaneous +time functions, for such things as checking for leap years.

      The time utilities interface is provided by Time.

      Time interval

      The time interval represents a period +between two points in time. Time intervals can be added or subtracted, +either to or from each other or to or from points in time.

      The time interval interface is provided by a base class TTimeIntervalBase and by a family of derived classes for +second, minute, hour, etc. intervals. A class outside this hierarchy, TTimeIntervalMicroSeconds, is provided for efficiency reasons +(it alone stores its value as a 64-bit number).

      +
      + +System Static Functions Overview +Locale +Settings Overview
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CD7F507C-CDD5-5612-BA1B-72641D28FA4A_d0e355751_href.png Binary file Symbian3/PDK/Source/GUID-CD7F507C-CDD5-5612-BA1B-72641D28FA4A_d0e355751_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CD7F507C-CDD5-5612-BA1B-72641D28FA4A_d0e361654_href.png Binary file Symbian3/PDK/Source/GUID-CD7F507C-CDD5-5612-BA1B-72641D28FA4A_d0e361654_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CDDC6DBD-560B-4602-815C-FE3FCDA09AD5.dita --- a/Symbian3/PDK/Source/GUID-CDDC6DBD-560B-4602-815C-FE3FCDA09AD5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CDDC6DBD-560B-4602-815C-FE3FCDA09AD5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,8 +11,8 @@ PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd"> Running Tests using TestDriver - -Install STAT to + +Install STAT to enable the Communication between the PC and the device under test. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CE1F63A6-BF8E-4287-BECE-0248420C86AB.dita --- a/Symbian3/PDK/Source/GUID-CE1F63A6-BF8E-4287-BECE-0248420C86AB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CE1F63A6-BF8E-4287-BECE-0248420C86AB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -64,7 +64,7 @@
      Download

      Click on the following link to download the example: MtpDataProvider.zip.

      Click browse to view the example code.

      Building and configuring

      You can build the example from your IDE or the command line:

        -
      • If you +

      • If you use an IDE, import the bld.inf file of the example into your IDE, and use the build command of the IDE.

      • If you use the command line, open a command prompt, and set @@ -73,8 +73,7 @@ following commands:

        • bldmake bldfiles

        • abld build

        • -

        How -to use bldmake and How to use abld describe how to use the SBSv1 build tools.

      • +

    The example builds the following DLL:

    • mtpexampledp.dll : example data provider plug-in.

    • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CE3C8A77-8797-53FB-984E-A91A413BA254_d0e373271_href.png Binary file Symbian3/PDK/Source/GUID-CE3C8A77-8797-53FB-984E-A91A413BA254_d0e373271_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CE3C8A77-8797-53FB-984E-A91A413BA254_d0e379119_href.png Binary file Symbian3/PDK/Source/GUID-CE3C8A77-8797-53FB-984E-A91A413BA254_d0e379119_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CE49EF9C-C87A-5D4C-91F3-5C2950A5553B_d0e446291_href.png Binary file Symbian3/PDK/Source/GUID-CE49EF9C-C87A-5D4C-91F3-5C2950A5553B_d0e446291_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CE49EF9C-C87A-5D4C-91F3-5C2950A5553B_d0e452136_href.png Binary file Symbian3/PDK/Source/GUID-CE49EF9C-C87A-5D4C-91F3-5C2950A5553B_d0e452136_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e568722_href.png Binary file Symbian3/PDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e568722_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e569155_href.png Binary file Symbian3/PDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e569155_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e569234_href.png Binary file Symbian3/PDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e569234_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e569407_href.png Binary file Symbian3/PDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e569407_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e618018_href.png Binary file Symbian3/PDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e618018_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e618451_href.png Binary file Symbian3/PDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e618451_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e618530_href.png Binary file Symbian3/PDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e618530_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e618703_href.png Binary file Symbian3/PDK/Source/GUID-CE79D1B9-2770-5494-A741-D98DE3EBFA05_d0e618703_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CE7C84A5-D2E6-5151-BBC7-6AF9C8A0D978.dita --- a/Symbian3/PDK/Source/GUID-CE7C84A5-D2E6-5151-BBC7-6AF9C8A0D978.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CE7C84A5-D2E6-5151-BBC7-6AF9C8A0D978.dita Fri Jul 16 17:23:46 2010 +0100 @@ -22,7 +22,7 @@ The binaries are linked to the etul.lib (Text Utilities - part of Egul component) library.

      Subsystem dependencies - +
      Description

      Usage

      In order to use the Address String Tokenizer, the user has to create an instance @@ -84,6 +84,6 @@ delete multiSearch;

      Sequence Diagram

      Sequence of events for <codeph>CTulAddressStringTokenizer</codeph> - +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CE7CF024-4898-551A-841B-38EC57A3EC82.dita --- a/Symbian3/PDK/Source/GUID-CE7CF024-4898-551A-841B-38EC57A3EC82.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CE7CF024-4898-551A-841B-38EC57A3EC82.dita Fri Jul 16 17:23:46 2010 +0100 @@ -35,7 +35,7 @@ shows three windows, A, B and C, all belonging to the same window group. Their ordinal positions are as follows: A=0; B=1; C=2.

      - +

      This would be the default ordering of the windows if they were created in the order CBA. Many sibling windows within an application may not overlap @@ -49,16 +49,16 @@ ordinal position of 0. The diagram below shows windows A, B and C, but window B has now been given an ordinal position of 0. A’s position has been incremented to 1, and C’s remains as 2.

      - +

      The diagram below shows the same three windows as above, except that window B now contains a child window, D. Window D’s ordinal position is 0, relative to its parent window, B.

      - +

      If window A is now moved to the front, window B moves behind it, as shown in the diagram below. Window D’s ordinal position is still 0, but because its position is relative to its parent window, it moves with window B to behind window A.

      - +
      Moving a window to the back

      If a window is given an ordinal position greater than all its siblings, it is moved to the back diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CE7DA679-D441-4843-A81B-2A60440B50E8_d0e183493_href.png Binary file Symbian3/PDK/Source/GUID-CE7DA679-D441-4843-A81B-2A60440B50E8_d0e183493_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CE7DA679-D441-4843-A81B-2A60440B50E8_d0e189570_href.png Binary file Symbian3/PDK/Source/GUID-CE7DA679-D441-4843-A81B-2A60440B50E8_d0e189570_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CE94AD48-B79B-403A-98E9-F69494D052F9.dita --- a/Symbian3/PDK/Source/GUID-CE94AD48-B79B-403A-98E9-F69494D052F9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CE94AD48-B79B-403A-98E9-F69494D052F9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -65,7 +65,7 @@ below shows the subsystems that need to be modified in order to adapt HDMI in the Symbian platform by the device creator.

      HDMI architectural relationship with the subsystem - +

      1. Application layer

        To use HDMI in an application no changes are required @@ -102,7 +102,7 @@

    For example in order to play a video the following diagram demonstrates the HDMI feature implementation:

    HDMI video play use-case - +

    In order to play video the CVideoPlayerUtility2 API is used as the Video Client library, which plays sampled video data on graphics surfaces. In the MMF layer, the RMMFController and the CHXNGAUtility APIs are used as the MMF controller framework, which initializes the DevVideo API. The DevVideo uses the CMMFDevVideoPlay API diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CEDA0EFF-A1D4-53FE-9BF2-DB9AA857BCF5_d0e372717_href.png Binary file Symbian3/PDK/Source/GUID-CEDA0EFF-A1D4-53FE-9BF2-DB9AA857BCF5_d0e372717_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CEDA0EFF-A1D4-53FE-9BF2-DB9AA857BCF5_d0e378565_href.png Binary file Symbian3/PDK/Source/GUID-CEDA0EFF-A1D4-53FE-9BF2-DB9AA857BCF5_d0e378565_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CF17532E-5E90-5124-8F05-AA72B848F17F.dita --- a/Symbian3/PDK/Source/GUID-CF17532E-5E90-5124-8F05-AA72B848F17F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CF17532E-5E90-5124-8F05-AA72B848F17F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ that use two different machines. The following figure illustrates the sample application.

    - +

    All users who want to play the game must register to the server with their identities. This informs the server that the user is active and prepared to @@ -55,7 +55,7 @@

    How to play the game

    The following snapshot shows the different tabs available in the game.

    - +

    The following list describes the different tabs available in the game:

    • Invite for game - diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CF252B09-335E-5831-94A6-0B16B64C5030_d0e378040_href.png Binary file Symbian3/PDK/Source/GUID-CF252B09-335E-5831-94A6-0B16B64C5030_d0e378040_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CF252B09-335E-5831-94A6-0B16B64C5030_d0e383893_href.png Binary file Symbian3/PDK/Source/GUID-CF252B09-335E-5831-94A6-0B16B64C5030_d0e383893_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CF34E1C9-48E5-5B91-A48E-C68E647116A0_d0e75526_href.png Binary file Symbian3/PDK/Source/GUID-CF34E1C9-48E5-5B91-A48E-C68E647116A0_d0e75526_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CF34E1C9-48E5-5B91-A48E-C68E647116A0_d0e79739_href.png Binary file Symbian3/PDK/Source/GUID-CF34E1C9-48E5-5B91-A48E-C68E647116A0_d0e79739_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CF8287B9-2063-5316-A1BF-7DFC58FCDE30.dita --- a/Symbian3/PDK/Source/GUID-CF8287B9-2063-5316-A1BF-7DFC58FCDE30.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ - - - - - -How -to freeze exports -

      Released versions of DLLs should freeze their exports, so as to ensure -the backward compatibility of new releases of a library. While you are developing -a DLL, you can use the exportunfrozen keyword in the project's -mmp file, to tell the build process that exports are not yet frozen. When -you are ready to freeze, remove the exportunfrozen keyword, -and supply a .def file listing the exports.

      -

      To create a .def file, build the project in the normal -way. A warning will be generated to the effect that the frozen .def file -does not yet exist. Once the project has been built you can freeze it by calling -the freeze target in the makefiles. You can do this with abld by -using:

      -

      abld freeze

      -

      Either method will create the frozen .def file containing -the project’s exported functions. Note that the Symbian emulator targets and -ARM targets have different .def file formats, so that -if you build for both of these, you will need to store two def files.

      -

      Once the project is frozen, regenerate the makefiles so that the import -library will be created directly from the frozen .def file.

      -

      The project can be frozen in this way even if the exportunfrozen statement -is specified, but the import library will be created as a side-effect of linking -rather than from the frozen .def file, and this import -library will be created whether the project is frozen or not.

      -
      Storing deffiles

      By default, the build tools look -for the Symbian emulator build def file in a BWINS directory -(at the same level as the directory containing the mmp file), and the ARM -def file in a EABI directory. If def files are stored in -these locations, the project files does not need to specify the location of -the def files explicitly. If you want to store the def files in some other -location, you will need to specify in the project file where the .def files -are using the deffile keyword.

      Because the .def files -are different for different targets, it's necessary to use #if defined macros -to select the correct def file, depending on the target for which the project -is being built. The following example does this:

      #if defined(WINS) -deffile ..\freeze\CONVPLUG-WINS.DEF -#else -deffile ..\freeze\CONVPLUG-EABI.DEF -#endif

      A more succinct syntax is also available:

      deffile ..\~\x.def

      A -directory named ~ in a deffile path is automatically replaced with bwins or -eabi as necessary depending on which target is being built.

      -
      Adding new exports

      New exports can be added to -the frozen .def file by calling the freeze target -in the makefiles once the project has been built with the new exports incorporated.

      The freeze target -calls a tool, efreeze, to compare the frozen .def file, -if it exists, with the one generated by the two-stage link process in directory: epoc32\build\ absolute_path_to_mmp_file \ mmp_basename \ platform \

      efreeze checks that the frozen exports are all present and correct -in the generated .def file, and appends any new exports -to the end of the frozen .def file.

      - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CF890168-0FCA-5BFD-AC86-E355B611A6B0.dita --- a/Symbian3/PDK/Source/GUID-CF890168-0FCA-5BFD-AC86-E355B611A6B0.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CF890168-0FCA-5BFD-AC86-E355B611A6B0.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,10 +11,10 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Nodes in the Communications FrameworkThis topic describes the concept of a Node in the Communications Framework.

      The Communications Framework separates its implementation into horizontal and vertical divisions - the concept of Layers and Planes. Each of the separate entities is a Node. These entities form part of the Communications stack and are named Stack Nodes. Stack Nodes belong to a single Layer and a single Plane. Stack Nodes also provide Access Point services.

      Stack Nodes

      There are four Stack Nodes:

      MetaConnection Provider (MCPR) Node

      The MCPR Node uses the configuration and policy specifications to manage the Layer. A phone creator can replace this Node. The replacement or the configuration of this Node allows a phone creator to change the configuration of the Communications Infrastructure without a change to the software.

      Connection Provider (CPR) Node

      The CPR Node manages the connections.

      SubConnection Provider (SCPR) Node

      The SCPR Node manages the subconnections. Each subconnection represents a logical data channel. The Communications Framework has the concept of a default subconnection. A default SCPR always exists to represent the default subconnection. A connection uses the default subconnection if a subconnection is not specified.

      Flow Node

      The Flow Node manages the data stream.

      Stack Nodes -

      Each type of Node is related to a specific Plane in the Comms Stack. The following diagram shows that:

      • the Flow Node has a one-to-one relationship with the Data Plane.

      • the MCPR (MetaConnection Provider) Node has a one-to-one relationship with the Management Plane.

      • the Control Plane contains both the SCPR Node and the CPR Node.

      • the SCPR Node can have many instances in operation at the same time.

      • the MCPR Node can connect to resources outside the Communications stack. The offset grey box around the text MCPR represents this fact.

      +

      Each type of Node is related to a specific Plane in the Comms Stack. The following diagram shows that:

      • the Flow Node has a one-to-one relationship with the Data Plane.

      • the MCPR (MetaConnection Provider) Node has a one-to-one relationship with the Management Plane.

      • the Control Plane contains both the SCPR Node and the CPR Node.

      • the SCPR Node can have many instances in operation at the same time.

      • the MCPR Node can connect to resources outside the Communications stack. The offset grey box around the text MCPR represents this fact.

      How Nodes related to Planes in the Comms Stack -
      Other Nodes

      The Communications Framework has two other types of Node: Tier Manager and Factory Container.

      Tier manager Node

      A Tier is an alternative to Access Points. A Tier gives users a different method to access the services of the Communications Infrastructure. A Tier represents a higher level communications technology or a collection of technologies. Each communications technology belongs to a Tier, but a Tier can contain more than one technology. When a user selects a technology, a Tier shows the appropriate group of technologies from which the user can select. The Tier handles the selection of the Access Point. A Tier manager Node manages each Tier in the Communications Framework.

      Factory Container Node

      Factory Containers create Nodes. The Communications Framework supplies a Factory Container for each type of Node. The Factory Containers have published addresses and Nodes use these addresses to find and communicate with the Factory Containers. A Node can create another Node. A Node sends a request to the correct Factory Container to create the other Node. The Factory Container tries to create the new Node and reports status to the Node that made the request.

      The following diagram shows the connection between the Stack Nodes and the Tier Manager and Factory Container Nodes.

      +
      Other Nodes

      The Communications Framework has two other types of Node: Tier Manager and Factory Container.

      Tier manager Node

      A Tier is an alternative to Access Points. A Tier gives users a different method to access the services of the Communications Infrastructure. A Tier represents a higher level communications technology or a collection of technologies. Each communications technology belongs to a Tier, but a Tier can contain more than one technology. When a user selects a technology, a Tier shows the appropriate group of technologies from which the user can select. The Tier handles the selection of the Access Point. A Tier manager Node manages each Tier in the Communications Framework.

      Factory Container Node

      Factory Containers create Nodes. The Communications Framework supplies a Factory Container for each type of Node. The Factory Containers have published addresses and Nodes use these addresses to find and communicate with the Factory Containers. A Node can create another Node. A Node sends a request to the correct Factory Container to create the other Node. The Factory Container tries to create the new Node and reports status to the Node that made the request.

      The following diagram shows the connection between the Stack Nodes and the Tier Manager and Factory Container Nodes.

      Connection between the Stack Nodes and the Tier Manager and Factory Container Nodes -
      Access +
    Access Points Layers Planes Tiers \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CF8FA653-5A3B-5D57-8875-0BC6BDCC1D0A.dita --- a/Symbian3/PDK/Source/GUID-CF8FA653-5A3B-5D57-8875-0BC6BDCC1D0A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-CF8FA653-5A3B-5D57-8875-0BC6BDCC1D0A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -35,7 +35,7 @@ Send executable, it unpacks the schedule information and uses the messaging client API to request the Server MTM to perform an operation.

    Schedule Send architecture - +

    The executable to run by the Task Scheduler is specified in the schedule send settings. This allows different executables for different message types, as a set of schedule send settings are defined for each message type diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CF9EF400-DE1F-55F7-BD33-C4CD80462971_d0e268956_href.png Binary file Symbian3/PDK/Source/GUID-CF9EF400-DE1F-55F7-BD33-C4CD80462971_d0e268956_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CF9EF400-DE1F-55F7-BD33-C4CD80462971_d0e274956_href.png Binary file Symbian3/PDK/Source/GUID-CF9EF400-DE1F-55F7-BD33-C4CD80462971_d0e274956_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CFD3CD78-D99A-57B8-80EB-8C67899E5D27_d0e679639_href.png Binary file Symbian3/PDK/Source/GUID-CFD3CD78-D99A-57B8-80EB-8C67899E5D27_d0e679639_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CFD3CD78-D99A-57B8-80EB-8C67899E5D27_d0e692466_href.png Binary file Symbian3/PDK/Source/GUID-CFD3CD78-D99A-57B8-80EB-8C67899E5D27_d0e692466_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CFD41A5A-2FE2-47FE-8369-08E3C73CB9A5_d0e17025_href.png Binary file Symbian3/PDK/Source/GUID-CFD41A5A-2FE2-47FE-8369-08E3C73CB9A5_d0e17025_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CFD41A5A-2FE2-47FE-8369-08E3C73CB9A5_d0e18136_href.png Binary file Symbian3/PDK/Source/GUID-CFD41A5A-2FE2-47FE-8369-08E3C73CB9A5_d0e18136_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CFF1BCCA-5D07-5B8A-9363-AD11EEEAB485-GENID-1-12-1-26-1-1-11-1-1-5-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-CFF1BCCA-5D07-5B8A-9363-AD11EEEAB485-GENID-1-12-1-26-1-1-11-1-1-5-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,190 @@ + + + + + +Symmetric +ciphers -- HowTo +

      +
    • How do I use the symmetric cipher framework?

    • +
    • Symmetric Modes

    • +
    • Which symmetric cipher should I use?

    • +
    • How does buffering work within the symmetric cipher framework?

    • +
    +
    How do I use +the symmetric cipher framework?
      +
    • An introduction to the symmetric cipher framework

    • +
    • CSymmetricCipher interface basics

    • +
    • Example code for a symmetric factory class

    • +

    An introduction +to the symmetric cipher framework

    The symmetric cipher framework +collates the behaviour of all symmetric ciphers under one interface: CSymmetricCipher. +This interface is intended to represent one direction of one instance of any +symmetric cipher. One direction means either encryption or decryption, but +not both.

    CSymmetricCipher +interface basics

      +
    • Block ciphers -- +Here one must create an underlying transformation (CBlockTransformation) +and create a CBufferedTransformation (which is an CSymmetricCipher) +from that.

    • +
    • Stream ciphers -- +These have no concept of buffering and are treated as specializations of CSymmetricCipher. +They require no intermediate container class.

    • +

    The following code illustrates the creation of a buffered AES ECB +encryptor and an ARC4 stream cipher.

    +CBlockTransformation* block = 0; +block = CAESEncryptor::NewLC(aKey); +CPadding* padding = CPaddingSSLv3::NewLC(KAESBlockSize); //The blocksize of AES (16 bytes) +CSymmetricCipher* cipher = CBufferedEncryptor::NewL(block, padding); +CleanupStack::Pop(2, block); //padding, block -> both owned by cipher + +CSymmetricCipher* cipher = new(ELeave)CARC4(aKey); +CleanupStack::PushL(cipher): +

    After creation, both examples are usable through the CSymmetricCipher interface. +So, to encrypt with either of the above ciphers one could do:

    +HBufC8* output = HBufC8::NewLC(cipher->MaxOutputLength(input.Size())); +cipher->Process(input, output); +HBufC8* output2 = HBufC8::NewLC(cipher->MaxFinalOutputLength(input2.Size())); +cipher->ProcessFinalL(input2, output2); +

    In this example, input and input2 are +two arbitrary, finite length descriptors. The derived implementations of CSymmetricCipher (CBufferedEncryptor / CBufferedDecryptor and CStreamCipher) +are responsible for handling what to do in each specific case. For example, +in the case of an encrypting block cipher, ProcessFinalL() will +call the underlying padding system, which will in turn ensure that the overall +length of input plaintext is of a suitable length for encryption. For more +information on how the values returned from MaxOutputLength() and MaxFinalOutputLength() are +calculated see How +does buffering work within the symmetric cipher framework?.

    Example code for a symmetric +factory class

    To simplify the process of creating symmetric encryptors +and decryptors, it is strongly recommended that applications create a factory +that automates the process for them. The following code gives a sample factory +that applications might like to use as a reference. It is not supplied as +part of the framework as every application has different ways of identifying +symmetric cipher suites.

    +CSymmetricCipher* CCipherFactory::BuildEncryptorL( + TSymmetricCipherType aType,const TDesC8& aKey,const TDesC8& aIV) + { + CSymmetricCipher* cipher = NULL; + + if (aType==ERc4) + { + cipher = new(ELeave) CARC4(aKey); + } + else + { + CBlockTransformation* bT = NULL; + switch (aType) + { + case EDes_cbc: + bT = CDESEncryptor::NewL(aKey); + break; + case EDes_ede3_cbc: + bT = C3DESEncryptor::NewL(aKey); + break; + case ERc2_cbc: + bT = CRC2Encryptor::NewL(aKey); + break; + default: + User::Leave(KErrNotSupported); + }; + CleanupStack::PushL(bT); + CBlockTransformation* mode = CModeCBCEncryptor::NewL(bT, aIV); + CleanupStack::Pop(bT); // owned by mode + CleanupStack::PushL(mode); + + CPadding* padding = CPaddingSSLv3::NewLC(KBlockSize); //All of these ciphers use 8 byte blocks + cipher = CBufferedEncryptor::NewL(mode, padding); + CleanupStack::Pop(2, mode); //padding, mode now owned by cipher + } + return cipher; + } +

    Applications creating these factories need to supply an equivalent +to the TSymmetricCipherType enum, which contains the list +of identifiers representing the cipher, padding, and mode requirements of +the application.

    Note that a similar BuildDecryptorL() will +also have to be created.

    Good naming conventions dictate that applications +should not pollute the global namespace and either use their own namespace +or prefix their factory classes with identifiers that associated it with that +specific application.

    +
    Symmetric Modes

    When +the amount of plaintext to be encrypted is larger than a single block, some +method must be employed to specify how subsequent blocks are dependent on +previous blocks. The simplest method, known as ECB (Electronic CodeBook), +specifies that subsequent blocks are completely independent. Therefore, two +identical blocks of plaintext will encrypt to two identical blocks of ciphertext. +ECB has significant security drawbacks, thus most applications use more advanced +modes in which subsequent blocks are dependent on the ciphertext of previous +blocks. The symmetric framework handles these modes through the CBlockChainingMode class, +which is a specialization of CBlockTransformation. The +idea is that one gives an implementation of a CBlockChainingMode another CBlockTransformation (CAESEncryptor, for instance) and then performs all operations on the CBlockChainingMode instance. +When CBlockTransformation::Transform() is called on the +mode, it is responsible for calling Transform() on the underlying +transformation that it owns and then applying its own chaining mode transformation.

    The +following example shows how to create a buffered AES CBC encryptor.

    +CBlockTransformation* basicAesBlock = 0; +CBlockTransformation* cbcBlock = 0; +basicAesBlock = CAESEncryptor::NewLC(aKey); +cbcBlock = CModeCBCEncryptor::NewL(basicAesBlock, iv); +CleanupStack::Pop(basicAesBlock); //owned by cbcBlock +CleanupStack::PushL(cbcBlock); +CPadding* padding = CPaddingSSLv3::NewLC(KAESBlockSize); //The blocksize of AES (16 bytes) +CSymmetricCipher* cipher = CBufferedEncryptor::NewL(cbcBlock, padding); +CleanupStack::Pop(2, cbcBlock); //padding, cbcBlock -> both owned by cipher +
    +
    Which symmetric +cipher should I use?

    Generally, when implementing secure comms +protocols, the cipher you use will be dictated by the protocol specification. +However, if you are writing your own application, you should consider the +use of AES (CAESEncryptor); this is the cipher recommended +by NIST.

    +
    How does buffering +work within the symmetric cipher framework?
      +
    • Stream ciphers consume +all content they are given. That is, the value returned from CSymmetricCipher::MaxOutputLength() is +always the same as the aInputLength parameter passed in.

    • +
    • Block ciphers controlled +through a CBufferedTransformation operate under the following +rules:

        +
      • Process()

          +
        • Any previously buffered +data is (logically) prepended to aInput.

        • +
        • All whole blocks are +transformed and appended to aOutput.

        • +
        • Any remaining partial +blocks, orphaned by the above rule, are buffered.

        • +
      • +
      • ProcessFinalL()

          +
        • Encryption

            +
          1. Any previously buffered +data is (logically) prepended to aInput.

          2. +
          3. All whole block are +transformed and appended to aOutput.

          4. +
          5. Any remaining partial +blocks are padded with underlying padding system to be block aligned to +the padding block size. (In the vast majority of cases, the padding block +size is equal to the block cipher block size).

          6. +
          7. The resulting block(s) +are transformed and appended to aOutput.

          8. +
        • +
        • Decryption

            +
          1. The input must be +a multiple of the block size.

          2. +
          3. Data is decrypted and +unpadded using underlying padding system.

          4. +
          5. Decrypted, unpadded +data is appended to aOutput.

          6. +
        • +
      • +
    • +

    In all cases CSymmetricCipher::MaxOutputLength() returns +as tight an upper bound as possible on the number of bytes that will be returned +by a call to CSymmetricCipher::Process() with a specified +number of input bytes. Correspondingly, CSymmetricCipher::MaxFinalOutputLength() returns +a similar bound but for a pending call to CSymmetricCipher::ProcessFinalL().

    + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CFF1BCCA-5D07-5B8A-9363-AD11EEEAB485-GENID-1-12-1-26-1-1-9-1-5-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-CFF1BCCA-5D07-5B8A-9363-AD11EEEAB485-GENID-1-12-1-26-1-1-9-1-5-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,190 @@ + + + + + +Symmetric +ciphers -- HowTo +
      +
    • How do I use the symmetric cipher framework?

    • +
    • Symmetric Modes

    • +
    • Which symmetric cipher should I use?

    • +
    • How does buffering work within the symmetric cipher framework?

    • +
    +
    How do I use +the symmetric cipher framework?
      +
    • An introduction to the symmetric cipher framework

    • +
    • CSymmetricCipher interface basics

    • +
    • Example code for a symmetric factory class

    • +

    An introduction +to the symmetric cipher framework

    The symmetric cipher framework +collates the behaviour of all symmetric ciphers under one interface: CSymmetricCipher. +This interface is intended to represent one direction of one instance of any +symmetric cipher. One direction means either encryption or decryption, but +not both.

    CSymmetricCipher +interface basics

      +
    • Block ciphers -- +Here one must create an underlying transformation (CBlockTransformation) +and create a CBufferedTransformation (which is an CSymmetricCipher) +from that.

    • +
    • Stream ciphers -- +These have no concept of buffering and are treated as specializations of CSymmetricCipher. +They require no intermediate container class.

    • +

    The following code illustrates the creation of a buffered AES ECB +encryptor and an ARC4 stream cipher.

    +CBlockTransformation* block = 0; +block = CAESEncryptor::NewLC(aKey); +CPadding* padding = CPaddingSSLv3::NewLC(KAESBlockSize); //The blocksize of AES (16 bytes) +CSymmetricCipher* cipher = CBufferedEncryptor::NewL(block, padding); +CleanupStack::Pop(2, block); //padding, block -> both owned by cipher + +CSymmetricCipher* cipher = new(ELeave)CARC4(aKey); +CleanupStack::PushL(cipher): +

    After creation, both examples are usable through the CSymmetricCipher interface. +So, to encrypt with either of the above ciphers one could do:

    +HBufC8* output = HBufC8::NewLC(cipher->MaxOutputLength(input.Size())); +cipher->Process(input, output); +HBufC8* output2 = HBufC8::NewLC(cipher->MaxFinalOutputLength(input2.Size())); +cipher->ProcessFinalL(input2, output2); +

    In this example, input and input2 are +two arbitrary, finite length descriptors. The derived implementations of CSymmetricCipher (CBufferedEncryptor / CBufferedDecryptor and CStreamCipher) +are responsible for handling what to do in each specific case. For example, +in the case of an encrypting block cipher, ProcessFinalL() will +call the underlying padding system, which will in turn ensure that the overall +length of input plaintext is of a suitable length for encryption. For more +information on how the values returned from MaxOutputLength() and MaxFinalOutputLength() are +calculated see How +does buffering work within the symmetric cipher framework?.

    Example code for a symmetric +factory class

    To simplify the process of creating symmetric encryptors +and decryptors, it is strongly recommended that applications create a factory +that automates the process for them. The following code gives a sample factory +that applications might like to use as a reference. It is not supplied as +part of the framework as every application has different ways of identifying +symmetric cipher suites.

    +CSymmetricCipher* CCipherFactory::BuildEncryptorL( + TSymmetricCipherType aType,const TDesC8& aKey,const TDesC8& aIV) + { + CSymmetricCipher* cipher = NULL; + + if (aType==ERc4) + { + cipher = new(ELeave) CARC4(aKey); + } + else + { + CBlockTransformation* bT = NULL; + switch (aType) + { + case EDes_cbc: + bT = CDESEncryptor::NewL(aKey); + break; + case EDes_ede3_cbc: + bT = C3DESEncryptor::NewL(aKey); + break; + case ERc2_cbc: + bT = CRC2Encryptor::NewL(aKey); + break; + default: + User::Leave(KErrNotSupported); + }; + CleanupStack::PushL(bT); + CBlockTransformation* mode = CModeCBCEncryptor::NewL(bT, aIV); + CleanupStack::Pop(bT); // owned by mode + CleanupStack::PushL(mode); + + CPadding* padding = CPaddingSSLv3::NewLC(KBlockSize); //All of these ciphers use 8 byte blocks + cipher = CBufferedEncryptor::NewL(mode, padding); + CleanupStack::Pop(2, mode); //padding, mode now owned by cipher + } + return cipher; + } +

    Applications creating these factories need to supply an equivalent +to the TSymmetricCipherType enum, which contains the list +of identifiers representing the cipher, padding, and mode requirements of +the application.

    Note that a similar BuildDecryptorL() will +also have to be created.

    Good naming conventions dictate that applications +should not pollute the global namespace and either use their own namespace +or prefix their factory classes with identifiers that associated it with that +specific application.

    +
    Symmetric Modes

    When +the amount of plaintext to be encrypted is larger than a single block, some +method must be employed to specify how subsequent blocks are dependent on +previous blocks. The simplest method, known as ECB (Electronic CodeBook), +specifies that subsequent blocks are completely independent. Therefore, two +identical blocks of plaintext will encrypt to two identical blocks of ciphertext. +ECB has significant security drawbacks, thus most applications use more advanced +modes in which subsequent blocks are dependent on the ciphertext of previous +blocks. The symmetric framework handles these modes through the CBlockChainingMode class, +which is a specialization of CBlockTransformation. The +idea is that one gives an implementation of a CBlockChainingMode another CBlockTransformation (CAESEncryptor, for instance) and then performs all operations on the CBlockChainingMode instance. +When CBlockTransformation::Transform() is called on the +mode, it is responsible for calling Transform() on the underlying +transformation that it owns and then applying its own chaining mode transformation.

    The +following example shows how to create a buffered AES CBC encryptor.

    +CBlockTransformation* basicAesBlock = 0; +CBlockTransformation* cbcBlock = 0; +basicAesBlock = CAESEncryptor::NewLC(aKey); +cbcBlock = CModeCBCEncryptor::NewL(basicAesBlock, iv); +CleanupStack::Pop(basicAesBlock); //owned by cbcBlock +CleanupStack::PushL(cbcBlock); +CPadding* padding = CPaddingSSLv3::NewLC(KAESBlockSize); //The blocksize of AES (16 bytes) +CSymmetricCipher* cipher = CBufferedEncryptor::NewL(cbcBlock, padding); +CleanupStack::Pop(2, cbcBlock); //padding, cbcBlock -> both owned by cipher +
    +
    Which symmetric +cipher should I use?

    Generally, when implementing secure comms +protocols, the cipher you use will be dictated by the protocol specification. +However, if you are writing your own application, you should consider the +use of AES (CAESEncryptor); this is the cipher recommended +by NIST.

    +
    How does buffering +work within the symmetric cipher framework?
      +
    • Stream ciphers consume +all content they are given. That is, the value returned from CSymmetricCipher::MaxOutputLength() is +always the same as the aInputLength parameter passed in.

    • +
    • Block ciphers controlled +through a CBufferedTransformation operate under the following +rules:

        +
      • Process()

          +
        • Any previously buffered +data is (logically) prepended to aInput.

        • +
        • All whole blocks are +transformed and appended to aOutput.

        • +
        • Any remaining partial +blocks, orphaned by the above rule, are buffered.

        • +
      • +
      • ProcessFinalL()

          +
        • Encryption

            +
          1. Any previously buffered +data is (logically) prepended to aInput.

          2. +
          3. All whole block are +transformed and appended to aOutput.

          4. +
          5. Any remaining partial +blocks are padded with underlying padding system to be block aligned to +the padding block size. (In the vast majority of cases, the padding block +size is equal to the block cipher block size).

          6. +
          7. The resulting block(s) +are transformed and appended to aOutput.

          8. +
        • +
        • Decryption

            +
          1. The input must be +a multiple of the block size.

          2. +
          3. Data is decrypted and +unpadded using underlying padding system.

          4. +
          5. Decrypted, unpadded +data is appended to aOutput.

          6. +
        • +
      • +
    • +

    In all cases CSymmetricCipher::MaxOutputLength() returns +as tight an upper bound as possible on the number of bytes that will be returned +by a call to CSymmetricCipher::Process() with a specified +number of input bytes. Correspondingly, CSymmetricCipher::MaxFinalOutputLength() returns +a similar bound but for a pending call to CSymmetricCipher::ProcessFinalL().

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-CFF1BCCA-5D07-5B8A-9363-AD11EEEAB485.dita --- a/Symbian3/PDK/Source/GUID-CFF1BCCA-5D07-5B8A-9363-AD11EEEAB485.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,190 +0,0 @@ - - - - - -Symmetric -ciphers -- HowTo -
      -
    • How do I use the symmetric cipher framework?

    • -
    • Symmetric Modes

    • -
    • Which symmetric cipher should I use?

    • -
    • How does buffering work within the symmetric cipher framework?

    • -
    -
    How do I use -the symmetric cipher framework?
      -
    • An introduction to the symmetric cipher framework

    • -
    • CSymmetricCipher interface basics

    • -
    • Example code for a symmetric factory class

    • -

    An introduction -to the symmetric cipher framework

    The symmetric cipher framework -collates the behaviour of all symmetric ciphers under one interface: CSymmetricCipher. -This interface is intended to represent one direction of one instance of any -symmetric cipher. One direction means either encryption or decryption, but -not both.

    CSymmetricCipher -interface basics

      -
    • Block ciphers -- -Here one must create an underlying transformation (CBlockTransformation) -and create a CBufferedTransformation (which is an CSymmetricCipher) -from that.

    • -
    • Stream ciphers -- -These have no concept of buffering and are treated as specializations of CSymmetricCipher. -They require no intermediate container class.

    • -

    The following code illustrates the creation of a buffered AES ECB -encryptor and an ARC4 stream cipher.

    -CBlockTransformation* block = 0; -block = CAESEncryptor::NewLC(aKey); -CPadding* padding = CPaddingSSLv3::NewLC(KAESBlockSize); //The blocksize of AES (16 bytes) -CSymmetricCipher* cipher = CBufferedEncryptor::NewL(block, padding); -CleanupStack::Pop(2, block); //padding, block -> both owned by cipher - -CSymmetricCipher* cipher = new(ELeave)CARC4(aKey); -CleanupStack::PushL(cipher): -

    After creation, both examples are usable through the CSymmetricCipher interface. -So, to encrypt with either of the above ciphers one could do:

    -HBufC8* output = HBufC8::NewLC(cipher->MaxOutputLength(input.Size())); -cipher->Process(input, output); -HBufC8* output2 = HBufC8::NewLC(cipher->MaxFinalOutputLength(input2.Size())); -cipher->ProcessFinalL(input2, output2); -

    In this example, input and input2 are -two arbitrary, finite length descriptors. The derived implementations of CSymmetricCipher (CBufferedEncryptor / CBufferedDecryptor and CStreamCipher) -are responsible for handling what to do in each specific case. For example, -in the case of an encrypting block cipher, ProcessFinalL() will -call the underlying padding system, which will in turn ensure that the overall -length of input plaintext is of a suitable length for encryption. For more -information on how the values returned from MaxOutputLength() and MaxFinalOutputLength() are -calculated see How -does buffering work within the symmetric cipher framework?.

    Example code for a symmetric -factory class

    To simplify the process of creating symmetric encryptors -and decryptors, it is strongly recommended that applications create a factory -that automates the process for them. The following code gives a sample factory -that applications might like to use as a reference. It is not supplied as -part of the framework as every application has different ways of identifying -symmetric cipher suites.

    -CSymmetricCipher* CCipherFactory::BuildEncryptorL( - TSymmetricCipherType aType,const TDesC8& aKey,const TDesC8& aIV) - { - CSymmetricCipher* cipher = NULL; - - if (aType==ERc4) - { - cipher = new(ELeave) CARC4(aKey); - } - else - { - CBlockTransformation* bT = NULL; - switch (aType) - { - case EDes_cbc: - bT = CDESEncryptor::NewL(aKey); - break; - case EDes_ede3_cbc: - bT = C3DESEncryptor::NewL(aKey); - break; - case ERc2_cbc: - bT = CRC2Encryptor::NewL(aKey); - break; - default: - User::Leave(KErrNotSupported); - }; - CleanupStack::PushL(bT); - CBlockTransformation* mode = CModeCBCEncryptor::NewL(bT, aIV); - CleanupStack::Pop(bT); // owned by mode - CleanupStack::PushL(mode); - - CPadding* padding = CPaddingSSLv3::NewLC(KBlockSize); //All of these ciphers use 8 byte blocks - cipher = CBufferedEncryptor::NewL(mode, padding); - CleanupStack::Pop(2, mode); //padding, mode now owned by cipher - } - return cipher; - } -

    Applications creating these factories need to supply an equivalent -to the TSymmetricCipherType enum, which contains the list -of identifiers representing the cipher, padding, and mode requirements of -the application.

    Note that a similar BuildDecryptorL() will -also have to be created.

    Good naming conventions dictate that applications -should not pollute the global namespace and either use their own namespace -or prefix their factory classes with identifiers that associated it with that -specific application.

    -
    Symmetric Modes

    When -the amount of plaintext to be encrypted is larger than a single block, some -method must be employed to specify how subsequent blocks are dependent on -previous blocks. The simplest method, known as ECB (Electronic CodeBook), -specifies that subsequent blocks are completely independent. Therefore, two -identical blocks of plaintext will encrypt to two identical blocks of ciphertext. -ECB has significant security drawbacks, thus most applications use more advanced -modes in which subsequent blocks are dependent on the ciphertext of previous -blocks. The symmetric framework handles these modes through the CBlockChainingMode class, -which is a specialization of CBlockTransformation. The -idea is that one gives an implementation of a CBlockChainingMode another CBlockTransformation (CAESEncryptor, for instance) and then performs all operations on the CBlockChainingMode instance. -When CBlockTransformation::Transform() is called on the -mode, it is responsible for calling Transform() on the underlying -transformation that it owns and then applying its own chaining mode transformation.

    The -following example shows how to create a buffered AES CBC encryptor.

    -CBlockTransformation* basicAesBlock = 0; -CBlockTransformation* cbcBlock = 0; -basicAesBlock = CAESEncryptor::NewLC(aKey); -cbcBlock = CModeCBCEncryptor::NewL(basicAesBlock, iv); -CleanupStack::Pop(basicAesBlock); //owned by cbcBlock -CleanupStack::PushL(cbcBlock); -CPadding* padding = CPaddingSSLv3::NewLC(KAESBlockSize); //The blocksize of AES (16 bytes) -CSymmetricCipher* cipher = CBufferedEncryptor::NewL(cbcBlock, padding); -CleanupStack::Pop(2, cbcBlock); //padding, cbcBlock -> both owned by cipher -
    -
    Which symmetric -cipher should I use?

    Generally, when implementing secure comms -protocols, the cipher you use will be dictated by the protocol specification. -However, if you are writing your own application, you should consider the -use of AES (CAESEncryptor); this is the cipher recommended -by NIST.

    -
    How does buffering -work within the symmetric cipher framework?
      -
    • Stream ciphers consume -all content they are given. That is, the value returned from CSymmetricCipher::MaxOutputLength() is -always the same as the aInputLength parameter passed in.

    • -
    • Block ciphers controlled -through a CBufferedTransformation operate under the following -rules:

        -
      • Process()

          -
        • Any previously buffered -data is (logically) prepended to aInput.

        • -
        • All whole blocks are -transformed and appended to aOutput.

        • -
        • Any remaining partial -blocks, orphaned by the above rule, are buffered.

        • -
      • -
      • ProcessFinalL()

          -
        • Encryption

            -
          1. Any previously buffered -data is (logically) prepended to aInput.

          2. -
          3. All whole block are -transformed and appended to aOutput.

          4. -
          5. Any remaining partial -blocks are padded with underlying padding system to be block aligned to -the padding block size. (In the vast majority of cases, the padding block -size is equal to the block cipher block size).

          6. -
          7. The resulting block(s) -are transformed and appended to aOutput.

          8. -
        • -
        • Decryption

            -
          1. The input must be -a multiple of the block size.

          2. -
          3. Data is decrypted and -unpadded using underlying padding system.

          4. -
          5. Decrypted, unpadded -data is appended to aOutput.

          6. -
        • -
      • -
    • -

    In all cases CSymmetricCipher::MaxOutputLength() returns -as tight an upper bound as possible on the number of bytes that will be returned -by a call to CSymmetricCipher::Process() with a specified -number of input bytes. Correspondingly, CSymmetricCipher::MaxFinalOutputLength() returns -a similar bound but for a pending call to CSymmetricCipher::ProcessFinalL().

    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D04DD8E6-804F-539E-8BD1-146210F4A51C_d0e242220_href.png Binary file Symbian3/PDK/Source/GUID-D04DD8E6-804F-539E-8BD1-146210F4A51C_d0e242220_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D04DD8E6-804F-539E-8BD1-146210F4A51C_d0e248231_href.png Binary file Symbian3/PDK/Source/GUID-D04DD8E6-804F-539E-8BD1-146210F4A51C_d0e248231_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D0BD34C9-7793-5FA0-8864-FD7444D62F90.dita --- a/Symbian3/PDK/Source/GUID-D0BD34C9-7793-5FA0-8864-FD7444D62F90.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D0BD34C9-7793-5FA0-8864-FD7444D62F90.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,7 +21,7 @@ ... }; - +

    Although any kind of object can be an element of a linked list, most lists consist of elements which are all of the same type.

    @@ -36,7 +36,7 @@ TDblQueLink iDlink2; }; - +

    Elements can also be objects constructed from a variety of classes, all ultimately derived from the same base class, where that base class includes @@ -60,7 +60,7 @@ } - +

    New link elements are inserted into an existing list using either TDblQueLink::Enque() or TDblQueLink::AddBefore() function. Note that AddBefore() is not available in v5. These are prototyped as:

    @@ -71,13 +71,13 @@ is added to the list so that its position follows the element aLink, as the following figure shows.

    - +

    Calling AddBefore() on an element means that this element is added to the list so that its position precedes the element aLink, as the following figure shows.

    - +

    Note that new elements cannot be inserted at the beginning or end of a list using these functions. The AddFirst() and AddLast() members diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D0C1493F-BA2F-517B-9D96-073DCF3D7923.dita --- a/Symbian3/PDK/Source/GUID-D0C1493F-BA2F-517B-9D96-073DCF3D7923.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -ARMV6 build targets

    The ARMV6 build target builds to the ARMV6 architecture. Like the ARMV5 target, the target requires the ARM's RealView Compilation Tools (RVCT) v2.2 build 616 from Symbian OS v9.4 onwards.

    Building binaries for ARMV6

    To build for ARMV6 with abld, use:

    abld build ARMV6 | ARMV6_ABIv2 [udeb | urel]

    Binaries are generated in the udeb and/or urel sub-directories of the epoc32\release\ARMV6\ directory for ABI v1 and epoc32\release\ARMV6_ABIv2\ directory for ABI v2.

    As per the conventional approach mentioned above, the build targets ARMV6 and ARMV6_ABIv2 are used to build binaries conforming to ARMV6 ABI v1 and ABI v2 respectively. From Symbian OS v9.4 onwards, the behaviour of these native build targets (ARMV6 and ARMV6_ABIv2) has changed. The build target ARMV6 is used to build binaries conforming to ABI v2 instead of ABI v1, and ARMV6_ABIv1 is used to build binaries conforming to ABI v1. Also, the release directories have changed to epoc32\release\ARMV6\ for ABI v2 binaries and epoc32\release\ARMV6_ABIv1\ for ABI v1 binaries.

    You can switch back to the old approach, where the targets ARMV6 and ARMV6_ABIv2 will build binaries conforming to ABI v1 and ABI v2 respectively. For more details on this, refer to Switching between ABI modes.

    Library export (.lib or .dso) files are generated in the epoc32\release\ARMV5\lib\ directory. This directory is used, as the library file format has not changed since ARMV5.

    Note: Code is not built for ARMV6 target by default. It has to be explicitly specified on the command line or with a prj_platforms statement in the component's BLD.INF file.

    Building binaries for ARMV6t2

    To build binaries for ARMV6t2 with abld, use:

    abld build ARMV6t2 [udeb | urel]

    The command builds binaries conforming to ABIv2 for ARMV6 architecture supporting Thumb-2 instruction set.

    IDE (CodeWarrior) support for ARMV6

    To build for ARMV6 or ARMV6t2 from the CodeWarrior IDE, specify ARMV6 or ARMV6t2 as the target in the Platform Selection field, when importing a project from an .mmp file. The binaries can then be built by setting the target to ARMV6 or ARMV6t2 for UREL or UDEB.

    From the command line, to generate a CodeWarrior XML project file for ARMV6 or ARMV6t2, use the following command:

    makmake <project>.mmp CW_IDE:ARMV6 | ARMV6t2

    and then import the generated XML file from the IDE.

    Note: The binaries for ARMV6 or ARMV6t2 target are not created by default. You must explicitly specify these targets either on the command line using makmake or in the Platform Selection field.

    Customisation for ARMV6

    The build system provides the ARMV6 target by providing a build specialization file (BSF) in the epoc32\tools\ directory. For ABI v1 builds this is ARMV6.BSF; for ABI v2 builds, ARMV6_ABIv2.bsf. From Symbian OS v9.4 onwards, for ABI v1 builds the BSF file is ARMV6_ABIv1.bsf and for ABI v2 builds it is ARMV6.bsf. For more information about BSF mechanism, refer to ARMV5 build customisation.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D0C20045-FCC5-53CB-BBDB-7AA058C9139E.dita --- a/Symbian3/PDK/Source/GUID-D0C20045-FCC5-53CB-BBDB-7AA058C9139E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D0C20045-FCC5-53CB-BBDB-7AA058C9139E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> GPS/A-GPS PSY OverviewThis document describes the GPS/A-GPS PSY, which connects the Location Server eposserver.exe to the A-GPS Location Manager.
    Purpose

    The GPS/A-GPS PSY connects the Location Server eposserver.exe to the A-GPS Location Manager. The PSY does not interface directly with GPS hardware. A device creator must install an A-GPS Integration Module to use the GPS/A-GPS PSY.

    This document is for device creators.

    Required background

    This document assumes a knowledge of the material covered in the following:

    • LBS Architecture Overview

    • LBS Integration and Configuration Guide

    Key concepts and terms
    PSY

    A Positioning Plug-in. The GPS/A-GPS PSY implements the Positioning Plug-in API to interface with the Location Server. It uses the Positioning Plug-in Information API (which defines Central Repository key/value pairs) to register itself with the Location Server.

    Assisted GPS (A-GPS)

    A mode of GPS operation that uses assistance data from the network to reduce the time required to get the first position fix (TTFF) from GPS hardware. The GPS/A-GPS PSY supports assisted GPS (terminal based mode and terminal assisted mode).

    Autonomous GPS

    A mode of GPS operation that does not use assistance data from the network. The TTFF is typically longer than if assistance data is used. The GPS/A-GPS PSY supports autonomous GPS.

    Architecture

    Figure 1 shows the GPS/A-GPS PSY component with associated LBS components.

    Figure 1. GPS/A-GPS PSY with components on which it depends. -

    The GPS/A-GPS PSY implements the Positioning Plug-in API. This PSY does not interface directly with A-GPS hardware in the mobile device. It connects with hardware by using the A-GPS Location Manager and an A-GPS Integration Module. To use the GPS/A-GPS PSY, you must install an A-GPS Integration Module.

    The GPS/A-GPS PSY contains two implementations of the PSY interface:

    • An A-GPS PSY that supports assisted GPS.

      Location Acquisition API client applications select this PSY to use assisted GPS. The exact GPS positioning mode that is used by the PSY is determined by the value of the LBS administration settings KLbsSettingHomeGpsMode (used when the mobile device is in the home network) and KLbsSettingRoamingGpsMode (used when the mobile device is outside of the home network).

      Note: If the administration setting specifies autonomous GPS then the A-GPS PSY will behave like the GPS PSY.

    • GPS PSY that supports only autonomous GPS.

      Location Acquisition API client applications select this PSY to use autonomous GPS. A user typically wants to use this PSY to ensure that there is no monetary charge caused by connecting to the network to get A-GPS assistance data.

    The GPS/A-GPS PSY is packaged in the library lbsgpsagpspsy.dll. This DLL contains the two implementations of the PSY interface which can be instantiated by the Location Server. The code below shows the PSY implementations defined in the DLL.

    +

    The GPS/A-GPS PSY implements the Positioning Plug-in API. This PSY does not interface directly with A-GPS hardware in the mobile device. It connects with hardware by using the A-GPS Location Manager and an A-GPS Integration Module. To use the GPS/A-GPS PSY, you must install an A-GPS Integration Module.

    The GPS/A-GPS PSY contains two implementations of the PSY interface:

    • An A-GPS PSY that supports assisted GPS.

      Location Acquisition API client applications select this PSY to use assisted GPS. The exact GPS positioning mode that is used by the PSY is determined by the value of the LBS administration settings KLbsSettingHomeGpsMode (used when the mobile device is in the home network) and KLbsSettingRoamingGpsMode (used when the mobile device is outside of the home network).

      Note: If the administration setting specifies autonomous GPS then the A-GPS PSY will behave like the GPS PSY.

    • GPS PSY that supports only autonomous GPS.

      Location Acquisition API client applications select this PSY to use autonomous GPS. A user typically wants to use this PSY to ensure that there is no monetary charge caused by connecting to the network to get A-GPS assistance data.

    The GPS/A-GPS PSY is packaged in the library lbsgpsagpspsy.dll. This DLL contains the two implementations of the PSY interface which can be instantiated by the Location Server. The code below shows the PSY implementations defined in the DLL.

    const TImplementationProxy ImplementationTable[] = { IMPLEMENTATION_PROXY_ENTRY(KPosGPSPSYImplUid, CGpsPositioner::NewL), diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D0C84E1D-A625-4F79-8515-399B8153727B.dita --- a/Symbian3/PDK/Source/GUID-D0C84E1D-A625-4F79-8515-399B8153727B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D0C84E1D-A625-4F79-8515-399B8153727B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,158 +1,142 @@ - - - - -What's New in Graphics in Symbian^3 -This section describes the changes introduced in the Graphics -package in Symbian^3. - - - - -
    ScreenPlay

    ScreenPlay is a new graphics architecture which enables device -creators to take advantage of improved software performance, hardware -acceleration and third party graphics engines. For more information, -see:

      -
    • The -ScreenPlay Graphics Architecture
    • -
    • The -NonScreenPlay Graphics Architecture
    • -
    • Enabling -the Graphics Architecture Variants
    • -
    • Graphics -Composition
    • -
    • Graphics -Hardware Acceleration
    • -
    • Dynamic -Resolution Switching
    • -
    • Common -Graphics Headers Component Overview
    • -
    • Advanced -Pointer Overview
    • -
    • External -Surfaces Overview
    • -
    • Render -Stages Overview
    • -
    • MiniGUI -Environment
    • -
    -
    Khronos -APIs

    For information about the supported Khronos APIs, see:

      -
    • Khronos -API Support
    • -
    • OpenVG -Collection
    • -
    • OpenGLES -Collection
    • -
    • EGL -Collection
    • -
    • OpenWF -Composition
    • -
    -
    Other -new features
      -
    • Extended -Bitmaps
    • -
    • Implementing -Dynamic DSA Allocation
    • -
    • Multiple -Pointer Support in the Emulator
    • -
    -
    Interface -breaks and deprecated functionality

    The following functionality -is deprecated in Symbian^3:

      -
    • DirectGDI is deprecated. See DirectGDI Component for more information.

    • -
    • The Graphics Resource components are deprecated and will be -removed in Symbian^4. See Graphics Resource -Services Collection for more information.

    • -
    • Creating transparent windows using a mask and RWindow is deprecated. See Transparent -Windows for more information.

    • -
    • Backed-up windows are deprecated. See Displayable -Windows for more information.

    • -
    -
    Guide -documentation changes

    The following documentation has been -added to the Graphics Reference:

      -
    • Graphics -Components and Their CBR Package Names
    • -
    • Pixel -Formats
    • -

    The following documentation has been added to the Windowing -collection:

      -
    • Window -Server Component Overview
    • -
    • Display -Control and Mapping in the Window Server Client
    • -
    • Transparent -Windows
    • -
    • Redraw -Drawing
    • -
    • Advanced -Pointers
    • -
    • External -Surfaces
    • -
    • Render-Stages
    • -
    • Window -Server Plug-in Framework Overview
    • -
    • MiniGUI -Environment
    • -
    • Window -Server Internals Concepts
    • -
    • The -wsini.ini File
    • -
    • Window -Server Plug-ins Component
    • -

    The following documentation has been added to the Font and -Bitmap Server collection:

      -
    • Creating an Extended Bitmap Rasterizer

    • -

    The following documentation has been added to the OpenGLES -collection:

      -
    • OpenGLES Collection

    • -

    The following documentation has been added to the OpenVG collection:

      -
    • OpenVG Collection

    • -

    The following documentation has been added to the EGL collection:

      -
    • EGL Collection

    • -

    The following documentation has been added to the Graphics -Utilities collection:

      -
    • Common -Graphics Headers Component Overview
    • -
    • Selection -of Adaptations
    • -

    The following documentation has been added to the Graphics -Composition collection:

      -
    • Graphics Composition Collection

    • -

    The following documentation has been added to the Graphics -Hardware Drivers collection:

      -
    • Graphics Hardware Drivers Collection

    • -

    The following documentation has been updated:

      -
    • Graphics -and Drawing
    • -
    • The -Font and Bitmap Server Overview
    • -
    -
    - -Graphics Guide - -
    - + + + + + +What's New in Graphics in Symbian^3This section describes the changes introduced in the Graphics +package in Symbian^3. +
    ScreenPlay

    ScreenPlay is a new graphics architecture which enables device +creators to take advantage of improved software performance, hardware +acceleration and third party graphics engines. For more information, +see:

      +
    • The ScreenPlay +Graphics Architecture
    • +
    • The NonScreenPlay +Graphics Architecture
    • +
    • Enabling the Graphics +Architecture Variants
    • +
    • Graphics +Composition
    • +
    • Graphics +Hardware Acceleration
    • +
    • Dynamic +Resolution Switching
    • + +
    • Common Graphics Headers +Component Overview
    • +
    • Advanced +Pointer Overview
    • +
    • External +Surfaces Overview
    • +
    • Render Stages Overview
    • +
    • MiniGUI Environment
    • +
    +
    Khronos +APIs

    For information about the supported Khronos APIs, see:

      +
    • Khronos +API Support
    • +
    • OpenVG +Collection
    • +
    • OpenGLES +Collection
    • +
    • EGL Collection
    • +
    • OpenWF Composition
    • +
    +
    Other new features
      +
    • Extended +Bitmaps
    • +
    • Implementing +Dynamic DSA Allocation
    • +
    • Multiple +Pointer Support in the Emulator
    • +
    +
    Interface +breaks and deprecated functionality

    On ScreenPlay, support +for direct screen access (DSA) is maintained for backward compatibility +reasons, although Symbian recommends the use of external surfaces +in preference to DSA. However, whereas on some earlier +devices, applications might work without fully conforming to the rules +of DSA, these rules are now necessarily enforced. See DSA Migration Guide for information about the guidelines applications must follow in +order to be able to run correctly on a ScreenPlay device.

    The following functionality is deprecated in Symbian^3:

      +
    • DirectGDI is deprecated. +See DirectGDI +Component for more information.

    • +
    • The Graphics Resource components +are deprecated and will be removed in Symbian^4. See Graphics Resource +Services Collection for more information.

    • +
    • Creating transparent windows using a mask and RWindow is deprecated. See Transparent Windows for more information.

    • +
    • Backed-up windows are deprecated. See Displayable Windows for more information.

    • +
    +
    Guide +documentation changes

    The following documentation has been added to the Graphics Reference:

      +
    • Graphics +Components and Their CBR Package Names
    • +
    • Pixel Formats
    • +

    The following documentation has been added to the Windowing +collection:

      +
    • Window +Server Component Overview
    • +
    • Display +Control and Mapping in the Window Server Client
    • +
    • Transparent +Windows
    • +
    • Redraw +Drawing
    • +
    • Advanced +Pointers
    • +
    • External +Surfaces
    • +
    • Render-Stages
    • +
    • Window Server Plug-in +Framework Overview
    • +
    • MiniGUI Environment
    • +
    • Window +Server Internals Concepts
    • +
    • The wsini.ini +File
    • +
    • Window Server Plug-ins +Component
    • +

    The following documentation +has been added to the Font and Bitmap Server collection:

      +
    • Creating +an Extended Bitmap Rasterizer

    • +

    The following documentation has been added to the OpenGLES +collection:

      +
    • OpenGLES +Collection

    • +

    The following documentation has been added to the OpenVG collection:

      +
    • OpenVG +Collection

    • +

    The following documentation has been added to the EGL collection:

      +
    • EGL +Collection

    • +

    The following documentation +has been added to the Graphics Utilities collection:

      +
    • Common +Graphics Headers Component Overview
    • +
    • Selection +of Adaptations
    • +

    The following documentation +has been added to the Graphics Composition collection:

      +
    • Graphics +Composition Collection

    • +

    The following documentation +has been added to the Graphics Hardware Drivers collection:

      +
    • Graphics +Hardware Drivers Collection

    • +

    The following documentation has been updated:

      +
    • Graphics +and Drawing
    • +
    • The Font +and Bitmap Server Overview
    • +
    +
    +Graphics +Guide +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D0F3FBB0-CE9E-53C0-93B6-A8E3FCCC1530_d0e232162_href.png Binary file Symbian3/PDK/Source/GUID-D0F3FBB0-CE9E-53C0-93B6-A8E3FCCC1530_d0e232162_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D0F3FBB0-CE9E-53C0-93B6-A8E3FCCC1530_d0e238157_href.png Binary file Symbian3/PDK/Source/GUID-D0F3FBB0-CE9E-53C0-93B6-A8E3FCCC1530_d0e238157_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D0F6E95B-B35A-4EA1-8CC3-D86D1E0E6DD3.dita --- a/Symbian3/PDK/Source/GUID-D0F6E95B-B35A-4EA1-8CC3-D86D1E0E6DD3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D0F6E95B-B35A-4EA1-8CC3-D86D1E0E6DD3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,60 +21,52 @@ resource that defines the menu items:

    The menu is constructed only once: when HandlePointerEventL runs for the first time. Later the already constructed menu is shown again.

    -

    The following code snippets explain how to create and display Stylus pop-up -menu:

      -
    • Creating directly:

      // member variable point to the stylus Popup menu -CAknStylusPopUpMenu * iPopupMenu ; -_LIT(KItem1, "Item 1"); -_LIT(KItem2, "Item 2"); -_LIT(KItem3, "Item 3"); -_LIT(KItem4, "Item 4"); -enum StylusPopupMenuCommand - { - StylusMenuCommand1 = 0 , - StylusMenuCommand2, - StylusMenuCommand3, - StylusMenuCommand4 - }; -// create object , “this” is a object implement the interface -// MEikMenuObserver -iPopupMenu = CAknStylusPopUpMenu::NewL( this , TPoint( 0 , 0 ) ); -// add menu item -iPopupMenu->AddMenuItemL( KItem1 , StylusMenuCommand1 ); -iPopupMenu->AddMenuItemL( KItem2 , StylusMenuCommand2 ); -iPopupMenu->AddMenuItemL( KItem3 , StylusMenuCommand3 ); -iPopupMenu->AddMenuItemL( KItem4 , StylusMenuCommand4 ); -
    • -
    • Creating through resource file:

      RESOURCE STYLUS_POPUP_MENU r_stylus_popup_menu - { - items = - { - STYLUS_POPUP_MENU_ITEM - { - txt = "Menu Item 1"; - command = EStylusPopupCommand1; }, - STYLUS_POPUP_MENU_ITEM - { - txt = "Menu Item 2"; - command = EStylusPopupCommand2; }, - STYLUS_POPUP_MENU_ITEM - { - txt = "Menu Item 3"; - command = EStylusPopupCommand3; - } - }; - } -// create object -iPopupMenu = CAknStylusPopUpMenu::NewL( this , TPoint( 0 , 0 ) ); -{ - TResourceReader reader; - iCoeEnv->CreateResourceReaderLC( - reader , - R_STYLUS_POPUP_MENU ); - iPopupMenu->ConstructFromResourceL( reader ); - // destroy reader - CleanupStack::PopAndDestroy(); -} -
    • -

    +void CMyAppView::HandlePointerEventL + ( const TPointerEvent& aPointerEvent ) + { + if ( aPointerEvent.iType == TPointerEvent::EButton1Down ) + { + if ( !iMenu ) + { + iMenu = CAknStylusPopUpMenu::NewL( + iMenuObserver, + aPointerEvent.iParentPosition, + NULL ); + TInt resourceReaderId = 0; + resourceReaderId = R_MYAPP_STYLUS_MENU; + TResourceReader reader; + iCoeEnv->CreateResourceReaderLC( + reader, resourceReaderId ); + iMenu->ConstructFromResourceL( reader ); + CleanupStack::PopAndDestroy(); // reader + } + iMenu->SetPosition( aPointerEvent.iParentPosition ); + iMenu->ShowMenu(); + } + // Forward event to base class too. + CCoeControl::HandlePointerEventL( aPointerEvent ); + } + +RESOURCE STYLUS_POPUP_MENU r_myapp_stylus_menu + { + items = + { + STYLUS_POPUP_MENU_ITEM + { + txt = "Stylus Popup Menu Item 1"; + command = EMyAppMenuItemCmd1; + }, + STYLUS_POPUP_MENU_ITEM + { + txt = "Stylus Popup Menu Item 2"; + command = EMyAppMenuItemCmd2; + }, + STYLUS_POPUP_MENU_ITEM + { + txt = "Stylus Popup Menu Item 3"; + command = EMyAppMenuItemCmd3; + } + }; + } + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D0FEE812-AD80-40D8-B902-05EC16C44C42.dita --- a/Symbian3/PDK/Source/GUID-D0FEE812-AD80-40D8-B902-05EC16C44C42.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D0FEE812-AD80-40D8-B902-05EC16C44C42.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,16 +16,16 @@ IAP ID enables the applications to start a connection to a specific IAP. The application acquires a connection to the requested IAP, regardless of the existing connections.

    - -Connect to socket server . + +Connect to socket server . RSocketServ ss; ss.Connect(); - Open a RConnection object. + Open a RConnection object. RConnection conn; conn.Open( ss ); -Create a connection +Create a connection preference list and extended connection preferences object. TConnPrefList prefList; TExtendedConnPref preferences; diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D15068B5-D12E-5515-A772-EA3B304EE01E_d0e581556_href.png Binary file Symbian3/PDK/Source/GUID-D15068B5-D12E-5515-A772-EA3B304EE01E_d0e581556_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D15068B5-D12E-5515-A772-EA3B304EE01E_d0e630844_href.png Binary file Symbian3/PDK/Source/GUID-D15068B5-D12E-5515-A772-EA3B304EE01E_d0e630844_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D173BE00-1DE7-53D0-BBEF-CBF7CACB0193.dita --- a/Symbian3/PDK/Source/GUID-D173BE00-1DE7-53D0-BBEF-CBF7CACB0193.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ - - - - - -ARM/THUMB overrides

    The ARM5 architecture supports a 32-bit instruction set (known simply as ARM) and a 16-bit instruction set called THUMB. Code compiled to one set can interoperate with the other. The Symbian platform builds tools apply the following policy when building projects: kernel-side code is built for ARM, while other code (user-side) is built for THUMB. There are a number of ways to override this policy to build user-side code also for ARM:

    • MMP file: to specify that a project should always be built as ARM, use the following keyword in the mmp file:

      ALWAYS_BUILD_AS_ARM
    • BLD.INF file: you can also specify that a project should always be built as ARM by adding a qualifier, BUILD_AS_ARM, to MMP file statements in a BLD.INF file. For example:

      PRJ_MMPFILES -..\group\commdb.mmp BUILD_AS_ARM -..\group\ced.mmp

      means that commdb is built in ARM and ced in THUMB.

    • makmake: the makmake tool accepts an option -ARM that has the same effect as if ALWAYS_BUILD_AS_ARM were supplied in the MMP file.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D18E56F1-3DB9-472D-B587-30A168E8B8C4_d0e63774_href.png Binary file Symbian3/PDK/Source/GUID-D18E56F1-3DB9-472D-B587-30A168E8B8C4_d0e63774_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D18E56F1-3DB9-472D-B587-30A168E8B8C4_d0e67996_href.png Binary file Symbian3/PDK/Source/GUID-D18E56F1-3DB9-472D-B587-30A168E8B8C4_d0e67996_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D1E80B1B-FBFD-5FBC-981C-E2D04A02EF41_d0e263227_href.png Binary file Symbian3/PDK/Source/GUID-D1E80B1B-FBFD-5FBC-981C-E2D04A02EF41_d0e263227_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D1E80B1B-FBFD-5FBC-981C-E2D04A02EF41_d0e269227_href.png Binary file Symbian3/PDK/Source/GUID-D1E80B1B-FBFD-5FBC-981C-E2D04A02EF41_d0e269227_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D1F29744-EB92-5811-A735-B0BC1B352ED5.dita --- a/Symbian3/PDK/Source/GUID-D1F29744-EB92-5811-A735-B0BC1B352ED5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D1F29744-EB92-5811-A735-B0BC1B352ED5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -36,7 +36,7 @@
    Architecture

    The Video Renderer can be implemented in two different ways, as shown in the following diagram:

    The two Video Renderer architectures - +

    Note: For simplicity, only the Multimedia Framework client/controller thread boundary has been shown; other thread boundaries may exist.

    In both architectures, the Video diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D1F4B2DC-5B18-4454-BFD7-8BB61D80E7CA.dita --- a/Symbian3/PDK/Source/GUID-D1F4B2DC-5B18-4454-BFD7-8BB61D80E7CA.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D1F4B2DC-5B18-4454-BFD7-8BB61D80E7CA.dita Fri Jul 16 17:23:46 2010 +0100 @@ -40,7 +40,7 @@ characters is increased by two items so that the table fills the entire display.

    Special character table portrait and landscape mode - +

    Default touch diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D205622E-FB0F-59C4-A039-B418B551CBFA_d0e11123_href.png Binary file Symbian3/PDK/Source/GUID-D205622E-FB0F-59C4-A039-B418B551CBFA_d0e11123_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D205622E-FB0F-59C4-A039-B418B551CBFA_d0e11239_href.png Binary file Symbian3/PDK/Source/GUID-D205622E-FB0F-59C4-A039-B418B551CBFA_d0e11239_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D20A513B-C612-5859-A551-28E1AA7FA332_d0e272425_href.png Binary file Symbian3/PDK/Source/GUID-D20A513B-C612-5859-A551-28E1AA7FA332_d0e272425_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D20A513B-C612-5859-A551-28E1AA7FA332_d0e278425_href.png Binary file Symbian3/PDK/Source/GUID-D20A513B-C612-5859-A551-28E1AA7FA332_d0e278425_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D222EAAA-ACF4-5837-8CDD-5EDB02EAE259_d0e659341_href.png Binary file Symbian3/PDK/Source/GUID-D222EAAA-ACF4-5837-8CDD-5EDB02EAE259_d0e659341_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D222EAAA-ACF4-5837-8CDD-5EDB02EAE259_d0e672168_href.png Binary file Symbian3/PDK/Source/GUID-D222EAAA-ACF4-5837-8CDD-5EDB02EAE259_d0e672168_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D2263F64-2582-473A-B939-ACEBF8E974BF_d0e105319_href.png Binary file Symbian3/PDK/Source/GUID-D2263F64-2582-473A-B939-ACEBF8E974BF_d0e105319_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D2263F64-2582-473A-B939-ACEBF8E974BF_d0e81253_href.png Binary file Symbian3/PDK/Source/GUID-D2263F64-2582-473A-B939-ACEBF8E974BF_d0e81253_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D2263F64-2582-473A-B939-ACEBF8E974BF_d0e85451_href.png Binary file Symbian3/PDK/Source/GUID-D2263F64-2582-473A-B939-ACEBF8E974BF_d0e85451_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D24D5F17-462E-5424-99A7-9B16E9FEDC93.dita --- a/Symbian3/PDK/Source/GUID-D24D5F17-462E-5424-99A7-9B16E9FEDC93.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D24D5F17-462E-5424-99A7-9B16E9FEDC93.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,139 +1,132 @@ -<?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 reference - PUBLIC "-//OASIS//DTD DITA Reference//EN" "reference.dtd"> -<reference id="GUID-D24D5F17-462E-5424-99A7-9B16E9FEDC93" xml:lang="en"><title>Rconnection: -connection monitoring and management exampleThis example demonstrates the use of the RConnection API -to do connection monitoring and management. -
    Purpose

    The example demonstrates the following -features of the RConnection API:

      -
    • Opening and closing -a connection using RConnection::Open(RSocketServ& aSocketServer, -TUint aConnectionType = KConnectionTypeDefault) and RConnection::Close().

    • -
    • Starting a connection -that uses the default CommDb connection preferences, and another connection -that overrides them, using (respectively) RConnection::Start() and RConnection::Start(TConnPref& -aPref).

    • -
    • Getting the number of -connections, and retrieving information about one of them, using RConnection::EnumerateConnections(TUint& - aCount) and RConnection::GetConnectionInfo(TUint -aIndex, TDes8& aConnectionInfo).

    • -
    • Attaching a connection -to an existing interface, using RConnection::Attach(const TDesC8& -aConnectionInfo, TConnAttachType aAttachType).

    • -
    • Registering for notifications -when:

        -
      • a certain amount of -data has been sent, using RConnection::DataSentNotificationRequest(TUint -aThreshold, TPckg<TUint>& aUplinkVolume, TRequestStatus& -aStatus).

      • -
      • a certain amout of data -has been received, using RConnection::DataReceivedNotificationRequest(TUint -aThreshold, TPckg<TUint>& aDownlinkVolume, TRequestStatus& - aStatus).

      • -
      • interfaces go up and -down, using RConnection::AllInterfaceNotification(TDes8& aNotification, - TRequestStatus& aStatus).

      • -
      • the connection changes -state, using RConnection::ProgressNotification(TNifProgressBuf& -aProgress, TRequestStatus& aStatus, TUint aSelectedProgress -= KConnProgressDefault).

      • -
    • -
    • Obtaining the amount -of data transferred, using RConnection::DataTransferredRequest().

    • -
    • Obtaining the connection's -current state, using RConnection::Progress(TNifProgress& aProgress).

    • -
    • Stopping the connection, -using RConnection::Stop().

    • -
    • Closing the session -with the socket server using RSocketServ::Close().

    • -
    -
    Download

    Click on the following link to download -the example: Rconnection.zip

    Click: browse to view the example code.

    -
    Class Summary

    The example demonstrates the following -classes:

    RConnection

    RSocket

    RSocketServ

    TCommDbConnPref

    TConnectionInfoBuf

    -
    Design and implementation

    The project implements -a single class called CRConnection, that has three principal -functions:

    CRConnection::DemoApiWithoutDbOverrideL()

    This -shows how to use RConnection to:

      -
    • start a connection and -associate it with an underlying interface, using default CommDb connection -preferences,

    • -
    • get notification when -the underlying interface goes up or down,

    • -
    • get notification about -the state of a connection as it becomes fully established,

    • -
    • transfer data over a -socket,

    • -
    • get the amount of data -transferred,

    • -
    • close the connection.

    • -

    It also shows how to set up a socket to carry out data transfer.

    CRConnection::DemoApiWithDbOverrideL()

    This -is the same as DemoApiWithoutDbOverrideL() except that it:

      -
    • starts a connection -using non-default CommDb connection preferences,

    • -
    • requests notification -when a threshold amount of data has been transferred (instead of getting the -amount of data transferred).

    • -

    CRConnection::AttachToExistingInterfaceL()

    This shows -how to use RConnection to:

      -
    • open 2 connections and -start one of them (the other is not yet associated with an underlying interface),

    • -
    • get connection information -for the 1st connection and use this to attach the 2nd connection to the existing -interface,

    • -
    • get the state of the -attached connection,

    • -
    • close the connections.

    • -
    -
    Building and configuring

    You can build the example -from the IDE or the command line.

    If you use an IDE, import the bld.inf file -into your IDE, and use the build command of the IDE.

    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 using -the SBSv1 build tools with the following commands:

    bldmake -bldfiles

    abld build

    How to use bldmake and How to use abld describe -how to use the SBSv1 build tools.

    Emulator:

    Before -running the example, the emulator must be set up to use ethernet, as follows:

      -
    • Install WinPCap -4.0.2

    • -
    • Configure the emulator -using configchange.pl for -instance:

      configchange.pl --config ethernetWithCommDB --kernel -EKA2 --target winscw --variant udeb

    • -
    • Open ethernetced.xml in epoc32\winscw\c\ and -change the last 3 values in the LANBearer operation section -for "EKA2 Emulator Ethernet" in the LANBearerTable to:

      LastSocketActivityTimeout = 10 -LastSessionClosedTimeout = 10 -LastSocketClosedTimeout = 10

      i.e. change the three values from --1 to 10.

    • -
    • Save the file and then -run ced c:\ethernetced.xml from the eshell command prompt -in the emulator.

    • -
    • Download a UDP Echoserver. -An Echoserver is easily available on the internet.

    • -
    • Start the UDP Echoserver -and edit the rconnection.cpp file in the example code so -that the values for KDestAddr and KSockPort match -the values being used by the UDP Echoserver.

    • -
    • Build the application -using the commands described above and then run it.

    • -

    Hardware:

      -
    • To run the example on -an H4 board, connect the H4 to the PC/network by serial cable. Copy ethernetced.xml to -a memory card and execute:

      ced e:\ethernetced.xml

      before -running the example.

    • -
    -
    Running the example

    For the emulator, the example -builds an executable called rconnection.exe in the epoc32\release\winscw\<udeb -or urel>\ folder.

    rconnection.exe is -a console-based application. The example takes input from the user and prints -to the console information about the various stages of the example.

    + + + + + +Rconnection: connection monitoring and management exampleThis example demonstrates the use of the RConnection API to do connection monitoring and management. +
    Purpose

    The example demonstrates the following +features of the RConnection API:

      +
    • Opening and +closing a connection using RConnection::Open(RSocketServ& +aSocketServer, TUint aConnectionType = KConnectionTypeDefault) and RConnection::Close().

    • +
    • Starting a connection +that uses the default CommDb connection preferences, and another connection +that overrides them, using (respectively) RConnection::Start() and RConnection::Start(TConnPref& aPref).

    • +
    • Getting the +number of connections, and retrieving information about one of them, +using RConnection::EnumerateConnections(TUint& + aCount) and RConnection::GetConnectionInfo(TUint +aIndex, TDes8& aConnectionInfo).

    • +
    • Attaching a +connection to an existing interface, using RConnection::Attach(const +TDesC8& aConnectionInfo, TConnAttachType aAttachType).

    • +
    • Registering +for notifications when:

        +
      • a certain amount +of data has been sent, using RConnection::DataSentNotificationRequest(TUint +aThreshold, TPckg<TUint>& aUplinkVolume, +TRequestStatus& aStatus).

      • +
      • a certain amout +of data has been received, using RConnection::DataReceivedNotificationRequest(TUint +aThreshold, TPckg<TUint>& aDownlinkVolume, +TRequestStatus& aStatus).

      • +
      • interfaces go +up and down, using RConnection::AllInterfaceNotification(TDes8& +aNotification, TRequestStatus& aStatus).

      • +
      • the connection +changes state, using RConnection::ProgressNotification(TNifProgressBuf& +aProgress, TRequestStatus& aStatus, TUint +aSelectedProgress = KConnProgressDefault).

      • +
    • +
    • Obtaining the +amount of data transferred, using RConnection::DataTransferredRequest().

    • +
    • Obtaining the +connection's current state, using RConnection::Progress(TNifProgress& +aProgress).

    • +
    • Stopping the +connection, using RConnection::Stop().

    • +
    • Closing the +session with the socket server using RSocketServ::Close().

    • +
    +
    Download

    Click on the following link to +download the example: Rconnection.zip

    Click: browse to view the example code.

    +
    Class Summary

    The example demonstrates the +following classes:

    RConnection

    RSocket

    RSocketServ

    TCommDbConnPref

    TConnectionInfoBuf

    +
    Design and implementation

    The project implements +a single class called CRConnection, that has three +principal functions:

    CRConnection::DemoApiWithoutDbOverrideL()

    This shows how to use RConnection to:

      +
    • start a connection +and associate it with an underlying interface, using default CommDb +connection preferences,

    • +
    • get notification +when the underlying interface goes up or down,

    • +
    • get notification +about the state of a connection as it becomes fully established,

    • +
    • transfer data +over a socket,

    • +
    • get the amount +of data transferred,

    • +
    • close the connection.

    • +

    It also shows how to set up a socket to carry out data transfer.

    CRConnection::DemoApiWithDbOverrideL()

    This is +the same as DemoApiWithoutDbOverrideL() except that +it:

      +
    • starts a connection +using non-default CommDb connection preferences,

    • +
    • requests notification +when a threshold amount of data has been transferred (instead of getting +the amount of data transferred).

    • +

    CRConnection::AttachToExistingInterfaceL()

    This shows how to use RConnection to:

      +
    • open 2 connections +and start one of them (the other is not yet associated with an underlying +interface),

    • +
    • get connection +information for the 1st connection and use this to attach the 2nd +connection to the existing interface,

    • +
    • get the state +of the attached connection,

    • +
    • close the connections.

    • +
    +
    Building and configuring

    You can build +the example from the IDE or the command line.

    If you use an +IDE, import the bld.inf file into your IDE, and +use the build command of the IDE.

    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 using +the SBSv1 build tools with the following commands:

    bldmake bldfiles

    abld build

    Emulator:

    Before running +the example, the emulator must be set up to use ethernet, as follows:

      +
    • Install WinPCap 4.0.2

    • +
    • Configure the +emulator using configchange.pl for instance:

      configchange.pl +--config ethernetWithCommDB --kernel EKA2 --target winscw --variant +udeb

    • +
    • Open ethernetced.xml in epoc32\winscw\c\ and change the last 3 values in the LANBearer operation section for "EKA2 Emulator Ethernet" in the LANBearerTable to:

      LastSocketActivityTimeout = 10 +LastSessionClosedTimeout = 10 +LastSocketClosedTimeout = 10

      i.e. change the three +values from -1 to 10.

    • +
    • Save the file +and then run ced c:\ethernetced.xml from the eshell +command prompt in the emulator.

    • +
    • Download a UDP +Echoserver. An Echoserver is easily available on the internet.

    • +
    • Start the UDP +Echoserver and edit the rconnection.cpp file in the +example code so that the values for KDestAddr and KSockPort match the values being used by the UDP Echoserver.

    • +
    • Build the application +using the commands described above and then run it.

    • +

    Hardware:

      +
    • To run the example +on an H4 board, connect the H4 to the PC/network by serial cable. +Copy ethernetced.xml to a memory card and execute:

      ced e:\ethernetced.xml

      before +running the example.

    • +
    +
    Running the example

    For the emulator, the +example builds an executable called rconnection.exe in the epoc32\release\winscw\<udeb or urel>\ folder.

    rconnection.exe is a console-based +application. The example takes input from the user and prints to the +console information about the various stages of the example.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D2605514-03F4-4A07-943B-E180341518D4.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-D2605514-03F4-4A07-943B-E180341518D4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,42 @@ + + + + + +Retrieving application information using application UIDThis tutorial describes how application information can +be retrieved from the SCR for a specific application UID. +

    The Client +applications must link against scrclient.dll.

    + +Connect +to the SCR server. +#include <usif/scr/scr.h> +Usif::RSoftwareComponentRegistry scrSession; +scrSession.Connect(); + + +Create an +object of RApplicationRegistrationInfo to retrieve +application information based on application UID. +RApplicationRegistrationInfo subSession; + +Open a RApplicationRegistrationInfo subsession to retrieve application +information based on application UID. + subSession.OpenL(scrSession); + +Retrieve +the information using RApplicationRegistrationInfo::GetAppInfoL(). +// GetAppInfoL() takes the application UID and an output parameter. +// The locale can be specified (optional) as the +// third parameter. If locale is not specified the default value is assigned. + TAppRegInfo appInfo; + subSession.GetAppInfoL(TUid::Uid(0x1000ABCD), appInfo); + + +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D28FA4E1-6A94-4508-95B3-ACE21BCE6EA7.dita --- a/Symbian3/PDK/Source/GUID-D28FA4E1-6A94-4508-95B3-ACE21BCE6EA7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D28FA4E1-6A94-4508-95B3-ACE21BCE6EA7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -26,9 +26,9 @@ character string conversions and vice versa. With the help of this library, user will be able to write a hybrid application on Open C, with out knowing much about the descriptors of Symbian platform.

    -
    Download

    Click +

    Download

    Click on the following link to download the example: OpenCStringUtilitiesEx.zip

    Click: browse to view the example code.

    -
    Design and +<section id="GUID-7E7C4564-B10E-41F9-8A9D-D8A6C5E9C51C-GENID-1-12-1-14-1-1-5-1-3-1-11-1-14-1-3-3"><title>Design and Implementation

    The following sections provide information about the implementation of the example.

    Capabilities

    The program capabilities are defined in: stringutils.mmp(DLL - library): CAPABILITY @@ -47,7 +47,7 @@ how to use String-utils library (OpenCStringUtilitiesLibEx.dll) APIs. It has its own icon and can be launched from the UI both in the emulator and in the device.

    APIs demonstrated

    tbuf16towchar

    tbuf16tochar

    tbuf8towchar

    tbufC16towchar

    tbufC8tochar

    tbufC16tochar

    tbufC8towchar

    wchartotbuf16

    chartotbuf16

    wchartotbuf8

    chartotbuf8

    wchartohbufc16

    chartohbufc16

    wchartohbufc8

    chartohbufc8

    hbufC16towchar

    hbufC16tochar

    hbufC8towchar

    hbufC8tochar

    -
    Building and +<section id="GUID-67A72761-1D92-46D1-B1C9-7455978BDE4E-GENID-1-12-1-14-1-1-5-1-3-1-11-1-14-1-3-4"><title>Building and Using To build the example application, go to the OpenCStringUtilitiesEx\group directory and build the application. The definition for the whole application can be found in the bld.inf file in the group subdirectory of the applications diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D2AE7E31-CAE7-5F03-8754-24172580BBAF.dita --- a/Symbian3/PDK/Source/GUID-D2AE7E31-CAE7-5F03-8754-24172580BBAF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D2AE7E31-CAE7-5F03-8754-24172580BBAF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -Bluetooth Management Collection OverviewThe Bluetooth Management collection contains the Bluetooth Manager and Bluetooth Client components.
    Purpose

    The Bluetooth Management collection contains the Bluetooth Manager and Bluetooth Client components.

    Architecture
    Components

    The Bluetooth Management collection contains the following components:

    • Bluetooth Manager

      The Bluetooth Manager component stores non-volatile details of Bluetooth devices in the BT Registry using DBMS. Stored information can be retrieved, modified and deleted.

    • Bluetooth Client

      The Bluetooth Client component provides support for configuring and managing Bluetooth sockets, accessing the HCI, and configuring Bluetooth AV sessions.

    Using Bluetooth Management

    The Bluetooth Management collection has the following uses:

    • storing, retrieving, modifying and deleting details from the Bluetooth Registry using Bluetooth Manager

    • configuring and managing Bluetooth sockets, accessing the HCI and configuring Bluetooth AV sessions using the Bluetooth Client.

    \ No newline at end of file +Bluetooth Management Collection OverviewThe Bluetooth Management collection contains the Bluetooth Manager and Bluetooth Client components.
    Purpose

    The Bluetooth Management collection contains the Bluetooth Manager and Bluetooth Client components.

    Architecture
    Components

    The Bluetooth Management collection contains the following components:

    • Bluetooth Manager

      The Bluetooth Manager component stores non-volatile details of Bluetooth devices in the BT Registry using DBMS. Stored information can be retrieved, modified and deleted.

    • Bluetooth Client

      The Bluetooth Client component provides support for configuring and managing Bluetooth sockets, accessing the HCI, and configuring Bluetooth AV sessions.

    Using Bluetooth Management

    The Bluetooth Management collection has the following uses:

    • storing, retrieving, modifying and deleting details from the Bluetooth Registry using Bluetooth Manager

    • configuring and managing Bluetooth sockets, accessing the HCI and configuring Bluetooth AV sessions using the Bluetooth Client.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D2CF64ED-0D85-5535-9A51-C127B10B07B2_d0e577643_href.png Binary file Symbian3/PDK/Source/GUID-D2CF64ED-0D85-5535-9A51-C127B10B07B2_d0e577643_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D2CF64ED-0D85-5535-9A51-C127B10B07B2_d0e626931_href.png Binary file Symbian3/PDK/Source/GUID-D2CF64ED-0D85-5535-9A51-C127B10B07B2_d0e626931_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D2D17EF9-FFC6-5FBD-A992-55746A12B625-GENID-1-12-1-26-1-1-11-1-1-3-1-4-1-3-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-D2D17EF9-FFC6-5FBD-A992-55746A12B625-GENID-1-12-1-26-1-1-11-1-1-3-1-4-1-3-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,103 @@ + + + + + +Basic +encryption and decryption using a symmetric cipher +

    This example demonstrates how to encrypt and decrypt a small string of +data using a symmetric cipher. Firstly, an encryption operation is performed +on the data. Following this a decryption operation is performed on the encrypted +data. Finally a check is made on the decrypted data for equality with the +original data which tests that the encrypt and decrypt operations have maintained +data integrity.

    +#include <legacyselector.h> +#include <cryptosymmetriccipherapi.h> +#include <keys.h> + +using namespace CryptoSpi; + +//Create a new CCryptoParams object to encapsulate the secret key string and key type +CCryptoParams* params = CCryptoParams::NewLC(); + +//Add the secret key to the CCryptoParams object by calling the CCryptoParams::AddL() method, +//passing in the key string and appropriate key parameter UID +params->AddL( _L8("12345678"), KSymmetricKeyParameterUid); + +//Create a key object (CKey) by passing in an instance of TKeyProperty and the previously +//created CCryptoParams object containing the secret key. +TKeyProperty keyProperty = {KDesUid, KNullUid, KSymmetricKey, KNonEmbeddedKeyUid}; +CKey* key=CKey::NewL(keyProperty, *params); +CleanupStack::PushL(key); +//Create and initialize a pointer for the Symmetric cipher implementation object +CSymmetricCipher* impl = NULL; + +//Create a symmetric cipher passing in the appropriate CKey object +TRAPD(err, CSymmetricCipherFactory::CreateSymmetricCipherL + (impl, + KDesUid, + *key, + KCryptoModeEncryptUid, // This can be either encrypt or decrypt + KOperationModeECBUid, // Use "electronic code book" mode + KPaddingModeNoneUid, // This is the type of padding to be used + NULL)); + +//Check the return value and for non NULL +if (impl && (err == KErrNone)) + { + //Create a buffer holding the data to be encrypted + TBuf8<8> srcData(_L8("12345678")); + + //Create a buffer to hold the encrypted data. + //MaxFinalOutputLength() returns the number of bytes the buffer passed to ProcessFinalL() + //needs to be capable of holding + TInt maxOutputLength = impl->MaxFinalOutputLength(srcData.Length()); + HBufC8* encrypted = HBufC8::NewLC(maxOutputLength); + TPtr8 encryptedPtr = encrypted->Des(); + + //Perform the encryption operation + //ProcessFinalL() pads the input buffer if required + TRAP(err, impl->ProcessFinalL(srcData, encryptedPtr)); + + if (err == KErrNone) + { + //Switch to decrypt mode + impl->SetCryptoModeL(KCryptoModeDecryptUid); + + //Create a buffer for the decrypted data + maxOutputLength = encryptedPtr.Length(); + HBufC8* output = HBufC8::NewLC(impl->MaxFinalOutputLength(maxOutputLength)); + TPtr8 outputPtr = output->Des(); + + //Perform the decryption operation + TRAP(err, impl->ProcessFinalL(encryptedPtr, outputPtr)); + + if (err == KErrNone) + { + //Check that the original source data matches the data that + //has been encrypted then decrypted + if (!outputPtr.Compare(srcData)) + { + // Descriptors are the same - successful encrypt/decrypt check + } + } + + CleanupStack::PopAndDestroy(output); + } + + CleanupStack::PopAndDestroy(encrypted); + } + +//Destroy the symmetric implementation object +delete impl; +impl = NULL; + +CleanupStack::PopAndDestroy(key); +CleanupStack::PopAndDestroy(params); +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D2D17EF9-FFC6-5FBD-A992-55746A12B625-GENID-1-12-1-26-1-1-9-1-5-1-6-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-D2D17EF9-FFC6-5FBD-A992-55746A12B625-GENID-1-12-1-26-1-1-9-1-5-1-6-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,103 @@ + + + + + +Basic +encryption and decryption using a symmetric cipher +

    This example demonstrates how to encrypt and decrypt a small string of +data using a symmetric cipher. Firstly, an encryption operation is performed +on the data. Following this a decryption operation is performed on the encrypted +data. Finally a check is made on the decrypted data for equality with the +original data which tests that the encrypt and decrypt operations have maintained +data integrity.

    +#include <legacyselector.h> +#include <cryptosymmetriccipherapi.h> +#include <keys.h> + +using namespace CryptoSpi; + +//Create a new CCryptoParams object to encapsulate the secret key string and key type +CCryptoParams* params = CCryptoParams::NewLC(); + +//Add the secret key to the CCryptoParams object by calling the CCryptoParams::AddL() method, +//passing in the key string and appropriate key parameter UID +params->AddL( _L8("12345678"), KSymmetricKeyParameterUid); + +//Create a key object (CKey) by passing in an instance of TKeyProperty and the previously +//created CCryptoParams object containing the secret key. +TKeyProperty keyProperty = {KDesUid, KNullUid, KSymmetricKey, KNonEmbeddedKeyUid}; +CKey* key=CKey::NewL(keyProperty, *params); +CleanupStack::PushL(key); +//Create and initialize a pointer for the Symmetric cipher implementation object +CSymmetricCipher* impl = NULL; + +//Create a symmetric cipher passing in the appropriate CKey object +TRAPD(err, CSymmetricCipherFactory::CreateSymmetricCipherL + (impl, + KDesUid, + *key, + KCryptoModeEncryptUid, // This can be either encrypt or decrypt + KOperationModeECBUid, // Use "electronic code book" mode + KPaddingModeNoneUid, // This is the type of padding to be used + NULL)); + +//Check the return value and for non NULL +if (impl && (err == KErrNone)) + { + //Create a buffer holding the data to be encrypted + TBuf8<8> srcData(_L8("12345678")); + + //Create a buffer to hold the encrypted data. + //MaxFinalOutputLength() returns the number of bytes the buffer passed to ProcessFinalL() + //needs to be capable of holding + TInt maxOutputLength = impl->MaxFinalOutputLength(srcData.Length()); + HBufC8* encrypted = HBufC8::NewLC(maxOutputLength); + TPtr8 encryptedPtr = encrypted->Des(); + + //Perform the encryption operation + //ProcessFinalL() pads the input buffer if required + TRAP(err, impl->ProcessFinalL(srcData, encryptedPtr)); + + if (err == KErrNone) + { + //Switch to decrypt mode + impl->SetCryptoModeL(KCryptoModeDecryptUid); + + //Create a buffer for the decrypted data + maxOutputLength = encryptedPtr.Length(); + HBufC8* output = HBufC8::NewLC(impl->MaxFinalOutputLength(maxOutputLength)); + TPtr8 outputPtr = output->Des(); + + //Perform the decryption operation + TRAP(err, impl->ProcessFinalL(encryptedPtr, outputPtr)); + + if (err == KErrNone) + { + //Check that the original source data matches the data that + //has been encrypted then decrypted + if (!outputPtr.Compare(srcData)) + { + // Descriptors are the same - successful encrypt/decrypt check + } + } + + CleanupStack::PopAndDestroy(output); + } + + CleanupStack::PopAndDestroy(encrypted); + } + +//Destroy the symmetric implementation object +delete impl; +impl = NULL; + +CleanupStack::PopAndDestroy(key); +CleanupStack::PopAndDestroy(params); +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D2D17EF9-FFC6-5FBD-A992-55746A12B625.dita --- a/Symbian3/PDK/Source/GUID-D2D17EF9-FFC6-5FBD-A992-55746A12B625.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,103 +0,0 @@ - - - - - -Basic -encryption and decryption using a symmetric cipher -

    This example demonstrates how to encrypt and decrypt a small string of -data using a symmetric cipher. Firstly, an encryption operation is performed -on the data. Following this a decryption operation is performed on the encrypted -data. Finally a check is made on the decrypted data for equality with the -original data which tests that the encrypt and decrypt operations have maintained -data integrity.

    -#include <legacyselector.h> -#include <cryptosymmetriccipherapi.h> -#include <keys.h> - -using namespace CryptoSpi; - -//Create a new CCryptoParams object to encapsulate the secret key string and key type -CCryptoParams* params = CCryptoParams::NewLC(); - -//Add the secret key to the CCryptoParams object by calling the CCryptoParams::AddL() method, -//passing in the key string and appropriate key parameter UID -params->AddL( _L8("12345678"), KSymmetricKeyParameterUid); - -//Create a key object (CKey) by passing in an instance of TKeyProperty and the previously -//created CCryptoParams object containing the secret key. -TKeyProperty keyProperty = {KDesUid, KNullUid, KSymmetricKey, KNonEmbeddedKeyUid}; -CKey* key=CKey::NewL(keyProperty, *params); -CleanupStack::PushL(key); -//Create and initialize a pointer for the Symmetric cipher implementation object -CSymmetricCipher* impl = NULL; - -//Create a symmetric cipher passing in the appropriate CKey object -TRAPD(err, CSymmetricCipherFactory::CreateSymmetricCipherL - (impl, - KDesUid, - *key, - KCryptoModeEncryptUid, // This can be either encrypt or decrypt - KOperationModeECBUid, // Use "electronic code book" mode - KPaddingModeNoneUid, // This is the type of padding to be used - NULL)); - -//Check the return value and for non NULL -if (impl && (err == KErrNone)) - { - //Create a buffer holding the data to be encrypted - TBuf8<8> srcData(_L8("12345678")); - - //Create a buffer to hold the encrypted data. - //MaxFinalOutputLength() returns the number of bytes the buffer passed to ProcessFinalL() - //needs to be capable of holding - TInt maxOutputLength = impl->MaxFinalOutputLength(srcData.Length()); - HBufC8* encrypted = HBufC8::NewLC(maxOutputLength); - TPtr8 encryptedPtr = encrypted->Des(); - - //Perform the encryption operation - //ProcessFinalL() pads the input buffer if required - TRAP(err, impl->ProcessFinalL(srcData, encryptedPtr)); - - if (err == KErrNone) - { - //Switch to decrypt mode - impl->SetCryptoModeL(KCryptoModeDecryptUid); - - //Create a buffer for the decrypted data - maxOutputLength = encryptedPtr.Length(); - HBufC8* output = HBufC8::NewLC(impl->MaxFinalOutputLength(maxOutputLength)); - TPtr8 outputPtr = output->Des(); - - //Perform the decryption operation - TRAP(err, impl->ProcessFinalL(encryptedPtr, outputPtr)); - - if (err == KErrNone) - { - //Check that the original source data matches the data that - //has been encrypted then decrypted - if (!outputPtr.Compare(srcData)) - { - // Descriptors are the same - successful encrypt/decrypt check - } - } - - CleanupStack::PopAndDestroy(output); - } - - CleanupStack::PopAndDestroy(encrypted); - } - -//Destroy the symmetric implementation object -delete impl; -impl = NULL; - -CleanupStack::PopAndDestroy(key); -CleanupStack::PopAndDestroy(params); -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D2D41326-BA88-5A02-805B-5EAEC29ADB5D_d0e394094_href.png Binary file Symbian3/PDK/Source/GUID-D2D41326-BA88-5A02-805B-5EAEC29ADB5D_d0e394094_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D2D41326-BA88-5A02-805B-5EAEC29ADB5D_d0e399947_href.png Binary file Symbian3/PDK/Source/GUID-D2D41326-BA88-5A02-805B-5EAEC29ADB5D_d0e399947_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D2DCBC1F-91B8-5F81-AAE8-546AE3EB1E29_d0e538554_href.png Binary file Symbian3/PDK/Source/GUID-D2DCBC1F-91B8-5F81-AAE8-546AE3EB1E29_d0e538554_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D2DCBC1F-91B8-5F81-AAE8-546AE3EB1E29_d0e546014_href.png Binary file Symbian3/PDK/Source/GUID-D2DCBC1F-91B8-5F81-AAE8-546AE3EB1E29_d0e546014_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D2ECF215-B53C-5659-BA86-5B658C0C2D2F.dita --- a/Symbian3/PDK/Source/GUID-D2ECF215-B53C-5659-BA86-5B658C0C2D2F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D2ECF215-B53C-5659-BA86-5B658C0C2D2F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -75,7 +75,7 @@ The surface is visible on Screen2 only, Composition Engine 1 replies before Composition Engine 2 - +

    In the next diagram, the surface is still visible on Screen2 only. This time, however, Composition Engine 2 replies before Composition Engine 1. The Surface Update Server considers Composition Engine 1 to @@ -88,13 +88,13 @@ The surface is visible on Screen2 only, Composition Engine 2 replies before Composition Engine 1 - +

    In this final diagram, the surface is visible on both screens. Screen1 is considered the surface's master display and the client is notified when Composition Engine 1 completes. When Composition Engine 2 completes, the Surface Update Server discards its notification.

    The surface is visible on both screens. - +
    Example

    The following code snippet shows using the global surface update feature to request composition to all of the screens diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D3129CC4-AD63-51CE-BFB4-979E26807FA7_d0e590794_href.png Binary file Symbian3/PDK/Source/GUID-D3129CC4-AD63-51CE-BFB4-979E26807FA7_d0e590794_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D3129CC4-AD63-51CE-BFB4-979E26807FA7_d0e618688_href.png Binary file Symbian3/PDK/Source/GUID-D3129CC4-AD63-51CE-BFB4-979E26807FA7_d0e618688_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D34DB4A1-1B17-5FAF-A48B-E06D247B0A83.dita --- a/Symbian3/PDK/Source/GUID-D34DB4A1-1B17-5FAF-A48B-E06D247B0A83.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D34DB4A1-1B17-5FAF-A48B-E06D247B0A83.dita Fri Jul 16 17:23:46 2010 +0100 @@ -33,7 +33,7 @@

  • a field containing the total number of such nodes.

  • - +
  • The combination of modifier key states that each node represents is encapsulated by a TMaskedModifiers object. @@ -64,7 +64,7 @@ scancode pairs are associated with successive blocks of keycodes as the following diagram shows.

  • - +

    This means that successive scancodes, for example, from "A1" through to "B1" are represented by the successive keycodes "keycode for A1" through to "keycode for B1"; scancode "A2" is represented by "keycode for A2", which @@ -72,7 +72,7 @@

  • To allow for possible reuse of keycode tables, a node can point to more than one SConvSubTable. The following diagram shows an example of this:

    - +
  • If no keycode can be found that matches the scancode, for a given modifier combination, then the diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D37576D8-1BD6-520B-9C69-60F2F89E4452.dita --- a/Symbian3/PDK/Source/GUID-D37576D8-1BD6-520B-9C69-60F2F89E4452.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ - - - - - -WINSCW-specific errors and warnings

    When you compile code for the WINSCW target, you may get errors and warnings that were not present when building for WINS or ARM targets. This page explains some possible causes of this.

    #pragma for disabling warnings

    Issue: CodeWarrior compiler ignores the #pragma - warning(...) statements that are used to disable specific Microsoft VC++ warnings.

    Resolution: consult the CodeWarrior manuals for equivalent CodeWarrior #pragma controls over specific warnings.

    Expression evaluation order

    The C++ Standard explicitly states that the order of evaluation of expressions is undefined. For example, for the line,

    x = fn1(param1) + fn2(param2);

    some compilers may evaluate fn1(param1) first, while others may evaluate fn2(param2) first. Symbian have in fact found cases where CodeWarrior, and Microsoft VC++ and GCC, differ in this behaviour. You should therefore never assume a particular order of evaluation. Note that this error may be hard to find, as program behaviour can be altered, but no compiler warnings are given.

    friend statements

    Issue: illegal 'friend' declaration compiler errors for statements of the form friend MyClass;.

    Resolution: use the syntax friend class - MyClass;.

    Identifier names not, or, and, etc.

    Issue: compiler errors when using identifiers with the names not, or, and, bitor, xor, compl, bitand, and_eq, xor_eq, or_eq, or not_eq.

    This is because these are C++ keywords (alternative token representations for some operators and punctuators).

    Resolution: modify the identifier name.

    illegal empty declaration warnings

    Issue: warnings caused by unneeded semi-colons, for example,

    class CMyClass - { -public:;

    Resolution: remove unneeded semi-colons.

    Inline assembler hex constants

    Issue: compiler errors for inline assembler hex constants specified with a trailing h, for example, 0001ah.

    Resolution: specify such constants using the C++ 0xnnnn notation.

    Inline assembler labels

    Issue: compiler errors for assembler labels of the form _asm label:.

    Resolution: use C++ labels.

    Member functions that include the class name

    Issue: illegal access/using declaration compiler errors for class member functions whose declarations include the class name, for example:

    class CMyClass - { - void CMyClass::MyFunction(); - };

    Resolution: remove the class name from the function declaration.

    Mismatched char* and unsigned char* in .c files

    Issue: illegal implicit conversion from 'unsigned - char*' to 'const char*' compiler errors when attempting to pass an unsigned char* where a const char* is required.

    CodeWarrior marks this as an error for both .c files and .cpp files; MS Visual C++ only marks it as an error for .cpp files.

    Resolution: change the declaration or call to use matching types. Alternatively, to tell CodeWarrior not to warn on this issue, use the directive:

    #pragma mpwc_relax on
    possible unwanted ';' warnings

    Issue: this warns you that a loop has no body, for example, as in the following:

    for (TInt i=0; i<10; i++); // loop ends here - f(i);

    Resolution: if a loop has no body intentionally, the warning can be removed by adding an empty body, for example,

    while (f) {};
    References to enumerated values declared later

    Issue: undefined identifier compiler errors for usage such as

    class CMyClass - { - void MyFunction(TInt a=EMyVal1); // EMyVal1 not yet defined - enum - { - EMyVal1 - }; - };

    Resolution: move the enumerator's declaration to before its first usage.

    References to pointers to const objects

    Issue: non-const '&' reference initialized to - temporary compiler errors for use of a reference to a pointer to a non-const object, where a reference to a pointer to a const object is required, for example:

    void f(const TInt64*& aNum); - -void f1() - { - TInt64* ptr; - f(ptr); - }

    Resolution: the compiler correctly cannot add const-ness at this level of indirection, as the aNum value could then be modified through the ptr pointer. Modify the code to conform with the const-ness rules.

    Reuse of variables declared in for

    Issue: CodeWarrior follows the C++ standard in limiting the lifetime of a variable declared in a for statement to the loop block. The following code thus gives an undefined identifier error for the use of i in the second for statement.

    for (TInt i=0; i<10; i++) - { - ... - } -for (i=0; i<20; i++) - { - ...

    Resolution: as Microsoft Visual C++ gives an error if, in the above case, i were to be redeclared in the second for statement. To be compatible with both compilers, declare the loop variable outside the for loop.

    sizeof(<non-static class member>) not in the context of an object of that class

    Issue: illegal use of non-static member warning for such code as:

    class CMyClass - { -public: - int iNonStaticMember; - }; - -int main() - { - printf("%d\n", sizeof(CMyClass::iNonStaticMember)); - }

    The error is produced because CMyClass::iNonStaticMember is not the name of a type, nor an expression.

    Resolution: a possible resolution is to provide a dummy object to produce a valid expression: for example,

    sizeof(((CMyClass*)0)->iStaticMember)
    Uninitialised variable warnings

    Issue: extra warnings of the form variable - 'myvariable' is not initialized before being used.

    Resolution: the warnings are correct, and the code should be corrected.

    USER 42 panics when allocating and deleting arrays

    Issue: the program panics with USER 42 when allocating and deleting arrays.

    Resolution: see Cleanup for heap arrays for details of code techniques to prevent such panics.

    Single process and memory protection

    The S in WINS and WINSCW stands for "single process". WINS/WINSCW supports multiple threads, but only a single process. This causes slight differences between WINS/WINSCW and target machines.

    As WINS/WINSCW only has a single process, each process has access to each other’s memory. This means that bad pointers may corrupt another process’s memory, resulting in bugs which would not occur on a multi-process Symbian platform implementation. Also, design bugs such as using pointers across processes do not show until code is first run on a multi-process platform.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D37E0579-0F3B-5EE4-8264-1358E493672B.dita --- a/Symbian3/PDK/Source/GUID-D37E0579-0F3B-5EE4-8264-1358E493672B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D37E0579-0F3B-5EE4-8264-1358E493672B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -27,7 +27,7 @@

    The following diagram illustrates how elements are organised within the array buffer:

    - +

    This kind of array is suitable for a small number of elements or for a moderately large but fixed maximum number of elements. It is not suitable diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D3881E09-4519-5E3F-9978-C9FEFD123B85_d0e593157_href.png Binary file Symbian3/PDK/Source/GUID-D3881E09-4519-5E3F-9978-C9FEFD123B85_d0e593157_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D3881E09-4519-5E3F-9978-C9FEFD123B85_d0e642450_href.png Binary file Symbian3/PDK/Source/GUID-D3881E09-4519-5E3F-9978-C9FEFD123B85_d0e642450_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D3B78EAF-CAE8-519D-8E70-FD51C842DC17_d0e231683_href.png Binary file Symbian3/PDK/Source/GUID-D3B78EAF-CAE8-519D-8E70-FD51C842DC17_d0e231683_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D3B78EAF-CAE8-519D-8E70-FD51C842DC17_d0e237678_href.png Binary file Symbian3/PDK/Source/GUID-D3B78EAF-CAE8-519D-8E70-FD51C842DC17_d0e237678_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D3F52BB9-7230-499C-9BB7-CFAEDBA8F48B.dita --- a/Symbian3/PDK/Source/GUID-D3F52BB9-7230-499C-9BB7-CFAEDBA8F48B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D3F52BB9-7230-499C-9BB7-CFAEDBA8F48B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,7 +17,7 @@ control inside its own area as illustrated in the figure below.

    Tactile feedback area priorities - +

    In both situations, the compound control wants to give one type of feedback, but there should be a different type of feedback (or no feedback at all) for diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D3F800F3-0818-5DF2-947C-AB8DE0C0053C_d0e167691_href.png Binary file Symbian3/PDK/Source/GUID-D3F800F3-0818-5DF2-947C-AB8DE0C0053C_d0e167691_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D3F800F3-0818-5DF2-947C-AB8DE0C0053C_d0e173784_href.png Binary file Symbian3/PDK/Source/GUID-D3F800F3-0818-5DF2-947C-AB8DE0C0053C_d0e173784_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D4001895-09B9-5A47-BEE7-648FAB55F85B.dita --- a/Symbian3/PDK/Source/GUID-D4001895-09B9-5A47-BEE7-648FAB55F85B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D4001895-09B9-5A47-BEE7-648FAB55F85B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -44,7 +44,7 @@

    The following diagram shows the idea:

    Transaction Commit and Revert - + Dictionary diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D429672C-448D-5E91-ABA0-81680869D69E.dita --- a/Symbian3/PDK/Source/GUID-D429672C-448D-5E91-ABA0-81680869D69E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D429672C-448D-5E91-ABA0-81680869D69E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -51,7 +51,7 @@ There are 16 bits per pixel and 8 bits per sample.

    Byte order for the EUidPixelFormatYUV_422Interleaved format - +
  • @@ -71,7 +71,7 @@ ID of this format is 0x32595559.

    Byte order for the EUidPixelFormatYUV_422Reversed format - +
    @@ -126,7 +126,7 @@ per pixel and 8 bits per sample. The pixel order is Y1VY0U.

    Byte order for the EUidPixelFormatYUV_422InterleavedReversed format - +
    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D430A6E4-003C-5368-893B-D7FCD5ADCAAD-GENID-1-12-1-24-1-1-8-1-4-1-4-1-5-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-D430A6E4-003C-5368-893B-D7FCD5ADCAAD-GENID-1-12-1-24-1-1-8-1-4-1-4-1-5-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +TutorialsThis section describes how to use Secure Sockets. \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D430A6E4-003C-5368-893B-D7FCD5ADCAAD-GENID-1-12-1-24-1-1-8-1-5-1-4-1-5-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-D430A6E4-003C-5368-893B-D7FCD5ADCAAD-GENID-1-12-1-24-1-1-8-1-5-1-4-1-5-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +TutorialsThis section describes how to use Secure Sockets. \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D430A6E4-003C-5368-893B-D7FCD5ADCAAD-GENID-1-12-1-24-1-1-9-1-4-1-5-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-D430A6E4-003C-5368-893B-D7FCD5ADCAAD-GENID-1-12-1-24-1-1-9-1-4-1-5-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +TutorialsThis section describes how to use Secure Sockets. \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D43AB2F5-32AE-540C-80D8-DE8B2072F1E6_d0e377801_href.png Binary file Symbian3/PDK/Source/GUID-D43AB2F5-32AE-540C-80D8-DE8B2072F1E6_d0e377801_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D43AB2F5-32AE-540C-80D8-DE8B2072F1E6_d0e383654_href.png Binary file Symbian3/PDK/Source/GUID-D43AB2F5-32AE-540C-80D8-DE8B2072F1E6_d0e383654_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D458A54E-0D19-479C-B628-001C704E1CB3.dita --- a/Symbian3/PDK/Source/GUID-D458A54E-0D19-479C-B628-001C704E1CB3.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ - - - - - -Navigation -using links -

    Links leading from one application (or the home screen) to another application -may exist. Links are one-way shortcuts: there is no direct path back to the -state where the link was started; instead, the navigation inside the linked -application functions as if the user had manually activated the other application -and navigated to the target state.

    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D45A4AE9-4169-4466-B02B-629B15C3E9AA.dita --- a/Symbian3/PDK/Source/GUID-D45A4AE9-4169-4466-B02B-629B15C3E9AA.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D45A4AE9-4169-4466-B02B-629B15C3E9AA.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,7 +14,7 @@ to create a private key-public key pair and generate certificate requests.

    The following diagram illustrates the procedure for creating a private key, self-signed certificate and a certificate request file.

    - +
    Creating diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D48AD74E-FF0E-502F-961C-CAD0516B3BA9_d0e559314_href.png Binary file Symbian3/PDK/Source/GUID-D48AD74E-FF0E-502F-961C-CAD0516B3BA9_d0e559314_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D48AD74E-FF0E-502F-961C-CAD0516B3BA9_d0e566770_href.png Binary file Symbian3/PDK/Source/GUID-D48AD74E-FF0E-502F-961C-CAD0516B3BA9_d0e566770_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D492CF6C-F889-4299-AC75-951EF343AC9F_d0e3010_href.png Binary file Symbian3/PDK/Source/GUID-D492CF6C-F889-4299-AC75-951EF343AC9F_d0e3010_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D492CF6C-F889-4299-AC75-951EF343AC9F_d0e3020_href.png Binary file Symbian3/PDK/Source/GUID-D492CF6C-F889-4299-AC75-951EF343AC9F_d0e3020_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D4AA635F-DF24-541A-A452-192DDBEE4142.dita --- a/Symbian3/PDK/Source/GUID-D4AA635F-DF24-541A-A452-192DDBEE4142.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D4AA635F-DF24-541A-A452-192DDBEE4142.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Processes and Data Flow

    The following figure shows the processes and data flow in the Messaging subsystem on a secured Symbian platform.

    Processes and dataflow in the Messaging subsystem -
    \ No newline at end of file + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D520CBC3-FCAC-5A53-AE1A-E5254ABBC6A2.dita --- a/Symbian3/PDK/Source/GUID-D520CBC3-FCAC-5A53-AE1A-E5254ABBC6A2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D520CBC3-FCAC-5A53-AE1A-E5254ABBC6A2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -13,6 +13,6 @@ platform Memory MapReference for users of the debug monitor tool to the Symbian platform memory map for the moving memory model.
    Moving model - +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D525B9A9-6B32-535B-A282-60C85A48D3FB.dita --- a/Symbian3/PDK/Source/GUID-D525B9A9-6B32-535B-A282-60C85A48D3FB.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,123 +0,0 @@ - - - - - -Floating -point support -

    ARM provide a hardware floating point coprocessor that provides floating -point computation that is fully compliant with IEEE Std 754-1985. This is -an implementation of the ARM Vector Floating Point Architecture (VFPv2). We -refer to the coprocessor as the VFP unit.

    -

    Symbian platform supports the use of VFPv2 on platforms where the required -hardware is present in both RunFast mode and in IEEE-without-exceptions mode. -See ARM's Vector Floating-point Coprocessor Technical reference Manual for -more details on the coprocessor, its architecture, and its execution modes.

    -

    Note that Symbian platform does not support floating point exceptions in -any mode.

    -
      -
    • Using the Vector Floating Point Architecture (VFP) in an application

    • -
    • Run time check for hardware floating point

    • -
    • Execution modes

    • -
    -
    Using the Vector -Floating Point Architecture (VFP) in an application

    An application -can use VFP in two ways:

      -
    • indirectly through the -use of floating point support functions.

    • -
    • directly in its code, -either generated by the compiler, or hand-written in assembler.

    • -

    Indirect use

    By default, all applications are built -to use the floating point support functions.

    On a device without a -VFP unit, floating point support functions are implemented in software and -operate slowly. On a device with a VFP unit, the floating point support functions -are handled by the VFP unit, and operate faster than when implemented in software.

    Note -that applications do not need to make any changes to take advantage of VFP-enabled -floating point support functions, if they are provided in the device's ROM. -Such functions are used automatically at run time.

    Direct use

    To -generate VFP specific code at compile time, you need to add -the armfpu statement -with the vfpv2 keyword into your .mmp file:

    armfpu vfpv2

    On -a device with a VFP unit, this option results in code that runs faster than -the floating point support functions generated by armfpu - softvfp. Note, however, that binaries generated with VFP specific -code do not work on devices without a VFP unit - any call to VFP specific -code results in a KERN-EXEC 3 panic.

    On those devices that have a -VFP unit, the functions supplied in the Math class, that -perform trigonometric and transcendental operations may also be implemented -using VFP specific code. This is transparent to application code.

    -
    Run time check -for hardware floating point

    An application can find out at run -time whether a device supports hardware floating point by calling HAL::Get(), -using the EHardwareFloatingPoint attribute. The following -code fragment shows how you would do this:

    ... -TInt supportedFp; - -TInt HalVfp = HAL::Get(HALData::EHardwareFloatingPoint, supportedFp); -if (HalVfp == KErrNone && (supportedFp & EFpTypeVFPv2)) - { - // HAL says that we have a VFP unit - ... - } -else - { - // HAL says that we do NOT have a VFP unit - ... - } -... -

    Note that, strictly speaking, the return value from HAL::Get() indicates -whether or not the attribute is supported. To deduce whether hardware floating -point is supported by the device, the following logic applies:

      -
    • If the Hardware Abstraction -Layer (HAL) does not support the EHardwareFloatingPoint attribute, -then HAL::Get() returns KErrNotSupported. -This can be interpreted as meaning that the device does not support hardware -floating point.

    • -
    • If the HAL does support -the EHardwareFloatingPoint attribute, then HAL::Get() returns KErrNone. -In this case the TInt variable supportedTypes in -the above example code fragment will contain an enum value of type TFloatingPointType describing -the type of hardware floating point supported. If hardware floating point -is supported, then currently, this can only be ARM Vector Floating Point Architecture -(VFPv2) as indicated by the EFpTypeVFPv2 enum value.

    • -
    -
    Execution modes

    Symbian -platform can support the two execution modes: RunFast and IEEE-without-exceptions.

    - - - -

    RunFast

    -

    In this mode, denormalised numbers, i.e. those outside the range -of normal floating point values, are treated as zero, and a default NaN (Not -a Number) value is used for all NaN situations regardless -of the inputs.

    -
    - -

    IEEE-without-exceptions

    -

    In this mode, denormalised numbers are treated as their actual values, -and the IEEE754-mandated values for NaN s are used.

    The -floating point model mandated by the Java specification is identical to this -mode, and means that this mode is sufficient to implement a VFP-accelerated -JVM.

    -
    - - -

    An application can set (and check) the execution mode at run time -by calling User::SetFloatingPointMode(), and passing one -of the TFloatingPointMode enum values, which represent -the possible modes.

    The function can still be used even if hardware -floating point is not supported. In this case it returns KErrNotSupported.

    Applications -that do not require NaN values to be as specified by IEEE754 -and are not concerned with accuracy when dealing with very small (denormalised) -quantities, can select RunFast mode for a possible performance -increase. Games or 3D engines are likely to fall into this category. Applications -that require accurate IEEE754 interpretations, such as the JVM, can explicitly -select IEEE-without-exceptions mode, and if this fails as -being unsupported, refuse to run.

    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D52E98C3-F5EE-4CE1-A4F5-2EF41A066B8A.dita --- a/Symbian3/PDK/Source/GUID-D52E98C3-F5EE-4CE1-A4F5-2EF41A066B8A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D52E98C3-F5EE-4CE1-A4F5-2EF41A066B8A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,33 +9,31 @@ --> -Creating -resource header files -

    Typically when you create an application, there are cases where you -need to create an enumerated set of command IDs (which are symbols with integer -values). These defined symbols can then be used in both your code and resource -files. Common examples of these cases, include:

    +Creating resource header files +

    Typically when you create an application, there are cases where +you need to create an enumerated set of command IDs (which are symbols +with integer values). These defined symbols can then be used in both +your code and resource files. Common examples of these cases, include:

      -
    • Custom command IDs used for mapping mobile device user input -based upon Options menu selections to command handling. -These custom command IDs are mapped to the text displayed for the command -in the Options menu in resource files, and then are passed -back to the application by the application framework.

    • -
    • Control IDs in dialogs to allow references to the dialog -controls from C++ code.

      +
    • Custom command IDs used for mapping mobile device +user input based upon Options menu selections +to command handling. These custom command IDs are mapped to the text +displayed for the command in the Options menu +in resource files, and then are passed back to the application by +the application framework.

    • +
    • Control IDs in dialogs to allow references to the +dialog controls from C++ code.

      -

      For more information on control IDs for dialogs, see Using -Dialogs API.

      +

      For more information on control IDs for dialogs, see Using Dialogs API.

    • -
    • Application view IDs. Note that these could also be enumerated -in the header files for the views.

    • -
    • IDs for other resource structures, such as for TABS in -the status pane.

    • +
    • Application view IDs. Note that these could also +be enumerated in the header files for the views.

    • +
    • IDs for other resource structures, such as for TABS in the status pane.

    -

    These enumerated values need to be defined in a resource file, which -by convention has the extension hrh, The syntax is as -follows:

    +

    These enumerated values need to be defined in a resource file, +which by convention has the extension hrh, The +syntax is as follows:

    enum TCommandIds { ECmdAppTest1 = 1, @@ -49,28 +47,27 @@ };

    where

      -
    • enum is the keyword declaration the -set of integer values.

      +
    • enum is the keyword declaration +the set of integer values.

      Use this keyword for each set of enumerated values you defined.

    • -
    • TCommandIds is a label for the list -of enumerated values. This label is not used in the code or resource files.

      -
    • -
    • ECmdAppTest1 is a symbol that can be -used in your code or resource files.

    • -
    • = is the operator used for setting the -value to the symbol.

    • -
    • 1 is the specific value assigned to -the enumerator symbol.

    • +
    • TCommandIds is a label for the +list of enumerated values. This label is not used in the code or resource +files.

    • +
    • ECmdAppTest1 is a symbol that +can be used in your code or resource files.

    • +
    • = is the operator used for setting +the value to the symbol.

    • +
    • 1 is the specific value assigned +to the enumerator symbol.

    -

    Each enumerator is followed by a comma (,) except for -the last value. It is recommended to have a final semi colon (;) -after the enumerated list. If a specific value is not assigned to a symbol -in the enumerated list, then the value is that of the previous enumerator -plus one. Thus, the value for ECmdView1Cmd1 above is -2.

    -

    For more information about the use of the enum statement, -see ENUM statement.

    +

    Each enumerator is followed by a comma (,) +except for the last value. It is recommended to have a final semi +colon (;) after the enumerated list. If a specific +value is not assigned to a symbol in the enumerated list, then the +value is that of the previous enumerator plus one. Thus, the value +for ECmdView1Cmd1 above is 2.

    +

    For more information about the use of the enum statement, see ENUM statement.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D5358527-5E6F-5158-8BCB-F9D74DB9B354.dita --- a/Symbian3/PDK/Source/GUID-D5358527-5E6F-5158-8BCB-F9D74DB9B354.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -wcharentrypoint

    wcharentrypoint

    Use wcharentrypoint statement to specify that the entry point for a standard EXE is wide character (wmain). Otherwise, the default entry point for a standard EXE is narrow character (main).

    This enables the toolchain to include either of the following libraries based on the type of entry point:

    • libcrt0.lib — To support the narrow character entry point, if wcharentrypoint statement is not included in the .mmp file.

    • libwcrt0.lib — To support the wide character entry point, if wcharentrypoint statement is included in the .mmp file.

    The wcharentrypoint statement is supported only on ARM ABI and Symbian emulator compliant platforms, such as, ARMv5, ARMv5_ABIv2, GCCE and WINSCW.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D53A00E4-CF37-5F11-8D15-C5ECCCE64597.dita --- a/Symbian3/PDK/Source/GUID-D53A00E4-CF37-5F11-8D15-C5ECCCE64597.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D53A00E4-CF37-5F11-8D15-C5ECCCE64597.dita Fri Jul 16 17:23:46 2010 +0100 @@ -64,7 +64,7 @@ it must provide a callback pointer of the MHWRMVibraObserver implementing class for the NewL() method.

    Vibra API Interfaces - +
    Tactile vibration feedback

    Tactile vibration is used in many touch screen devices to provide vibration feedback to the user diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D553D41C-D724-510A-A239-66CC158D6984.dita --- a/Symbian3/PDK/Source/GUID-D553D41C-D724-510A-A239-66CC158D6984.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -nostdcpp

    nostdcpp

    This keyword must be included in the project specification file (.mmp) to build a standard target (STDEXE, STDDLL, and STDLIB) using the Symbian C++ semantics for global new operator. To know how the global new operator is handled in standard C++ and Symbian C++, refer to Standard C++ Library in the Generic Open Libraries (P.I.P.S.).

    By default all standard targets use the standard C++ semantics for global new operator.

    Note: If an .mmp file includes both nostdcpp and stdcpp keywords, the build system will ignore the keywords and use the standard C++ semantics to build the target.

    See also

    stdcpp

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D5707217-DE3F-551D-82C9-C82D3047D90E_d0e462644_href.png Binary file Symbian3/PDK/Source/GUID-D5707217-DE3F-551D-82C9-C82D3047D90E_d0e462644_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D5707217-DE3F-551D-82C9-C82D3047D90E_d0e468489_href.png Binary file Symbian3/PDK/Source/GUID-D5707217-DE3F-551D-82C9-C82D3047D90E_d0e468489_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D5984540-A411-52ED-B435-94C67F34ADD5.dita --- a/Symbian3/PDK/Source/GUID-D5984540-A411-52ED-B435-94C67F34ADD5.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ - - - - - -How -to Enable Tracing -

    Enabling a trace means that the trace adds trace packets to the output. -A disabled trace adds no trace packets to the output. There are two options -to enable tracing in the source code or component, depending on the tracing -requirement.

    -
    Enabling traces during build-time

    To enable tracing -at build-time, the Instrumentor has to include the #define SYMBIAN_TRACE_ENABLE flag -in the relevant source code (file) of the project. If it is not included, -all traces will be excluded at the build time and it will not be possible -for a Trace Collector to gather any trace information regardless of the filter -settings in trace configuration tool.

    If the requirement is to enable -tracing in all the files in an executable, the Instrumentor can achieve this -by adding MACRO SYMBIAN_TRACE_ENABLE to the MMP -file of the project.

    -
    Enabling traces during run-time

    To enable tracing -at run-time, the Instrumentor has to have enabled traces at the build-time. -That is, if the traces are enabled at build-time, the Trace Collector can -enable or disable any traces at run-time. But if the traces for a particular -component are disabled at build-time, the Trace Collector cannot enable them -at run-time.

    Considerations

    Before enabling trace points, -the Trace Collector has to consider the following two options of outputting -traces:

      -
    • Outputting all traces from a component or a set of components: After -the traces have been enabled at build time by the Instrumentor, the Trace -Collector will be able to generate the trace packets when the instrumented -component is executed, provided the trace configuration tool is configured -to filter in all of these traces.

    • -
    • Outputting some of the traces (subset) from one or more components: The -Trace Collector can achieve this by enabling or disabling the predefined primary -and secondary filter combination used within the instrumented component.

      The -Trace Collector is able to turn on any combination of filters for a component, -according to the scenarios presented in the Relationship between primary and -secondary filters section in Key -concepts and terms.

    • -
    -
    -How to insert -trace points in a component -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D5A05EE7-5559-55CC-A839-478B4F513CE4_d0e265187_href.png Binary file Symbian3/PDK/Source/GUID-D5A05EE7-5559-55CC-A839-478B4F513CE4_d0e265187_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D5A05EE7-5559-55CC-A839-478B4F513CE4_d0e271187_href.png Binary file Symbian3/PDK/Source/GUID-D5A05EE7-5559-55CC-A839-478B4F513CE4_d0e271187_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D5A6A5C9-A959-5CE7-AF45-43DA7D8B2EFF.dita --- a/Symbian3/PDK/Source/GUID-D5A6A5C9-A959-5CE7-AF45-43DA7D8B2EFF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D5A6A5C9-A959-5CE7-AF45-43DA7D8B2EFF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Introduction to Pictures

    A picture is an object which can be drawn to a graphics context and can be stored and restored. A picture is stored, together with its picture header, in any type of store using a storemap.

    Relationship between picture headers and pictures in a store -

    A picture can thus be any object which draws an image — be it a bitmap or a set of graphic commands.

    Additionally, two common desirable facilities for a picture to have are:

    • the ability to be cropped

    • the ability to be scaled

    Scaling can be done in one of three ways:

    • by specifying percentage scale factors for the width and height

    • by specifying the picture size in pixels

    • by specifying the picture size in twips

    Cropping can be done in two ways:

    • by specifying a set of margins in twips

    • by specifying a further set of margins in pixels, for additional cropping

    The drawing operation positions and draws the scaled and cropped picture on the graphics device.

    +

    A picture can thus be any object which draws an image — be it a bitmap or a set of graphic commands.

    Additionally, two common desirable facilities for a picture to have are:

    • the ability to be cropped

    • the ability to be scaled

    Scaling can be done in one of three ways:

    • by specifying percentage scale factors for the width and height

    • by specifying the picture size in pixels

    • by specifying the picture size in twips

    Cropping can be done in two ways:

    • by specifying a set of margins in twips

    • by specifying a further set of margins in pixels, for additional cropping

    The drawing operation positions and draws the scaled and cropped picture on the graphics device.

    The relationships between the picture classes -
    Picture Concepts Picture Tutorials
    \ No newline at end of file + Picture Concepts Picture Tutorials \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D5AB2689-44B7-5E81-888A-48C622AAE21B.dita --- a/Symbian3/PDK/Source/GUID-D5AB2689-44B7-5E81-888A-48C622AAE21B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D5AB2689-44B7-5E81-888A-48C622AAE21B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -54,6 +54,6 @@
    Summary of class hierarchy of the classes used Key Classes - +

    Service Support

    RApaAppServiceBase -> REikAppServiceBase -> RServAppService

    CApaAppServiceBase -> CServAppSession

    Server Application

    CApaAppServer -> CEikAppServer -> CServAppServer

    CServAppSession -> CMinimalSession

    CApaApplication -> CEikApplication -> CExampleApplication

    CEikDocument -> CExampleDocument

    CEikAppUi -> CExampleAppUi

    CCoeControl -> CExampleAppView

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D5DC22F5-8891-5377-BE54-61FD72046237_d0e607383_href.png Binary file Symbian3/PDK/Source/GUID-D5DC22F5-8891-5377-BE54-61FD72046237_d0e607383_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D5DC22F5-8891-5377-BE54-61FD72046237_d0e646545_href.png Binary file Symbian3/PDK/Source/GUID-D5DC22F5-8891-5377-BE54-61FD72046237_d0e646545_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D5DDC05E-B8C6-5BF0-AEBA-EED1D88BB5BB.dita --- a/Symbian3/PDK/Source/GUID-D5DDC05E-B8C6-5BF0-AEBA-EED1D88BB5BB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D5DDC05E-B8C6-5BF0-AEBA-EED1D88BB5BB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -77,7 +77,7 @@ (audio or video device drivers) for playback or recording using Multimedia Framework.

    CAF Streaming Support Architecture - +

    For information about the set-up and tear down of streaming session, see Streaming Session Sequence.

    @@ -117,7 +117,7 @@ (MMF controller), must use CKeyStreamDecoder. The figure below shows the key classes of CAF streaming agent.

    Class diagram - +
    Typical uses

    CAF Streaming Support provides interfaces to create an ECom based streaming agent. A streaming player middleware such diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D62A0234-348C-5553-B8C0-7B483AF9D50C.dita --- a/Symbian3/PDK/Source/GUID-D62A0234-348C-5553-B8C0-7B483AF9D50C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D62A0234-348C-5553-B8C0-7B483AF9D50C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -26,13 +26,13 @@ a mutex and vests ownership of the handle in the thread.

    Thread-relative handle - +

    Compare with the following case where ownership of the mutex handle is vested in the process.

    Process-relative handle - +

    In both cases, the mutex object is added to the appropriate Kernel container which can be considered as the owner of the object.

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D62A282E-9DEA-5EF3-A606-20647BC5049D.dita --- a/Symbian3/PDK/Source/GUID-D62A282E-9DEA-5EF3-A606-20647BC5049D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D62A282E-9DEA-5EF3-A606-20647BC5049D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,6 +9,125 @@ --> -Audio Client Overview

    This document provides an overview of the Audio Client.

    Purpose

    The Audio Client provides an interface to:

    • Play back, record, and convert sound clips.

    • Play tone sequences and DTMF (Dual-Tone Multi-Frequency) strings.

    Audio Client Library Details

    The DLL that provides the functionality and the library to which your code must link is identified below.

    DLL LIB Short Description

    mediaclientaudio.dll

    mediaclientaudio.lib

    These files are used for implementing the Audio Client.

    Architectural Relationship

    The methods for recording, converting, and playing audio clips or tones interact with the lower levels of MMF (known as the controller framework). The controller framework is in turn responsible for managing the interface to audio hardware. On some phones, this is implemented as a device driver; on others it may be implemented as a connection to a lower level hardware controller.

    Clients using any of the CMdaAudioRecorderUtility, CMdaAudioConvertUtility, CMdaAudioPlayerUtility or CMdaAudioToneUtility classes must have an active scheduler running in their thread because the implementations use active objects and callbacks.

    How the tone player class interacts with other components of MMF is shown below.

    - Audio tone player overview -
    Description

    Audio Playing, Recording, and Conversion

    All three of the audio classes are plugin based, leaving the list of supported audio formats for input and output open ended. The audio file formats supported as standard by MMF are: AU, WAV and raw audio data. Each file format may support one or more compression algorithms (codecs). The standard file formats and corresponding codecs are shown below:

    Audio file format Codecs supported

    AU

    A-Law, mu-law, signed 16 bit PCM big-endian, signed 8 bit PCM

    WAV

    IMA-ADPCM, A-Law, mu-law, unsigned 8 bit PCM, gsm 6.10, signed 16 bit PCM

    raw data

    Signed big-endian 16 bit PCM, signed 16 bit PCM, unsigned 16 bit PCM

    Input and output audio data can be of any format supported by the installed plugins. When possible MMF uses a plugin resolver to determine the format and codecs to use. It determines this by checking the filename extension and reading any header data that may be present in the audio clip. The plugin resolver cannot determine the format and codecs to use for raw audio, so in such cases you must specify this information yourself. A full list of supported plugins can be retrieved by using CMdaAudioConvertUtility::GetSupportedDestinationDataTypesL().

    Note: All audio clips can be uniquely identified for purposes of plugin assignment by their format (gsm z6.10, AU, WAV and so on) and their codec (for example for AU, valid codecs include A-Law, mu-law, signed 16 bit PCM big-endian, signed 8 bit PCM). Each format and codec has an arbitrary ID assigned to it by MMF and its associated plugin, for use with the "Open" functions of both CMdaAudioConvertUtility and CMdaAudioRecorderUtility.

    Tone Playing

    The Audio Client provide a simple interface for tone generation (synthesized sounds) that enables the playing of tone sequences and DTMF (Dual-Tone Multi-Frequency) strings. The tone player functionality is provided by the CMdaAudioToneUtility class and using this class you can play:

    • Single tones of a specified duration and frequency.

    • DTMF strings.

    • Sequences of tones held in files or descriptors.

    • Predefined (fixed) sequences of tones held in the mobile equipment.

    Key Audio Client Classes

    The functionality provided by the Audio Client is contained within the following classes:

    • CMdaAudioRecorderUtility

    • CMdaAudioConvertUtility

    • CMdaAudioPlayerUtility

    • CMdaAudioToneUtility

    Using the Audio Client

    Clients can use the Audio Client to:

    • Manipulate audio sources and sinks, add, retrieve and modify meta data and record audio data to files or descriptors.

    • Convert audio clips contained in files or descriptors to other formats using the default codecs provided by MMF.

    • Play audio clips contained in files, descriptors or URLs.

    • Play single tones, DTMF strings and tone sequences.

    See Also

    How to use the audio convert utility

    How to use the audio player utility

    How to use audio recorder utility

    How to use the audio tone player utility

    DevSound Overview

    \ No newline at end of file +Audio Client Overview +

    This document provides an overview of the Audio Client.

    +
    Purpose

    The Audio Client provides an interface +to:

      +
    • Play back, record, +and convert sound clips.

    • +
    • Play tone sequences +and DTMF (Dual-Tone Multi-Frequency) strings.

    • +

    Audio Client Library Details

    The DLL that provides +the functionality and the library to which your code must link is +identified below.

    + + + + +DLL +LIB +Short Description + + + + +

    mediaclientaudio.dll

    +

    mediaclientaudio.lib

    +

    These files are used for implementing the Audio Client.

    +
    + + +
    +
    Architectural Relationship

    The methods +for recording, converting, and playing audio clips or tones interact +with the lower levels of MMF (known as the controller framework). +The controller framework is in turn responsible for managing the interface +to audio hardware. On some phones, this is implemented as a device +driver; on others it may be implemented as a connection to a lower +level hardware controller.

    Clients using any of the CMdaAudioRecorderUtility, CMdaAudioConvertUtility, CMdaAudioPlayerUtility or CMdaAudioToneUtility classes must have an active scheduler running in their thread because +the implementations use active objects and callbacks.

    How +the tone player class interacts with other components of MMF is shown +below.

    + Audio tone player overview + +
    +
    Description

    Audio Playing, Recording, and Conversion

    All three +of the audio classes are plugin based, leaving the list of supported +audio formats for input and output open ended. The audio file formats +supported as standard by MMF are: AU, WAV and raw audio data. Each +file format may support one or more compression algorithms (codecs). +The standard file formats and corresponding codecs are shown below:

    + + + +Audio file format +Codecs supported + + + + +

    AU

    +

    A-Law, mu-law, signed 16 bit PCM big-endian, signed 8 bit +PCM

    +
    + +

    WAV

    +

    IMA-ADPCM, A-Law, mu-law, unsigned 8 bit PCM, gsm 6.10, +signed 16 bit PCM

    +
    + +

    raw data

    +

    Signed big-endian 16 bit PCM, signed 16 bit PCM, unsigned +16 bit PCM

    +
    + + +

    Input and output audio data can be of any format supported +by the installed plugins. When possible MMF uses a plugin resolver +to determine the format and codecs to use. It determines this by checking +the filename extension and reading any header data that may be present +in the audio clip. The plugin resolver cannot determine the format +and codecs to use for raw audio, so in such cases you must specify +this information yourself. A full list of supported plugins can be +retrieved by using CMdaAudioConvertUtility::GetSupportedDestinationDataTypesL().

    Note: All audio clips can be uniquely identified +for purposes of plugin assignment by their format (gsm z6.10, AU, +WAV and so on) and their codec (for example for AU, valid codecs include +A-Law, mu-law, signed 16 bit PCM big-endian, signed 8 bit PCM). Each +format and codec has an arbitrary ID assigned to it by MMF and its +associated plugin, for use with the "Open" functions of both CMdaAudioConvertUtility and CMdaAudioRecorderUtility.

    Tone Playing

    The Audio Client provide a simple interface for tone generation +(synthesized sounds) that enables the playing of tone sequences and +DTMF (Dual-Tone Multi-Frequency) strings. The tone player functionality +is provided by the CMdaAudioToneUtility class and +using this class you can play:

      +
    • Single tones +of a specified duration and frequency.

    • +
    • DTMF strings.

    • +
    • Sequences of +tones held in files or descriptors.

    • +
    • Predefined (fixed) +sequences of tones held in the mobile equipment.

    • +
    +
    Key Audio Client Classes

    The functionality +provided by the Audio Client is contained within the following classes:

      +
    • CMdaAudioRecorderUtility

    • +
    • CMdaAudioConvertUtility

    • +
    • CMdaAudioPlayerUtility

    • +
    • CMdaAudioToneUtility

    • +
    +
    Using the Audio Client

    Clients can use +the Audio Client to:

      +
    • Manipulate audio +sources and sinks, add, retrieve and modify meta data and record audio +data to files or descriptors.

    • +
    • Convert audio +clips contained in files or descriptors to other formats using the +default codecs provided by MMF.

    • +
    • Play audio clips +contained in files, descriptors or URLs.

    • +
    • Play single +tones, DTMF strings and tone sequences.

    • +
    +
    See Also

    How to use the audio +convert utility

    How to use the audio +tone player utility

    DevSound Overview

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D66415A3-7AFA-50D7-9019-96E20240CF05_d0e427163_href.png Binary file Symbian3/PDK/Source/GUID-D66415A3-7AFA-50D7-9019-96E20240CF05_d0e427163_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D66415A3-7AFA-50D7-9019-96E20240CF05_d0e433008_href.png Binary file Symbian3/PDK/Source/GUID-D66415A3-7AFA-50D7-9019-96E20240CF05_d0e433008_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D6861A7A-1845-52AF-BB09-4B97E6B8AA13_d0e381106_href.png Binary file Symbian3/PDK/Source/GUID-D6861A7A-1845-52AF-BB09-4B97E6B8AA13_d0e381106_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D6861A7A-1845-52AF-BB09-4B97E6B8AA13_d0e386959_href.png Binary file Symbian3/PDK/Source/GUID-D6861A7A-1845-52AF-BB09-4B97E6B8AA13_d0e386959_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D69DD425-5F93-4238-A7E9-915F24A9C9CA.dita --- a/Symbian3/PDK/Source/GUID-D69DD425-5F93-4238-A7E9-915F24A9C9CA.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D69DD425-5F93-4238-A7E9-915F24A9C9CA.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,9 +16,9 @@ This example uses the APIs of the message queue library to create/close message queues and send/receive messages and also get information on created message queues.

    -
    Download

    Click +

    Download

    Click on the following link to download the example: opencmessagequeuelibraryex.zip

    Click: browse to view the example code.

    -
    Design and +<section id="GUID-7E7C4564-B10E-41F9-8A9D-D8A6C5E9C51C-GENID-1-12-1-14-1-1-5-1-3-1-11-1-12-1-2-3"><title>Design and Implementation

    The following sections provide information about the implementation of the example.

    Description

    OpenCMessageQueueClientEx is a C Application that uses the Message Queue library. This application @@ -44,7 +44,7 @@ apis, an EXE is provided that creates threads and does send/receive on message queues using those exported apis.

    APIs used

    msgget

    msgctl

    msgrcv

    msgsnd

    semget

    semctl

    semop

    -
    Building and +<section id="GUID-67A72761-1D92-46D1-B1C9-7455978BDE4E-GENID-1-12-1-14-1-1-5-1-3-1-11-1-12-1-2-4"><title>Building and Using To build the Message Queue Library example application, go to the OpenCMessageQueueLibraryEx\group directory and build the application. The Message Queue Library application consists of two modules, diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D6A2B169-F6DB-5BCE-83C9-7CD4A10C5BE9-GENID-1-12-1-26-1-1-11-1-1-5-1-9-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-D6A2B169-F6DB-5BCE-83C9-7CD4A10C5BE9-GENID-1-12-1-26-1-1-11-1-1-5-1-9-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Changing the cryptographic strength

    To change the cryptographic strength simply replace the cryptography.dll file, located in <your-SDK-path>\epoc32\release\<target>\<variant>, with a version of the DLL that has the required strength. There are two crypto DLLs available for selection, see Weak and strong cryptography.

    So, for example, if you wanted to increase the strength of cryptography.dll in say <your-SDK-path>\epoc32\release\wins\urel to strong_cryptography.dll, then you would do this as follows:

    • Get a copy of strong_cryptography.dll from <your-SDK-path>\src\generic\security\crypto\import\bin\wins\urel

    • Paste this into <your-SDK-path>\epoc32\release\wins\urel

    • Rename the copied strong_cryptography.dll to cryptography.dll

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D6A2B169-F6DB-5BCE-83C9-7CD4A10C5BE9-GENID-1-12-1-26-1-1-9-1-5-1-10-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-D6A2B169-F6DB-5BCE-83C9-7CD4A10C5BE9-GENID-1-12-1-26-1-1-9-1-5-1-10-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,12 @@ + + + + + +Changing the cryptographic strength

    To change the cryptographic strength simply replace the cryptography.dll file, located in <your-SDK-path>\epoc32\release\<target>\<variant>, with a version of the DLL that has the required strength. There are two crypto DLLs available for selection, see Weak and strong cryptography.

    So, for example, if you wanted to increase the strength of cryptography.dll in say <your-SDK-path>\epoc32\release\wins\urel to strong_cryptography.dll, then you would do this as follows:

    • Get a copy of strong_cryptography.dll from <your-SDK-path>\src\generic\security\crypto\import\bin\wins\urel

    • Paste this into <your-SDK-path>\epoc32\release\wins\urel

    • Rename the copied strong_cryptography.dll to cryptography.dll

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D6A2B169-F6DB-5BCE-83C9-7CD4A10C5BE9.dita --- a/Symbian3/PDK/Source/GUID-D6A2B169-F6DB-5BCE-83C9-7CD4A10C5BE9.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Changing the cryptographic strength

    To change the cryptographic strength simply replace the cryptography.dll file, located in <your-SDK-path>\epoc32\release\<target>\<variant>, with a version of the DLL that has the required strength. There are two crypto DLLs available for selection, see Weak and strong cryptography.

    So, for example, if you wanted to increase the strength of cryptography.dll in say <your-SDK-path>\epoc32\release\wins\urel to strong_cryptography.dll, then you would do this as follows:

    • Get a copy of strong_cryptography.dll from <your-SDK-path>\src\generic\security\crypto\import\bin\wins\urel

    • Paste this into <your-SDK-path>\epoc32\release\wins\urel

    • Rename the copied strong_cryptography.dll to cryptography.dll

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D6B1B658-0582-511A-8583-758F9338E5CB-GENID-1-12-1-26-1-1-11-1-1-6-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-D6B1B658-0582-511A-8583-758F9338E5CB-GENID-1-12-1-26-1-1-11-1-1-6-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,99 @@ + + + + + +Secure +stream encryption -- guide/HowTo +

    This document describes secure stream encryption and its use (with the Cryptography API).

    +
      +
    • What is secure stream encryption?

    • +
    • What is secure stream encryption used for?

    • +
    • How do I use the secure stream encryption API?

        +
      • Encrypting a stream

      • +
      • Decrypting a stream

      • +
      • Handling multiple elements

      • +
      • Storing encryption data

      • +
    • +
    • Example +code

    • +
    +
    What is secure +stream encryption?

    Secure stream encryption provides subclasses +of RReadStream, RWriteStream and CStreamStore that +allow transparent access to encrypted streams and stores. It is implemented +in terms of PBE (Password +Based Encryption) -- that is, PBE does most of the work, the stream +encryption classes are just wrappers that call PBE. The word "secure" refers +to the fact that it uses well-known cryptographic algorithms.

    +
    What is secure +stream encryption used for?

    Secure stream encryption is used for +example:

      +
    • to password protect +a database file

    • +
    • to store contacts encrypted +on a mobile phone.

    • +
    +
    How do I use +the secure stream encryption API?

    Encrypting +a stream

      +
    • An encryption object +(i.e., a CPBEncryptElement or CPBEncryptSet object) +is necessary to allow the password +based encryption of elements or multiple elements. Objects of this +type contain the encryption key with its encryption data (i.e. password, cipher, +salt, IV, iterations). Note that encryption objects can be recreated at a +later stage from existing encryption data (see Storing +encryption data)

    • +
    • An RWriteStream object +(such as an RFileWriteStream, or RStoreWriteStream object) +representing a target stream needs to be created in order to write the stream +to a file or store

    • +
    • To support the encryption, +an REncryptStream object is required, which forms an encryption +filter or layer over the RWriteStream object.

    • +
    • Data can now be encrypted +as it is externalized through the REncryptStream to the stream +represented by the RWriteStream object.

    • +

    Decrypting a stream

    Reading +from an encrypted stream is a similar process to that of writing to one.

      +
    • An encryption object +(i.e., a CPBEncryptElement or a CPBEncryptSet object) +is needed to allow the password +based decryption of elements or multiple elements.

    • +
    • An RReadStream object +(such as an RFileReadStream, or RStoreReadStream object) +needs to be created to read the stream from a file or store.

    • +
    • An RDecryptStream object +is needed to form an encryption wrapper around the existing RReadStream object.

    • +
    • The encrypted data is +internalized from the stream represented by the RReadStream object +by way of the RDecryptStream object.

    • +

    Handling multiple +elements

    CPBEncryptElement is good +for handling individual elements, but for encrypting/decrypting information +with multiple, independent elements it is advisable to use CPBEncryptSet; +for instance, if you wished to store contacts encrypted on a mobile phone.

    When +you create a CPBEncryptSet object a master key is generated +for you. This master key, which is encrypted with the password provided by +the user of the class, enables the encryption/decryption of individual elements. +The password may be changed by using the CPBEncryptSet::ChangePasswordL() function, +which re-encrypts the master key with the new password.

    Storing +encryption data

    In order to decrypt any information previously +encrypted with a CPBEncryptElement or CPBEncryptSet object, +you must store its encryption data along with it. Externalizing the CPBEncryptionData object +will achieve this; for example:

    writeStream << encryption->EncryptionData();

    where writeStream is a RFileWriteStream object, +and encryption is a CPBEncryptElement object. Failure to +do this will result in the permanent loss of the encrypted information. See Secure stream example code.

    +
    Note

    The +Secure Store APIs REncryptStream and RDecryptStream currently +support both the old CSecurityBase methods and the new PBE-based +methods. In the near future, the old methods will be marked as officially +deprecated.

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D6B1B658-0582-511A-8583-758F9338E5CB-GENID-1-12-1-26-1-1-9-1-9-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-D6B1B658-0582-511A-8583-758F9338E5CB-GENID-1-12-1-26-1-1-9-1-9-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,99 @@ + + + + + +Secure +stream encryption -- guide/HowTo +

    This document describes secure stream encryption and its use (with the Cryptography API).

    +
      +
    • What is secure stream encryption?

    • +
    • What is secure stream encryption used for?

    • +
    • How do I use the secure stream encryption API?

        +
      • Encrypting a stream

      • +
      • Decrypting a stream

      • +
      • Handling multiple elements

      • +
      • Storing encryption data

      • +
    • +
    • Example +code

    • +
    +
    What is secure +stream encryption?

    Secure stream encryption provides subclasses +of RReadStream, RWriteStream and CStreamStore that +allow transparent access to encrypted streams and stores. It is implemented +in terms of PBE (Password +Based Encryption) -- that is, PBE does most of the work, the stream +encryption classes are just wrappers that call PBE. The word "secure" refers +to the fact that it uses well-known cryptographic algorithms.

    +
    What is secure +stream encryption used for?

    Secure stream encryption is used for +example:

      +
    • to password protect +a database file

    • +
    • to store contacts encrypted +on a mobile phone.

    • +
    +
    How do I use +the secure stream encryption API?

    Encrypting +a stream

      +
    • An encryption object +(i.e., a CPBEncryptElement or CPBEncryptSet object) +is necessary to allow the password +based encryption of elements or multiple elements. Objects of this +type contain the encryption key with its encryption data (i.e. password, cipher, +salt, IV, iterations). Note that encryption objects can be recreated at a +later stage from existing encryption data (see Storing +encryption data)

    • +
    • An RWriteStream object +(such as an RFileWriteStream, or RStoreWriteStream object) +representing a target stream needs to be created in order to write the stream +to a file or store

    • +
    • To support the encryption, +an REncryptStream object is required, which forms an encryption +filter or layer over the RWriteStream object.

    • +
    • Data can now be encrypted +as it is externalized through the REncryptStream to the stream +represented by the RWriteStream object.

    • +

    Decrypting a stream

    Reading +from an encrypted stream is a similar process to that of writing to one.

      +
    • An encryption object +(i.e., a CPBEncryptElement or a CPBEncryptSet object) +is needed to allow the password +based decryption of elements or multiple elements.

    • +
    • An RReadStream object +(such as an RFileReadStream, or RStoreReadStream object) +needs to be created to read the stream from a file or store.

    • +
    • An RDecryptStream object +is needed to form an encryption wrapper around the existing RReadStream object.

    • +
    • The encrypted data is +internalized from the stream represented by the RReadStream object +by way of the RDecryptStream object.

    • +

    Handling multiple +elements

    CPBEncryptElement is good +for handling individual elements, but for encrypting/decrypting information +with multiple, independent elements it is advisable to use CPBEncryptSet; +for instance, if you wished to store contacts encrypted on a mobile phone.

    When +you create a CPBEncryptSet object a master key is generated +for you. This master key, which is encrypted with the password provided by +the user of the class, enables the encryption/decryption of individual elements. +The password may be changed by using the CPBEncryptSet::ChangePasswordL() function, +which re-encrypts the master key with the new password.

    Storing +encryption data

    In order to decrypt any information previously +encrypted with a CPBEncryptElement or CPBEncryptSet object, +you must store its encryption data along with it. Externalizing the CPBEncryptionData object +will achieve this; for example:

    writeStream << encryption->EncryptionData();

    where writeStream is a RFileWriteStream object, +and encryption is a CPBEncryptElement object. Failure to +do this will result in the permanent loss of the encrypted information. See Secure stream example code.

    +
    Note

    The +Secure Store APIs REncryptStream and RDecryptStream currently +support both the old CSecurityBase methods and the new PBE-based +methods. In the near future, the old methods will be marked as officially +deprecated.

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D6B1B658-0582-511A-8583-758F9338E5CB.dita --- a/Symbian3/PDK/Source/GUID-D6B1B658-0582-511A-8583-758F9338E5CB.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ - - - - - -Secure -stream encryption -- guide/HowTo -

    This document describes secure stream encryption and its use (with the Cryptography API).

    -
      -
    • What is secure stream encryption?

    • -
    • What is secure stream encryption used for?

    • -
    • How do I use the secure stream encryption API?

        -
      • Encrypting a stream

      • -
      • Decrypting a stream

      • -
      • Handling multiple elements

      • -
      • Storing encryption data

      • -
    • -
    • Example -code

    • -
    -
    What is secure -stream encryption?

    Secure stream encryption provides subclasses -of RReadStream, RWriteStream and CStreamStore that -allow transparent access to encrypted streams and stores. It is implemented -in terms of PBE (Password -Based Encryption) -- that is, PBE does most of the work, the stream -encryption classes are just wrappers that call PBE. The word "secure" refers -to the fact that it uses well-known cryptographic algorithms.

    -
    What is secure -stream encryption used for?

    Secure stream encryption is used for -example:

      -
    • to password protect -a database file

    • -
    • to store contacts encrypted -on a mobile phone.

    • -
    -
    How do I use -the secure stream encryption API?

    Encrypting -a stream

      -
    • An encryption object -(i.e., a CPBEncryptElement or CPBEncryptSet object) -is necessary to allow the password -based encryption of elements or multiple elements. Objects of this -type contain the encryption key with its encryption data (i.e. password, cipher, -salt, IV, iterations). Note that encryption objects can be recreated at a -later stage from existing encryption data (see Storing -encryption data)

    • -
    • An RWriteStream object -(such as an RFileWriteStream, or RStoreWriteStream object) -representing a target stream needs to be created in order to write the stream -to a file or store

    • -
    • To support the encryption, -an REncryptStream object is required, which forms an encryption -filter or layer over the RWriteStream object.

    • -
    • Data can now be encrypted -as it is externalized through the REncryptStream to the stream -represented by the RWriteStream object.

    • -

    Decrypting a stream

    Reading -from an encrypted stream is a similar process to that of writing to one.

      -
    • An encryption object -(i.e., a CPBEncryptElement or a CPBEncryptSet object) -is needed to allow the password -based decryption of elements or multiple elements.

    • -
    • An RReadStream object -(such as an RFileReadStream, or RStoreReadStream object) -needs to be created to read the stream from a file or store.

    • -
    • An RDecryptStream object -is needed to form an encryption wrapper around the existing RReadStream object.

    • -
    • The encrypted data is -internalized from the stream represented by the RReadStream object -by way of the RDecryptStream object.

    • -

    Handling multiple -elements

    CPBEncryptElement is good -for handling individual elements, but for encrypting/decrypting information -with multiple, independent elements it is advisable to use CPBEncryptSet; -for instance, if you wished to store contacts encrypted on a mobile phone.

    When -you create a CPBEncryptSet object a master key is generated -for you. This master key, which is encrypted with the password provided by -the user of the class, enables the encryption/decryption of individual elements. -The password may be changed by using the CPBEncryptSet::ChangePasswordL() function, -which re-encrypts the master key with the new password.

    Storing -encryption data

    In order to decrypt any information previously -encrypted with a CPBEncryptElement or CPBEncryptSet object, -you must store its encryption data along with it. Externalizing the CPBEncryptionData object -will achieve this; for example:

    writeStream << encryption->EncryptionData();

    where writeStream is a RFileWriteStream object, -and encryption is a CPBEncryptElement object. Failure to -do this will result in the permanent loss of the encrypted information. See Secure stream example code.

    -
    Note

    The -Secure Store APIs REncryptStream and RDecryptStream currently -support both the old CSecurityBase methods and the new PBE-based -methods. In the near future, the old methods will be marked as officially -deprecated.

    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D6B332EB-D9D7-5598-98C7-E73164A2057D_d0e354088_href.jpg Binary file Symbian3/PDK/Source/GUID-D6B332EB-D9D7-5598-98C7-E73164A2057D_d0e354088_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D6B332EB-D9D7-5598-98C7-E73164A2057D_d0e360009_href.jpg Binary file Symbian3/PDK/Source/GUID-D6B332EB-D9D7-5598-98C7-E73164A2057D_d0e360009_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D6BB18FE-289D-546F-97DC-389B57B5B2E3.dita --- a/Symbian3/PDK/Source/GUID-D6BB18FE-289D-546F-97DC-389B57B5B2E3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D6BB18FE-289D-546F-97DC-389B57B5B2E3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -22,7 +22,7 @@ Frameworks collection.

    Multimedia APIs and Frameworks Architectural Overview - +
    Description

    The Multimedia Framework overview details the architecture of the components that constitutes the Multimedia APIs and diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D6BE4647-25A8-5F88-9137-F4882AF22BCF.dita --- a/Symbian3/PDK/Source/GUID-D6BE4647-25A8-5F88-9137-F4882AF22BCF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D6BE4647-25A8-5F88-9137-F4882AF22BCF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Setting the Text Cursor

    A text cursor (TTextCursor) is a rectangular area which can optionally be set to flash. It has a height, width, ascent and origin, illustrated below.

    Text cursor -

    The text cursor is positioned on screen by specifying an offset between its origin and the origin of a window. It can be added to a window group using RWindowGroup::SetTextCursor().

    Two predefined types of text cursors are provided: solid and hollow rectangles. In addition bitmaps can be used as text cursors. Custom text cursors are added to the Window Server using RWsSession::SetCustomTextCursor(). They have a unique identifier, which is used by RWindowGroup::SetTextCursor(). They are clipped if too large and their vertical alignment can be adjusted.

    Sprites and Cursors \ No newline at end of file +

    The text cursor is positioned on screen by specifying an offset between its origin and the origin of a window. It can be added to a window group using RWindowGroup::SetTextCursor().

    Two predefined types of text cursors are provided: solid and hollow rectangles. In addition bitmaps can be used as text cursors. Custom text cursors are added to the Window Server using RWsSession::SetCustomTextCursor(). They have a unique identifier, which is used by RWindowGroup::SetTextCursor(). They are clipped if too large and their vertical alignment can be adjusted.

    Sprites and Cursors \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D6C2202C-778C-558A-97AA-649CD6DB5E87.dita --- a/Symbian3/PDK/Source/GUID-D6C2202C-778C-558A-97AA-649CD6DB5E87.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D6C2202C-778C-558A-97AA-649CD6DB5E87.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,7 +12,7 @@ ROFS File SystemDescribes the file system to access code on non-XIP (eXecuted In Place) media. -
    Introduction

    ROFS +

    Introduction

    ROFS stands for Read Only File System and is used for accessing code on media that cannot be executed on that media (otherwise known as non-execute in place storage) e.g. NAND flash.

    It is also used by the composite file system diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D7179664-C442-5253-9925-994CA0C63B50_d0e577831_href.png Binary file Symbian3/PDK/Source/GUID-D7179664-C442-5253-9925-994CA0C63B50_d0e577831_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D7179664-C442-5253-9925-994CA0C63B50_d0e627119_href.png Binary file Symbian3/PDK/Source/GUID-D7179664-C442-5253-9925-994CA0C63B50_d0e627119_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D729593E-C131-5F67-BF0C-6C9AD847C9F9_d0e534745_href.png Binary file Symbian3/PDK/Source/GUID-D729593E-C131-5F67-BF0C-6C9AD847C9F9_d0e534745_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D729593E-C131-5F67-BF0C-6C9AD847C9F9_d0e542205_href.png Binary file Symbian3/PDK/Source/GUID-D729593E-C131-5F67-BF0C-6C9AD847C9F9_d0e542205_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D72A47FE-23D2-4AD1-92B9-53DD9B64733F-GENID-1-12-1-18-1-1-7-1-6-1-5-1-5-1-4-1-5-1.dita --- a/Symbian3/PDK/Source/GUID-D72A47FE-23D2-4AD1-92B9-53DD9B64733F-GENID-1-12-1-18-1-1-7-1-6-1-5-1-5-1-4-1-5-1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,142 +0,0 @@ - - - - - -Creating -a Notifier ECOM Plug-inTo use the Privacy Query and Notification API to create a notifier -a licensee must secondly create a notifier ECOM plug-in. -

    Exporting a factory method

    The notifier -is implemented as an ECOM plug-in and has typical ECOM entry point methods. -The following code example shows how the CPosPrivacyNotifier::NotifierBase() -method is used to return the MEikSrvNotifierBase2 pointer -required by the Extended Notifier Framework.

    The UID specified -in IMPLEMENTATION_PROXY_ENTRY is the constant KPosPrivacyNotifierImplUid as -defined in EPos_PrivacyNotifier.hrh.

    #include <e32base.h> -#include <eiknotapi.h> -#include <ImplementationProxy.h> -#include <EPos_PrivacyNotifier.hrh> -#include "CMyPrivacyNotifier.h" - -// Creates the notifier. Used by the NotifierArray() factory method. -LOCAL_C void CreateNotifiersL(CArrayPtrFlat<MEikSrvNotifierBase2>* aNotifiers) - { - CMyPrivacyNotifier* notifier = CMyPrivacyNotifier::NewLC(); - aNotifiers->AppendL(notifier->NotifierBase()); - CleanupStack::Pop(notifier); // Do not destroy - } -// Notifier entry point. Note that the factory method must not leave -LOCAL_C CArrayPtr<MEikSrvNotifierBase2>* NotifierArray() - { - CArrayPtrFlat<MEikSrvNotifierBase2>* notifiers = - new CArrayPtrFlat<MEikSrvNotifierBase2>(1); - if (notifiers) - { - TRAPD(err, CreateNotifiersL(notifiers)); - if (err) - { // release any notifiers we have created - TInt count = notifiers->Count(); - while (--count >= 0) - { - (*notifiers)[count]->Release(); - } - delete notifiers; - notifiers = NULL; - } - } - return notifiers; - } - -const TImplementationProxy KPosImplTable[] = - { - IMPLEMENTATION_PROXY_ENTRY(KPosPrivacyNotifierImplUid, NotifierArray) - }; - -EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) - { - aTableCount = sizeof(KPosImplTable) / sizeof(TImplementationProxy); - - return KPosImplTable; - }
    -
    Defining the ECOM resource file

    The following is -an example ECOM resource file for a Privacy Q&N Notifier:

    #include <RegistryInfo.rh> -#include <Uikon.hrh> -#include <EPos_PrivacyNotifier.hrh> - - -// RESOURCE DEFINITIONS -// ----------------------------------------------------------------------------- -// -// r_registry -// ECOM registry information for Privacy UI -// -// ----------------------------------------------------------------------------- -// -RESOURCE REGISTRY_INFO r_registry - { - dll_uid = 0x01234123; - interfaces = - { - INTERFACE_INFO - { - interface_uid = KUikonUidPluginInterfaceNotifiers; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = KPosPrivacyNotifierImplUid; - version_no = 1; - display_name = "Privacy UI"; - } - }; - } - }; - }

    The most important points about this file are:

      -
    • dll_uid is the UID of the notifier DLL. This should be the same as -specified in the MMP file (see below).

    • -
    • interface_uid is the UID of the MEikSrvNotifierBase2 interface. -This should be set to the constant KUikonUidPluginInterfaceNotifiers defined -in Uikon.hrh.

    • -
    • implementation_uid is the notifier implementation UID. This UID is -defined as the constant KPosPrivacyNotifierImplUid in EPos_PrivacyNotifier.hrh.

    • -
    -
    Defining the MMP file

    The following is an example -MMP file for a Privacy Q&N Notifier:

    TARGET myprivnot.dll -TARGETTYPE PLUGIN -UID 0x10009D8D 0x01234123 // Notifier type uid = 0x10009D8D -VENDORID VID_DEFAULTCAPABILITY ProtServ TrustedUI -SOURCEPATH ..\src -SOURCE MyPrivacyNotifierMain.cpp -SOURCE CMyPrivacyNotifier.cpp -START RESOURCE PrivacyNotifier.rss -TARGET myprivnot.rsc -END -SYSTEMINCLUDE \Epoc32\Include -SYSTEMINCLUDE \Epoc32\Include\ECom -SYSTEMINCLUDE \Epoc32\Include\lbs -LIBRARY euser.lib -LIBRARY eposprvqnif.lib -LIBRARY eposprvtyp.lib -LIBRARY bafl.lib -

    The most important points about this file are:

      -
    • The target type is PLUGIN because the notifier is -implemented as an ECOM plug-in.

    • -
    • The second UID is 0x10009D8D to identify the DLL as -an ECOM plug-in.

    • -
    • The third UID is the DLL UID and is allocated by Symbian. Note that -this is not the same as the implementation UID specified in the ECOM resource -file.

    • -
    • \epoc32\include\lbs is included in order to find -the Privacy Query and Notification API header files.

    • -
    • eposprvqnif.lib is included to link against the -Privacy Query and Notification API library.

    • -
    • The notifier must have the ProtServ and TrustedUI capabilities -as required by the Extended Notifier Framework.

    • -
    - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D72A47FE-23D2-4AD1-92B9-53DD9B64733F-GENID-1-12-1-18-1-1-7-1-6-1-5-1-5-1-5-1-4-1.dita --- a/Symbian3/PDK/Source/GUID-D72A47FE-23D2-4AD1-92B9-53DD9B64733F-GENID-1-12-1-18-1-1-7-1-6-1-5-1-5-1-5-1-4-1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,142 +0,0 @@ - - - - - -Creating -a Notifier ECOM Plug-inTo use the Privacy Query and Notification API to create a notifier -a licensee must secondly create a notifier ECOM plug-in. -
    Exporting a factory method

    The notifier -is implemented as an ECOM plug-in and has typical ECOM entry point methods. -The following code example shows how the CPosPrivacyNotifier::NotifierBase() -method is used to return the MEikSrvNotifierBase2 pointer -required by the Extended Notifier Framework.

    The UID specified -in IMPLEMENTATION_PROXY_ENTRY is the constant KPosPrivacyNotifierImplUid as -defined in EPos_PrivacyNotifier.hrh.

    #include <e32base.h> -#include <eiknotapi.h> -#include <ImplementationProxy.h> -#include <EPos_PrivacyNotifier.hrh> -#include "CMyPrivacyNotifier.h" - -// Creates the notifier. Used by the NotifierArray() factory method. -LOCAL_C void CreateNotifiersL(CArrayPtrFlat<MEikSrvNotifierBase2>* aNotifiers) - { - CMyPrivacyNotifier* notifier = CMyPrivacyNotifier::NewLC(); - aNotifiers->AppendL(notifier->NotifierBase()); - CleanupStack::Pop(notifier); // Do not destroy - } -// Notifier entry point. Note that the factory method must not leave -LOCAL_C CArrayPtr<MEikSrvNotifierBase2>* NotifierArray() - { - CArrayPtrFlat<MEikSrvNotifierBase2>* notifiers = - new CArrayPtrFlat<MEikSrvNotifierBase2>(1); - if (notifiers) - { - TRAPD(err, CreateNotifiersL(notifiers)); - if (err) - { // release any notifiers we have created - TInt count = notifiers->Count(); - while (--count >= 0) - { - (*notifiers)[count]->Release(); - } - delete notifiers; - notifiers = NULL; - } - } - return notifiers; - } - -const TImplementationProxy KPosImplTable[] = - { - IMPLEMENTATION_PROXY_ENTRY(KPosPrivacyNotifierImplUid, NotifierArray) - }; - -EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) - { - aTableCount = sizeof(KPosImplTable) / sizeof(TImplementationProxy); - - return KPosImplTable; - }
    -
    Defining the ECOM resource file

    The following is -an example ECOM resource file for a Privacy Q&N Notifier:

    #include <RegistryInfo.rh> -#include <Uikon.hrh> -#include <EPos_PrivacyNotifier.hrh> - - -// RESOURCE DEFINITIONS -// ----------------------------------------------------------------------------- -// -// r_registry -// ECOM registry information for Privacy UI -// -// ----------------------------------------------------------------------------- -// -RESOURCE REGISTRY_INFO r_registry - { - dll_uid = 0x01234123; - interfaces = - { - INTERFACE_INFO - { - interface_uid = KUikonUidPluginInterfaceNotifiers; - implementations = - { - IMPLEMENTATION_INFO - { - implementation_uid = KPosPrivacyNotifierImplUid; - version_no = 1; - display_name = "Privacy UI"; - } - }; - } - }; - }

    The most important points about this file are:

      -
    • dll_uid is the UID of the notifier DLL. This should be the same as -specified in the MMP file (see below).

    • -
    • interface_uid is the UID of the MEikSrvNotifierBase2 interface. -This should be set to the constant KUikonUidPluginInterfaceNotifiers defined -in Uikon.hrh.

    • -
    • implementation_uid is the notifier implementation UID. This UID is -defined as the constant KPosPrivacyNotifierImplUid in EPos_PrivacyNotifier.hrh.

    • -
    -
    Defining the MMP file

    The following is an example -MMP file for a Privacy Q&N Notifier:

    TARGET myprivnot.dll -TARGETTYPE PLUGIN -UID 0x10009D8D 0x01234123 // Notifier type uid = 0x10009D8D -VENDORID VID_DEFAULTCAPABILITY ProtServ TrustedUI -SOURCEPATH ..\src -SOURCE MyPrivacyNotifierMain.cpp -SOURCE CMyPrivacyNotifier.cpp -START RESOURCE PrivacyNotifier.rss -TARGET myprivnot.rsc -END -SYSTEMINCLUDE \Epoc32\Include -SYSTEMINCLUDE \Epoc32\Include\ECom -SYSTEMINCLUDE \Epoc32\Include\lbs -LIBRARY euser.lib -LIBRARY eposprvqnif.lib -LIBRARY eposprvtyp.lib -LIBRARY bafl.lib -

    The most important points about this file are:

      -
    • The target type is PLUGIN because the notifier is -implemented as an ECOM plug-in.

    • -
    • The second UID is 0x10009D8D to identify the DLL as -an ECOM plug-in.

    • -
    • The third UID is the DLL UID and is allocated by Symbian. Note that -this is not the same as the implementation UID specified in the ECOM resource -file.

    • -
    • \epoc32\include\lbs is included in order to find -the Privacy Query and Notification API header files.

    • -
    • eposprvqnif.lib is included to link against the -Privacy Query and Notification API library.

    • -
    • The notifier must have the ProtServ and TrustedUI capabilities -as required by the Extended Notifier Framework.

    • -
    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D72A47FE-23D2-4AD1-92B9-53DD9B64733F-GENID-1-12-1-19-1-1-7-1-6-1-5-1-5-1-4-1-5-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-D72A47FE-23D2-4AD1-92B9-53DD9B64733F-GENID-1-12-1-19-1-1-7-1-6-1-5-1-5-1-4-1-5-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,142 @@ + + + + + +Creating +a Notifier ECOM Plug-inTo use the Privacy Query and Notification API to create a notifier +a licensee must secondly create a notifier ECOM plug-in. +
    Exporting a factory method

    The notifier +is implemented as an ECOM plug-in and has typical ECOM entry point methods. +The following code example shows how the CPosPrivacyNotifier::NotifierBase() +method is used to return the MEikSrvNotifierBase2 pointer +required by the Extended Notifier Framework.

    The UID specified +in IMPLEMENTATION_PROXY_ENTRY is the constant KPosPrivacyNotifierImplUid as +defined in EPos_PrivacyNotifier.hrh.

    #include <e32base.h> +#include <eiknotapi.h> +#include <ImplementationProxy.h> +#include <EPos_PrivacyNotifier.hrh> +#include "CMyPrivacyNotifier.h" + +// Creates the notifier. Used by the NotifierArray() factory method. +LOCAL_C void CreateNotifiersL(CArrayPtrFlat<MEikSrvNotifierBase2>* aNotifiers) + { + CMyPrivacyNotifier* notifier = CMyPrivacyNotifier::NewLC(); + aNotifiers->AppendL(notifier->NotifierBase()); + CleanupStack::Pop(notifier); // Do not destroy + } +// Notifier entry point. Note that the factory method must not leave +LOCAL_C CArrayPtr<MEikSrvNotifierBase2>* NotifierArray() + { + CArrayPtrFlat<MEikSrvNotifierBase2>* notifiers = + new CArrayPtrFlat<MEikSrvNotifierBase2>(1); + if (notifiers) + { + TRAPD(err, CreateNotifiersL(notifiers)); + if (err) + { // release any notifiers we have created + TInt count = notifiers->Count(); + while (--count >= 0) + { + (*notifiers)[count]->Release(); + } + delete notifiers; + notifiers = NULL; + } + } + return notifiers; + } + +const TImplementationProxy KPosImplTable[] = + { + IMPLEMENTATION_PROXY_ENTRY(KPosPrivacyNotifierImplUid, NotifierArray) + }; + +EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) + { + aTableCount = sizeof(KPosImplTable) / sizeof(TImplementationProxy); + + return KPosImplTable; + }
    +
    Defining the ECOM resource file

    The following is +an example ECOM resource file for a Privacy Q&N Notifier:

    #include <RegistryInfo.rh> +#include <Uikon.hrh> +#include <EPos_PrivacyNotifier.hrh> + + +// RESOURCE DEFINITIONS +// ----------------------------------------------------------------------------- +// +// r_registry +// ECOM registry information for Privacy UI +// +// ----------------------------------------------------------------------------- +// +RESOURCE REGISTRY_INFO r_registry + { + dll_uid = 0x01234123; + interfaces = + { + INTERFACE_INFO + { + interface_uid = KUikonUidPluginInterfaceNotifiers; + implementations = + { + IMPLEMENTATION_INFO + { + implementation_uid = KPosPrivacyNotifierImplUid; + version_no = 1; + display_name = "Privacy UI"; + } + }; + } + }; + }

    The most important points about this file are:

      +
    • dll_uid is the UID of the notifier DLL. This should be the same as +specified in the MMP file (see below).

    • +
    • interface_uid is the UID of the MEikSrvNotifierBase2 interface. +This should be set to the constant KUikonUidPluginInterfaceNotifiers defined +in Uikon.hrh.

    • +
    • implementation_uid is the notifier implementation UID. This UID is +defined as the constant KPosPrivacyNotifierImplUid in EPos_PrivacyNotifier.hrh.

    • +
    +
    Defining the MMP file

    The following is an example +MMP file for a Privacy Q&N Notifier:

    TARGET myprivnot.dll +TARGETTYPE PLUGIN +UID 0x10009D8D 0x01234123 // Notifier type uid = 0x10009D8D +VENDORID VID_DEFAULTCAPABILITY ProtServ TrustedUI +SOURCEPATH ..\src +SOURCE MyPrivacyNotifierMain.cpp +SOURCE CMyPrivacyNotifier.cpp +START RESOURCE PrivacyNotifier.rss +TARGET myprivnot.rsc +END +SYSTEMINCLUDE \Epoc32\Include +SYSTEMINCLUDE \Epoc32\Include\ECom +SYSTEMINCLUDE \Epoc32\Include\lbs +LIBRARY euser.lib +LIBRARY eposprvqnif.lib +LIBRARY eposprvtyp.lib +LIBRARY bafl.lib +

    The most important points about this file are:

      +
    • The target type is PLUGIN because the notifier is +implemented as an ECOM plug-in.

    • +
    • The second UID is 0x10009D8D to identify the DLL as +an ECOM plug-in.

    • +
    • The third UID is the DLL UID and is allocated by Symbian. Note that +this is not the same as the implementation UID specified in the ECOM resource +file.

    • +
    • \epoc32\include\lbs is included in order to find +the Privacy Query and Notification API header files.

    • +
    • eposprvqnif.lib is included to link against the +Privacy Query and Notification API library.

    • +
    • The notifier must have the ProtServ and TrustedUI capabilities +as required by the Extended Notifier Framework.

    • +
    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D72A47FE-23D2-4AD1-92B9-53DD9B64733F-GENID-1-12-1-19-1-1-7-1-6-1-5-1-5-1-5-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-D72A47FE-23D2-4AD1-92B9-53DD9B64733F-GENID-1-12-1-19-1-1-7-1-6-1-5-1-5-1-5-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,142 @@ + + + + + +Creating +a Notifier ECOM Plug-inTo use the Privacy Query and Notification API to create a notifier +a licensee must secondly create a notifier ECOM plug-in. +
    Exporting a factory method

    The notifier +is implemented as an ECOM plug-in and has typical ECOM entry point methods. +The following code example shows how the CPosPrivacyNotifier::NotifierBase() +method is used to return the MEikSrvNotifierBase2 pointer +required by the Extended Notifier Framework.

    The UID specified +in IMPLEMENTATION_PROXY_ENTRY is the constant KPosPrivacyNotifierImplUid as +defined in EPos_PrivacyNotifier.hrh.

    #include <e32base.h> +#include <eiknotapi.h> +#include <ImplementationProxy.h> +#include <EPos_PrivacyNotifier.hrh> +#include "CMyPrivacyNotifier.h" + +// Creates the notifier. Used by the NotifierArray() factory method. +LOCAL_C void CreateNotifiersL(CArrayPtrFlat<MEikSrvNotifierBase2>* aNotifiers) + { + CMyPrivacyNotifier* notifier = CMyPrivacyNotifier::NewLC(); + aNotifiers->AppendL(notifier->NotifierBase()); + CleanupStack::Pop(notifier); // Do not destroy + } +// Notifier entry point. Note that the factory method must not leave +LOCAL_C CArrayPtr<MEikSrvNotifierBase2>* NotifierArray() + { + CArrayPtrFlat<MEikSrvNotifierBase2>* notifiers = + new CArrayPtrFlat<MEikSrvNotifierBase2>(1); + if (notifiers) + { + TRAPD(err, CreateNotifiersL(notifiers)); + if (err) + { // release any notifiers we have created + TInt count = notifiers->Count(); + while (--count >= 0) + { + (*notifiers)[count]->Release(); + } + delete notifiers; + notifiers = NULL; + } + } + return notifiers; + } + +const TImplementationProxy KPosImplTable[] = + { + IMPLEMENTATION_PROXY_ENTRY(KPosPrivacyNotifierImplUid, NotifierArray) + }; + +EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount) + { + aTableCount = sizeof(KPosImplTable) / sizeof(TImplementationProxy); + + return KPosImplTable; + }
    +
    Defining the ECOM resource file

    The following is +an example ECOM resource file for a Privacy Q&N Notifier:

    #include <RegistryInfo.rh> +#include <Uikon.hrh> +#include <EPos_PrivacyNotifier.hrh> + + +// RESOURCE DEFINITIONS +// ----------------------------------------------------------------------------- +// +// r_registry +// ECOM registry information for Privacy UI +// +// ----------------------------------------------------------------------------- +// +RESOURCE REGISTRY_INFO r_registry + { + dll_uid = 0x01234123; + interfaces = + { + INTERFACE_INFO + { + interface_uid = KUikonUidPluginInterfaceNotifiers; + implementations = + { + IMPLEMENTATION_INFO + { + implementation_uid = KPosPrivacyNotifierImplUid; + version_no = 1; + display_name = "Privacy UI"; + } + }; + } + }; + }

    The most important points about this file are:

      +
    • dll_uid is the UID of the notifier DLL. This should be the same as +specified in the MMP file (see below).

    • +
    • interface_uid is the UID of the MEikSrvNotifierBase2 interface. +This should be set to the constant KUikonUidPluginInterfaceNotifiers defined +in Uikon.hrh.

    • +
    • implementation_uid is the notifier implementation UID. This UID is +defined as the constant KPosPrivacyNotifierImplUid in EPos_PrivacyNotifier.hrh.

    • +
    +
    Defining the MMP file

    The following is an example +MMP file for a Privacy Q&N Notifier:

    TARGET myprivnot.dll +TARGETTYPE PLUGIN +UID 0x10009D8D 0x01234123 // Notifier type uid = 0x10009D8D +VENDORID VID_DEFAULTCAPABILITY ProtServ TrustedUI +SOURCEPATH ..\src +SOURCE MyPrivacyNotifierMain.cpp +SOURCE CMyPrivacyNotifier.cpp +START RESOURCE PrivacyNotifier.rss +TARGET myprivnot.rsc +END +SYSTEMINCLUDE \Epoc32\Include +SYSTEMINCLUDE \Epoc32\Include\ECom +SYSTEMINCLUDE \Epoc32\Include\lbs +LIBRARY euser.lib +LIBRARY eposprvqnif.lib +LIBRARY eposprvtyp.lib +LIBRARY bafl.lib +

    The most important points about this file are:

      +
    • The target type is PLUGIN because the notifier is +implemented as an ECOM plug-in.

    • +
    • The second UID is 0x10009D8D to identify the DLL as +an ECOM plug-in.

    • +
    • The third UID is the DLL UID and is allocated by Symbian. Note that +this is not the same as the implementation UID specified in the ECOM resource +file.

    • +
    • \epoc32\include\lbs is included in order to find +the Privacy Query and Notification API header files.

    • +
    • eposprvqnif.lib is included to link against the +Privacy Query and Notification API library.

    • +
    • The notifier must have the ProtServ and TrustedUI capabilities +as required by the Extended Notifier Framework.

    • +
    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D74C4403-1516-4C8F-B457-98BA0F97718A_d0e86872_href.png Binary file Symbian3/PDK/Source/GUID-D74C4403-1516-4C8F-B457-98BA0F97718A_d0e86872_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D74C4403-1516-4C8F-B457-98BA0F97718A_d0e87635_href.png Binary file Symbian3/PDK/Source/GUID-D74C4403-1516-4C8F-B457-98BA0F97718A_d0e87635_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D74C4403-1516-4C8F-B457-98BA0F97718A_d0e91070_href.png Binary file Symbian3/PDK/Source/GUID-D74C4403-1516-4C8F-B457-98BA0F97718A_d0e91070_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D74C4403-1516-4C8F-B457-98BA0F97718A_d0e91833_href.png Binary file Symbian3/PDK/Source/GUID-D74C4403-1516-4C8F-B457-98BA0F97718A_d0e91833_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D754C477-DB73-56F7-A135-13E1179CBB2D_d0e642901_href.png Binary file Symbian3/PDK/Source/GUID-D754C477-DB73-56F7-A135-13E1179CBB2D_d0e642901_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D754C477-DB73-56F7-A135-13E1179CBB2D_d0e655723_href.png Binary file Symbian3/PDK/Source/GUID-D754C477-DB73-56F7-A135-13E1179CBB2D_d0e655723_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D76B1999-E118-585B-A6B4-8AE8CCCB6F8B.dita --- a/Symbian3/PDK/Source/GUID-D76B1999-E118-585B-A6B4-8AE8CCCB6F8B.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ - - - - - -paged -

    paged

    -

    Use the paged statement to specify that the executable -is code-paged. This is the same as specifying the pagedcode keyword -for an executable.

    -

    You can also mark an executable as paged using the OBY file keyword file[[HWVD]]. For more information about the file[[HWVD]] keyword, refer to the ROM Tools Guide in the Application Development -Toolkit available for download at http://developer.symbian.org.

    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D76C7759-739D-5C98-B718-7297687FE630.dita --- a/Symbian3/PDK/Source/GUID-D76C7759-739D-5C98-B718-7297687FE630.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D76C7759-739D-5C98-B718-7297687FE630.dita Fri Jul 16 17:23:46 2010 +0100 @@ -49,7 +49,7 @@ The following diagram shows how an extended bitmap that represents an icon is ultimately displayed on the screen.

    Example extended bitmap scenario - +

    This is how it works:

    1. An engine or server (the Theme Server in this example) creates an extended bitmap that stores @@ -87,7 +87,7 @@ required.

      The main participants in the extended bitmap framework, showing the dependencies - +

      Although it is not possible to have more than one extended bitmap rasterizer DLL on a device, an extended bitmap rasterizer DLL can support more than one type of proprietary data. Similarly, support for multiple data diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D7AFA78E-4B87-554E-B0A5-1AEEA98B537C_d0e39628_href.png Binary file Symbian3/PDK/Source/GUID-D7AFA78E-4B87-554E-B0A5-1AEEA98B537C_d0e39628_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D7AFA78E-4B87-554E-B0A5-1AEEA98B537C_d0e43862_href.png Binary file Symbian3/PDK/Source/GUID-D7AFA78E-4B87-554E-B0A5-1AEEA98B537C_d0e43862_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D7DF85A8-1F90-5EC8-9EA1-EB33382849B0.dita --- a/Symbian3/PDK/Source/GUID-D7DF85A8-1F90-5EC8-9EA1-EB33382849B0.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D7DF85A8-1F90-5EC8-9EA1-EB33382849B0.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,34 +1,31 @@ - - - - - -TAndRClasses: -typical ‘T’ and ‘R’ type classes -

      Description

      TAndRClasses shows -a typical ‘T’ class and a typical ‘R’ class.

      The ‘T’ type is a value -type, owning no external object.

      The ‘R’ type is a resource type; -typically this is proxy for an object owned elsewhere. In practice, the 'R' -type is a handle to a resource owned and managed by the Kernel.

      In -this example, the ‘R’ class derives from the standard Symbian platform handle -class RTimer.

      -
      Download

      Click on the following link to download -the example: TAndRClasses.zip

      Click on the following link -to download additional files: CommonFramework.zip

      Click browse TAndRClasses to view the example code.

      Click CommonFramework to view additional files.

      -
      Class summary

      RTimer TCleanupItem CleanupStack TRequestStatus

      -
      Build

      The example includes the two project files -needed for building: bld.inf and the .mmp file.

      The Symbian platform build -process describes how to build this application, which results in an -executable called:

      \epoc32\release\<target>\<urel -or udeb>\TANDRCLASSES.EXE.

      -
      Usage

      Run the executable TANDRCLASSES.EXE.

      Executables -for the emulator targets wins and winscw can -be run on your PC. Executables for ARM targets must be copied to your target -platform before being run.

      + + + + + +TAndRClasses: typical ‘T’ and ‘R’ type classes +
      Description

      TAndRClasses shows a typical ‘T’ class and a typical ‘R’ class.

      The ‘T’ +type is a value type, owning no external object.

      The ‘R’ type +is a resource type; typically this is proxy for an object owned elsewhere. +In practice, the 'R' type is a handle to a resource owned and managed +by the Kernel.

      In this example, the ‘R’ class derives from +the standard Symbian platform handle class RTimer.

      +
      Download

      Click on the following link to +download the example: TAndRClasses.zip

      Click on the following +link to download additional files: CommonFramework.zip

      Click browse TAndRClasses to view the example code.

      Click CommonFramework to view additional files.

      +
      Class summary

      RTimer TCleanupItem CleanupStack TRequestStatus

      +
      Build

      The example includes the two project +files needed for building: bld.inf and the .mmp file.

      The Symbian platform build process +describes how to build this application, which results in an executable +called:

      \epoc32\release\<target>\<urel +or udeb>\TANDRCLASSES.EXE.

      +
      Usage

      Run the executable TANDRCLASSES.EXE.

      Executables for the emulator targets wins and winscw can be run on your PC. Executables +for ARM targets must be copied to your target platform before being +run.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D7E5FECF-0B29-5908-A163-37036DF165E1_d0e109121_href.png Binary file Symbian3/PDK/Source/GUID-D7E5FECF-0B29-5908-A163-37036DF165E1_d0e109121_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D7E5FECF-0B29-5908-A163-37036DF165E1_d0e111554_href.png Binary file Symbian3/PDK/Source/GUID-D7E5FECF-0B29-5908-A163-37036DF165E1_d0e111554_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D7F000F0-019A-486E-BB0C-C0065D08C5F6_d0e2882_href.png Binary file Symbian3/PDK/Source/GUID-D7F000F0-019A-486E-BB0C-C0065D08C5F6_d0e2882_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D7F000F0-019A-486E-BB0C-C0065D08C5F6_d0e2892_href.png Binary file Symbian3/PDK/Source/GUID-D7F000F0-019A-486E-BB0C-C0065D08C5F6_d0e2892_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D81EAF75-EF8C-4B62-8866-439E29325E8A_d0e14240_href.png Binary file Symbian3/PDK/Source/GUID-D81EAF75-EF8C-4B62-8866-439E29325E8A_d0e14240_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D81EAF75-EF8C-4B62-8866-439E29325E8A_d0e14339_href.png Binary file Symbian3/PDK/Source/GUID-D81EAF75-EF8C-4B62-8866-439E29325E8A_d0e14339_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D82FBEF6-D5F1-409E-AD8C-1CA516F8D318.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-D82FBEF6-D5F1-409E-AD8C-1CA516F8D318.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,23 @@ + + + + + +Retrieving application information from Software Component +RegistryThe Software Component Registry (SCR) is a unified registry +of native and non-native software components and applications. The +Client applications can retrieve application information from the +SCR through read-only queries. +

      Client applications retrieve information from the SCR either using +filters, or the application UID, as shown in the following +tutorials:

      +
      +Using +the Application Management Functions +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D8302B04-D850-5FA7-A1AD-F5C40CF6A1EF.dita --- a/Symbian3/PDK/Source/GUID-D8302B04-D850-5FA7-A1AD-F5C40CF6A1EF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D8302B04-D850-5FA7-A1AD-F5C40CF6A1EF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -24,7 +24,7 @@ provided by a combination of AIF and caption files, has been split into two categories:

      The diagram below shows the new file structure used to provide application information.

      - +
      • A registration file which 'points' to one of three localizable resource files provided. If the diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D84847BB-523D-5057-8F14-F6BCEECA2327_d0e228851_href.jpg Binary file Symbian3/PDK/Source/GUID-D84847BB-523D-5057-8F14-F6BCEECA2327_d0e228851_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D84847BB-523D-5057-8F14-F6BCEECA2327_d0e234849_href.jpg Binary file Symbian3/PDK/Source/GUID-D84847BB-523D-5057-8F14-F6BCEECA2327_d0e234849_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D857413A-D5A1-5F9F-A780-C980A9E0BEE0.dita --- a/Symbian3/PDK/Source/GUID-D857413A-D5A1-5F9F-A780-C980A9E0BEE0.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D857413A-D5A1-5F9F-A780-C980A9E0BEE0.dita Fri Jul 16 17:23:46 2010 +0100 @@ -60,7 +60,7 @@ implementation.

        Figure 1. The Privacy Controller API and part of the LBS subsystem. - +
    Privacy Controller startup and shutdown

    From Symbian OS v9.4 a licensee can configure @@ -153,7 +153,7 @@ of the Privacy Controller API. MLbsPrivacyObserver has a dependency on TLbsExternalRequestInfo (which is shown in more detail in Figure 3).

    Figure 2. Privacy Controller API classes and types - +

    Figure 3 shows the TLbsExternalRequestInfo and TLbsExternalRequestInfo2 classes. Either a TLbsExternalRequestInfo or TLbsExternalRequestInfo2 object reference is passed to the Privacy Controller via the MLbsPrivacyObserver::ProcessNetworkLocationRequest() function @@ -167,7 +167,7 @@ about handling large buffers.

    Figure 3. TLbsExternalRequestInfo, TLbsExternalRequestInfo2 and related types. - +

    Libraries

    The Privacy Controller API is packaged in lbsprivacycontroller.dll. A licensee Privacy Controller links to lbsprivacycontroller.lib.

    The API header files for the Privacy Controller API can be found in /epoc32/include/lbs.

    Capabilities

    A licensee Privacy Controller requires the following @@ -403,19 +403,19 @@ can respond by either accepting or rejecting the request, or by not responding at all, in which case the LBS subsystem times out the privacy request.

    Figure 4.1 Privacy verification - +

    Privacy notification request

    Figure 4.2 shows the case when the Privacy Controller receives a privacy notification request. The Privacy Controller is notified of the request and can also receive notification of position calculation updates.

    Figure 4.2. Privacy notification - +

    Privacy verification request is cancelled

    Figure 4.3 shows the case when a privacy verification request is cancelled.

    Figure 4.3. Privacy verification is cancelled - +
    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D8696B0F-01BC-5CBB-A061-6EC62186DD01-master.png Binary file Symbian3/PDK/Source/GUID-D8696B0F-01BC-5CBB-A061-6EC62186DD01-master.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D8696B0F-01BC-5CBB-A061-6EC62186DD01_d0e616300_href.png Binary file Symbian3/PDK/Source/GUID-D8696B0F-01BC-5CBB-A061-6EC62186DD01_d0e616300_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D8837969-74D0-5E17-AD42-3F10DD1FD5BF.dita --- a/Symbian3/PDK/Source/GUID-D8837969-74D0-5E17-AD42-3F10DD1FD5BF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D8837969-74D0-5E17-AD42-3F10DD1FD5BF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -121,7 +121,7 @@ to which the EXE is linked. The loader uses the version number in the import table to select the correct version of the DLL. The following flowchart shows how the loader selects the DLL from the set of possible DLLs.

    - +
  • If there are no DLLs that meet the requirements, the load fails.

  • @@ -195,7 +195,7 @@ number in RLibrary::Load(), the loader selects a version of the DLL from the set. The following flowchart shows how the loader selects the DLL from the set of possible DLLs.

    - +
  • If there are no DLLs that meet the requirements, the load fails.

  • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D8911BE6-100D-588A-8E5C-A429A72AFCDA_d0e394067_href.png Binary file Symbian3/PDK/Source/GUID-D8911BE6-100D-588A-8E5C-A429A72AFCDA_d0e394067_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D8911BE6-100D-588A-8E5C-A429A72AFCDA_d0e399920_href.png Binary file Symbian3/PDK/Source/GUID-D8911BE6-100D-588A-8E5C-A429A72AFCDA_d0e399920_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D8A3C18B-A107-5557-B882-CD6CDD0F0F1D_d0e303284_href.png Binary file Symbian3/PDK/Source/GUID-D8A3C18B-A107-5557-B882-CD6CDD0F0F1D_d0e303284_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D8A3C18B-A107-5557-B882-CD6CDD0F0F1D_d0e309276_href.png Binary file Symbian3/PDK/Source/GUID-D8A3C18B-A107-5557-B882-CD6CDD0F0F1D_d0e309276_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D8D65830-CC9D-4E9F-A206-34BB077E89E6_d0e101350_href.png Binary file Symbian3/PDK/Source/GUID-D8D65830-CC9D-4E9F-A206-34BB077E89E6_d0e101350_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D8D65830-CC9D-4E9F-A206-34BB077E89E6_d0e79751_href.png Binary file Symbian3/PDK/Source/GUID-D8D65830-CC9D-4E9F-A206-34BB077E89E6_d0e79751_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D8D65830-CC9D-4E9F-A206-34BB077E89E6_d0e83949_href.png Binary file Symbian3/PDK/Source/GUID-D8D65830-CC9D-4E9F-A206-34BB077E89E6_d0e83949_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D8D65830-CC9D-4E9F-A206-34BB077E89E6_d0e86419_href.png Binary file Symbian3/PDK/Source/GUID-D8D65830-CC9D-4E9F-A206-34BB077E89E6_d0e86419_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D8D65830-CC9D-4E9F-A206-34BB077E89E6_d0e90617_href.png Binary file Symbian3/PDK/Source/GUID-D8D65830-CC9D-4E9F-A206-34BB077E89E6_d0e90617_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D8D65830-CC9D-4E9F-A206-34BB077E89E6_d0e97271_href.png Binary file Symbian3/PDK/Source/GUID-D8D65830-CC9D-4E9F-A206-34BB077E89E6_d0e97271_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D9040B2E-C4C6-576C-A3B2-9F68E8FCE4A6.dita --- a/Symbian3/PDK/Source/GUID-D9040B2E-C4C6-576C-A3B2-9F68E8FCE4A6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D9040B2E-C4C6-576C-A3B2-9F68E8FCE4A6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,7 +9,7 @@ --> -Creating an Instance of the Bluetooth GPS PSY Configuration APIThis topic shows you how to create a new instance of the Bluetooth GPS PSY Configuration API.

    To start using the Bluetooth GPS PSY Configuration API, the client application must first create a new instance of the API. Note that the client must have the LocalServices capability to do this.

    When creating a new instance, the client can request to receive update notifications about changes to the list by implementing the MLbsBtGpsConfigObserver observer class. The client can use these update notifications to refresh its own copy of the list.

    Call CLbsBtGpsConfig::NewL(MLbsBtGpsConfigObserver&). This function takes the MLbsBtGpsConfigObserver observer interface as input. Note: If the client does not require an observer interface, the CLbsBtGpsConfig::NewL() overload can be called instead. // Create a new instance of the API +Creating an Instance of the Bluetooth GPS PSY Configuration APIThis topic shows you how to create a new instance of the Bluetooth GPS PSY Configuration API.

    To start using the Bluetooth GPS PSY Configuration API, the client application must first create a new instance of the API. Note that the client must have the LocalServices capability to do this.

    When creating a new instance, the client can request to receive update notifications about changes to the list by implementing the MLbsBtGpsConfigObserver observer class. The client can use these update notifications to refresh its own copy of the list.

    Call CLbsBtGpsConfig::NewL(MLbsBtGpsConfigObserver&). This function takes the MLbsBtGpsConfigObserver observer interface as input. Note: If the client does not require an observer interface, the CLbsBtGpsConfig::NewL() overload can be called instead. // Create a new instance of the API // that implements the observer interface iConfig = CLbsBtGpsConfig::NewL(*this); This step returns a newly constructed CLbsBtGpsConfig object. If the client does not have the required capabilities, KErrPermissionDenied is returned.

    A new instance of the Bluetooth GPS PSY Configuration API is created.

    Adding a Device to the Start of the List

    Bluetooth diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D9203CF1-E8A7-5886-BD19-BE616BEF9111_d0e275161_href.png Binary file Symbian3/PDK/Source/GUID-D9203CF1-E8A7-5886-BD19-BE616BEF9111_d0e275161_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D9203CF1-E8A7-5886-BD19-BE616BEF9111_d0e281161_href.png Binary file Symbian3/PDK/Source/GUID-D9203CF1-E8A7-5886-BD19-BE616BEF9111_d0e281161_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D9393C13-FD50-550C-B6EE-18DAAFF1F3EF_d0e232296_href.png Binary file Symbian3/PDK/Source/GUID-D9393C13-FD50-550C-B6EE-18DAAFF1F3EF_d0e232296_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D9393C13-FD50-550C-B6EE-18DAAFF1F3EF_d0e238291_href.png Binary file Symbian3/PDK/Source/GUID-D9393C13-FD50-550C-B6EE-18DAAFF1F3EF_d0e238291_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita --- a/Symbian3/PDK/Source/GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D93978BE-11A3-5CE3-B110-1DEAA5AD566C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -49,7 +49,7 @@ following diagram shows the key components in the Symbian Foundation Graphics package and some closely related components in other packages.

    Symbian^3 component architecture - +

    The key ScreenPlay components are introduced below under separate subheadings.

    Graphics Composition

    The @@ -100,14 +100,14 @@ on the S60 middleware layer, in particular on the Hitchcock component (which is in the UI Accelerator package).

    Render stage solution A - +

    Another possible solution (called solution B) is based on the DirectGDI and Graphics Resource components (which are described next), both of which have interface and adaptation layers. This solution is not full featured. Like the previous diagram, this diagram focuses on the more relevant components and does not attempt to show everything.

    Render stage solution B - +

    Both of these render stage solutions mean that existing Window Server applications can take advantage of hardware acceleration if it is available (and therefore run faster) without recompiling the code.

    ScreenPlay diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D96DECA4-99B4-5F08-8FDF-C14771EEFACD_d0e229850_href.png Binary file Symbian3/PDK/Source/GUID-D96DECA4-99B4-5F08-8FDF-C14771EEFACD_d0e229850_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D96DECA4-99B4-5F08-8FDF-C14771EEFACD_d0e235845_href.png Binary file Symbian3/PDK/Source/GUID-D96DECA4-99B4-5F08-8FDF-C14771EEFACD_d0e235845_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D96EE819-DEA9-5B1A-AA94-4AC065C73697.dita --- a/Symbian3/PDK/Source/GUID-D96EE819-DEA9-5B1A-AA94-4AC065C73697.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D96EE819-DEA9-5B1A-AA94-4AC065C73697.dita Fri Jul 16 17:23:46 2010 +0100 @@ -26,7 +26,7 @@

    The following diagram illustrates how elements are organised within the array buffer:

    - +

    This kind of array is suitable for large arrays with a high turnover of elements.

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D987BEC9-B976-5A65-B6B3-D44BC8A96430.dita --- a/Symbian3/PDK/Source/GUID-D987BEC9-B976-5A65-B6B3-D44BC8A96430.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-D987BEC9-B976-5A65-B6B3-D44BC8A96430.dita Fri Jul 16 17:23:46 2010 +0100 @@ -35,7 +35,7 @@ Hardware Resource Manager's Architectural Relationships - +

    Client APIs

    HWRM provides client APIs that can control various hardware elements. It also provides callback pointers, so that the client applications can register to receive notification on the hardware status diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D98DA21C-B0F4-5267-AF00-94B789AE302A_d0e446285_href.png Binary file Symbian3/PDK/Source/GUID-D98DA21C-B0F4-5267-AF00-94B789AE302A_d0e446285_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D98DA21C-B0F4-5267-AF00-94B789AE302A_d0e452130_href.png Binary file Symbian3/PDK/Source/GUID-D98DA21C-B0F4-5267-AF00-94B789AE302A_d0e452130_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D99BA39B-BC58-51AC-B148-0945736FFC03_d0e594638_href.jpg Binary file Symbian3/PDK/Source/GUID-D99BA39B-BC58-51AC-B148-0945736FFC03_d0e594638_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D99BA39B-BC58-51AC-B148-0945736FFC03_d0e622532_href.jpg Binary file Symbian3/PDK/Source/GUID-D99BA39B-BC58-51AC-B148-0945736FFC03_d0e622532_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D99BA4CA-9823-4968-953D-36AA7F266B39_d0e13674_href.png Binary file Symbian3/PDK/Source/GUID-D99BA4CA-9823-4968-953D-36AA7F266B39_d0e13674_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D99BA4CA-9823-4968-953D-36AA7F266B39_d0e13773_href.png Binary file Symbian3/PDK/Source/GUID-D99BA4CA-9823-4968-953D-36AA7F266B39_d0e13773_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D9BE2E51-D80C-537C-BE94-2A3699BE1DC6_d0e230215_href.png Binary file Symbian3/PDK/Source/GUID-D9BE2E51-D80C-537C-BE94-2A3699BE1DC6_d0e230215_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D9BE2E51-D80C-537C-BE94-2A3699BE1DC6_d0e236210_href.png Binary file Symbian3/PDK/Source/GUID-D9BE2E51-D80C-537C-BE94-2A3699BE1DC6_d0e236210_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D9C4D520-821D-5097-A63C-0BF4C7F59827_d0e436152_href.png Binary file Symbian3/PDK/Source/GUID-D9C4D520-821D-5097-A63C-0BF4C7F59827_d0e436152_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D9C4D520-821D-5097-A63C-0BF4C7F59827_d0e441997_href.png Binary file Symbian3/PDK/Source/GUID-D9C4D520-821D-5097-A63C-0BF4C7F59827_d0e441997_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D9F3D83E-50C7-4D15-839C-F225D95865B0_d0e101439_href.png Binary file Symbian3/PDK/Source/GUID-D9F3D83E-50C7-4D15-839C-F225D95865B0_d0e101439_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D9F3D83E-50C7-4D15-839C-F225D95865B0_d0e79873_href.png Binary file Symbian3/PDK/Source/GUID-D9F3D83E-50C7-4D15-839C-F225D95865B0_d0e79873_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D9F3D83E-50C7-4D15-839C-F225D95865B0_d0e84071_href.png Binary file Symbian3/PDK/Source/GUID-D9F3D83E-50C7-4D15-839C-F225D95865B0_d0e84071_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-D9F3D83E-50C7-4D15-839C-F225D95865B0_d0e97360_href.png Binary file Symbian3/PDK/Source/GUID-D9F3D83E-50C7-4D15-839C-F225D95865B0_d0e97360_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DA070DA3-CE2E-5B4E-834F-32BED736E01D_d0e109777_href.png Binary file Symbian3/PDK/Source/GUID-DA070DA3-CE2E-5B4E-834F-32BED736E01D_d0e109777_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DA070DA3-CE2E-5B4E-834F-32BED736E01D_d0e112200_href.png Binary file Symbian3/PDK/Source/GUID-DA070DA3-CE2E-5B4E-834F-32BED736E01D_d0e112200_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DA2C605B-6CCF-4039-BD02-DD4BDA003C97_d0e69055_href.png Binary file Symbian3/PDK/Source/GUID-DA2C605B-6CCF-4039-BD02-DD4BDA003C97_d0e69055_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DA2C605B-6CCF-4039-BD02-DD4BDA003C97_d0e73268_href.png Binary file Symbian3/PDK/Source/GUID-DA2C605B-6CCF-4039-BD02-DD4BDA003C97_d0e73268_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DA2DC704-CE65-54FB-9049-4E1C73092EDF-GENID-1-12-1-18-1-1-10-1-5-1-5-1-8-1.dita --- a/Symbian3/PDK/Source/GUID-DA2DC704-CE65-54FB-9049-4E1C73092EDF-GENID-1-12-1-18-1-1-10-1-5-1-5-1-8-1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,116 +0,0 @@ - - - - - -Positioning Plug-in Information API

    The Positioning Plug-in Information API defines Publish and Subscribe (P&S) keys for publishing and receiving PSY settings. The API is intended for device creators who write their own PSYs.

    Contents
    • Purpose

    • API description

    • Using the Positioning Plug-in Information API

      • Positioning Plug-in Information API published keys

      • Extensions to the API

    • Glossary

      • Abbreviations

      • Definitions

      • References

    Purpose

    The Positioning Plug-in Information API defines Central Repository keys for publishing Positioning Plug-in (PSY) static capabilities and basic setup information related to the PSY. These keys published by the PSYs are used by Location Framework. This API is intended for developers who write their own positioning plug-ins.

    The licensee also needs to implement the Positioning Plug-in API to create a PSY.

    API Description

    The Positioning Plug-in Information API is a Central Repository interface for defining keys. It specifies the parameters associated with a positioning module. It does not define any classes but defines the keys that each Positioning Plug-in needs to declare.

    To use the Positioning Plug-in Information API, a developer must create a Central Repository file with the same UID as the PSY’s UID. This file must contain all the defined keys for the positioning plug-in. If the values for the keys are incorrect the Location Framework will ignore the plug-in and it will not be usable. If this file is to be backed up during a backup operation, the owner of this file should be set to 0x101f97b2, which is the Location Server’s UID.

    Using the Positioning Plug-in Information API

    To implement a PSY, the developer must do the following:

    1. Create a PSY by implementing the Positioning Plug-in API.

    2. Create a Central Repository file to publish PSY information according to the Positioning Plug-in Information API.

    3. Test the positioning module implementation using the PSY tester application. The PSY tester application tests whether a particular PSY implementation conforms to the Positioning Plug-in API and the Positioning Plug-in Information API specifications.

    Positioning Plug-in Information API published keys

    Every Positioning Plug-in has its own repository identified with the implementation UID of the plug-in. This repository contains the predefined keys published by the Positioning Plug-in Information API. These keys include the properties of the positioning plug-in. The keys are defined in the PositioningPluginFWInternalCRKeys.h header file.

    Central Repository key Description

    KPSYInterfaceVersion

    The version of the Positioning Plug-in Information API interface.

    KPSYPriority

    The Positioning plug-in priority set for the PSY on installation.

    KPSYStatus

    The Positioning plug-in status set for the PSY when installed to the system.

    KPSYTimeToFirstFix

    The estimated time to the first fix from the positioning plug-in after a connection is established. It is defined as a double and should not be a negative number. The definition for time to the first fix can be found in the Location Acquisition API.

    KPSYTimeToNextFix

    This should be a conservative estimate of the time between consecutive fixes once the plug-in has been loaded and started. It is defined as a double and should not be a negative number. The definition of the time to the next fix can be found in the Location Acquisition API.

    KPSYHorizontalAccuracy

    This should be a conservative estimate of the expected horizontal accuracy and should be given in metres. The definition of horizontal accuracy can be found in the Location Acquisition API.

    KPSYVerticalAccuracy

    This should be a conservative estimate of the expected vertical accuracy and should be given in metres. The definition of vertical accuracy can be found in the Location Acquisition API.

    KPSYCostIndicator

    The cost of using the positioning technology. The cost indicator takes one of the discrete values unknown, zero, possible or charge. There is no mapping to any fixed sum of money. The cost indicator is only a default value. The actual value can be changed by the user. The definition for possible cost indicator values can be found in the Location Acquisition API.

    KPSYPowerConsumption

    The power consumption of the plug-in. Power consumption takes one of the discrete values unknown, zero, low, medium or high. There is no mapping to any fixed power. The definition for possible power consumption values can be found in the Location Acquisition API.

    KPSYTechnologyType

    The type of technology used to get the location. Specifies whether the positioning technology is terminal-based or network-based, or if it is using assistance data from the network. The definition for all available values for technology can be found in the Location Acquisition API.

    KPSYDeviceLocation

    The positioning hardware deployment. Specifies whether the actual positioning hardware is internal or external to the phone. The definition for all available values for this device location can be found in the Location Acquisition API.

    KPSYCapabilities

    The positioning capabilities of the positioning plug-in. This is a bitmap specifying the PSY’s capabilities, for example whether the PSY is capable of handling vertical measurements, NMEA reading, addresses, compass information, building information. The definition for all available values for capabilities can be found in the Location Acquisition API.

    KPSYClassesSupported

    The supported Location Framework position data classes. This is a bitmap specifying which TPositionInfoBase classes can be handled by the PSY. A PSY must always support at least TPositionInfo. The definition for all available values for supported classes can be found in the Location Acquisition API.

    KPSYVisibility

    This key specifies whether the plug-in is visible to Location Framework.

    KPSYNameResource

    This key specifies the name for the resource file that contains the localised text for the PSY name. If the key does not exist or the resource file does not exist, the name mentioned in the ECOM implementation resource file is used as the PSY name.

    Example

    The Positioning Plug-in keys are specified as part of a Central Repository file. The example below is a typical Central Repository file created for a PSY.

    /* The Header of the central repository text file */ -cenrep -/* Version of central repository */ -version 1 -[owner] -/* The owner for this central repository file, which is Location Server */ -0x101f97b2 -[defaultmeta] -/* Central Repository related headers */ - 0 -[platsec] -/* Capability required to access(read / write) these central repository keys */ -cap_rd=ReadDeviceData cap_wr=WriteDeviceData -[Main] -/* - * The keys defined by the Positioning Plug-in Information API interface. - * These key values are read by Location Server using Central Repository. - */ - -/* version 1 of the Positioning plug-in Information API. */ -0x1 int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * PSY Priority 0 which means that Location Server will decide the priority - * of the PSY. - */ -0x2 int 0 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The PSY is available when it is installed in the system. - * The availability can be changed later through the Location UI. - */ -0x3 int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The estimated time to obtain the initial location fix 80000000 microseconds - * i.e. 80 seconds. - */ -0x4 int 80000000 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The estimated time to obtain a fix knowing the current position is 1000000 microseconds - * i.e. 1 second. - */ -0x5 int 1000000 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The estimated error for the latitude and longitude - * components of a position determined by this PSY is 10 metres. - */ -0x6 real 10 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The estimated error for the altitude components of - * a position determined by this PSY is 30 metres. - */ -0x7 real 30 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The user will not incur any charge when using this PSY - * to make a position determination. - */ -0x8 int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * This PSY will consume a resonable amount of battery power when - * used for position determination. - */ -0x9 int 3 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The PSY uses a positioning techonology that works stand-alone - * on the terminal. - */ -0xa int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The PSY uses a technology external to the terminal. - */ -0xb int 2 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The PSY is capable of returning information about - * latitude, longitude, speed, address and satellite. - */ -0xc int 95 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * This PSY is capable of returning location information - * through all position information data classes namely - * TPositionInfo, TPositionCourseInfo, TPositionSatelliteInfo - * and HGenericPositionInfo. - */ -0xd int 15 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * This PSY is visible to the user through the Location UI. - */ -0xe int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The localised PSY name is specified in psylocalised_name.rsc - * resource file. - */ -0xf string "\\resource\\psylocalised_name.rsc" 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail

    Extensions to the API

    PSY-specific settings

    Any PSY-specific settings can be implemented as part of the same Central Repository file as the PSY common settings. In this case, the PSY must publish a header for the PSY-specific settings. The header must contain the Central Repository UID value and the key values for the PSY-specific settings.

    The PSY-specific settings key are bound by the following constraints:

    • IDs should start from the value 0x10000000. The values from 0x0000000F to 0x0FFFFFFF are reserved for expansion of the Positioning Plug-in Information API.

    • The required capabilities for the keys should be:

      • ReadDeviceData for reading the key values

      • WriteDeviceData for writing the key values

    Alternatively the PSY can implement these settings through any other mechanism such as database or file stores.

    An example of PSY-specific settings are those of the Bluetooth PSY Settings.

    PSY-specific Configuration UI

    The PSY can implement a configuration UI for reading and setting the PSY-specific settings keys. Creating a configuration UI for a PSY is a licensee-specific task as it uses platform-dependent UI framework.

    Glossary

    Abbreviations

    Abbreviation Description

    API

    Application Programming Interface

    LBS

    Location Based Services

    PSY

    Positioning Technology Plug-in

    SDK

    Software Development Kit

    UML

    Unified Modeling Language

    Definitions

    Term Description

    ECom

    A system support that allows the loading of interface implementations.

    Location Framework

    A framework for enabling location based services in Symbian.

    UID

    Unique Identifier number in Symbian.

    References

    • Location Acquisition API

    • Positioning Plug-in API

    • PSY Tester User’s Guide

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DA2DC704-CE65-54FB-9049-4E1C73092EDF-GENID-1-12-1-18-1-1-10-1-5-1-6-1.dita --- a/Symbian3/PDK/Source/GUID-DA2DC704-CE65-54FB-9049-4E1C73092EDF-GENID-1-12-1-18-1-1-10-1-5-1-6-1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,116 +0,0 @@ - - - - - -Positioning Plug-in Information API

    The Positioning Plug-in Information API defines Publish and Subscribe (P&S) keys for publishing and receiving PSY settings. The API is intended for device creators who write their own PSYs.

    Contents
    • Purpose

    • API description

    • Using the Positioning Plug-in Information API

      • Positioning Plug-in Information API published keys

      • Extensions to the API

    • Glossary

      • Abbreviations

      • Definitions

      • References

    Purpose

    The Positioning Plug-in Information API defines Central Repository keys for publishing Positioning Plug-in (PSY) static capabilities and basic setup information related to the PSY. These keys published by the PSYs are used by Location Framework. This API is intended for developers who write their own positioning plug-ins.

    The licensee also needs to implement the Positioning Plug-in API to create a PSY.

    API Description

    The Positioning Plug-in Information API is a Central Repository interface for defining keys. It specifies the parameters associated with a positioning module. It does not define any classes but defines the keys that each Positioning Plug-in needs to declare.

    To use the Positioning Plug-in Information API, a developer must create a Central Repository file with the same UID as the PSY’s UID. This file must contain all the defined keys for the positioning plug-in. If the values for the keys are incorrect the Location Framework will ignore the plug-in and it will not be usable. If this file is to be backed up during a backup operation, the owner of this file should be set to 0x101f97b2, which is the Location Server’s UID.

    Using the Positioning Plug-in Information API

    To implement a PSY, the developer must do the following:

    1. Create a PSY by implementing the Positioning Plug-in API.

    2. Create a Central Repository file to publish PSY information according to the Positioning Plug-in Information API.

    3. Test the positioning module implementation using the PSY tester application. The PSY tester application tests whether a particular PSY implementation conforms to the Positioning Plug-in API and the Positioning Plug-in Information API specifications.

    Positioning Plug-in Information API published keys

    Every Positioning Plug-in has its own repository identified with the implementation UID of the plug-in. This repository contains the predefined keys published by the Positioning Plug-in Information API. These keys include the properties of the positioning plug-in. The keys are defined in the PositioningPluginFWInternalCRKeys.h header file.

    Central Repository key Description

    KPSYInterfaceVersion

    The version of the Positioning Plug-in Information API interface.

    KPSYPriority

    The Positioning plug-in priority set for the PSY on installation.

    KPSYStatus

    The Positioning plug-in status set for the PSY when installed to the system.

    KPSYTimeToFirstFix

    The estimated time to the first fix from the positioning plug-in after a connection is established. It is defined as a double and should not be a negative number. The definition for time to the first fix can be found in the Location Acquisition API.

    KPSYTimeToNextFix

    This should be a conservative estimate of the time between consecutive fixes once the plug-in has been loaded and started. It is defined as a double and should not be a negative number. The definition of the time to the next fix can be found in the Location Acquisition API.

    KPSYHorizontalAccuracy

    This should be a conservative estimate of the expected horizontal accuracy and should be given in metres. The definition of horizontal accuracy can be found in the Location Acquisition API.

    KPSYVerticalAccuracy

    This should be a conservative estimate of the expected vertical accuracy and should be given in metres. The definition of vertical accuracy can be found in the Location Acquisition API.

    KPSYCostIndicator

    The cost of using the positioning technology. The cost indicator takes one of the discrete values unknown, zero, possible or charge. There is no mapping to any fixed sum of money. The cost indicator is only a default value. The actual value can be changed by the user. The definition for possible cost indicator values can be found in the Location Acquisition API.

    KPSYPowerConsumption

    The power consumption of the plug-in. Power consumption takes one of the discrete values unknown, zero, low, medium or high. There is no mapping to any fixed power. The definition for possible power consumption values can be found in the Location Acquisition API.

    KPSYTechnologyType

    The type of technology used to get the location. Specifies whether the positioning technology is terminal-based or network-based, or if it is using assistance data from the network. The definition for all available values for technology can be found in the Location Acquisition API.

    KPSYDeviceLocation

    The positioning hardware deployment. Specifies whether the actual positioning hardware is internal or external to the phone. The definition for all available values for this device location can be found in the Location Acquisition API.

    KPSYCapabilities

    The positioning capabilities of the positioning plug-in. This is a bitmap specifying the PSY’s capabilities, for example whether the PSY is capable of handling vertical measurements, NMEA reading, addresses, compass information, building information. The definition for all available values for capabilities can be found in the Location Acquisition API.

    KPSYClassesSupported

    The supported Location Framework position data classes. This is a bitmap specifying which TPositionInfoBase classes can be handled by the PSY. A PSY must always support at least TPositionInfo. The definition for all available values for supported classes can be found in the Location Acquisition API.

    KPSYVisibility

    This key specifies whether the plug-in is visible to Location Framework.

    KPSYNameResource

    This key specifies the name for the resource file that contains the localised text for the PSY name. If the key does not exist or the resource file does not exist, the name mentioned in the ECOM implementation resource file is used as the PSY name.

    Example

    The Positioning Plug-in keys are specified as part of a Central Repository file. The example below is a typical Central Repository file created for a PSY.

    /* The Header of the central repository text file */ -cenrep -/* Version of central repository */ -version 1 -[owner] -/* The owner for this central repository file, which is Location Server */ -0x101f97b2 -[defaultmeta] -/* Central Repository related headers */ - 0 -[platsec] -/* Capability required to access(read / write) these central repository keys */ -cap_rd=ReadDeviceData cap_wr=WriteDeviceData -[Main] -/* - * The keys defined by the Positioning Plug-in Information API interface. - * These key values are read by Location Server using Central Repository. - */ - -/* version 1 of the Positioning plug-in Information API. */ -0x1 int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * PSY Priority 0 which means that Location Server will decide the priority - * of the PSY. - */ -0x2 int 0 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The PSY is available when it is installed in the system. - * The availability can be changed later through the Location UI. - */ -0x3 int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The estimated time to obtain the initial location fix 80000000 microseconds - * i.e. 80 seconds. - */ -0x4 int 80000000 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The estimated time to obtain a fix knowing the current position is 1000000 microseconds - * i.e. 1 second. - */ -0x5 int 1000000 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The estimated error for the latitude and longitude - * components of a position determined by this PSY is 10 metres. - */ -0x6 real 10 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The estimated error for the altitude components of - * a position determined by this PSY is 30 metres. - */ -0x7 real 30 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The user will not incur any charge when using this PSY - * to make a position determination. - */ -0x8 int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * This PSY will consume a resonable amount of battery power when - * used for position determination. - */ -0x9 int 3 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The PSY uses a positioning techonology that works stand-alone - * on the terminal. - */ -0xa int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The PSY uses a technology external to the terminal. - */ -0xb int 2 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The PSY is capable of returning information about - * latitude, longitude, speed, address and satellite. - */ -0xc int 95 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * This PSY is capable of returning location information - * through all position information data classes namely - * TPositionInfo, TPositionCourseInfo, TPositionSatelliteInfo - * and HGenericPositionInfo. - */ -0xd int 15 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * This PSY is visible to the user through the Location UI. - */ -0xe int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail - -/* - * The localised PSY name is specified in psylocalised_name.rsc - * resource file. - */ -0xf string "\\resource\\psylocalised_name.rsc" 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail

    Extensions to the API

    PSY-specific settings

    Any PSY-specific settings can be implemented as part of the same Central Repository file as the PSY common settings. In this case, the PSY must publish a header for the PSY-specific settings. The header must contain the Central Repository UID value and the key values for the PSY-specific settings.

    The PSY-specific settings key are bound by the following constraints:

    • IDs should start from the value 0x10000000. The values from 0x0000000F to 0x0FFFFFFF are reserved for expansion of the Positioning Plug-in Information API.

    • The required capabilities for the keys should be:

      • ReadDeviceData for reading the key values

      • WriteDeviceData for writing the key values

    Alternatively the PSY can implement these settings through any other mechanism such as database or file stores.

    An example of PSY-specific settings are those of the Bluetooth PSY Settings.

    PSY-specific Configuration UI

    The PSY can implement a configuration UI for reading and setting the PSY-specific settings keys. Creating a configuration UI for a PSY is a licensee-specific task as it uses platform-dependent UI framework.

    Glossary

    Abbreviations

    Abbreviation Description

    API

    Application Programming Interface

    LBS

    Location Based Services

    PSY

    Positioning Technology Plug-in

    SDK

    Software Development Kit

    UML

    Unified Modeling Language

    Definitions

    Term Description

    ECom

    A system support that allows the loading of interface implementations.

    Location Framework

    A framework for enabling location based services in Symbian.

    UID

    Unique Identifier number in Symbian.

    References

    • Location Acquisition API

    • Positioning Plug-in API

    • PSY Tester User’s Guide

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DA2DC704-CE65-54FB-9049-4E1C73092EDF-GENID-1-12-1-19-1-1-10-1-5-1-5-1-8-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-DA2DC704-CE65-54FB-9049-4E1C73092EDF-GENID-1-12-1-19-1-1-10-1-5-1-5-1-8-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,116 @@ + + + + + +Positioning Plug-in Information API

    The Positioning Plug-in Information API defines Publish and Subscribe (P&S) keys for publishing and receiving PSY settings. The API is intended for device creators who write their own PSYs.

    Contents
    • Purpose

    • API description

    • Using the Positioning Plug-in Information API

      • Positioning Plug-in Information API published keys

      • Extensions to the API

    • Glossary

      • Abbreviations

      • Definitions

      • References

    Purpose

    The Positioning Plug-in Information API defines Central Repository keys for publishing Positioning Plug-in (PSY) static capabilities and basic setup information related to the PSY. These keys published by the PSYs are used by Location Framework. This API is intended for developers who write their own positioning plug-ins.

    The licensee also needs to implement the Positioning Plug-in API to create a PSY.

    API Description

    The Positioning Plug-in Information API is a Central Repository interface for defining keys. It specifies the parameters associated with a positioning module. It does not define any classes but defines the keys that each Positioning Plug-in needs to declare.

    To use the Positioning Plug-in Information API, a developer must create a Central Repository file with the same UID as the PSY’s UID. This file must contain all the defined keys for the positioning plug-in. If the values for the keys are incorrect the Location Framework will ignore the plug-in and it will not be usable. If this file is to be backed up during a backup operation, the owner of this file should be set to 0x101f97b2, which is the Location Server’s UID.

    Using the Positioning Plug-in Information API

    To implement a PSY, the developer must do the following:

    1. Create a PSY by implementing the Positioning Plug-in API.

    2. Create a Central Repository file to publish PSY information according to the Positioning Plug-in Information API.

    3. Test the positioning module implementation using the PSY tester application. The PSY tester application tests whether a particular PSY implementation conforms to the Positioning Plug-in API and the Positioning Plug-in Information API specifications.

    Positioning Plug-in Information API published keys

    Every Positioning Plug-in has its own repository identified with the implementation UID of the plug-in. This repository contains the predefined keys published by the Positioning Plug-in Information API. These keys include the properties of the positioning plug-in. The keys are defined in the PositioningPluginFWInternalCRKeys.h header file.

    Central Repository key Description

    KPSYInterfaceVersion

    The version of the Positioning Plug-in Information API interface.

    KPSYPriority

    The Positioning plug-in priority set for the PSY on installation.

    KPSYStatus

    The Positioning plug-in status set for the PSY when installed to the system.

    KPSYTimeToFirstFix

    The estimated time to the first fix from the positioning plug-in after a connection is established. It is defined as a double and should not be a negative number. The definition for time to the first fix can be found in the Location Acquisition API.

    KPSYTimeToNextFix

    This should be a conservative estimate of the time between consecutive fixes once the plug-in has been loaded and started. It is defined as a double and should not be a negative number. The definition of the time to the next fix can be found in the Location Acquisition API.

    KPSYHorizontalAccuracy

    This should be a conservative estimate of the expected horizontal accuracy and should be given in metres. The definition of horizontal accuracy can be found in the Location Acquisition API.

    KPSYVerticalAccuracy

    This should be a conservative estimate of the expected vertical accuracy and should be given in metres. The definition of vertical accuracy can be found in the Location Acquisition API.

    KPSYCostIndicator

    The cost of using the positioning technology. The cost indicator takes one of the discrete values unknown, zero, possible or charge. There is no mapping to any fixed sum of money. The cost indicator is only a default value. The actual value can be changed by the user. The definition for possible cost indicator values can be found in the Location Acquisition API.

    KPSYPowerConsumption

    The power consumption of the plug-in. Power consumption takes one of the discrete values unknown, zero, low, medium or high. There is no mapping to any fixed power. The definition for possible power consumption values can be found in the Location Acquisition API.

    KPSYTechnologyType

    The type of technology used to get the location. Specifies whether the positioning technology is terminal-based or network-based, or if it is using assistance data from the network. The definition for all available values for technology can be found in the Location Acquisition API.

    KPSYDeviceLocation

    The positioning hardware deployment. Specifies whether the actual positioning hardware is internal or external to the phone. The definition for all available values for this device location can be found in the Location Acquisition API.

    KPSYCapabilities

    The positioning capabilities of the positioning plug-in. This is a bitmap specifying the PSY’s capabilities, for example whether the PSY is capable of handling vertical measurements, NMEA reading, addresses, compass information, building information. The definition for all available values for capabilities can be found in the Location Acquisition API.

    KPSYClassesSupported

    The supported Location Framework position data classes. This is a bitmap specifying which TPositionInfoBase classes can be handled by the PSY. A PSY must always support at least TPositionInfo. The definition for all available values for supported classes can be found in the Location Acquisition API.

    KPSYVisibility

    This key specifies whether the plug-in is visible to Location Framework.

    KPSYNameResource

    This key specifies the name for the resource file that contains the localised text for the PSY name. If the key does not exist or the resource file does not exist, the name mentioned in the ECOM implementation resource file is used as the PSY name.

    Example

    The Positioning Plug-in keys are specified as part of a Central Repository file. The example below is a typical Central Repository file created for a PSY.

    /* The Header of the central repository text file */ +cenrep +/* Version of central repository */ +version 1 +[owner] +/* The owner for this central repository file, which is Location Server */ +0x101f97b2 +[defaultmeta] +/* Central Repository related headers */ + 0 +[platsec] +/* Capability required to access(read / write) these central repository keys */ +cap_rd=ReadDeviceData cap_wr=WriteDeviceData +[Main] +/* + * The keys defined by the Positioning Plug-in Information API interface. + * These key values are read by Location Server using Central Repository. + */ + +/* version 1 of the Positioning plug-in Information API. */ +0x1 int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * PSY Priority 0 which means that Location Server will decide the priority + * of the PSY. + */ +0x2 int 0 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The PSY is available when it is installed in the system. + * The availability can be changed later through the Location UI. + */ +0x3 int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The estimated time to obtain the initial location fix 80000000 microseconds + * i.e. 80 seconds. + */ +0x4 int 80000000 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The estimated time to obtain a fix knowing the current position is 1000000 microseconds + * i.e. 1 second. + */ +0x5 int 1000000 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The estimated error for the latitude and longitude + * components of a position determined by this PSY is 10 metres. + */ +0x6 real 10 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The estimated error for the altitude components of + * a position determined by this PSY is 30 metres. + */ +0x7 real 30 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The user will not incur any charge when using this PSY + * to make a position determination. + */ +0x8 int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * This PSY will consume a resonable amount of battery power when + * used for position determination. + */ +0x9 int 3 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The PSY uses a positioning techonology that works stand-alone + * on the terminal. + */ +0xa int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The PSY uses a technology external to the terminal. + */ +0xb int 2 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The PSY is capable of returning information about + * latitude, longitude, speed, address and satellite. + */ +0xc int 95 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * This PSY is capable of returning location information + * through all position information data classes namely + * TPositionInfo, TPositionCourseInfo, TPositionSatelliteInfo + * and HGenericPositionInfo. + */ +0xd int 15 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * This PSY is visible to the user through the Location UI. + */ +0xe int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The localised PSY name is specified in psylocalised_name.rsc + * resource file. + */ +0xf string "\\resource\\psylocalised_name.rsc" 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail

    Extensions to the API

    PSY-specific settings

    Any PSY-specific settings can be implemented as part of the same Central Repository file as the PSY common settings. In this case, the PSY must publish a header for the PSY-specific settings. The header must contain the Central Repository UID value and the key values for the PSY-specific settings.

    The PSY-specific settings key are bound by the following constraints:

    • IDs should start from the value 0x10000000. The values from 0x0000000F to 0x0FFFFFFF are reserved for expansion of the Positioning Plug-in Information API.

    • The required capabilities for the keys should be:

      • ReadDeviceData for reading the key values

      • WriteDeviceData for writing the key values

    Alternatively the PSY can implement these settings through any other mechanism such as database or file stores.

    An example of PSY-specific settings are those of the Bluetooth PSY Settings.

    PSY-specific Configuration UI

    The PSY can implement a configuration UI for reading and setting the PSY-specific settings keys. Creating a configuration UI for a PSY is a licensee-specific task as it uses platform-dependent UI framework.

    Glossary

    Abbreviations

    Abbreviation Description

    API

    Application Programming Interface

    LBS

    Location Based Services

    PSY

    Positioning Technology Plug-in

    SDK

    Software Development Kit

    UML

    Unified Modeling Language

    Definitions

    Term Description

    ECom

    A system support that allows the loading of interface implementations.

    Location Framework

    A framework for enabling location based services in Symbian.

    UID

    Unique Identifier number in Symbian.

    References

    • Location Acquisition API

    • Positioning Plug-in API

    • PSY Tester User’s Guide

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DA2DC704-CE65-54FB-9049-4E1C73092EDF-GENID-1-12-1-19-1-1-10-1-5-1-6-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-DA2DC704-CE65-54FB-9049-4E1C73092EDF-GENID-1-12-1-19-1-1-10-1-5-1-6-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,116 @@ + + + + + +Positioning Plug-in Information API

    The Positioning Plug-in Information API defines Publish and Subscribe (P&S) keys for publishing and receiving PSY settings. The API is intended for device creators who write their own PSYs.

    Contents
    • Purpose

    • API description

    • Using the Positioning Plug-in Information API

      • Positioning Plug-in Information API published keys

      • Extensions to the API

    • Glossary

      • Abbreviations

      • Definitions

      • References

    Purpose

    The Positioning Plug-in Information API defines Central Repository keys for publishing Positioning Plug-in (PSY) static capabilities and basic setup information related to the PSY. These keys published by the PSYs are used by Location Framework. This API is intended for developers who write their own positioning plug-ins.

    The licensee also needs to implement the Positioning Plug-in API to create a PSY.

    API Description

    The Positioning Plug-in Information API is a Central Repository interface for defining keys. It specifies the parameters associated with a positioning module. It does not define any classes but defines the keys that each Positioning Plug-in needs to declare.

    To use the Positioning Plug-in Information API, a developer must create a Central Repository file with the same UID as the PSY’s UID. This file must contain all the defined keys for the positioning plug-in. If the values for the keys are incorrect the Location Framework will ignore the plug-in and it will not be usable. If this file is to be backed up during a backup operation, the owner of this file should be set to 0x101f97b2, which is the Location Server’s UID.

    Using the Positioning Plug-in Information API

    To implement a PSY, the developer must do the following:

    1. Create a PSY by implementing the Positioning Plug-in API.

    2. Create a Central Repository file to publish PSY information according to the Positioning Plug-in Information API.

    3. Test the positioning module implementation using the PSY tester application. The PSY tester application tests whether a particular PSY implementation conforms to the Positioning Plug-in API and the Positioning Plug-in Information API specifications.

    Positioning Plug-in Information API published keys

    Every Positioning Plug-in has its own repository identified with the implementation UID of the plug-in. This repository contains the predefined keys published by the Positioning Plug-in Information API. These keys include the properties of the positioning plug-in. The keys are defined in the PositioningPluginFWInternalCRKeys.h header file.

    Central Repository key Description

    KPSYInterfaceVersion

    The version of the Positioning Plug-in Information API interface.

    KPSYPriority

    The Positioning plug-in priority set for the PSY on installation.

    KPSYStatus

    The Positioning plug-in status set for the PSY when installed to the system.

    KPSYTimeToFirstFix

    The estimated time to the first fix from the positioning plug-in after a connection is established. It is defined as a double and should not be a negative number. The definition for time to the first fix can be found in the Location Acquisition API.

    KPSYTimeToNextFix

    This should be a conservative estimate of the time between consecutive fixes once the plug-in has been loaded and started. It is defined as a double and should not be a negative number. The definition of the time to the next fix can be found in the Location Acquisition API.

    KPSYHorizontalAccuracy

    This should be a conservative estimate of the expected horizontal accuracy and should be given in metres. The definition of horizontal accuracy can be found in the Location Acquisition API.

    KPSYVerticalAccuracy

    This should be a conservative estimate of the expected vertical accuracy and should be given in metres. The definition of vertical accuracy can be found in the Location Acquisition API.

    KPSYCostIndicator

    The cost of using the positioning technology. The cost indicator takes one of the discrete values unknown, zero, possible or charge. There is no mapping to any fixed sum of money. The cost indicator is only a default value. The actual value can be changed by the user. The definition for possible cost indicator values can be found in the Location Acquisition API.

    KPSYPowerConsumption

    The power consumption of the plug-in. Power consumption takes one of the discrete values unknown, zero, low, medium or high. There is no mapping to any fixed power. The definition for possible power consumption values can be found in the Location Acquisition API.

    KPSYTechnologyType

    The type of technology used to get the location. Specifies whether the positioning technology is terminal-based or network-based, or if it is using assistance data from the network. The definition for all available values for technology can be found in the Location Acquisition API.

    KPSYDeviceLocation

    The positioning hardware deployment. Specifies whether the actual positioning hardware is internal or external to the phone. The definition for all available values for this device location can be found in the Location Acquisition API.

    KPSYCapabilities

    The positioning capabilities of the positioning plug-in. This is a bitmap specifying the PSY’s capabilities, for example whether the PSY is capable of handling vertical measurements, NMEA reading, addresses, compass information, building information. The definition for all available values for capabilities can be found in the Location Acquisition API.

    KPSYClassesSupported

    The supported Location Framework position data classes. This is a bitmap specifying which TPositionInfoBase classes can be handled by the PSY. A PSY must always support at least TPositionInfo. The definition for all available values for supported classes can be found in the Location Acquisition API.

    KPSYVisibility

    This key specifies whether the plug-in is visible to Location Framework.

    KPSYNameResource

    This key specifies the name for the resource file that contains the localised text for the PSY name. If the key does not exist or the resource file does not exist, the name mentioned in the ECOM implementation resource file is used as the PSY name.

    Example

    The Positioning Plug-in keys are specified as part of a Central Repository file. The example below is a typical Central Repository file created for a PSY.

    /* The Header of the central repository text file */ +cenrep +/* Version of central repository */ +version 1 +[owner] +/* The owner for this central repository file, which is Location Server */ +0x101f97b2 +[defaultmeta] +/* Central Repository related headers */ + 0 +[platsec] +/* Capability required to access(read / write) these central repository keys */ +cap_rd=ReadDeviceData cap_wr=WriteDeviceData +[Main] +/* + * The keys defined by the Positioning Plug-in Information API interface. + * These key values are read by Location Server using Central Repository. + */ + +/* version 1 of the Positioning plug-in Information API. */ +0x1 int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * PSY Priority 0 which means that Location Server will decide the priority + * of the PSY. + */ +0x2 int 0 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The PSY is available when it is installed in the system. + * The availability can be changed later through the Location UI. + */ +0x3 int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The estimated time to obtain the initial location fix 80000000 microseconds + * i.e. 80 seconds. + */ +0x4 int 80000000 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The estimated time to obtain a fix knowing the current position is 1000000 microseconds + * i.e. 1 second. + */ +0x5 int 1000000 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The estimated error for the latitude and longitude + * components of a position determined by this PSY is 10 metres. + */ +0x6 real 10 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The estimated error for the altitude components of + * a position determined by this PSY is 30 metres. + */ +0x7 real 30 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The user will not incur any charge when using this PSY + * to make a position determination. + */ +0x8 int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * This PSY will consume a resonable amount of battery power when + * used for position determination. + */ +0x9 int 3 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The PSY uses a positioning techonology that works stand-alone + * on the terminal. + */ +0xa int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The PSY uses a technology external to the terminal. + */ +0xb int 2 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The PSY is capable of returning information about + * latitude, longitude, speed, address and satellite. + */ +0xc int 95 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * This PSY is capable of returning location information + * through all position information data classes namely + * TPositionInfo, TPositionCourseInfo, TPositionSatelliteInfo + * and HGenericPositionInfo. + */ +0xd int 15 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * This PSY is visible to the user through the Location UI. + */ +0xe int 1 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail + +/* + * The localised PSY name is specified in psylocalised_name.rsc + * resource file. + */ +0xf string "\\resource\\psylocalised_name.rsc" 16777216 cap_rd=ReadDeviceData cap_wr=alwaysfail

    Extensions to the API

    PSY-specific settings

    Any PSY-specific settings can be implemented as part of the same Central Repository file as the PSY common settings. In this case, the PSY must publish a header for the PSY-specific settings. The header must contain the Central Repository UID value and the key values for the PSY-specific settings.

    The PSY-specific settings key are bound by the following constraints:

    • IDs should start from the value 0x10000000. The values from 0x0000000F to 0x0FFFFFFF are reserved for expansion of the Positioning Plug-in Information API.

    • The required capabilities for the keys should be:

      • ReadDeviceData for reading the key values

      • WriteDeviceData for writing the key values

    Alternatively the PSY can implement these settings through any other mechanism such as database or file stores.

    An example of PSY-specific settings are those of the Bluetooth PSY Settings.

    PSY-specific Configuration UI

    The PSY can implement a configuration UI for reading and setting the PSY-specific settings keys. Creating a configuration UI for a PSY is a licensee-specific task as it uses platform-dependent UI framework.

    Glossary

    Abbreviations

    Abbreviation Description

    API

    Application Programming Interface

    LBS

    Location Based Services

    PSY

    Positioning Technology Plug-in

    SDK

    Software Development Kit

    UML

    Unified Modeling Language

    Definitions

    Term Description

    ECom

    A system support that allows the loading of interface implementations.

    Location Framework

    A framework for enabling location based services in Symbian.

    UID

    Unique Identifier number in Symbian.

    References

    • Location Acquisition API

    • Positioning Plug-in API

    • PSY Tester User’s Guide

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DA7751A1-4EC5-5FBA-A42B-E254133A1D82_d0e303330_href.png Binary file Symbian3/PDK/Source/GUID-DA7751A1-4EC5-5FBA-A42B-E254133A1D82_d0e303330_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DA7751A1-4EC5-5FBA-A42B-E254133A1D82_d0e309322_href.png Binary file Symbian3/PDK/Source/GUID-DA7751A1-4EC5-5FBA-A42B-E254133A1D82_d0e309322_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DA793067-32DD-5D4D-A0E6-E05DF9047529.dita --- a/Symbian3/PDK/Source/GUID-DA793067-32DD-5D4D-A0E6-E05DF9047529.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -export

    abld export ( ( [-c] | [-w] ) | ( [-k] [-v] ) )

    This command copies all the files to be exported from source to their destinations, as defined in the prj_exports section of the component description file.

    Each destination file is only created if it does not exist or has an earlier datestamp than the corresponding source file.

    The directories which will contain the destination files will be created automatically if they do not exist.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DA8908E9-28C7-5200-A5B2-EC1ED60ABE90.dita --- a/Symbian3/PDK/Source/GUID-DA8908E9-28C7-5200-A5B2-EC1ED60ABE90.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DA8908E9-28C7-5200-A5B2-EC1ED60ABE90.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,7 +20,7 @@ /h. The following screenshot shows the main options of SWI console. - + diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DA962F06-7618-5E02-9E05-65AFFA69045E_d0e232343_href.png Binary file Symbian3/PDK/Source/GUID-DA962F06-7618-5E02-9E05-65AFFA69045E_d0e232343_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DA962F06-7618-5E02-9E05-65AFFA69045E_d0e238338_href.png Binary file Symbian3/PDK/Source/GUID-DA962F06-7618-5E02-9E05-65AFFA69045E_d0e238338_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DAB7AB0C-8B32-4472-8EDC-AA8A5A01205C_d0e86835_href.png Binary file Symbian3/PDK/Source/GUID-DAB7AB0C-8B32-4472-8EDC-AA8A5A01205C_d0e86835_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DAB7AB0C-8B32-4472-8EDC-AA8A5A01205C_d0e87237_href.png Binary file Symbian3/PDK/Source/GUID-DAB7AB0C-8B32-4472-8EDC-AA8A5A01205C_d0e87237_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DAB7AB0C-8B32-4472-8EDC-AA8A5A01205C_d0e91033_href.png Binary file Symbian3/PDK/Source/GUID-DAB7AB0C-8B32-4472-8EDC-AA8A5A01205C_d0e91033_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DAB7AB0C-8B32-4472-8EDC-AA8A5A01205C_d0e91435_href.png Binary file Symbian3/PDK/Source/GUID-DAB7AB0C-8B32-4472-8EDC-AA8A5A01205C_d0e91435_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DABBFC53-CC93-54AA-ADFD-6756B1EA878C.dita --- a/Symbian3/PDK/Source/GUID-DABBFC53-CC93-54AA-ADFD-6756B1EA878C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DABBFC53-CC93-54AA-ADFD-6756B1EA878C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,11 +9,11 @@ --> -Location Settings APIThe Location Settings API allows an application to get and set the properties of a PSY.

    Contents
    • Purpose

    • API description

      • PSY attributes

    • API summary

    • Using the API

      • Retrieving information about installed PSYs

      • Modifying PSY attributes

      • Changing priority order of PSYs

      • Listening to settings change events

    • Error handling

    • Memory overhead

    • See also

    Purpose

    The Location Settings API is an interface for managing the settings of the Location Framework and of Positioning Plug-ins (PSYs). The settings consist of the relative priorities of PSYs installed on the mobile device and modifiable and read-only attributes of PSYs.

    API description

    This API is intended for use by a system application (such as a settings UI) that allows the user of a phone to view and edit settings that affect the behaviour of the Location Framework. The API allows a user to manage the priority ordering of PSYs and to access their modifiable and non-modifiable attributes

    The priority ordering of PSYs is used when a client of the Location Acquisition API uses the RPositioner class without specifying particular positioning module ID (by calling RPositioner::Open() without parameters). The Location Server uses the PSY with the highest priority if possible and falls back to next one in the priority list in case of failure.

    PSY attributes

    PSY attributes can be grouped by type:

    Non-modifiable attributes

    These properties include a descriptive name, UID, positioning plug-in version, positioning technology, capabilities, time to first fix, positioning accuracy, power consumption etc.

    For more information about non-modifiable attributes see Positioning Plug-in Information API.

    Non-modifiable attributes are read from each PSY's repository file,. The PSY name is read from a resource file, which should be referenced by the repository file. If the resource file is not referenced in the repository file then the PSY name is taken from ECOM attributes of the PSY plug-in (which means that the name cannot be localized).

    Modifiable attributes

    These attributes include the availability status of the PSY (enabled or disabled), the cost of using the PSY and its visibility.

    Modifiable attributes are stored in the Central Repository.

    Table 1 describes the modifiable PSY attributes:

    Attribute Description

    Cost

    User-defined runtime setting for the cost of using a specific positioning technology. Possible values are defined by TPositionQuality::TCostIndicator from Location Acquisition API.

    The cost attribute is modifiable because in some cases the cost of using a PSY can be dependent on the user’s subscription model.

    Availability

    Determines whether a PSY is enabled to be used through Location Acquisition API (RPositioner) or not.

    Visibility

    Determines whether a PSY needs to be listed by the CPosModules class of this API.

    Table 1. Modifiable PSY attributes.

    Positioning plug-in specific settings

    Each PSY can have any number of attributes that are specific for the positioning technology it encapsulates (for example, baud rate for external GPS). The Location Settings API does not provide access to these settings.

    API summary

    Figure 1 shows public classes of the Location Settings API.

    +<concept xml:lang="en" id="GUID-DABBFC53-CC93-54AA-ADFD-6756B1EA878C"><title>Location Settings APIThe Location Settings API allows an application to get and set the properties of a PSY.

    Contents
    • Purpose

    • API description

      • PSY attributes

    • API summary

    • Using the API

      • Retrieving information about installed PSYs

      • Modifying PSY attributes

      • Changing priority order of PSYs

      • Listening to settings change events

    • Error handling

    • Memory overhead

    • See also

    Purpose

    The Location Settings API is an interface for managing the settings of the Location Framework and of Positioning Plug-ins (PSYs). The settings consist of the relative priorities of PSYs installed on the mobile device and modifiable and read-only attributes of PSYs.

    API description

    This API is intended for use by a system application (such as a settings UI) that allows the user of a phone to view and edit settings that affect the behaviour of the Location Framework. The API allows a user to manage the priority ordering of PSYs and to access their modifiable and non-modifiable attributes

    The priority ordering of PSYs is used when a client of the Location Acquisition API uses the RPositioner class without specifying particular positioning module ID (by calling RPositioner::Open() without parameters). The Location Server uses the PSY with the highest priority if possible and falls back to next one in the priority list in case of failure.

    PSY attributes

    PSY attributes can be grouped by type:

    Non-modifiable attributes

    These properties include a descriptive name, UID, positioning plug-in version, positioning technology, capabilities, time to first fix, positioning accuracy, power consumption etc.

    For more information about non-modifiable attributes see Positioning Plug-in Information API.

    Non-modifiable attributes are read from each PSY's repository file,. The PSY name is read from a resource file, which should be referenced by the repository file. If the resource file is not referenced in the repository file then the PSY name is taken from ECOM attributes of the PSY plug-in (which means that the name cannot be localized).

    Modifiable attributes

    These attributes include the availability status of the PSY (enabled or disabled), the cost of using the PSY and its visibility.

    Modifiable attributes are stored in the Central Repository.

    Table 1 describes the modifiable PSY attributes:

    Attribute Description

    Cost

    User-defined runtime setting for the cost of using a specific positioning technology. Possible values are defined by TPositionQuality::TCostIndicator from Location Acquisition API.

    The cost attribute is modifiable because in some cases the cost of using a PSY can be dependent on the user’s subscription model.

    Availability

    Determines whether a PSY is enabled to be used through Location Acquisition API (RPositioner) or not.

    Visibility

    Determines whether a PSY needs to be listed by the CPosModules class of this API.

    Table 1. Modifiable PSY attributes.

    Positioning plug-in specific settings

    Each PSY can have any number of attributes that are specific for the positioning technology it encapsulates (for example, baud rate for external GPS). The Location Settings API does not provide access to these settings.

    API summary

    Figure 1 shows public classes of the Location Settings API.

    Figure 1. Location Settings API class diagram -

    Table 1 lists the classes and types of the API.

    Class Name Description Header file

    CPosModules

    The main class of the Location Settings API. It is used for accessing PSY attributes and managing priority list of PSYs. A client can also register to listen for changes in the settings.

    EPos_CPosModuleIdList.h

    CPosModuleUpdate

    Represents an update of the modifiable attributes of a PSY. An update is committed by calling CPosModules::UpdateModuleL().

    EPos_CPosModuleUpdate.h

    CPosModuleIdList

    Represents a list of PSY IDs. Used to get and set the priority list of PSYs. It contains methods for appending, inserting, removing and finding PSY IDs in the list.

    EPos_CPosModuleIdList.h

    MPosModulesObserver

    The interface that is implemented by clients in order to receive notifications of changes in the PSY settings. A client subscribes for notifications through the CPosModules class.

    Notification event information is given in a TPosModulesEvent structure.

    Typedef TPosModulesEventType defines possible event types.

    EPos_MPosModulesObserver.h

    Table 1. Classes and types of the Location Settings API.

    Libraries

    API classes are packaged in eposmodset.dll. Clients link with eposmodset.lib.

    Capabilities

    API clients require WriteDeviceData capability to update modifiable settings (PSY priority order, modifiable PSY attributes).

    API clients require no capabilities to read PSY settings.

    Using the API

    Uses cases for the API are:

    • Retrieving information about installed PSYs

    • Modifying PSY attributes

    • Changing priority order of PSYs

    • Listening to settings change events

    Retrieving information about installed PSYs

    A client can read ordered list of PSYs by using CPosModules::ModuleIdListL() or CPosModules::ModuleIdListLC(). These methods return a list of IDs for the currently installed PSYs in priority order. Only the PSYs which have visibility attribute set to 1 (ETrue) are listed.

    The client may request information from a specific PSY by providing its ID to CPosModules::GetModuleInfoL(). If a PSY with the specified ID is found in the system, its data is returned in the TPositionModuleInfoBase derived object, supplied by client. Currently, the only supported subclass is TPositionModuleInfo. For more information, see Location Acquisition API.

    Figure 2 shows the client listing all available PSYs and retrieving their attributes:

    +

    Table 1 lists the classes and types of the API.

    Class Name Description Header file

    CPosModules

    The main class of the Location Settings API. It is used for accessing PSY attributes and managing priority list of PSYs. A client can also register to listen for changes in the settings.

    EPos_CPosModuleIdList.h

    CPosModuleUpdate

    Represents an update of the modifiable attributes of a PSY. An update is committed by calling CPosModules::UpdateModuleL().

    EPos_CPosModuleUpdate.h

    CPosModuleIdList

    Represents a list of PSY IDs. Used to get and set the priority list of PSYs. It contains methods for appending, inserting, removing and finding PSY IDs in the list.

    EPos_CPosModuleIdList.h

    MPosModulesObserver

    The interface that is implemented by clients in order to receive notifications of changes in the PSY settings. A client subscribes for notifications through the CPosModules class.

    Notification event information is given in a TPosModulesEvent structure.

    Typedef TPosModulesEventType defines possible event types.

    EPos_MPosModulesObserver.h

    Table 1. Classes and types of the Location Settings API.

    Libraries

    API classes are packaged in eposmodset.dll. Clients link with eposmodset.lib.

    Capabilities

    API clients require WriteDeviceData capability to update modifiable settings (PSY priority order, modifiable PSY attributes).

    API clients require no capabilities to read PSY settings.

    Using the API

    Uses cases for the API are:

    • Retrieving information about installed PSYs

    • Modifying PSY attributes

    • Changing priority order of PSYs

    • Listening to settings change events

    Retrieving information about installed PSYs

    A client can read ordered list of PSYs by using CPosModules::ModuleIdListL() or CPosModules::ModuleIdListLC(). These methods return a list of IDs for the currently installed PSYs in priority order. Only the PSYs which have visibility attribute set to 1 (ETrue) are listed.

    The client may request information from a specific PSY by providing its ID to CPosModules::GetModuleInfoL(). If a PSY with the specified ID is found in the system, its data is returned in the TPositionModuleInfoBase derived object, supplied by client. Currently, the only supported subclass is TPositionModuleInfo. For more information, see Location Acquisition API.

    Figure 2 shows the client listing all available PSYs and retrieving their attributes:

    Figure 2. Retrieving PSY information -

    The following example shows the client getting list of names of enabled plug-ins:

    void ListEnabledPluginsL( CDesCArray& aNames ) +

    The following example shows the client getting list of names of enabled plug-ins:

    void ListEnabledPluginsL( CDesCArray& aNames ) { // Open the storage CPosModules* db = CPosModules::OpenL(); @@ -43,7 +43,7 @@ }

    Modifying PSY attributes

    In order to modify PSY attributes, the client sets values in a CPosModuleUpdate object and sends it to CPosModules::UpdateModuleL(). The CPosModuleUpdate class allows a client to change the cost, availability, and visibility attributes of a PSY.

    Figure 3 shows the steps to change the modifiable attributes of PSY.

    Figure 3. Modifying PSY attributes -

    PSY visibility and availability

    The visibility attribute only defines whether a PSY is listed when a client asks for a list of all available PSYs. Turning this attribute off for a specific PSY does not prevents client applications (which know its module ID) from using this PSY through Location Acquisition API. The client can still specify PSY’s module ID as a parameter for RPositioner::Open() and connection to that PSY is granted.

    The availability attribute defines if a PSY is totally hidden from the system and its use through the Location Acquisition API is disabled.

    The following code example shows how to hide the PSY from the PSY list and prevent its use:

    // Open the storage +

    PSY visibility and availability

    The visibility attribute only defines whether a PSY is listed when a client asks for a list of all available PSYs. Turning this attribute off for a specific PSY does not prevents client applications (which know its module ID) from using this PSY through Location Acquisition API. The client can still specify PSY’s module ID as a parameter for RPositioner::Open() and connection to that PSY is granted.

    The availability attribute defines if a PSY is totally hidden from the system and its use through the Location Acquisition API is disabled.

    The following code example shows how to hide the PSY from the PSY list and prevent its use:

    // Open the storage CPosModules* db = CPosModules::OpenL(); CleanupStack::PushL( db ); @@ -71,7 +71,7 @@ CleanupStack::PopAndDestroy( updateParams ); CleanupStack::PopAndDestroy( db ); -}

    CPosModules::SetModulePrioritiesL() allows a client to set the order of all PSYs immediately by supplying a list of plug-in IDs in the required order. Note that all the visible plug-ins must be declared in the supplied list: it is required that the list contains the same set of PSY IDs as it would be returned by CPosModules::ModuleIdListL().

    Note: Invisible PSYs are not ordered, i.e. they do not have any priority. When an invisible PSY is made visible, it will be assigned a priority according to its preference (defined in Positioning Plug-In Information API) and an internal sorting algorithm of the Location Framework.

    The following example shows how the client could move a PSY to the first place in priority order by specifying a whole new priority list:

    void MakePluginTopmostPriority2L( TPositionModuleId aModuleId ) +}

    CPosModules::SetModulePrioritiesL() allows a client to set the order of all PSYs immediately by supplying a list of plug-in IDs in the required order. Note that all the visible plug-ins must be declared in the supplied list: it is required that the list contains the same set of PSY IDs as it would be returned by CPosModules::ModuleIdListL().

    Note: Invisible PSYs are not ordered, i.e. they do not have any priority. When an invisible PSY is made visible, it will be assigned a priority according to its preference (defined in Positioning Plug-In Information API) and an internal sorting algorithm of the Location Framework.

    The following example shows how the client could move a PSY to the first place in priority order by specifying a whole new priority list:

    void MakePluginTopmostPriority2L( TPositionModuleId aModuleId ) { // Open the storage CPosModules* db = CPosModules::OpenL(); @@ -89,7 +89,7 @@ CleanupStack::PopAndDestroy( db ); }

    Listening to settings change events

    A client can register an observer to listen for changes in the location settings. The observer is notified when any change occurs. The observer is set by calling CPosModules::SetObserverL(). The observer must implement the MPosModulesObserver interface to receive settings change notifications. The observer can be removed by calling CPosModules::RemoveObserver().

    The event information is defined by TPosModulesEvent , which contains the ID of the affected module (if the event is associated with a single module) and type of the event. Event types are defined by TPosModulesEventType.

    Note: Events are reported as detected by comparing current global settings with their local copy created for the observer. This copy is created when event observer is set by CPosModules::SetObserverL(). It is updated whenever changes are detected. This means that no events will be reported to the observer if no changes have happened since the observer was set.

    Many events imply changes in priority order. If the client is interested in priority order it should reload the list of PSYs by calling CPosModules::ModuleIdListL() whenever such an event is reported.

    Table 2 describes possible events.

    Event type _TPosModulesEventType Is module ID set in TPosModulesEvent object ? Description

    EPosModulesEventUnspecified

    No

    Many changes in settings are detected, which affect priority order and PSY attributes. The client should reload the priority list and PSYs attributes.

    EPosModulesEventModuleInstalled

    Yes

    New PSY is installed and priority list is updated accordingly. The client can get PSYs attributes.

    EPosModulesEventModuleRemoved

    Yes

    A PSY is uninstalled and the priority list is updated accordingly. The client can no longer use the PSY.

    EPosModulesEventPrioritiesChanged

    No

    Changes in PSY priority order have occurred (PSYs reordered). No PSY attributes have changed.

    EPosModulesEventCostChanged

    Yes

    The cost indicator of a PSY has been changed.

    EPosModulesEventAvailabilityChanged

    Yes

    The availability status of a PSY has been changed.

    EPosModulesEventVisibilityChanged

    Yes

    The visibility status of a PSY has been changed and priority list is updated accordingly.

    Table 2. Settings event types and their meaning.

    Figure 4 shows basic steps that a client takes to listen for changes in location settings:

    Figure 4. Listening to change events -

    This example shows how a client can listen for PSY events:

    class CModuleEventListener : public CBase, public MPosModulesObserver +

    This example shows how a client can listen for PSY events:

    class CModuleEventListener : public CBase, public MPosModulesObserver { public: CModuleEventListener( CPosModules& aSettings ); diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita --- a/Symbian3/PDK/Source/GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DAC32BB9-C0EB-42FF-A596-C2F1A90A4BD7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -49,7 +49,7 @@ a view is; however, it does provide support for a view being a display page on the screen

    -Controller-view hierarchy in traditional and Symbian architectures +Controller-view hierarchy in traditional and Symbian architectures

    In practice, the view concept varies depending upon your chosen architecture approach:

    Traditional architecture diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DAD40CCE-EA59-4DCA-8922-824B18F0387A.dita --- a/Symbian3/PDK/Source/GUID-DAD40CCE-EA59-4DCA-8922-824B18F0387A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DAD40CCE-EA59-4DCA-8922-824B18F0387A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -19,7 +19,7 @@ softkey is <b>Cancel</b>.</p> <fig id="GUID-E2A1FCE9-6EF2-4CED-A74D-F41FE9DE5C46"> <title>Multi-selection list query - +
    Using multi-selection list queries in applications

    For implementation diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DAF12BDB-5453-5DDD-ACBA-4C29AE448D87_d0e214730_href.jpg Binary file Symbian3/PDK/Source/GUID-DAF12BDB-5453-5DDD-ACBA-4C29AE448D87_d0e214730_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DAF12BDB-5453-5DDD-ACBA-4C29AE448D87_d0e220750_href.jpg Binary file Symbian3/PDK/Source/GUID-DAF12BDB-5453-5DDD-ACBA-4C29AE448D87_d0e220750_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DAF35D49-9630-4186-A350-E8483693D50D.dita --- a/Symbian3/PDK/Source/GUID-DAF35D49-9630-4186-A350-E8483693D50D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DAF35D49-9630-4186-A350-E8483693D50D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -18,7 +18,7 @@ Hierarchical column list component, where the subtitle "Today" and "Yesterday" are expanded - +

    The hierarchical column list can have three different row types:

      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03.dita --- a/Symbian3/PDK/Source/GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DAF86036-CC40-5F26-9F15-2F2093F59C03.dita Fri Jul 16 17:23:46 2010 +0100 @@ -59,7 +59,7 @@ the WriteDeviceData capability.

      Ideally, all older .exe s should be migrated to use the 9.1 version of Define().

      The following diagram shows the "category space".

      - +

      The KUidSecurityThresholdCategoryValue value effectively forms a threshold value. Processes with a SID value below this threshold can define a category that is different from their SID, provided diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DB0EDBC2-8204-59F3-9029-EBBCE04A9E3C_d0e380066_href.png Binary file Symbian3/PDK/Source/GUID-DB0EDBC2-8204-59F3-9029-EBBCE04A9E3C_d0e380066_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DB0EDBC2-8204-59F3-9029-EBBCE04A9E3C_d0e385919_href.png Binary file Symbian3/PDK/Source/GUID-DB0EDBC2-8204-59F3-9029-EBBCE04A9E3C_d0e385919_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DB571D42-03F4-50F9-974D-B905707FC5F4_d0e110175_href.png Binary file Symbian3/PDK/Source/GUID-DB571D42-03F4-50F9-974D-B905707FC5F4_d0e110175_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DB571D42-03F4-50F9-974D-B905707FC5F4_d0e112598_href.png Binary file Symbian3/PDK/Source/GUID-DB571D42-03F4-50F9-974D-B905707FC5F4_d0e112598_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DB6EC285-F5DB-5A7A-AFF3-E423AD4B9F81-master.png Binary file Symbian3/PDK/Source/GUID-DB6EC285-F5DB-5A7A-AFF3-E423AD4B9F81-master.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DB6EC285-F5DB-5A7A-AFF3-E423AD4B9F81_d0e715964_href.png Binary file Symbian3/PDK/Source/GUID-DB6EC285-F5DB-5A7A-AFF3-E423AD4B9F81_d0e715964_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DB82D140-AB1B-5AA9-89CB-A5F68F328C85.dita --- a/Symbian3/PDK/Source/GUID-DB82D140-AB1B-5AA9-89CB-A5F68F328C85.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DB82D140-AB1B-5AA9-89CB-A5F68F328C85.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd"> Creating an MTP Data Provider Plug-in -

      Before you start, +

      Before you start, you must:

      • Understand the MTP Data Provider API.

      • @@ -19,7 +19,7 @@ capabilities.

      • MTP Device Services Extension Specification.

      -

      MTP data providers +

      MTP data providers are implemented as ECOM plug-ins loaded into the MTP framework. The MTP Data Provider APIs enable device creators to create data provider plug-ins and support specific media and data types. Data providers interact with the MTP diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DB9F413A-35E2-577E-91C3-1D519835FAB4_d0e109903_href.png Binary file Symbian3/PDK/Source/GUID-DB9F413A-35E2-577E-91C3-1D519835FAB4_d0e109903_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DB9F413A-35E2-577E-91C3-1D519835FAB4_d0e112326_href.png Binary file Symbian3/PDK/Source/GUID-DB9F413A-35E2-577E-91C3-1D519835FAB4_d0e112326_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DBEAD516-5DD4-5E33-B6DA-657C1AE60C4B.dita --- a/Symbian3/PDK/Source/GUID-DBEAD516-5DD4-5E33-B6DA-657C1AE60C4B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DBEAD516-5DD4-5E33-B6DA-657C1AE60C4B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -55,10 +55,10 @@ - + - + @@ -100,7 +100,7 @@

    Interaction between the two layers

    This section shows the main interactions between the two layers:

    1

    - +

    When the device is started, the platform independent layer calls the function DoCreate(). This is where the power handler should be registered, interrupts bound and any other initialisation should @@ -111,12 +111,12 @@ scheduled to run when the pen is lifted. This DFC is scheduled in the platform specific layer.

    See also Step 4 - implement DDigitiser::WaitForPenDown().

    2

    - +

    The platform specific layer calls RawSampleValid() when it has a group of digitizer coordinates ready to be processed by the platform independent layer. This is called in the context of a DFC thread, the DFC being queued when the digitizer interrupt is fired.

    3

    - +

    The platform independent layer calls WaitForPenUp() to request another sample from the hardware. This is declared as pure virtual in the DDigitiser class and is implemented in the platform @@ -124,7 +124,7 @@ has processed a group of raw samples while the pen is down, and also tells the platform specific layer that the buffers in the platform independent layer can be re-used.

    4

    - +

    The platform independent layer calls WaitForPenUpDebounce() if a group of collected samples is not good enough. This is declared as pure virtual in the DDigitiser class and is implemented in the @@ -132,18 +132,18 @@ layer has processed a group of raw samples while the pen is down and also tells the platform specific layer that the buffers in the platform independent layer can be re-used.

    5

    - +

    When the pen is lifted, the platform specific layer calls PenUp() in the platform independent layer, which then changes its internal state, issues a pen up event to the device, and then calls WaitForPenDown() in the platform specific layer.

    6

    - +

    The platform independent layer calls DigitiserOn() when the device is turned on, or it may be called from the HAL. The function, implemented in the platform specific layer, and turns the hardware on if it is not already on. See also Step 3 - implement power on behaviour.

    7

    - +

    DigitiserOff() turns the digitizer off, and may be called as a result of a power transition, or it may be called from the HAL. If it is called from the Power Manager, the digitizer may already be @@ -151,7 +151,7 @@ convert digitizer coordinates to and from screen coordinates. Both are declared as pure virtual in the DDigitiser class and need to be implemented in the platform specific layer.

    9

    - +

    The platform independent layer provides the HAL handler for the EHalGroupDigitiser HAL groups and function-ids. This is DDigitiser::HalFunction(). It delegates the handling of 5 of the individual behaviours, as represented by the TDigitiserHalFunction function-ids, to the following diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DBF6760F-D209-4B8F-89D5-A7EFFF7959E2.dita --- a/Symbian3/PDK/Source/GUID-DBF6760F-D209-4B8F-89D5-A7EFFF7959E2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DBF6760F-D209-4B8F-89D5-A7EFFF7959E2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,8 +14,8 @@ can open the data connection.

    To open the data connection with the selected destination network:

    - -Start the connection + +Start the connection through the Internet destination network using the Connection Manager API. Select the best available access point within the Internet destination diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DC37C3A9-B03F-5699-9E05-8ADD62C2FF04_d0e8927_href.png Binary file Symbian3/PDK/Source/GUID-DC37C3A9-B03F-5699-9E05-8ADD62C2FF04_d0e8927_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DC37C3A9-B03F-5699-9E05-8ADD62C2FF04_d0e9049_href.png Binary file Symbian3/PDK/Source/GUID-DC37C3A9-B03F-5699-9E05-8ADD62C2FF04_d0e9049_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DC3A8785-3ED3-5696-A5ED-AB66588A5C14.dita --- a/Symbian3/PDK/Source/GUID-DC3A8785-3ED3-5696-A5ED-AB66588A5C14.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DC3A8785-3ED3-5696-A5ED-AB66588A5C14.dita Fri Jul 16 17:23:46 2010 +0100 @@ -127,7 +127,7 @@

    The following diagram illustrates a typical ordinal usage scenario.

    Typical EGL ordinal usage scenario - +

    Note the following:

    • The DEF file for the EGL Interface uses ordinal position entry points 2-249.

    • @@ -157,7 +157,7 @@ that normal clients never see the internal API calls and avoids tight coupling with a specific implementation.

      EGL implementation's private LIB file - +

      Note the following:

      • The DEF file for the private interface uses ordinal position entry points 1 and 250-499.

      • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DC44DCFC-8549-5CDE-B6DA-F5FD73E2D9FC_d0e156006_href.jpg Binary file Symbian3/PDK/Source/GUID-DC44DCFC-8549-5CDE-B6DA-F5FD73E2D9FC_d0e156006_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DC44DCFC-8549-5CDE-B6DA-F5FD73E2D9FC_d0e162107_href.jpg Binary file Symbian3/PDK/Source/GUID-DC44DCFC-8549-5CDE-B6DA-F5FD73E2D9FC_d0e162107_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e101131_href.png Binary file Symbian3/PDK/Source/GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e101131_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e79523_href.png Binary file Symbian3/PDK/Source/GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e79523_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e83721_href.png Binary file Symbian3/PDK/Source/GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e83721_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e84330_href.png Binary file Symbian3/PDK/Source/GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e84330_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e88528_href.png Binary file Symbian3/PDK/Source/GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e88528_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e97052_href.png Binary file Symbian3/PDK/Source/GUID-DC4E42CA-2A65-44D7-8DBE-386F60F998A0_d0e97052_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DC7E3634-9762-542F-BDAE-AC1F2D03F55D_d0e589185_href.png Binary file Symbian3/PDK/Source/GUID-DC7E3634-9762-542F-BDAE-AC1F2D03F55D_d0e589185_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DC7E3634-9762-542F-BDAE-AC1F2D03F55D_d0e589493_href.png Binary file Symbian3/PDK/Source/GUID-DC7E3634-9762-542F-BDAE-AC1F2D03F55D_d0e589493_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DC7E3634-9762-542F-BDAE-AC1F2D03F55D_d0e617079_href.png Binary file Symbian3/PDK/Source/GUID-DC7E3634-9762-542F-BDAE-AC1F2D03F55D_d0e617079_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DC7E3634-9762-542F-BDAE-AC1F2D03F55D_d0e617387_href.png Binary file Symbian3/PDK/Source/GUID-DC7E3634-9762-542F-BDAE-AC1F2D03F55D_d0e617387_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DC8BFEF5-DA50-52DA-8CE2-5729A4A005F6.dita --- a/Symbian3/PDK/Source/GUID-DC8BFEF5-DA50-52DA-8CE2-5729A4A005F6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DC8BFEF5-DA50-52DA-8CE2-5729A4A005F6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -73,7 +73,7 @@ interface, and all require an implementation that implements that interface (shown in green).

        Key EGL relationships and dependencies - +

        The EGL Interface component provides a consistent interface to EGL on the Symbian platform, enabling cross-device compatibility. The component includes the Khronos-released diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DCA2880E-7DF9-5E60-8F87-241711935389.dita --- a/Symbian3/PDK/Source/GUID-DCA2880E-7DF9-5E60-8F87-241711935389.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DCA2880E-7DF9-5E60-8F87-241711935389.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,68 +1,68 @@ - - - - - -FeatMngrExample: -dynamic feature management exampleThis example demonstrates the use of Feature Manager APIs for dynamic -feature management. It also demonstrates how to receive notification about -changes to a feature. -

        Download

        Click on the following link to download -the example: FeatMngrExample.zip

        Click: browse to view the example code.

        -
        Purpose

        The example shows how to use the Feature Manager 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.

        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.

        -
        Design and implementation

        The example consists -of two processes:

          -
        • featmngrexample.exe: -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.

        • -
        • featurechecker.exe: -this process receives notification about new features installed or uninstalled -by the main process.

        • -

        FeatMngrExample

        This shows the use of the RFeatureControl API -to manage features.

        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 (KErrAccessDenied). 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.

        FeatureChecker

        This -process is started by featmngrexample.exe. It implements -the MFeatureObserver class to handle notification of feature -changes. FeatureChecker also demonstrates the use of the CFeatureNotifier class. -It implements HandleNotifyChange() to handle the changes -made by FeatMngrExample. The type of change is displayed to the user as an -infoprint message (User::InfoPrint()). HandleNotifyChange() is -called to handle changes for those features which are subscribed to for notification -(in the NotifyFeatureL () method).

        -
        Building and configuring

        To build the example:

          -
        • The example builds two -executables called featmngrexample.exe and featurechecker.exe in -the standard locations. The second executable is run by the first.

        • -
        • You can build the example -from your IDE or the command line.

          If you use an IDE, import the bld.inf file -of the example into your IDE, and use the build command of the IDE.

          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:

          bldmake -bldfiles

          abld build

          How to use bldmake and How to use abld describe -how to use the SBSv1 build tools.

        • -
        -
        Running the example

        When running the example, the -user is presented with various menu options that are self-explanatory. Press -any other key to exit.

        -
        See also:

        Feature Management

        + + + + + +FeatMngrExample: dynamic feature management exampleThis example demonstrates the use of Feature Manager APIs +for dynamic feature management. It also demonstrates how to receive +notification about changes to a feature. +
        Download

        Click on the following link to download the example: FeatMngrExample.zip

        Click: browse to view the example code.

        +
        Purpose

        The example shows how to use the Feature Manager 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.

        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.

        +
        Design +and implementation

        The example consists of two processes:

          +
        • featmngrexample.exe: 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.

        • +
        • featurechecker.exe: this process receives notification about new features installed +or uninstalled by the main process.

        • +

        FeatMngrExample

        This shows the use of the RFeatureControl API to manage features.

        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 (KErrAccessDenied). 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.

        FeatureChecker

        This process is +started by featmngrexample.exe. It implements +the MFeatureObserver class to handle notification +of feature changes. FeatureChecker also demonstrates +the use of the CFeatureNotifier class. It implements HandleNotifyChange() to handle the changes made by FeatMngrExample. +The type of change is displayed to the user as an infoprint message +(User::InfoPrint()). HandleNotifyChange() is called to handle changes for those features which are subscribed +to for notification (in the NotifyFeatureL () method).

        +
        Building +and configuring

        To build the example:

          +
        • The example +builds two executables called featmngrexample.exe and featurechecker.exe in the standard locations. +The second executable is run by the first.

        • +
        • You can build +the example from your IDE or the command line.

          If you use +an IDE, import the bld.inf file of the example +into your IDE, and use the build command of the IDE.

          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:

          bldmake bldfiles

          abld +build

        • +
        +
        Running +the example

        When running the example, the user is presented +with various menu options that are self-explanatory. Press any other +key to exit.

        +
        See +also:

        Feature Management

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DCBBDFA7-1E6C-5B00-A13E-A25794668E12_d0e375632_href.png Binary file Symbian3/PDK/Source/GUID-DCBBDFA7-1E6C-5B00-A13E-A25794668E12_d0e375632_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DCBBDFA7-1E6C-5B00-A13E-A25794668E12_d0e381476_href.png Binary file Symbian3/PDK/Source/GUID-DCBBDFA7-1E6C-5B00-A13E-A25794668E12_d0e381476_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DCCA3BD3-582A-5C71-A104-D922FFE3C680_d0e489690_href.png Binary file Symbian3/PDK/Source/GUID-DCCA3BD3-582A-5C71-A104-D922FFE3C680_d0e489690_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DCCA3BD3-582A-5C71-A104-D922FFE3C680_d0e495511_href.png Binary file Symbian3/PDK/Source/GUID-DCCA3BD3-582A-5C71-A104-D922FFE3C680_d0e495511_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DCFF3240-F1CD-41FF-B832-990ADF101674_d0e1761_href.png Binary file Symbian3/PDK/Source/GUID-DCFF3240-F1CD-41FF-B832-990ADF101674_d0e1761_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DCFF3240-F1CD-41FF-B832-990ADF101674_d0e1767_href.png Binary file Symbian3/PDK/Source/GUID-DCFF3240-F1CD-41FF-B832-990ADF101674_d0e1767_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD04585F-3D60-5CB2-8975-AE602B75740B_d0e643170_href.png Binary file Symbian3/PDK/Source/GUID-DD04585F-3D60-5CB2-8975-AE602B75740B_d0e643170_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD04585F-3D60-5CB2-8975-AE602B75740B_d0e655992_href.png Binary file Symbian3/PDK/Source/GUID-DD04585F-3D60-5CB2-8975-AE602B75740B_d0e655992_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD0DA06D-4180-54F1-8807-A7BF31D6A1F1_d0e297526_href.png Binary file Symbian3/PDK/Source/GUID-DD0DA06D-4180-54F1-8807-A7BF31D6A1F1_d0e297526_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD0DA06D-4180-54F1-8807-A7BF31D6A1F1_d0e303518_href.png Binary file Symbian3/PDK/Source/GUID-DD0DA06D-4180-54F1-8807-A7BF31D6A1F1_d0e303518_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD0F8AFB-F96C-4EAC-96DE-7D5C0597B574-master.png Binary file Symbian3/PDK/Source/GUID-DD0F8AFB-F96C-4EAC-96DE-7D5C0597B574-master.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD0F8AFB-F96C-4EAC-96DE-7D5C0597B574_d0e523799_href.png Binary file Symbian3/PDK/Source/GUID-DD0F8AFB-F96C-4EAC-96DE-7D5C0597B574_d0e523799_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD0F8AFB-F96C-4EAC-96DE-7D5C0597B574_d0e531259_href.png Binary file Symbian3/PDK/Source/GUID-DD0F8AFB-F96C-4EAC-96DE-7D5C0597B574_d0e531259_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD22D66C-C303-5432-9C24-71F26190FCA0_d0e227747_href.png Binary file Symbian3/PDK/Source/GUID-DD22D66C-C303-5432-9C24-71F26190FCA0_d0e227747_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD22D66C-C303-5432-9C24-71F26190FCA0_d0e233746_href.png Binary file Symbian3/PDK/Source/GUID-DD22D66C-C303-5432-9C24-71F26190FCA0_d0e233746_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD263BCA-B660-49A5-BB65-8C45035002BD-master.png Binary file Symbian3/PDK/Source/GUID-DD263BCA-B660-49A5-BB65-8C45035002BD-master.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD263BCA-B660-49A5-BB65-8C45035002BD_d0e104877_href.png Binary file Symbian3/PDK/Source/GUID-DD263BCA-B660-49A5-BB65-8C45035002BD_d0e104877_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD3783B2-B8ED-4CD4-AAF6-75EC8B53B8EF.dita --- a/Symbian3/PDK/Source/GUID-DD3783B2-B8ED-4CD4-AAF6-75EC8B53B8EF.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,18 +0,0 @@ - - - - - -Symbian -device user experience for non-touch devices -

        This section presents an overview of the user experience in Symbian devices -without touch. For information on interaction in devices supporting touch, -see Touch -UI user experience.

        -
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD39680E-C0CB-4D97-A921-25FACC30FBE3_d0e514595_href.jpg Binary file Symbian3/PDK/Source/GUID-DD39680E-C0CB-4D97-A921-25FACC30FBE3_d0e514595_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD39680E-C0CB-4D97-A921-25FACC30FBE3_d0e522049_href.jpg Binary file Symbian3/PDK/Source/GUID-DD39680E-C0CB-4D97-A921-25FACC30FBE3_d0e522049_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD3A519B-26D5-5920-BEF3-16273A661448_d0e77047_href.png Binary file Symbian3/PDK/Source/GUID-DD3A519B-26D5-5920-BEF3-16273A661448_d0e77047_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD3A519B-26D5-5920-BEF3-16273A661448_d0e81260_href.png Binary file Symbian3/PDK/Source/GUID-DD3A519B-26D5-5920-BEF3-16273A661448_d0e81260_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD764F2C-365A-5A5C-9412-4AF2EDB16924_d0e584215_href.png Binary file Symbian3/PDK/Source/GUID-DD764F2C-365A-5A5C-9412-4AF2EDB16924_d0e584215_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD764F2C-365A-5A5C-9412-4AF2EDB16924_d0e633503_href.png Binary file Symbian3/PDK/Source/GUID-DD764F2C-365A-5A5C-9412-4AF2EDB16924_d0e633503_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD77AA04-D0AB-4BEB-900F-B3BE50AC0B7F.dita --- a/Symbian3/PDK/Source/GUID-DD77AA04-D0AB-4BEB-900F-B3BE50AC0B7F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DD77AA04-D0AB-4BEB-900F-B3BE50AC0B7F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,38 +12,38 @@ Opening a Connection based on User SelectionExtended Connection Preferences API can be used by applications to open a connection based on user selection. -

        When an +

        When an application chooses to establish a connection based on user selection, Connection selection dialog needs to be enabled. Only the SNAPs and IAPs matching with bearer set are displayed for selection.

        - -Connect to socket server . + +Connect to socket server . RSocketServ ss; ss.Connect(); - Open a RConnection object. + Open a RConnection object. RConnection conn; conn.Open( ss ); -Create a connection +Create a connection preference list and extended connection preferences object. TConnPrefList prefList; TExtendedConnPref preferences; -Enable the Connection +Enable the Connection selection dialog to accept user queries using TExtendedConnPref::SetConnSelectionDialog(). preferences.SetConnSelectionDialog( ETrue ); -Append extended +Append extended connection preferences into connection preference list. prefList.AppendL( &preferences ); -Start a connection +Start a connection with connection preferences. conn.Start( prefList ); -

        The application +

        The application is connected to the SNAP or IAP selected by the user.

        Additional diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD7D33BD-0DDB-584C-9362-AEECFA1EA9A7.dita --- a/Symbian3/PDK/Source/GUID-DD7D33BD-0DDB-584C-9362-AEECFA1EA9A7.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -makefile

        abld [ test ] makefile ( ( [-c] | [-w] ) | ( [-k] [-v] ) ) [ platform ] [ program]

        This command creates the makefiles for each project within your component, via makmake.

        To generate the makefiles, makmake is invoked with the -d switch, which causes the makefiles to be created in a subdirectory of epoc32\build\.

        The makefiles are always created with this command, regardless of whether the corresponding .mmp files have been changed or not.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD7D5D55-A2F1-54FB-AA38-B4A7C920B6A6-GENID-1-12-1-26-1-1-10-1-6-1-4-1-4-1-7-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-DD7D5D55-A2F1-54FB-AA38-B4A7C920B6A6-GENID-1-12-1-26-1-1-10-1-6-1-4-1-4-1-7-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,89 @@ + + + + + +Manipulating +Applicability and Trust Settings for a Certificate +

        A certificate can be trusted for a certain task or application. Currently, +the following applications are defined:

        +
          +
        • Software installation +(SWInstall)

        • +
        • Signature verification +of OCSP response (SWInstallOCSP)

        • +
        • TLS/SSL authentication +(TLS/SSL)

        • +
        +

        The SWInstall application allows us to use a given certificate to verify +the signature of the signed sis files you want to install. A certificate with +SWInstallOCSP applicability can be used to verify the signature of OCSP responses.

        +

        Certificate can be used to perform TLS and SSL authentication. Certificates +are trusted to do that with the TLS/SSL application.

        +

        certtool offers three commands to manipulate the applications +of a given certificate: setapps, addapps and removeapps.

        +

        For this to work, certclients.dat should exist in c:\private\101f72a6\ with +the required application.

        +

        The setapps command

        +

        The setapps command can be used to set the applications a specific certificate +can be used for. For instance, update the applications of the CertCA certificate. +Initially it is trusted for SWInstall:

        +

        certtool –list CertCA

        +Symbian CertStore Manipulation Tool +Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. +Label: TCA Format: X509 Owner Type: Root (CA) +Issuer Name: CertCA Subject Name: CertCA +Valid From: 16:36:00 Tue 12th May 2009 Valid Until: 16:36:00 Tue 11th May 2010 +Trusted for Applications: SWInstall +

        Change the applications using the setapps command. Set the applications +to SSL/TLS:

        +

        certtool –setapps –apps SSL/TLS TestCA

        +Symbian CertStore Manipulation Tool +Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. +Certificate applications set successfully +Label: TestCA Format: X509 Owner Type: Root (CA) +Issuer Name: CertCA Subject Name: CertCA +Valid From: 16:36:00 Tue 12th May 2009 Valid Until: 16:36:00 Tue 11th May 2010 +Trusted for Applications: SSL/TLS +

        The TestCA certificate is now trusted for server authentication with SSL +and TLS. If the specified applications are not recognized, an error will occur:

        +Symbian CertStore Manipulation Tool +Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. +No valid applications specified, try one of: +[SWInstall, SWInstallOCSP, SSL/TLS] +

        Remember that applications are case sensitive.

        +

        You can also set the applications using UIDs, for example:

        +

        certtool –setapps –uids 0x100042AB abc

        +

        The addapps command

        +

        If you want to add again SWInstall to the applications TestCA is trusted +for, you can use the setapps command to accomplish our goal. But you would +need to specify all the applications, for example:

        +

        certtool –setapps –apps SSL/TLS SWInstall TestCA

        +

        The addapps command gives a shortcut. It enables you to specify an application +which will be added to the existing ones:

        +

        certtool –addapps –apps SWInstall TestCA

        +

        You can also add the applications using UIDs, for example:

        +

        certtool –addapps -uids 0x101F9B28 abc

        +

        The removeapps command

        +

        The removeapps command is essentially dual to addapps. It helps to remove +apps from those a certificate is trusted for.

        +

        certtool –removeapps –apps SWInstall TestCA

        +

        You can also remove the applications using UIDs, for example:

        +

        certtool -removeapps –apps 0x101F9B28 abc

        +

        Remember that applications and labels are case sensitive.

        +
        +Working with +Multiple Certificate Store Implementations +Listing Contents +of Certificate Stores +Importing +Certificates +Removing +Certificates +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD7D5D55-A2F1-54FB-AA38-B4A7C920B6A6-GENID-1-12-1-27-1-1-10-1-6-1-4-1-4-1-7-1.dita --- a/Symbian3/PDK/Source/GUID-DD7D5D55-A2F1-54FB-AA38-B4A7C920B6A6-GENID-1-12-1-27-1-1-10-1-6-1-4-1-4-1-7-1.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,89 +0,0 @@ - - - - - -Manipulating -Applicability and Trust Settings for a Certificate -

        A certificate can be trusted for a certain task or application. Currently, -the following applications are defined:

        -
          -
        • Software installation -(SWInstall)

        • -
        • Signature verification -of OCSP response (SWInstallOCSP)

        • -
        • TLS/SSL authentication -(TLS/SSL)

        • -
        -

        The SWInstall application allows us to use a given certificate to verify -the signature of the signed sis files you want to install. A certificate with -SWInstallOCSP applicability can be used to verify the signature of OCSP responses.

        -

        Certificate can be used to perform TLS and SSL authentication. Certificates -are trusted to do that with the TLS/SSL application.

        -

        certtool offers three commands to manipulate the applications -of a given certificate: setapps, addapps and removeapps.

        -

        For this to work, certclients.dat should exist in c:\private\101f72a6\ with -the required application.

        -

        The setapps command

        -

        The setapps command can be used to set the applications a specific certificate -can be used for. For instance, update the applications of the CertCA certificate. -Initially it is trusted for SWInstall:

        -

        certtool –list CertCA

        -Symbian CertStore Manipulation Tool -Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. -Label: TCA Format: X509 Owner Type: Root (CA) -Issuer Name: CertCA Subject Name: CertCA -Valid From: 16:36:00 Tue 12th May 2009 Valid Until: 16:36:00 Tue 11th May 2010 -Trusted for Applications: SWInstall -

        Change the applications using the setapps command. Set the applications -to SSL/TLS:

        -

        certtool –setapps –apps SSL/TLS TestCA

        -Symbian CertStore Manipulation Tool -Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. -Certificate applications set successfully -Label: TestCA Format: X509 Owner Type: Root (CA) -Issuer Name: CertCA Subject Name: CertCA -Valid From: 16:36:00 Tue 12th May 2009 Valid Until: 16:36:00 Tue 11th May 2010 -Trusted for Applications: SSL/TLS -

        The TestCA certificate is now trusted for server authentication with SSL -and TLS. If the specified applications are not recognized, an error will occur:

        -Symbian CertStore Manipulation Tool -Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). All rights reserved. -No valid applications specified, try one of: -[SWInstall, SWInstallOCSP, SSL/TLS] -

        Remember that applications are case sensitive.

        -

        You can also set the applications using UIDs, for example:

        -

        certtool –setapps –uids 0x100042AB abc

        -

        The addapps command

        -

        If you want to add again SWInstall to the applications TestCA is trusted -for, you can use the setapps command to accomplish our goal. But you would -need to specify all the applications, for example:

        -

        certtool –setapps –apps SSL/TLS SWInstall TestCA

        -

        The addapps command gives a shortcut. It enables you to specify an application -which will be added to the existing ones:

        -

        certtool –addapps –apps SWInstall TestCA

        -

        You can also add the applications using UIDs, for example:

        -

        certtool –addapps -uids 0x101F9B28 abc

        -

        The removeapps command

        -

        The removeapps command is essentially dual to addapps. It helps to remove -apps from those a certificate is trusted for.

        -

        certtool –removeapps –apps SWInstall TestCA

        -

        You can also remove the applications using UIDs, for example:

        -

        certtool -removeapps –apps 0x101F9B28 abc

        -

        Remember that applications and labels are case sensitive.

        -
        -Working with -Multiple Certificate Store Implementations -Listing Contents -of Certificate Stores -Importing -Certificates -Removing -Certificates -
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DD95C4FA-B044-5A0E-A556-C7171AEFED8E.dita --- a/Symbian3/PDK/Source/GUID-DD95C4FA-B044-5A0E-A556-C7171AEFED8E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DD95C4FA-B044-5A0E-A556-C7171AEFED8E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -30,11 +30,11 @@ session:

        Session set-up sequence diagram - + Session tear-down sequence diagram - +
        See also

        CAF Streaming Support Overview

        CAF diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DDA0ECF7-BC92-4AFB-998F-5FDD300655FB.dita --- a/Symbian3/PDK/Source/GUID-DDA0ECF7-BC92-4AFB-998F-5FDD300655FB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DDA0ECF7-BC92-4AFB-998F-5FDD300655FB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,8 +21,8 @@

      • c:\FileMenu.r10 is for ELangAmerican.

      - - + +

      In the application, define a string with the neutral-language resource file name.

      _LIT(KRscFilename, "C:\\FileMenu.rsc");
      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DDD07E37-E5BE-5187-9C62-A3F4F9343C2A_d0e551725_href.png Binary file Symbian3/PDK/Source/GUID-DDD07E37-E5BE-5187-9C62-A3F4F9343C2A_d0e551725_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DDD07E37-E5BE-5187-9C62-A3F4F9343C2A_d0e559181_href.png Binary file Symbian3/PDK/Source/GUID-DDD07E37-E5BE-5187-9C62-A3F4F9343C2A_d0e559181_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DDE06BD5-2515-59FD-B91F-4C78A768533D.dita --- a/Symbian3/PDK/Source/GUID-DDE06BD5-2515-59FD-B91F-4C78A768533D.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - --savespace

      This option removes intermediate files created during the building of a project if the build is eventually successful. If the build fails, the intermediate files remain so that errors can be corrected and an incremental rebuild of the project version that failed to build can take place.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DDEDB7CB-E0B2-5F7F-A9D9-79EFCBBFB022_d0e231418_href.png Binary file Symbian3/PDK/Source/GUID-DDEDB7CB-E0B2-5F7F-A9D9-79EFCBBFB022_d0e231418_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DDEDB7CB-E0B2-5F7F-A9D9-79EFCBBFB022_d0e237413_href.png Binary file Symbian3/PDK/Source/GUID-DDEDB7CB-E0B2-5F7F-A9D9-79EFCBBFB022_d0e237413_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DE0E5230-A422-5859-A8DF-5E51AAA9B23A_d0e263033_href.png Binary file Symbian3/PDK/Source/GUID-DE0E5230-A422-5859-A8DF-5E51AAA9B23A_d0e263033_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DE0E5230-A422-5859-A8DF-5E51AAA9B23A_d0e269033_href.png Binary file Symbian3/PDK/Source/GUID-DE0E5230-A422-5859-A8DF-5E51AAA9B23A_d0e269033_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DE417474-906D-5EB8-A80D-2CBF099EC81C_d0e535431_href.jpg Binary file Symbian3/PDK/Source/GUID-DE417474-906D-5EB8-A80D-2CBF099EC81C_d0e535431_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DE417474-906D-5EB8-A80D-2CBF099EC81C_d0e542891_href.jpg Binary file Symbian3/PDK/Source/GUID-DE417474-906D-5EB8-A80D-2CBF099EC81C_d0e542891_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DE5FC074-75C1-5833-83B2-D25396F52732_d0e581278_href.png Binary file Symbian3/PDK/Source/GUID-DE5FC074-75C1-5833-83B2-D25396F52732_d0e581278_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DE5FC074-75C1-5833-83B2-D25396F52732_d0e630566_href.png Binary file Symbian3/PDK/Source/GUID-DE5FC074-75C1-5833-83B2-D25396F52732_d0e630566_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DE76FE7C-962D-5344-815F-E44145E2A684.dita --- a/Symbian3/PDK/Source/GUID-DE76FE7C-962D-5344-815F-E44145E2A684.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DE76FE7C-962D-5344-815F-E44145E2A684.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> ArchitectureThis section describes the architectural relationships of the SAT API.

      The SAT API is a telephony system (TSY) extension module that interacts with the telephony server to perform different tasks. Normally the licensees implement the SAT clients and the TSY.

      The TSY handles the messages between the SAT clients, telephony server and the toolkit application. All the TSY subsessions are derived from CTelObject. TSY responds with a CTelObject::ReqCompleted after the completion of a request and returns the handle to the client. Use asynchronous calls and active objects are used to prevent the threads from blocking other threads.

      The server calls the ReqModeL() to find out the flow control mechanism implemented by the client. The TSY can control the flow when you calling the CTelObject::FlowControlSuspend() to stop the flow and CTelObject::FlowControlResume() to start a flow explicitly.

      SAT API Components -
      Description

      SAT engine

      The SAT client is a plug-in developed by the licensees to implement the toolkit functions. The SAT clients request proactive command notification by using RSat::Notifyxyz, where xyz represents one of the proactive command.

      ETelSat API

      ETelSat API provides the RSat interface and enables the SAT clients to request for proactive commands and multimedia proactive commands from the SAT application through the TSY. ETelSat API queues the notification request messages and responds to the SAT client when it receives the commands from ICC. It also passes back the response messages from the clients to the ICC.

      TSY

      The TSYs are usually developed by the licensees and are extension modules to the telephony server. They support the client side functionality by translating the messages to be implemented in the phone

      SAT application

      One or more SAT applications are stored in the ICC of the mobile device. They SAT application gets started as soon as the ICC is inserted in a SAT enabled phone. Once started, the application waits for request messages from the clients and responds to them accordingly. The SAT application is also responsible for security features like encryption, authentication of the messages between the phone and the network operator.

      \ No newline at end of file +
      Description

      SAT engine

      The SAT client is a plug-in developed by the licensees to implement the toolkit functions. The SAT clients request proactive command notification by using RSat::Notifyxyz, where xyz represents one of the proactive command.

      ETelSat API

      ETelSat API provides the RSat interface and enables the SAT clients to request for proactive commands and multimedia proactive commands from the SAT application through the TSY. ETelSat API queues the notification request messages and responds to the SAT client when it receives the commands from ICC. It also passes back the response messages from the clients to the ICC.

      TSY

      The TSYs are usually developed by the licensees and are extension modules to the telephony server. They support the client side functionality by translating the messages to be implemented in the phone

      SAT application

      One or more SAT applications are stored in the ICC of the mobile device. They SAT application gets started as soon as the ICC is inserted in a SAT enabled phone. Once started, the application waits for request messages from the clients and responds to them accordingly. The SAT application is also responsible for security features like encryption, authentication of the messages between the phone and the network operator.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DE7BD5C8-9966-5D5E-B81F-D57EA9FBA451_d0e380007_href.png Binary file Symbian3/PDK/Source/GUID-DE7BD5C8-9966-5D5E-B81F-D57EA9FBA451_d0e380007_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DE7BD5C8-9966-5D5E-B81F-D57EA9FBA451_d0e385860_href.png Binary file Symbian3/PDK/Source/GUID-DE7BD5C8-9966-5D5E-B81F-D57EA9FBA451_d0e385860_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DEB6E162-B2AA-5DF6-B750-E833C7DE4902.dita --- a/Symbian3/PDK/Source/GUID-DEB6E162-B2AA-5DF6-B750-E833C7DE4902.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DEB6E162-B2AA-5DF6-B750-E833C7DE4902.dita Fri Jul 16 17:23:46 2010 +0100 @@ -65,7 +65,7 @@ a peer-to-peer (one on one) connection assumes the PANU role, thus becoming a client member of the piconet.

      PANU to PANU connection - +

      PAN-GN

      A PAN-GN device assumes the role of a forwarding node or host and the attached PANU devices act as clients, networking up to a maximum of seven PANUs. The @@ -85,7 +85,7 @@ role allows only a single PANU client access to the uplink for the external network.

      PAN-NAP, bridging networks - +

      The following image shows a Bluetooth-enabled laptop accessing the Internet through a mobile handset that is acting as a PAN-NAP device. The Bluetooth handset may provide the uplink via GPRS, WIFI, dial-up, or in some diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita --- a/Symbian3/PDK/Source/GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DEF3B8B3-5BD7-505B-93F9-A20CE00FFAE6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -62,7 +62,7 @@

    • Preventing deadlock.

    The diagram below shows how plugins fit into the File Server software stack.

    - +

    Note: more than one plugin can be loaded into the file server at the same time. A plugin is not aware of other plugins.

    Threads and execution context

    The Symbian platform File Server has multiple threads. There is a thread for each @@ -94,7 +94,7 @@ the plugins are not re-entrant safe this can lead to deadlock in the file server.

    File server deadlock - +

    The framework introduced in v9.5 prevents deadlock by allowing plugins to issue internal file server requests after intercepting a request by using the newly introduced RFilePlugin, RDirPlugin and RFsPlugin APIs @@ -104,7 +104,7 @@ for a typical plugin intercepting a file read request is illustrated below:

    Read request intercepted by a plugin - +

    The classes RFilePlugin, RDirPlugin and RFsPlugin have been introduced to facilitate plugins with direct access behaviour on file and directory requests. These classes are analogous to the client-side RFile, RDir and RFs classes and have functions with similar or identical signitures.

    In @@ -184,7 +184,7 @@ first plugin to be able to intercept requests.

    Plugin stack showing absolute positions - +

    The absolute position method is more appropriate for mounting plugins that operate regardless of their position in the plugin stack or when all of the plugins for a device are known and installed when manufactured. This diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DF14773D-6A2E-5FAD-A1CC-5D54E53BEA2E_d0e590591_href.png Binary file Symbian3/PDK/Source/GUID-DF14773D-6A2E-5FAD-A1CC-5D54E53BEA2E_d0e590591_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DF14773D-6A2E-5FAD-A1CC-5D54E53BEA2E_d0e618485_href.png Binary file Symbian3/PDK/Source/GUID-DF14773D-6A2E-5FAD-A1CC-5D54E53BEA2E_d0e618485_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DF1B3C55-2CFC-49C8-88A2-D10925ECAC3E.dita --- a/Symbian3/PDK/Source/GUID-DF1B3C55-2CFC-49C8-88A2-D10925ECAC3E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DF1B3C55-2CFC-49C8-88A2-D10925ECAC3E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -23,7 +23,7 @@ do not freeze the invalid export entries in the DEF file using the ARM RVCT compiler.

    -
    Use +<section id="GUID-DDE6596E-1A67-4219-8822-45A82C39DF0B-GENID-1-12-1-14-1-1-9-1-6-1-3-2"> <title>Use of Global Destructor

    Symbian does not invoke destructors of global objects upon program termination. For example, in the code below, the destructor ~foo() is not called upon program termination. @@ -49,7 +49,7 @@ }

    -
    Issues +<section id="GUID-DDE6596E-1A67-4219-8822-45A82C39DF0B-GENID-1-12-1-14-1-1-9-1-6-1-3-3"> <title>Issues with <codeph>new</codeph> operator

    Throwing bad_alloc or any object from new on ARMV5 platfrom crashes. RVCT reports an exception when new throws bad_alloc. The problem occurs even if the user throws any object from within an overloaded @@ -73,7 +73,7 @@ is by defining new similar to:

    void* operator new(size_t s,newarg) throw (std::bad_alloc)

    and invoking it as:

    Myclass* my = new(S60) Myclass()
    -
    The <codeph>id</codeph> Member +<section id="GUID-DDE6596E-1A67-4219-8822-45A82C39DF0B-GENID-1-12-1-14-1-1-9-1-6-1-3-4"> <title>The <codeph>id</codeph> Member Issue

    The id member variable of facet classes cannot be accessed directly, it has to be accessed via the GetFacetLocaleId() interface.

    Following code snippet is an example that illustrates how to uselocale::id while diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DF3045C7-4BDA-53AF-85E4-A8AAD99F40F7_d0e393517_href.png Binary file Symbian3/PDK/Source/GUID-DF3045C7-4BDA-53AF-85E4-A8AAD99F40F7_d0e393517_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DF3045C7-4BDA-53AF-85E4-A8AAD99F40F7_d0e399370_href.png Binary file Symbian3/PDK/Source/GUID-DF3045C7-4BDA-53AF-85E4-A8AAD99F40F7_d0e399370_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DF3ECD47-4A5B-5836-B5CA-ACCEE98412D4_d0e74379_href.png Binary file Symbian3/PDK/Source/GUID-DF3ECD47-4A5B-5836-B5CA-ACCEE98412D4_d0e74379_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DF3ECD47-4A5B-5836-B5CA-ACCEE98412D4_d0e78592_href.png Binary file Symbian3/PDK/Source/GUID-DF3ECD47-4A5B-5836-B5CA-ACCEE98412D4_d0e78592_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DF3F2FD0-FF68-4CEF-843F-CBC9E84F3A7F.dita --- a/Symbian3/PDK/Source/GUID-DF3F2FD0-FF68-4CEF-843F-CBC9E84F3A7F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DF3F2FD0-FF68-4CEF-843F-CBC9E84F3A7F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,12 +12,12 @@ Signal pane

    The Signal pane displays the cellular signal strength indicator.

    - + Signal pane (left) - +

    The indicator may also contain information about a packet data connection (such as GPRS) status.

    -

    The Signal pane is not accessible -to applications.

    +

    The Signal pane is not +accessible to applications.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DF756D6C-1E03-4EC0-B074-09611D122359.dita --- a/Symbian3/PDK/Source/GUID-DF756D6C-1E03-4EC0-B074-09611D122359.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DF756D6C-1E03-4EC0-B074-09611D122359.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,109 +1,99 @@ - - - - - -Storing -location information on a mobile device -

    Location information may -be stored as database entries called landmarks that contain at least -a name and a location.

    -

    Typical use cases include:

    -
      -
    • Sending location information that is stored according to -the World Geodetic System (WGS 84) to another device.

    • -
    • Finding sites within a set distance of a stored point.

      -
    • -
    - -

    The SDK does not include a map API, and therefore you must use a third -party API to display the location information you receive on a map. Does this also apply to S60 5th Edition?

    -
    -
    Saving location -information on a mobile device -

    To store location information on your mobile device:

    -
      -
    1. Make use of -the methods of the Landmarks -API when -constructing your application.

      - -

      The CPosLandmarkDatabase class is used for accessing the database with the landmarks -information and the CPosLandmark class -contains the location information.

      -

      For detailed information on how to do this, see:

      -
        -
      • Using landmarks database for a discussion of how to -start accessing the database with the location information, including a structure -diagram.

      • -
      • Managing landmarks for code samples of opening, editing, and adding -location information to a database

      • -
      • Listening to database events for possible events type passed to -your application and code samples for implementing a listener

        - -

        The TPosLmEvent class -is used in listening for events.

        -
        -
      • -
      -
      -
    2. -
    3. Make sure eposlandmarks.lib is -accessible to your linker when compiling your application by including it -in your .mmp file or by editing the project properties in your IDE, depending -on your build environment.

    4. -
    5. Make sure -you have the correct capabilities information set for your application, depending -on your application you may need LocalServices, NetworkServices, ReadDeviceData, ReadUserData, WriteDeviceData, and WriteUserData.

      -
    6. -
    -
    -
    Additional information -on storing location information -

    For more information see, Question -for the reviewers: Is there anything else that we could add here?

    -
      -
    • API description for a description of the API and its class structure

      -
    • -
    • Using -the Landmarks API for a general overview on how to create applications -using the API

    • -
    • For a reference example on searching and manipulating the -information in the location database, see LocationLandmarksRefAppForS60 in -the SDK (<SDK installation directory>\S60CppExamples\)

      -
    • -
    • For a reference example on how to use common UI components -to work with landmark data, see LocationLandmarksUIRefApp in -the SDK (<SDK installation directory>\S60CppExamples\AutoAdaptedToTouchEx\)

      -
    • -
    -
    -
    Related Symbian -APIs -

    The Symbian platform also offers the following related APIs:

    -
      -
    • Landmarks -API for accessing the database

    • -
    • Landmarks Database Management API for creating and deleting databases

      -
    • -
    • Landmarks -Search API for allowing mobile devices users to search the database

      -
    • -
    • Landmarks -UI Add/Edit API for allowing mobile device users to add and edit -landmarks

    • -
    • Landmarks -UI Selector API for displaying and selecting landmarks

    • -
    • Location Acquisition API for finding the location of a mobile -device

    • -
    • Communication for -sending location information to other devices

    • -
    -
    + + + + + +Storing location information on a mobile device +

    Location +information may be stored as database entries called landmarks that contain at least a name and a location.

    +

    Typical use cases include:

    +
      +
    • Sending location information that is stored according +to the World Geodetic System (WGS 84) to another device.

      +
    • +
    • Finding sites within a set distance of a stored point.

      +
    • +
    + +

    The SDK does not include a map API, and therefore you must use +a third party API to display the location information you receive +on a map. Does this also apply +to S60 5th Edition?

    +
    +
    Saving +location information on a mobile device +

    To store location information on your mobile device:

    +
      +
    1. Make +use of the methods of the Landmarks APIwhen constructing your application.

      + +

      The CPosLandmarkDatabase class is used for accessing the database with the landmarks +information and the CPosLandmark class contains the location information.

      +

      For detailed information on how to do this, see:

      +
        +
      • Using landmarks database for a discussion of how to start +accessing the database with the location information, including a +structure diagram.

      • +
      • Managing landmarks for code samples of opening, editing, +and adding location information to a database

      • +
      • Listening to database events for possible events type passed +to your application and code samples for implementing a listener

        + +

        The TPosLmEvent class is +used in listening for events.

        +
        +
      • +
      +
      +
    2. +
    3. Make +sure eposlandmarks.lib is accessible to your linker +when compiling your application by including it in your .mmp file +or by editing the project properties in your IDE, depending on your +build environment.

    4. +
    5. Make +sure you have the correct capabilities information set for your application, +depending on your application you may need LocalServices, NetworkServices, ReadDeviceData, ReadUserData, WriteDeviceData, and WriteUserData.

    6. +
    +
    +
    Additional +information on storing location information +

    For more information see, Question for the reviewers: Is there anything else that we could +add here?

    +
      +
    • API description for a description of the API and its class +structure

    • +
    • Using the Landmarks API for a general overview on how to +create applications using the API

    • +
    • For a reference example on searching and manipulating +the information in the location database, see LocationLandmarksRefAppForS60 in the SDK (<SDK installation directory>\S60CppExamples\)

    • +
    • For a reference example on how to use common UI components +to work with landmark data, see LocationLandmarksUIRefApp in the SDK (<SDK installation directory>\S60CppExamples\AutoAdaptedToTouchEx\)

    • +
    +
    +
    Related +Symbian APIs +

    The Symbian platform also offers the following related APIs:

    +
      +
    • Landmarks API for accessing the database

    • +
    • Landmarks Database Management API for creating and deleting +databases

    • +
    • Landmarks Search API for allowing mobile devices users +to search the database

    • +
    • Landmarks UI Add/Edit API for allowing mobile device users +to add and edit landmarks

    • +
    • Landmarks UI Selector API for displaying and selecting +landmarks

    • +
    • Location Acquisition API for finding the location +of a mobile device

    • +
    • Communication for sending location information to other devices

      +
    • +
    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DF7959E7-15A4-5504-8D22-B8189DB2688E.dita --- a/Symbian3/PDK/Source/GUID-DF7959E7-15A4-5504-8D22-B8189DB2688E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-DF7959E7-15A4-5504-8D22-B8189DB2688E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -Introduction to Swizzles and deferred loading

    In complex applications involving a large network of objects, it may be desirable, and even necessary, to defer the loading of objects into memory from the store.

    It should, therefore, be possible to represent such an object in one of two ways:

    • by the stream ID of the stream containing the external representation of that object, if it is not in memory.

    • by a pointer, if it is in memory (or has already been loaded into memory); the pointer points to the in-memory object.

    A Swizzle is a device for handling this dual representation.

    A typical container type object, therefore, does not have a pointer directly to a contained object, but has a Swizzle which can represent that contained object either as a pointer or as a stream ID, as illustrated in the following diagram.

    A Swizzle can be considered as a lean, but efficient, container in its own right.

    The concrete Swizzle classes are templated; the template parameter defines the type of object which the Swizzle represents.

    There are two general concrete Swizzle classes:

    • TSwizzle<class T>

    • TSwizzleC<class T>

    A TSwizzle<class T> represents a <class T> type object. Full access is available to the <class T> type object through the Swizzle.

    A TSwizzleC<class T> represents a <class T> type object. Access to the object is limited; in particular the object cannot be changed.

    \ No newline at end of file +Introduction to Swizzles and deferred loading

    In complex applications involving a large network of objects, it may be desirable, and even necessary, to defer the loading of objects into memory from the store.

    It should, therefore, be possible to represent such an object in one of two ways:

    • by the stream ID of the stream containing the external representation of that object, if it is not in memory.

    • by a pointer, if it is in memory (or has already been loaded into memory); the pointer points to the in-memory object.

    A Swizzle is a device for handling this dual representation.

    A typical container type object, therefore, does not have a pointer directly to a contained object, but has a Swizzle which can represent that contained object either as a pointer or as a stream ID, as illustrated in the following diagram.

    A Swizzle can be considered as a lean, but efficient, container in its own right.

    The concrete Swizzle classes are templated; the template parameter defines the type of object which the Swizzle represents.

    There are two general concrete Swizzle classes:

    • TSwizzle<class T>

    • TSwizzleC<class T>

    A TSwizzle<class T> represents a <class T> type object. Full access is available to the <class T> type object through the Swizzle.

    A TSwizzleC<class T> represents a <class T> type object. Access to the object is limited; in particular the object cannot be changed.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DF83E798-408C-5E69-9520-A733DAEAB788_d0e109400_href.png Binary file Symbian3/PDK/Source/GUID-DF83E798-408C-5E69-9520-A733DAEAB788_d0e109400_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DF83E798-408C-5E69-9520-A733DAEAB788_d0e111823_href.png Binary file Symbian3/PDK/Source/GUID-DF83E798-408C-5E69-9520-A733DAEAB788_d0e111823_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DFADEB44-4D57-564F-ABDF-A3CCD38ACABC_d0e382400_href.png Binary file Symbian3/PDK/Source/GUID-DFADEB44-4D57-564F-ABDF-A3CCD38ACABC_d0e382400_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DFADEB44-4D57-564F-ABDF-A3CCD38ACABC_d0e388253_href.png Binary file Symbian3/PDK/Source/GUID-DFADEB44-4D57-564F-ABDF-A3CCD38ACABC_d0e388253_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DFBBA71F-0042-4303-B66F-0D291106B655_d0e101297_href.png Binary file Symbian3/PDK/Source/GUID-DFBBA71F-0042-4303-B66F-0D291106B655_d0e101297_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DFBBA71F-0042-4303-B66F-0D291106B655_d0e79693_href.png Binary file Symbian3/PDK/Source/GUID-DFBBA71F-0042-4303-B66F-0D291106B655_d0e79693_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DFBBA71F-0042-4303-B66F-0D291106B655_d0e83891_href.png Binary file Symbian3/PDK/Source/GUID-DFBBA71F-0042-4303-B66F-0D291106B655_d0e83891_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DFBBA71F-0042-4303-B66F-0D291106B655_d0e86395_href.png Binary file Symbian3/PDK/Source/GUID-DFBBA71F-0042-4303-B66F-0D291106B655_d0e86395_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DFBBA71F-0042-4303-B66F-0D291106B655_d0e90593_href.png Binary file Symbian3/PDK/Source/GUID-DFBBA71F-0042-4303-B66F-0D291106B655_d0e90593_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-DFBBA71F-0042-4303-B66F-0D291106B655_d0e97218_href.png Binary file Symbian3/PDK/Source/GUID-DFBBA71F-0042-4303-B66F-0D291106B655_d0e97218_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E0284006-9173-5BC5-A899-E0873CA1AE1F.dita --- a/Symbian3/PDK/Source/GUID-E0284006-9173-5BC5-A899-E0873CA1AE1F.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Native EXEs and LIBs vs. OE EXEs and LIBs

    The conventional way of defining the entry point for a Symbian platform executable is by including "E32Main " in the application source. Since Symbian OS v9.3, you can define the entry point for an executable by including "main " instead of "E32Main ". With this approach, Symbian developers may easily port their C/C++ code to Symbian platform with less changes to the original source.

    Symbian OS v9.3 and later releases provide an Open Environment (OE) to develop EXEs with the "main " entry point. The OE executables and libraries are identified by their targettype, which can either be STDEXE, STDDLL or STDLIB. An OE EXE may choose to have a wide character entry point using the MMP keyword, wcharentrypoint.

    Here is a list of important differences between native Symbian platform executables and OE executables:

    • Native Symbian platform EXEs use "E32Main " entry point, whereas OE EXEs use "main " entry point.

    • The UIDs used to identify native Symbian platform EXEs and DLLs are different when compared to OE EXEs and DLLs.

    • In a native Symbian platform executable, the functions and data symbols with extern linkage are exported only if IMPORT_C /EXPORT_C declarations are found in the header or source files. In a OE executable, all functions and data symbols with extern linkage are exported by default without IMPORT_C /EXPORT_C declarations in the header or source files.

    • The libraries required by a native Symbian platform executable/library have to be listed explicitly in the MMP file, whereas for an OE executable/library they are included by default.

    • The native Symbian platform EXEs and DLLs does not have symbol lookup, whereas OE EXEs and DLLs support symbol lookup using dlsym.

    • A native Symbian platform EXE, DLL or LIB must include the path to standard APIs in the mmp file. For an OE EXE, DLL or LIB the build system includes ${EPOCROOT}epoc32/include/stdapis as the default path for header files.

    The build system has been modified to support compilation of C++ source files with extensions “.cc ”, “.cxx ” and “.c++ ”. This change is applicable to both OE and native Symbian platform executables and libraries. That is, from Symbian OS v9.3 onwards a native Symbian platform or an OE executable/library can be built using C++ source files with extensions “.cc ”, “.cxx ” and “.c++ ”.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E04B4397-2926-4F4D-A7FE-F79F3BF37BF8-master.png Binary file Symbian3/PDK/Source/GUID-E04B4397-2926-4F4D-A7FE-F79F3BF37BF8-master.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E04B4397-2926-4F4D-A7FE-F79F3BF37BF8_d0e95674_href.png Binary file Symbian3/PDK/Source/GUID-E04B4397-2926-4F4D-A7FE-F79F3BF37BF8_d0e95674_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E08D9F14-F50A-56C7-9D95-9306E540A02C_d0e167315_href.png Binary file Symbian3/PDK/Source/GUID-E08D9F14-F50A-56C7-9D95-9306E540A02C_d0e167315_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E08D9F14-F50A-56C7-9D95-9306E540A02C_d0e173408_href.png Binary file Symbian3/PDK/Source/GUID-E08D9F14-F50A-56C7-9D95-9306E540A02C_d0e173408_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E08F6BA9-F1A9-50D5-8CBE-8304BBA24D1F.dita --- a/Symbian3/PDK/Source/GUID-E08F6BA9-F1A9-50D5-8CBE-8304BBA24D1F.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -The Symbian emulator build targets

    This section describes distinctive aspects of building for the emulator targets.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E09CA978-2599-50F9-AF6D-077AD7D5CA6F_d0e511350_href.jpg Binary file Symbian3/PDK/Source/GUID-E09CA978-2599-50F9-AF6D-077AD7D5CA6F_d0e511350_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E09CA978-2599-50F9-AF6D-077AD7D5CA6F_d0e518812_href.jpg Binary file Symbian3/PDK/Source/GUID-E09CA978-2599-50F9-AF6D-077AD7D5CA6F_d0e518812_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E09F74E2-B5A2-51F8-BD9E-882BE2661D5C.dita --- a/Symbian3/PDK/Source/GUID-E09F74E2-B5A2-51F8-BD9E-882BE2661D5C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E09F74E2-B5A2-51F8-BD9E-882BE2661D5C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> MiniGUI Environment Overview

    This topic introduces the MiniGUI environment (also known as the MinGUI environment) which provides the minimum components to get a working ScreenPlay graphics stack. The MiniGUI environment allows hardware vendors to test their ScreenPlay graphics and multimedia adaptations without the complete UI platform.

    Variant: ScreenPlay. Target audience: Device creators.

    When a new hardware platform is introduced, it is common to use a Textshell environment as part of base porting. The Textshell environment allows graphics and multimedia vendors to test and validate their hardware adaptation components without waiting for the complete platform to be ported. However, the Textshell environment is based on a special version of Window Server: Text Window Server, which is non-ScreenPlay.

    A disadvantage of using the Textshell environment is that hardware vendors need to provide two different implementations of their ScreenPlay adaptation components: one for the Text Window Server and one for the full Window Server. This is because the Text Window Server does not provide the ScreenPlay functionality that the full Window Server provides in the final product. ScreenPlay uses UI composition functionality that relies on the composition engine. This functionality is driven by the full Window Server. Therefore the full Window Server must be used in order to properly validate ScreenPlay adaptation components, such as EGL, or the multimedia framework at an early stage of product development.

    Textshell environment -

    The MiniGUI environment is a ScreenPlay environment. As it uses the full Window Server, the MiniGUI environment needs the ScreenPlay components in the Graphics package to be present. However, the MiniGUI does not require other UI components above the Window Server. Graphics and multimedia vendors can therefore test their adaptation components in the MiniGUI environment without the whole UI platform.

    Using the MiniGUI environment for validation means that hardware vendors only need to create one implementation of their adaptation component. Therefore they no longer need to create a separate implementation especially for Textshell.

    +

    The MiniGUI environment is a ScreenPlay environment. As it uses the full Window Server, the MiniGUI environment needs the ScreenPlay components in the Graphics package to be present. However, the MiniGUI does not require other UI components above the Window Server. Graphics and multimedia vendors can therefore test their adaptation components in the MiniGUI environment without the whole UI platform.

    Using the MiniGUI environment for validation means that hardware vendors only need to create one implementation of their adaptation component. Therefore they no longer need to create a separate implementation especially for Textshell.

    MiniGUI environment -
    The ScreenPlay Graphics Architecture Building and Running the MiniGUI +
    The ScreenPlay Graphics Architecture Building and Running the MiniGUI Tutorial \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E0A02CCA-486B-592E-9B3B-BA4A378EC5AD.dita --- a/Symbian3/PDK/Source/GUID-E0A02CCA-486B-592E-9B3B-BA4A378EC5AD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E0A02CCA-486B-592E-9B3B-BA4A378EC5AD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -Socket connection example

    This example shows the relationship that sockets, connections and subconnections have to each other.

    \ No newline at end of file +Socket connection example

    This example shows the relationship that sockets, connections and subconnections have to each other.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E0C21636-657A-413F-A905-A08608B60768.dita --- a/Symbian3/PDK/Source/GUID-E0C21636-657A-413F-A905-A08608B60768.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E0C21636-657A-413F-A905-A08608B60768.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ clients about long tap events.

    Touch UI utilities API class structure - +

    To receive long tap events in your application, implement the MaknLongTapDetectorCallBack interface. When the user makes long tap on the device screen, the framework sends events diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E0D4EFAC-85E6-4EF6-B65C-1D1602E3A8FD.dita --- a/Symbian3/PDK/Source/GUID-E0D4EFAC-85E6-4EF6-B65C-1D1602E3A8FD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E0D4EFAC-85E6-4EF6-B65C-1D1602E3A8FD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,8 +16,8 @@ a client to get existing localized time zone names.

    The steps for a client to create a user-defined TZ from an existing TZ are described in the Procedure section.

    - -Include the header + +Include the header files that contain the CTzLocalizer and CTzUserData classes. Include a numeric time zone ID. This is supplied by the UI layer. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E1410365-7254-5326-B3F7-D7100D31E59F.dita --- a/Symbian3/PDK/Source/GUID-E1410365-7254-5326-B3F7-D7100D31E59F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E1410365-7254-5326-B3F7-D7100D31E59F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -Array of variable length elements, segmented buffer

    This is a CArrayVarSeg<class T> object whose elements can have different lengths. Although each element is a class T object, the length of that object can vary.

    In this type of array, each element occupies its own individual cell allocated from the heap. The array buffer contains fixed length data structures, one for each element, which are logically contiguous within the buffer but are physically contiguous only within a segment. Each fixed length data structure contains the length of an element (a TInt value) and a pointer to it. The structure itself is part of the implementation but occupies no more than eight bytes on 32-bit machines.

    A segmented buffer is implemented as a doubly linked list of equally sized cells allocated from the heap and is always extended by allocating a new segment and inserting it into the appropriate place in the list. A segmented array buffer is implemented using a CBufSeg object.

    The following diagram illustrates how elements are organised within the array buffer:

    This kind of array is suitable for large arrays with a high turnover of elements.

    This class is immediately derived from the abstract templated base class CArrayVar<class T> which is itself derived from the abstract non-templated base class CArrayVarBase.

    See also

    Dynamic Buffers Guide.

    \ No newline at end of file +Array of variable length elements, segmented buffer

    This is a CArrayVarSeg<class T> object whose elements can have different lengths. Although each element is a class T object, the length of that object can vary.

    In this type of array, each element occupies its own individual cell allocated from the heap. The array buffer contains fixed length data structures, one for each element, which are logically contiguous within the buffer but are physically contiguous only within a segment. Each fixed length data structure contains the length of an element (a TInt value) and a pointer to it. The structure itself is part of the implementation but occupies no more than eight bytes on 32-bit machines.

    A segmented buffer is implemented as a doubly linked list of equally sized cells allocated from the heap and is always extended by allocating a new segment and inserting it into the appropriate place in the list. A segmented array buffer is implemented using a CBufSeg object.

    The following diagram illustrates how elements are organised within the array buffer:

    This kind of array is suitable for large arrays with a high turnover of elements.

    This class is immediately derived from the abstract templated base class CArrayVar<class T> which is itself derived from the abstract non-templated base class CArrayVarBase.

    See also

    Dynamic Buffers Guide.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E161AB84-1B24-53AF-B313-D68CF9F8EE60.dita --- a/Symbian3/PDK/Source/GUID-E161AB84-1B24-53AF-B313-D68CF9F8EE60.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E161AB84-1B24-53AF-B313-D68CF9F8EE60.dita Fri Jul 16 17:23:46 2010 +0100 @@ -35,7 +35,7 @@ pointer to the first byte following the end of the buffer, while Back() always returns a pointer to the beginning of the buffer.

    End() and Back() in fixed flat arrays - +
    Segmented array

    For a segmented array, the situation is different (as illustrated below). Looking at the segment containing elements n and n+1, End() returns a pointer to the first byte following the end of that segment. In @@ -47,7 +47,7 @@ element in the array, Back() returns a pointer with a NULL value.

    End() and Back() in fixed segmented arrays - +
    See also

    Dynamic Buffers Guide.

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E16E286C-FB6A-5D3E-95D6-044C39DBA2B4.dita --- a/Symbian3/PDK/Source/GUID-E16E286C-FB6A-5D3E-95D6-044C39DBA2B4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E16E286C-FB6A-5D3E-95D6-044C39DBA2B4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -The object container

    All reference counting objects must be held in an object container. An object container acts as a home for a set of related reference counting objects.

    An object container is an instance of a CObjectCon class.

    After construction, a reference counting object must be added to an object container. Only one instance of a reference counting object can be held by an object container, i.e. each object within an object container must be distinct.

    The main characteristics of an object container can be summarised as follows:

    • they allow a logical collections of reference counting objects to be gathered together.

    • explicitly destroying a reference counting object causes that object to be removed from its object container.

    • removing a reference counting object from its object container causes that object to be destroyed.

    • each object container is assigned a unique ID on construction. This is an integer that forms part of the identity of all of its contained reference counting objects. All reference counting objects within an object container are associated with the same unique ID. The value of the unique ID can range from 1 to 16,383 (0x3fff).

    Object containers are constructed by an object container index, a CObjectConIx type. The maximum number of object containers which may be constructed and held in an object container index is 6,383 (0x3fff).

    An object container is implemented as a simple array, where each element of the array is a pointer to a contained reference counting object. Adding a reference counting object to the object container is simply a matter of adding the reference counting object's pointer into the array. The following diagram shows a simple situation where two object containers hold a number of reference counting objects.

    The CObjectCon::AddL() function adds a reference counting object to the object container.

    The CObjectCon::Remove() function removes a reference counting object from its object container and also destroys that reference counting object. Conversely, if the reference counting object is destroyed (typically, as a result of successive calls to CObject::Close()), it is removed from its object container.

    See also:

    • CObjectCon

    • CObject

    \ No newline at end of file +The object container

    All reference counting objects must be held in an object container. An object container acts as a home for a set of related reference counting objects.

    An object container is an instance of a CObjectCon class.

    After construction, a reference counting object must be added to an object container. Only one instance of a reference counting object can be held by an object container, i.e. each object within an object container must be distinct.

    The main characteristics of an object container can be summarised as follows:

    • they allow a logical collections of reference counting objects to be gathered together.

    • explicitly destroying a reference counting object causes that object to be removed from its object container.

    • removing a reference counting object from its object container causes that object to be destroyed.

    • each object container is assigned a unique ID on construction. This is an integer that forms part of the identity of all of its contained reference counting objects. All reference counting objects within an object container are associated with the same unique ID. The value of the unique ID can range from 1 to 16,383 (0x3fff).

    Object containers are constructed by an object container index, a CObjectConIx type. The maximum number of object containers which may be constructed and held in an object container index is 6,383 (0x3fff).

    An object container is implemented as a simple array, where each element of the array is a pointer to a contained reference counting object. Adding a reference counting object to the object container is simply a matter of adding the reference counting object's pointer into the array. The following diagram shows a simple situation where two object containers hold a number of reference counting objects.

    The CObjectCon::AddL() function adds a reference counting object to the object container.

    The CObjectCon::Remove() function removes a reference counting object from its object container and also destroys that reference counting object. Conversely, if the reference counting object is destroyed (typically, as a result of successive calls to CObject::Close()), it is removed from its object container.

    See also:

    • CObjectCon

    • CObject

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E1710E40-B8F5-5CF8-B9FE-698869A1770F.dita --- a/Symbian3/PDK/Source/GUID-E1710E40-B8F5-5CF8-B9FE-698869A1770F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E1710E40-B8F5-5CF8-B9FE-698869A1770F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,9 +12,9 @@ Privacy Request APIThe Privacy Request API is an interface through which the LBS subsystem can receive and respond to privacy requests when it is built to include the Privacy Protocol Module.
    Introduction

    The Privacy Request API supports device creators who wish to use the Symbian LBS subsystem to handle only privacy requests but not to perform position fix calculations.

    The API is an alternative to the Network Privacy API. The Privacy Request API is intended for processing multiple privacy requests either from local applications or from the network.

    Description

    The Privacy Request API is implemented on the client-side by the Privacy Request Client DLL. This DLL is an interface to the Privacy Protocol Module.

    The Privacy Request API does not guarantee performance in low memory conditions for which a privacy request may fail. For this reason the Privacy Request API and the Privacy Protocol Module should not be used when there is a need to support emergency services privacy requests from the network (MT-LR or NI-LR). A Protocol Module that handles location requests must be used if emergency services requests must be supported.

    Figure 1 shows the Privacy Request Client DLL in the context of the LBS subsystem. The most important points to note are:

    • The Privacy Request Client DLL exposes the Privacy Request API which is described in this document. The DLL is used to send privacy requests into the Symbian LBS subsystem from a component running in the licensee's domestic OS (outside of the Symbian platform).

    • The Privacy Request Client DLL connects to a server implementation in the Privacy Protocol Module.

    • A device creator does not create their own implementation of the Privacy Request Client DLL or the Privacy Protocol Module. A device creator chooses to build a ROM containing the Privacy Protocol Module and the Privacy Request Client DLL. See LBS Integration and Configuration Guide for more information about building and configuring the LBS subsystem.

    • To use the Privacy Request API a device creator must implement some kind of client process in their domestic operating system which uses the Privacy Request API.

      The Privacy Request API client process must implement the API observer interface to receive privacy responses. The client process, and not Symbian LBS is responsible for sending these privacy responses to the network.

    Figure 1. The Privacy Request API in the LBS Standalone Privacy Mode configuration. -
    Privacy Request Client DLL responsibilities

    The Privacy Request Client DLL communicates with the Privacy Protocol Module via standard Symbian client-server IPC calls. The DLL performs two distinct functions:

    1. It starts up the LBS subsystem if it is not already running.

      The privacy handling components shown in figure 1 are transient. They are started only on demand when a client process creates an instance of a Privacy Request API class.

      The LBS Integration and Configuration Guide describes how to configure the components that are started when the first privacy request is received. Privacy Request API Reference contains sequences that describe startup and shutdown behaviour.

    2. It packages the Privacy Request API, which forwards privacy requests from a licensee client process into the Symbian LBS subsystem. Privacy responses returned from a Privacy Controller or Privacy Notifiers are returned to the client.

    Privacy Request API description

    Figure 2 shows the classes of the Privacy Request API.

    +
    Privacy Request Client DLL responsibilities

    The Privacy Request Client DLL communicates with the Privacy Protocol Module via standard Symbian client-server IPC calls. The DLL performs two distinct functions:

    1. It starts up the LBS subsystem if it is not already running.

      The privacy handling components shown in figure 1 are transient. They are started only on demand when a client process creates an instance of a Privacy Request API class.

      The LBS Integration and Configuration Guide describes how to configure the components that are started when the first privacy request is received. Privacy Request API Reference contains sequences that describe startup and shutdown behaviour.

    2. It packages the Privacy Request API, which forwards privacy requests from a licensee client process into the Symbian LBS subsystem. Privacy responses returned from a Privacy Controller or Privacy Notifiers are returned to the client.

    Privacy Request API description

    Figure 2 shows the classes of the Privacy Request API.

    Figure 2. Privacy Request API classes -

    The following table lists the classes and types that define the Privacy Request API. Further details can be found by following the links to other sections of this document and to the Symbian Developer Library reference documentation.

    The Privacy Request API has publishedPartner interface access. Licensees use the following classes to send privacy requests and receive privacy responses via the API.

    Class name Description Header file

    CLbsPrivacyRequest

    The main interface class of the Privacy Request API. It is used to send privacy requests into the LBS subsystem.

    lbsprivacyrequest.h

    MLbsPrivacyRequestObserver

    The observer class that must be implemented by a Privacy Request API client. Its methods are called by the LBS subsystem to send privacy responses to the client.

    lbsprivacyrequest.h

    TLbsPrivacyRequest

    A class derived from TLbsPrivacyClassTypeBase that holds privacy request parameters.

    lbsprivacyrequestcommon.h

    TLbsPrivacyClassTypeBase

    The base class of classes that stores privacy request parameters which are passed from the API client to the LBS subsystem. A Privacy Request API client does not use this class directly.

    lbsprivacyrequestcommon.h

    TLbsPrivacyRequestClassType

    An enumeration that defines the type of privacy request class (derived from TLbsPrivacyRequestClassType) that is passed from the API client to the LBS subsystem. A Privacy Request API client does not use this type directly. It is used internally within the Privacy Request API.

    lbsprivacyrequestclasstypes.h

    Capabilities

    The Privacy Request API is packaged in lbsprivacyrequest.dll. Clients link to lbsprivacyrequest.lib.

    Libraries

    To use the Privacy Request API to handle privacy requests from a local application requires the capabilities Location and ReadDeviceData. To handle privacy requests from the network requires the additional NetworkServices capability.

    Privacy +

    The following table lists the classes and types that define the Privacy Request API. Further details can be found by following the links to other sections of this document and to the Symbian Developer Library reference documentation.

    The Privacy Request API has publishedPartner interface access. Licensees use the following classes to send privacy requests and receive privacy responses via the API.

    Class name Description Header file

    CLbsPrivacyRequest

    The main interface class of the Privacy Request API. It is used to send privacy requests into the LBS subsystem.

    lbsprivacyrequest.h

    MLbsPrivacyRequestObserver

    The observer class that must be implemented by a Privacy Request API client. Its methods are called by the LBS subsystem to send privacy responses to the client.

    lbsprivacyrequest.h

    TLbsPrivacyRequest

    A class derived from TLbsPrivacyClassTypeBase that holds privacy request parameters.

    lbsprivacyrequestcommon.h

    TLbsPrivacyClassTypeBase

    The base class of classes that stores privacy request parameters which are passed from the API client to the LBS subsystem. A Privacy Request API client does not use this class directly.

    lbsprivacyrequestcommon.h

    TLbsPrivacyRequestClassType

    An enumeration that defines the type of privacy request class (derived from TLbsPrivacyRequestClassType) that is passed from the API client to the LBS subsystem. A Privacy Request API client does not use this type directly. It is used internally within the Privacy Request API.

    lbsprivacyrequestclasstypes.h

    Capabilities

    The Privacy Request API is packaged in lbsprivacyrequest.dll. Clients link to lbsprivacyrequest.lib.

    Libraries

    To use the Privacy Request API to handle privacy requests from a local application requires the capabilities Location and ReadDeviceData. To handle privacy requests from the network requires the additional NetworkServices capability.

    Privacy Request API Reference Privacy Request API Tutorial Privacy Protocol Module Overview LBS diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E18592CD-223D-5B50-AF40-1AC7267BAB8C.dita --- a/Symbian3/PDK/Source/GUID-E18592CD-223D-5B50-AF40-1AC7267BAB8C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E18592CD-223D-5B50-AF40-1AC7267BAB8C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -30,7 +30,7 @@ Outbox
    folder. For instance, to update a delivery report, it may require an entry in the Outbox to be updated.

    Watcher Framework architecture - +

    A watcher plug-in typically make requests to another subsystem such that they are completed when an external event (an SMS) being received occurs. When a watcher has completed processing the request it waits for the next diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E189B0C0-AAB5-5472-996B-91043DE0B6D4.dita --- a/Symbian3/PDK/Source/GUID-E189B0C0-AAB5-5472-996B-91043DE0B6D4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E189B0C0-AAB5-5472-996B-91043DE0B6D4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,41 +1,42 @@ - - - - - -Package -Buffers OverviewAllows any value type (a T class) to be encapsulated as a descriptor, -for the purpose of inter-thread data transfer. -

    Architectural relationships

    The Client/Server API -expects data that is to be passed between threads to be encapsulated in a -descriptor. Package buffers provide a generic way for the thread providing -the data to do this. The thread receiving the data extracts the original data -from the package.

    APIs with client/server architectures, such as telephony -and Messaging, define specialised package buffer types that encapsulate the -particular data types that they require to pass between threads.

    -
    Description

    The API has two key concepts: package -buffer descriptor, and package pointer descriptor.

    -
    Package buffer descriptor

    The package buffer descriptor -creates a new instance of the type to encapsulate and stores it within the -descriptor. The interface allows a reference to the encapsulated object to -be obtained, so that it can be accessed and modified.

    The package buffer -descriptor interface is provided by TPckgBuf.

    -
    Package pointer descriptor

    The package pointer -descriptor refers to an already existing object. It is otherwise used in a -similar way to the package buffer descriptor.

    The package pointer descriptor -interface is provided by TPckgC for const objects, and TPckg for -non-const objects.

    - - -Client/Server -Overview - -Using Descriptors - + + + + + +Package Buffers OverviewAllows any value type (a T class) to be encapsulated as +a descriptor, for the purpose of inter-thread data transfer. +
    Architectural +relationships

    The Client/Server API expects data that is +to be passed between threads to be encapsulated in a descriptor. Package +buffers provide a generic way for the thread providing the data to +do this. The thread receiving the data extracts the original data +from the package.

    APIs with client/server architectures, such +as telephony and Messaging, define specialised package buffer types +that encapsulate the particular data types that they require to pass +between threads.

    +
    Description

    The API has two key concepts: package buffer descriptor, and +package pointer descriptor.

    +
    Package +buffer descriptor

    The package buffer descriptor creates +a new instance of the type to encapsulate and stores it within the +descriptor. The interface allows a reference to the encapsulated object +to be obtained, so that it can be accessed and modified.

    The +package buffer descriptor interface is provided by TPckgBuf.

    +
    Package +pointer descriptor

    The package pointer descriptor refers +to an already existing object. It is otherwise used in a similar way +to the package buffer descriptor.

    The package pointer descriptor +interface is provided by TPckgC for const objects, +and TPckg for non-const objects.

    +
    +Using +Descriptors +Client/Server +Overview
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E1E25E68-7FE3-53A7-980E-CCF25090715F_d0e275300_href.png Binary file Symbian3/PDK/Source/GUID-E1E25E68-7FE3-53A7-980E-CCF25090715F_d0e275300_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E1E25E68-7FE3-53A7-980E-CCF25090715F_d0e281300_href.png Binary file Symbian3/PDK/Source/GUID-E1E25E68-7FE3-53A7-980E-CCF25090715F_d0e281300_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E1EBBB56-4835-5048-9383-A9DB948E9541.dita --- a/Symbian3/PDK/Source/GUID-E1EBBB56-4835-5048-9383-A9DB948E9541.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Symbian test tools \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E238B1FE-BBD8-5C6D-AE04-258188EFF9FF.dita --- a/Symbian3/PDK/Source/GUID-E238B1FE-BBD8-5C6D-AE04-258188EFF9FF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E238B1FE-BBD8-5C6D-AE04-258188EFF9FF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -43,7 +43,7 @@ following diagram.

    Two double-buffered surfaces that share the same memory - +

    In the example code below, some error handling has been omitted for brevity.

    Creating the first surface
      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E244744F-4837-5B46-8E37-4666A28BF0B7.dita --- a/Symbian3/PDK/Source/GUID-E244744F-4837-5B46-8E37-4666A28BF0B7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E244744F-4837-5B46-8E37-4666A28BF0B7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> The run-time control hierarchy

      At run-time all controls in an application are related to each other in a tree hierarchy. The top-level window-owning controls are owned by the AppUi. This is similar to the hierarchy of windows that exists in the Window Server which has a group window for each application at the root. It is important to understand the relationships between window-owning and non-window owning controls. The diagram below attempts to illustrate these.

      The run-time control hierarchy -

      A non-window-owning control is confined to the extent of its parent if the parent is window-owning, and must be confined to the extent of its parent if the parent is non-window-owning.

      A window-owning component is confined to the nearest window-owning control above it in the hierarchy.

      Screen drawing may be initiated by either the application (because it's running and it has changed its display) or by the Window Server (because something else has updated the screen and the application is visible).

      • Application-initiated redrawing follows the control framework run-time hierarchy: controls are drawn by their parents regardless of whether they are window-owning or not.

      • Window-Server-initiated redrawing, on the other hand, follows the Window Server hierarchy: parents do not draw their window-owning children.

      A control's container or parent control may not be changed after it has been set.

      The run time hierarchy of controls has been enhanced for version 9.1 of the Symbian OS. The distinction between the 'parent-child' relationship from the Window Server and the 'container-component' relationship from the control framework may be simplified with the addition of a parent pointer to CCoeControl.

      In UIQ v3 the parent pointer is enabled. In S60 and MOAP the parent pointer currently is not enabled.

      The addition of the parent pointer allows the framework to navigate the control hierarchy upwards as well as downwards. When enabled, the parent pointer is set automatically (see how to write a control).

      The run-time hierarchy is particularly significant when laying out and when refreshing the screen. Here are a few examples of how the framework uses the run-time hierarchy.

      • When a control is drawn it must have the correct Look and Feel: its colours, fonts, font style, size and shape must be correct. Controls use their parent's graphics contexts and text drawers.

      • If a control (lodger or a parent) changes size, the controls around or within it might have to move or resize. From 9.1 the framework provides a layout manager interface (MCoeLayoutManager). Controls use the run-time hierarchy to find the appropriate layout manager.

      • From 9.1 parent controls take responsibility for drawing behind their children. This allows flexibility with backgrounds, transparent controls and controls which appear non-rectangular. To enable this process to work with window-owning controls (necessary because the Window Server will not allow parent windows to draw behind child windows) a new interface, MCoeControlBackground, has been introduced. When a window owning control draws itself it first looks for an MCoeControlBackground in its chain of parents and calls MCoeControlBackground::Draw() before drawing itself.

      \ No newline at end of file +

      A non-window-owning control is confined to the extent of its parent if the parent is window-owning, and must be confined to the extent of its parent if the parent is non-window-owning.

      A window-owning component is confined to the nearest window-owning control above it in the hierarchy.

      Screen drawing may be initiated by either the application (because it's running and it has changed its display) or by the Window Server (because something else has updated the screen and the application is visible).

      • Application-initiated redrawing follows the control framework run-time hierarchy: controls are drawn by their parents regardless of whether they are window-owning or not.

      • Window-Server-initiated redrawing, on the other hand, follows the Window Server hierarchy: parents do not draw their window-owning children.

      A control's container or parent control may not be changed after it has been set.

      The run time hierarchy of controls has been enhanced for version 9.1 of the Symbian OS. The distinction between the 'parent-child' relationship from the Window Server and the 'container-component' relationship from the control framework may be simplified with the addition of a parent pointer to CCoeControl.

      In UIQ v3 the parent pointer is enabled. In S60 and MOAP the parent pointer currently is not enabled.

      The addition of the parent pointer allows the framework to navigate the control hierarchy upwards as well as downwards. When enabled, the parent pointer is set automatically (see how to write a control).

      The run-time hierarchy is particularly significant when laying out and when refreshing the screen. Here are a few examples of how the framework uses the run-time hierarchy.

      • When a control is drawn it must have the correct Look and Feel: its colours, fonts, font style, size and shape must be correct. Controls use their parent's graphics contexts and text drawers.

      • If a control (lodger or a parent) changes size, the controls around or within it might have to move or resize. From 9.1 the framework provides a layout manager interface (MCoeLayoutManager). Controls use the run-time hierarchy to find the appropriate layout manager.

      • From 9.1 parent controls take responsibility for drawing behind their children. This allows flexibility with backgrounds, transparent controls and controls which appear non-rectangular. To enable this process to work with window-owning controls (necessary because the Window Server will not allow parent windows to draw behind child windows) a new interface, MCoeControlBackground, has been introduced. When a window owning control draws itself it first looks for an MCoeControlBackground in its chain of parents and calls MCoeControlBackground::Draw() before drawing itself.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E2455472-49FA-5492-B7CB-2C33BD830591_d0e210721_href.jpg Binary file Symbian3/PDK/Source/GUID-E2455472-49FA-5492-B7CB-2C33BD830591_d0e210721_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E2455472-49FA-5492-B7CB-2C33BD830591_d0e216722_href.jpg Binary file Symbian3/PDK/Source/GUID-E2455472-49FA-5492-B7CB-2C33BD830591_d0e216722_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E24F15B4-D767-5B79-B0EB-88294B9BC16A_d0e260881_href.png Binary file Symbian3/PDK/Source/GUID-E24F15B4-D767-5B79-B0EB-88294B9BC16A_d0e260881_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E24F15B4-D767-5B79-B0EB-88294B9BC16A_d0e266890_href.png Binary file Symbian3/PDK/Source/GUID-E24F15B4-D767-5B79-B0EB-88294B9BC16A_d0e266890_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E2641957-8163-5EF4-B282-FC3FD9CA75A6.dita --- a/Symbian3/PDK/Source/GUID-E2641957-8163-5EF4-B282-FC3FD9CA75A6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E2641957-8163-5EF4-B282-FC3FD9CA75A6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -48,7 +48,7 @@ right output.

      The relationship between audio channels and device channels. - +
    Mono to stereo conversion

    Many codecs that support stereo playback can only accept diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E2AB4BDF-8AFD-5776-A614-50DC3ACF3AD4_d0e175292_href.png Binary file Symbian3/PDK/Source/GUID-E2AB4BDF-8AFD-5776-A614-50DC3ACF3AD4_d0e175292_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E2AB4BDF-8AFD-5776-A614-50DC3ACF3AD4_d0e181361_href.png Binary file Symbian3/PDK/Source/GUID-E2AB4BDF-8AFD-5776-A614-50DC3ACF3AD4_d0e181361_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E2CB0826-FC44-5AC9-BBB1-B449073484F3.dita --- a/Symbian3/PDK/Source/GUID-E2CB0826-FC44-5AC9-BBB1-B449073484F3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E2CB0826-FC44-5AC9-BBB1-B449073484F3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,7 +20,7 @@ buffer to be re-allocated so that its capacity increases from four to eight elements.

    - +

    For a segmented array buffer, the granularity defines the capacity of a single segment. A segmented array buffer is always expanded by allocating diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E2E2FACF-5D4F-43E8-8B53-B268252CF572.dita --- a/Symbian3/PDK/Source/GUID-E2E2FACF-5D4F-43E8-8B53-B268252CF572.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E2E2FACF-5D4F-43E8-8B53-B268252CF572.dita Fri Jul 16 17:23:46 2010 +0100 @@ -18,8 +18,8 @@ under the Options menu when the destination network is highlighted.

    To define the connection management items:

    - -Request the connection + +Request the connection settings dialog for supported items using the Connection Settings UI API. Show the items that your application supports in the UI using the diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E2F6A71A-4A18-5E0B-AE77-C059C59448E4_d0e577709_href.png Binary file Symbian3/PDK/Source/GUID-E2F6A71A-4A18-5E0B-AE77-C059C59448E4_d0e577709_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E2F6A71A-4A18-5E0B-AE77-C059C59448E4_d0e595154_href.png Binary file Symbian3/PDK/Source/GUID-E2F6A71A-4A18-5E0B-AE77-C059C59448E4_d0e595154_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E331B72B-84AF-558A-9B8F-73E5E50B58C7.dita --- a/Symbian3/PDK/Source/GUID-E331B72B-84AF-558A-9B8F-73E5E50B58C7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E331B72B-84AF-558A-9B8F-73E5E50B58C7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,90 +1,87 @@ - - - - - -Building -a Standard C++ Application or Library -

    This topic describes the required header files and libraries to compile -and link against to build a Standard C++ application or library on a Symbian -platform build environment.

    -

    You can build a C++ application or library using one of the following target -types:

    -
      -
    • STD target types

    • -
    • Other Symbian target types

    • -
    -

    Notes:

    -
      -
    • The required standard -C++ header files are available in the ${EPOCROOT}/epoc32/include/stdapis/stlportv5 directory.

    • -
    • The standard C++ library -name is libstdcppv5.lib.

    • -
    • You must specify the -system-include path and library name in the .mmp file -associated with the C++ application or library.

    • -
    -
    STD target -types

    You can develop a C++ application or library using the following -STD target types:

      -
    • STDEXE

    • -
    • STDDLL

    • -
    • STDLIB

    • -

    These target types enable symbol lookup by name thereby adding the -symbol information into the executable.

    Note: For more information -about STD target types (STDEXE /STDDLL /STDLIB), -see the Target Types section.

    Example

    The -following code snippet illustrates the use of the STD target type stdexe:

    //writing an stdexe, the mmp file may look like follows -//Start of test_stdexe.mmp -Target test_stdexe.exe -Targettype stdexe -Source test1.cpp -Systeminclude /epoc32/include/stdapis/stlportv5 -Library libstdcppv5.lib -Capability all -tcb -//End of test_stdexe.mmp
    -
    Other Symbian -target types

    You can avoid symbol information overhead while developing -C++ applications or libraries, by performing the following configurations:

      -
    1. Use the other Symbian -target types such as, dll, lib, exe and -so on. For more information about other Symbian target types, see the targettype section.

    2. -
    3. In addition, use the -MMP keyword STDCPP.

    4. -

    You may also have to include ${EPOCROOT}/epoc32/include/stdapis explicitly -as the standard C headers are required by the standard C++ header. If you -are referring to Standard C APIs directly or indirectly, you must specify libc.lib and libpthread.lib in -the .mmp file.

    Example

    The following -code snippet illustrates the use of STDCPP MMP keyword and -the use of the exe target type:

    //test_exe.mmp -Target test_exe.exe -Targettype exe -//The STDCPP keyword specifies Standard C++ -STDCPP -Source test2.cpp -Systeminclude /epoc32/include/stdapis/stlportv5 -Systeminclude /epoc32/include/stdapis -Library libstdcppv5.lib libc.lib -Staticlibrary libcrt0.lib -Capability all -tcb -//End of test_exe.mmp
    -
    -Copyright -Acknowledgments for Standard C++ (STLport) -Standard -C++ Library Overview -Standard -C++ Support on the Symbian Platform -Developing -Applications or Libraries Using Standard C++ -Troubleshooting - -Known Issues - + + + + + +Building a Standard C++ Application or Library +

    This topic describes the required header files and libraries to +compile and link against to build a Standard C++ application or library +on a Symbian platform build environment.

    +

    You can build a C++ application or library using one of the following +target types:

    +
      +
    • STD target types

    • +
    • Other Symbian target types

    • +
    +

    Notes:

    +
      +
    • The required +standard C++ header files are available in the ${EPOCROOT}/epoc32/include/stdapis/stlportv5 directory.

    • +
    • The standard +C++ library name is libstdcppv5.lib.

    • +
    • You must specify +the system-include path and library name in the .mmp file associated with the C++ application or library.

    • +
    +
    STD +target types

    You can develop a C++ application or library +using the following STD target types:

      +
    • STDEXE

    • +
    • STDDLL

    • +
    • STDLIB

    • +

    These target types enable symbol lookup by name thereby adding +the symbol information into the executable.

    Note: For +more information about STD target types (STDEXE /STDDLL /STDLIB), see the Target Types section.

    Example

    The following code snippet +illustrates the use of the STD target type stdexe:

    //writing an stdexe, the mmp file may look like follows +//Start of test_stdexe.mmp +Target test_stdexe.exe +Targettype stdexe +Source test1.cpp +Systeminclude /epoc32/include/stdapis/stlportv5 +Library libstdcppv5.lib +Capability all -tcb +//End of test_stdexe.mmp
    +
    Other +Symbian target types

    You can avoid symbol information overhead +while developing C++ applications or libraries, by performing the +following configurations:

      +
    1. Use the other +Symbian target types such as, dll, lib, exe and so on. For more information about other +Symbian target types, see Symbian Tools Guide > Building + > Symbian Build System (SBSv1) > Build tools reference > MMP file +syntax > targettype.

    2. +
    3. In addition, +use the MMP keyword STDCPP.

    4. +

    You may also have to include ${EPOCROOT}/epoc32/include/stdapis explicitly as the standard C headers are required by the standard +C++ header. If you are referring to Standard C APIs directly or indirectly, +you must specify libc.lib and libpthread.lib in the .mmp file.

    Example

    The following code snippet illustrates the use of STDCPP MMP keyword and the use of the exe target type:

    //test_exe.mmp +Target test_exe.exe +Targettype exe +//The STDCPP keyword specifies Standard C++ +STDCPP +Source test2.cpp +Systeminclude /epoc32/include/stdapis/stlportv5 +Systeminclude /epoc32/include/stdapis +Library libstdcppv5.lib libc.lib +Staticlibrary libcrt0.lib +Capability all -tcb +//End of test_exe.mmp
    +
    +Copyright +Acknowledgments for Standard C++ (STLport) +Standard +C++ Library Overview +Standard +C++ Support on the Symbian Platform +Developing +Applications or Libraries Using Standard C++ +Troubleshooting + +Known +Issues
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E35C440C-4191-510A-AD33-2CF56E41EDD2_d0e442890_href.png Binary file Symbian3/PDK/Source/GUID-E35C440C-4191-510A-AD33-2CF56E41EDD2_d0e442890_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E35C440C-4191-510A-AD33-2CF56E41EDD2_d0e448735_href.png Binary file Symbian3/PDK/Source/GUID-E35C440C-4191-510A-AD33-2CF56E41EDD2_d0e448735_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E36B0B87-7948-5288-9F4D-9A1F1EBDF972_d0e367379_href.png Binary file Symbian3/PDK/Source/GUID-E36B0B87-7948-5288-9F4D-9A1F1EBDF972_d0e367379_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E36B0B87-7948-5288-9F4D-9A1F1EBDF972_d0e373227_href.png Binary file Symbian3/PDK/Source/GUID-E36B0B87-7948-5288-9F4D-9A1F1EBDF972_d0e373227_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E3F116C0-F133-5008-BD7A-421D66FB6588_d0e442635_href.png Binary file Symbian3/PDK/Source/GUID-E3F116C0-F133-5008-BD7A-421D66FB6588_d0e442635_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E3F116C0-F133-5008-BD7A-421D66FB6588_d0e448480_href.png Binary file Symbian3/PDK/Source/GUID-E3F116C0-F133-5008-BD7A-421D66FB6588_d0e448480_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E3F9B236-39DF-5BC0-BE13-E10CEEF2BB45_d0e455956_href.png Binary file Symbian3/PDK/Source/GUID-E3F9B236-39DF-5BC0-BE13-E10CEEF2BB45_d0e455956_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E3F9B236-39DF-5BC0-BE13-E10CEEF2BB45_d0e461801_href.png Binary file Symbian3/PDK/Source/GUID-E3F9B236-39DF-5BC0-BE13-E10CEEF2BB45_d0e461801_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E401D2B1-5360-57E3-99D6-3D08730E6C09_d0e263871_href.png Binary file Symbian3/PDK/Source/GUID-E401D2B1-5360-57E3-99D6-3D08730E6C09_d0e263871_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E401D2B1-5360-57E3-99D6-3D08730E6C09_d0e269871_href.png Binary file Symbian3/PDK/Source/GUID-E401D2B1-5360-57E3-99D6-3D08730E6C09_d0e269871_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E402616A-7ED8-45AC-B836-99C3A3760B33.dita --- a/Symbian3/PDK/Source/GUID-E402616A-7ED8-45AC-B836-99C3A3760B33.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E402616A-7ED8-45AC-B836-99C3A3760B33.dita Fri Jul 16 17:23:46 2010 +0100 @@ -10,7 +10,7 @@ Key events -Key presses generate key events +Key presses generate key events

    Key events are generated when a device user presses one or more device key buttons. The application framework delivers the event to the application that has focus. The TKeyEvent structure is used to contain diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E449F309-F230-46F9-B777-EF64D0E3191D.dita --- a/Symbian3/PDK/Source/GUID-E449F309-F230-46F9-B777-EF64D0E3191D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E449F309-F230-46F9-B777-EF64D0E3191D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,7 +17,7 @@ note. Errors that are not too serious should cause an information note.

    Information note - +
    Using information notes in applications

    You can create either a basic diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E4543D60-A9D0-5121-9540-993BB15D3275_d0e546767_href.png Binary file Symbian3/PDK/Source/GUID-E4543D60-A9D0-5121-9540-993BB15D3275_d0e546767_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E4543D60-A9D0-5121-9540-993BB15D3275_d0e554223_href.png Binary file Symbian3/PDK/Source/GUID-E4543D60-A9D0-5121-9540-993BB15D3275_d0e554223_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E455ABFF-3EFF-5396-A52A-A33CDB2EB41A.dita --- a/Symbian3/PDK/Source/GUID-E455ABFF-3EFF-5396-A52A-A33CDB2EB41A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E455ABFF-3EFF-5396-A52A-A33CDB2EB41A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -38,6 +38,6 @@ an example. See the diagram below.

    Effect of CleanupClosePushL and subsequent pop and destroy - + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E489F575-DD07-4949-AB98-8F6A11BF708A_d0e94610_href.png Binary file Symbian3/PDK/Source/GUID-E489F575-DD07-4949-AB98-8F6A11BF708A_d0e94610_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E489F575-DD07-4949-AB98-8F6A11BF708A_d0e98808_href.png Binary file Symbian3/PDK/Source/GUID-E489F575-DD07-4949-AB98-8F6A11BF708A_d0e98808_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E48B708E-8B0B-5CF7-80D5-B55966387021.dita --- a/Symbian3/PDK/Source/GUID-E48B708E-8B0B-5CF7-80D5-B55966387021.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,119 +0,0 @@ - - - - - -GCCE build -targets -

    Introduction

    -

    The GCCE build target builds ARM code using a version -of the freely available GNU Compiler Collection (GCC) tools. The GCC compiler -is intended only for building applications, and cannot be used to compile -the complete Symbian platform.

    -

    The GCC binaries conform to ABIv2 for the ARM architecture. Details about -the ABI standard are published at http://www.arm.com/products/DevTools/ABI.html.

    -

    The following table lists the GCC build targets available for various ARM -architectures that use Thumb or Thumb2 instruction sets:

    - - - - -Build target -ARM architecture -Instruction set - - - - -

    GCCE

    -

    V5

    -

    Thumb

    -
    - -

    GCCEV6

    -

    V6

    -

    Thumb

    -
    - -

    GCCEV6t2

    -

    V6

    -

    Thumb-2

    -
    - -

    GCCEV7

    -

    V7

    -

    Thumb-2

    -
    - - -
    -

    Note: Code built for the targets listed in the earlier table can -interoperate with code built by other compilers for ARM targets.

    -

    Prerequisite

    -

    To build for the GCC targets, you must install the GCC CSL ARM toolchain. -The installer, arm-none-symbianelf-2005-q1c.exe, is supplied -in kits, and is located at epoc32\tools\distrib\. Run -this program to start the installation wizard. By default, the compiler is -installed to C:\Program Files\CSL Arm Toolchain\.

    -

    The installation wizard does not modify the Windows PATH environment -variable. You must manually add the bin sub-directory -of the installed tools to the PATH variable. For example, -if the compiler is installed to C:\gcce, then C:\gcce\bin must -be added to the PATH environment variable.

    -

    Building for GCC targets

    -

    GCC targets are not the default build targets. To build a program for any -GCC target, you must explicitly specify the targets as supported platforms -in the component's BLD.INF file, using prj_platforms statement.

    -

    For example:

    -PRJ_PLATFORMS -WINSCW GCCE GCCEV6 GCCEV6t2 GCCEV7 -

    allows the component to be built for WINSCW, GCCE, GCCEV6, GCCEV6t2, -and GCCEV7.

    -

    You can build component for the GCC targets using the following bldmake and abld commands:

    -

    bldmake bldfiles

    -

    abld build gcce | gccev6 | gccev6t2 | gccev7 [udeb | urel]

    -

    Note: To build for GCCEV6t2 and GCCEV7, -you need GCCE v4.2 that supports building ARM code for Thumb-2.

    -

    Binaries are generated in the udeb and urel sub-directories -of the epoc32\release\<GCC platform>\ directory.

    -

    Import library (.dso) files are generated in the epoc32\release\ARMV5\lib\ directory. -This directory is used, as the library file format has not changed since ARMV5.

    -

    Note: These are the same directories that are used for import libraries -generated by RVCT for different build targets, such as ARMV5, ARMV6, -and so on. This allows other applications to link to any library, regardless -of the build target for which they are generated.

    -

    ROM building

    -

    The compiler setting allows the Symbian base components to include the -correct compiler-specific run-time libraries in the ROM image.

    -

    The default compiler used to build is ARM RVCT. This compiler is indicated -to buildrom using the argument -DRVCT.

    -

    The toolchain from Symbian OS v9.1 also supports binaries built with the GCCE compiler. -Binaries built with this compiler can be combined in ROM with binaries built -with RVCT to the ABIv2. To do this, use -the -D_GCCE macro:

    -

    buildrom -D_EABI=ARMV5 -D_GCCE -otechview.img h2 techview

    -

    By default, if the binaries are not available in GCCE, they are taken from -the ARMV5_ABIV2 directory, and if not in there also, they -are be taken from the ARMV5 directory. (ARMV5 is -necessary as some of the runtime DLLs will be present only in that directory.) -

    -

    The order in which buildrom searches directories to get binaries to put -into ROM can also be specified explicitly using a BINARY_SELECTION_ORDER command -in an oby file. For example:

    -

    BINARY_SELECTION_ORDER = GCCE, ARMV5_ABIv2, ARMV5

    -

    The preceding command specifies explicitly that binaries should taken from GCCE, -then ARMV5_ABIv2, and then ARMV5.

    -

    Source issues

    -

    The GCCE build target uses the same DEF file format as -the ARMV5 target. By default, the GCC toolchian looks for -the DEF files in the project's EABI directory.

    -

    Note: The GCC compiler is very strict in checking that the source -code conforms to the ANSI C++ standard. Therefore, source code that previously -compiled with less strict compilers, such as RVCT 2.1, may no longer compile.

    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E4A23972-CC2F-5773-B1A4-6123333D1F5E.dita --- a/Symbian3/PDK/Source/GUID-E4A23972-CC2F-5773-B1A4-6123333D1F5E.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ - - - - - -start <platform> ... end

    start platform

    platform-specific-statement-list

    [COPY_FOR_STATIC_LINKAGE]

    end

    A platform-specific section is enclosed in a start and end block.

    The platform-specific statements allowed depend on the platform. Unlike #if defined blocks, which allow statements to specify different files dependent upon the platform for which the makefile is being created, start ... end platform blocks are used to delimit statements understood only by the build tools when creating a makefile for a particular platform.

    Specify the platform as MARM if the section is defined for ARM platforms, or WINS for non-ARM platforms. Specify the platform as WINC for WINC and VC6WINC only sections.

    The COPY_FOR_STATIC_LINKAGE statement is useful for DLLs that are both dynamically loaded and statically linked. If it is used in a START WINS block, then the target DLL is built both into the specified target directory (for dynamic loading), and into the epoc32\release\ wins or - winscw \ udeb or urel (for static linking).

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E4B5C7CE-7820-5D80-8CD1-DCD692C11F23_d0e169016_href.png Binary file Symbian3/PDK/Source/GUID-E4B5C7CE-7820-5D80-8CD1-DCD692C11F23_d0e169016_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E4B5C7CE-7820-5D80-8CD1-DCD692C11F23_d0e175104_href.png Binary file Symbian3/PDK/Source/GUID-E4B5C7CE-7820-5D80-8CD1-DCD692C11F23_d0e175104_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E4BF80BE-17E9-5622-9E10-43C96EAC9754.dita --- a/Symbian3/PDK/Source/GUID-E4BF80BE-17E9-5622-9E10-43C96EAC9754.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -pagedcode

    pagedcode

    Use the pagedcode statement to specify that the executable is code paged.

    If an executable is marked as code paged, the pages are loaded into RAM page by page on demand. This can reduce application startup time and memory usage.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E51546A8-D000-540C-A757-56B323EA9DA7_d0e260545_href.png Binary file Symbian3/PDK/Source/GUID-E51546A8-D000-540C-A757-56B323EA9DA7_d0e260545_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E51546A8-D000-540C-A757-56B323EA9DA7_d0e266554_href.png Binary file Symbian3/PDK/Source/GUID-E51546A8-D000-540C-A757-56B323EA9DA7_d0e266554_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD.dita --- a/Symbian3/PDK/Source/GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E5291BCB-D5D0-5175-B0A1-FE03CD14E1BD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -Configuring and clearing files

    You can configure the following settings for audio or video files, and the session log file:

    • Configuring audio files

    • Configuring video files

    • Configuring file metadata

    • Setting the video output screen

    • Enabling auto pause and resume for video

    • Clearing the log file

    Note: You can configure media files only when they are open, and when they are neither being recorded nor played.

    Configuring audio files

    To configure the settings of an audio file:

    1. In the File menu, click Open for Play, and select the audio file you want to configure.

    2. In the Settings menu, click Audio. The Audio Settings dialog box is displayed.

    3. In the Repeats box, enter the number of times to repeat the audio clip.

    4. In the Delay box, enter the interval between repeats in seconds.

    5. Select the Autoplay check box to play the file automatically when you open it for play.

    6. Select the Priority and Priority Preference.

    7. Select the Auto Pause&Resume check box to enable this functionality.

    8. Click OK to save the audio settings.

    Configuring video files

    Note: The ability to configure the video settings is not yet supported.

    To configure the settings of a video file:

    1. In the File menu, click Open for Play, and select the video file you want to configure.

    2. In the Settings menu, click Video. The Video Setting dialog box is displayed.

    3. Select the degree of Rotation.

    4. Enter percentages for the Scale Width and Scale Height.

    5. Select the Anti Alias Filtering check box to enable anti-alias filtering.

    6. Enter the coordinates in the top, bottom, left and right boxes to define the boundaries of the crop region.

    7. Select the Viewfinder check box to enable it.

    8. Enter values for the Camera Index and Camera Priority.

    9. Click OK to save the video settings.

    Configuring file metadata

    You can enter the metadata for any media file that is open for record. You can view but cannot modify the metadata of a file that is open for play.

    To enter or modify file metadata:

    1. In the File menu, select Open for Record.

    2. In the Settings menu, select Meta Data. The MetaData dialog box is displayed.

    3. Enter information into the Title, Author, Copyright, Revision, Category and Comments boxes.

    4. Click OK to save the metadata details entered.

    Setting the video output screen

    You can set the video output rendering to any specific screen number.

    To set the output screen:

    1. In the Settings menu, select Multiple Screen. The Set Output Screen dialog box is displayed.

    2. Enter the Screen Number in the Enter the Screen Number box.

    3. Click OK to save the output screen setting.

      Note: If the Screen Number is not supported, the MVS displays a KErrNotSupported message.

    Enabling auto pause and resume for video

    You can enable auto pause and resume for video by registering for resource notification. Registering for resource notification means that the audio playback for a video can be paused and resumed efficiently if access to the resource is lost and subsequently regained.

    To enable auto pause and resume:

    1. In the Settings menu, select Register For Notification. The Register For Resource Notification dialog box is displayed.

    2. Select the Enable Auto Pause & Resume check box to enable this functionality.

    3. Click OK to save the auto pause and resume setting.

      If you currently have a media file open for record, an information message is displayed to inform you that the setting has been applied. Otherwise, the setting is saved and applied when you next open a media file for record.

    To disable auto pause and resume, repeat the above steps but clear the Enable Auto Pause & Resume check box.

    Clearing the log file

    All events during a session are recorded in a log file.

    To clear the log for the current session, in the Settings menu, click ClearLog.

    Note: This feature is currently not available.

    See Also

    Introduction to the MVS

    MVS GUI layout

    Recording media files

    Playing media files

    Editing media files

    \ No newline at end of file +Configuring and clearing files

    You can configure the following settings for audio or video files, and the session log file:

    • Configuring audio files

    • Configuring video files

    • Configuring file metadata

    • Setting the video output screen

    • Enabling auto pause and resume for video

    • Clearing the log file

    Note: You can configure media files only when they are open, and when they are neither being recorded nor played.

    Configuring audio files

    To configure the settings of an audio file:

    1. In the File menu, click Open for Play, and select the audio file you want to configure.

    2. In the Settings menu, click Audio. The Audio Settings dialog box is displayed.

    3. In the Repeats box, enter the number of times to repeat the audio clip.

    4. In the Delay box, enter the interval between repeats in seconds.

    5. Select the Autoplay check box to play the file automatically when you open it for play.

    6. Select the Priority and Priority Preference.

    7. Select the Auto Pause&Resume check box to enable this functionality.

    8. Click OK to save the audio settings.

    Configuring video files

    Note: The ability to configure the video settings is not yet supported.

    To configure the settings of a video file:

    1. In the File menu, click Open for Play, and select the video file you want to configure.

    2. In the Settings menu, click Video. The Video Setting dialog box is displayed.

    3. Select the degree of Rotation.

    4. Enter percentages for the Scale Width and Scale Height.

    5. Select the Anti Alias Filtering check box to enable anti-alias filtering.

    6. Enter the coordinates in the top, bottom, left and right boxes to define the boundaries of the crop region.

    7. Select the Viewfinder check box to enable it.

    8. Enter values for the Camera Index and Camera Priority.

    9. Click OK to save the video settings.

    Configuring file metadata

    You can enter the metadata for any media file that is open for record. You can view but cannot modify the metadata of a file that is open for play.

    To enter or modify file metadata:

    1. In the File menu, select Open for Record.

    2. In the Settings menu, select Meta Data. The MetaData dialog box is displayed.

    3. Enter information into the Title, Author, Copyright, Revision, Category and Comments boxes.

    4. Click OK to save the metadata details entered.

    Setting the video output screen

    You can set the video output rendering to any specific screen number.

    To set the output screen:

    1. In the Settings menu, select Multiple Screen. The Set Output Screen dialog box is displayed.

    2. Enter the Screen Number in the Enter the Screen Number box.

    3. Click OK to save the output screen setting.

      Note: If the Screen Number is not supported, the MVS displays a KErrNotSupported message.

    Enabling auto pause and resume for video

    You can enable auto pause and resume for video by registering for resource notification. Registering for resource notification means that the audio playback for a video can be paused and resumed efficiently if access to the resource is lost and subsequently regained.

    To enable auto pause and resume:

    1. In the Settings menu, select Register For Notification. The Register For Resource Notification dialog box is displayed.

    2. Select the Enable Auto Pause & Resume check box to enable this functionality.

    3. Click OK to save the auto pause and resume setting.

      If you currently have a media file open for record, an information message is displayed to inform you that the setting has been applied. Otherwise, the setting is saved and applied when you next open a media file for record.

    To disable auto pause and resume, repeat the above steps but clear the Enable Auto Pause & Resume check box.

    Clearing the log file

    All events during a session are recorded in a log file.

    To clear the log for the current session, in the Settings menu, click ClearLog.

    Note: This feature is currently not available.

    See Also

    Introduction to the MVS

    MVS GUI layout

    Recording media files

    Playing media files

    Editing media files

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E52D52C8-AC58-5550-8932-59B314A47313_d0e535365_href.jpg Binary file Symbian3/PDK/Source/GUID-E52D52C8-AC58-5550-8932-59B314A47313_d0e535365_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E52D52C8-AC58-5550-8932-59B314A47313_d0e542825_href.jpg Binary file Symbian3/PDK/Source/GUID-E52D52C8-AC58-5550-8932-59B314A47313_d0e542825_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E544A944-5A65-40BD-A3B4-EF14E6132130_d0e1562_href.png Binary file Symbian3/PDK/Source/GUID-E544A944-5A65-40BD-A3B4-EF14E6132130_d0e1562_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E544A944-5A65-40BD-A3B4-EF14E6132130_d0e1566_href.png Binary file Symbian3/PDK/Source/GUID-E544A944-5A65-40BD-A3B4-EF14E6132130_d0e1566_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E55B3ACD-4651-5FBD-AC9F-511E5CBCC0C9_d0e46311_href.png Binary file Symbian3/PDK/Source/GUID-E55B3ACD-4651-5FBD-AC9F-511E5CBCC0C9_d0e46311_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E55B3ACD-4651-5FBD-AC9F-511E5CBCC0C9_d0e50545_href.png Binary file Symbian3/PDK/Source/GUID-E55B3ACD-4651-5FBD-AC9F-511E5CBCC0C9_d0e50545_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E55B594F-CC84-5984-9307-9819F6EBEB7F_d0e389916_href.png Binary file Symbian3/PDK/Source/GUID-E55B594F-CC84-5984-9307-9819F6EBEB7F_d0e389916_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E55B594F-CC84-5984-9307-9819F6EBEB7F_d0e395769_href.png Binary file Symbian3/PDK/Source/GUID-E55B594F-CC84-5984-9307-9819F6EBEB7F_d0e395769_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E56D30B2-9EF7-555C-8119-9F5E0F959AB4_d0e263000_href.png Binary file Symbian3/PDK/Source/GUID-E56D30B2-9EF7-555C-8119-9F5E0F959AB4_d0e263000_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E56D30B2-9EF7-555C-8119-9F5E0F959AB4_d0e269000_href.png Binary file Symbian3/PDK/Source/GUID-E56D30B2-9EF7-555C-8119-9F5E0F959AB4_d0e269000_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E56E21A9-B545-5217-A877-E64D30275157.dita --- a/Symbian3/PDK/Source/GUID-E56E21A9-B545-5217-A877-E64D30275157.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E56E21A9-B545-5217-A877-E64D30275157.dita Fri Jul 16 17:23:46 2010 +0100 @@ -45,7 +45,7 @@ the phone user (using the Dialog creator plug-in) for permission to send a message, if the client application does not have the correct capability set.

    User prompting service architecture - +
    UPS
    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E56EB25C-9B94-5486-9492-5151FDF79B6C.dita --- a/Symbian3/PDK/Source/GUID-E56EB25C-9B94-5486-9492-5151FDF79B6C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E56EB25C-9B94-5486-9492-5151FDF79B6C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -30,7 +30,7 @@ and unregisters surfaces:

    Surface registration - +

    The Video Renderer uses the global constant KAllScreens (provided by the Surface Update component) to ensure all displays are updated with new @@ -39,7 +39,7 @@ Data flow between client, Video Renderer and Surface Update client-side API - + Video Renderer diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E58FA02A-D721-42FC-941F-1D8E5BCD96BC_d0e99876_href.png Binary file Symbian3/PDK/Source/GUID-E58FA02A-D721-42FC-941F-1D8E5BCD96BC_d0e99876_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E5962E2D-C2D1-40EC-96FB-79CA6D10417F_d0e1801_href.png Binary file Symbian3/PDK/Source/GUID-E5962E2D-C2D1-40EC-96FB-79CA6D10417F_d0e1801_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E5962E2D-C2D1-40EC-96FB-79CA6D10417F_d0e1807_href.png Binary file Symbian3/PDK/Source/GUID-E5962E2D-C2D1-40EC-96FB-79CA6D10417F_d0e1807_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E5DE17C7-BEE3-5A99-B605-3854E503B949_d0e531328_href.png Binary file Symbian3/PDK/Source/GUID-E5DE17C7-BEE3-5A99-B605-3854E503B949_d0e531328_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E5DE17C7-BEE3-5A99-B605-3854E503B949_d0e538788_href.png Binary file Symbian3/PDK/Source/GUID-E5DE17C7-BEE3-5A99-B605-3854E503B949_d0e538788_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E5FB2D04-D57E-4EEA-850F-40F813C75D8C_d0e2538_href.png Binary file Symbian3/PDK/Source/GUID-E5FB2D04-D57E-4EEA-850F-40F813C75D8C_d0e2538_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E5FB2D04-D57E-4EEA-850F-40F813C75D8C_d0e2548_href.png Binary file Symbian3/PDK/Source/GUID-E5FB2D04-D57E-4EEA-850F-40F813C75D8C_d0e2548_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E60F9268-35D5-4D3F-B219-22AECF13953B_d0e102650_href.png Binary file Symbian3/PDK/Source/GUID-E60F9268-35D5-4D3F-B219-22AECF13953B_d0e102650_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E60F9268-35D5-4D3F-B219-22AECF13953B_d0e106670_href.png Binary file Symbian3/PDK/Source/GUID-E60F9268-35D5-4D3F-B219-22AECF13953B_d0e106670_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E61A931D-6E66-5E17-AE61-ABFB74CB8EF2.dita --- a/Symbian3/PDK/Source/GUID-E61A931D-6E66-5E17-AE61-ABFB74CB8EF2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E61A931D-6E66-5E17-AE61-ABFB74CB8EF2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,7 +14,7 @@

    The diagram illustrates the life-cycle of an active object.

    Flow diagram showing the life cycle of an active object - +

    Procedural flow follows the black arrows; control is transferred along the blue links, as follows:

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E63899B3-8EA8-5EF7-982E-EC161B3A4794_d0e107649_href.png Binary file Symbian3/PDK/Source/GUID-E63899B3-8EA8-5EF7-982E-EC161B3A4794_d0e107649_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E63899B3-8EA8-5EF7-982E-EC161B3A4794_d0e110092_href.png Binary file Symbian3/PDK/Source/GUID-E63899B3-8EA8-5EF7-982E-EC161B3A4794_d0e110092_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E63AAE78-335F-5BD3-BECA-1709C3C7FB3F.dita --- a/Symbian3/PDK/Source/GUID-E63AAE78-335F-5BD3-BECA-1709C3C7FB3F.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -baseaddress

    baseaddress hex-constant

    Use the baseaddress statement to specify the address to which a DLL will be built and, if possible, loaded. It only applies to WINSCW/WINS builds.

    Use it to give each DLL a different base address, so that the Windows loader does not have to do any relocation while loading Symbian platform and its DLLs. This considerably speeds up the initialisation of Symbian platform under WINSCW/WINS.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E63D0A01-EF87-566F-9BFA-9E75AD6F3205.dita --- a/Symbian3/PDK/Source/GUID-E63D0A01-EF87-566F-9BFA-9E75AD6F3205.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E63D0A01-EF87-566F-9BFA-9E75AD6F3205.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Window HierarchyIn a running application, all window instances are arranged in a hierarchy, in which each window has a parent. The Window Server has a window not owned by the client, called the "root" window which is the parent of all the group windows.

    Variant: Both (ScreenPlay and non-ScreenPlay). Target audience: Application developers.

    Parent windows

    The following diagram shows the relationship between parent and child windows and window groups at run-time. Arrows indicate "is a parent of".

    Window hierarchy -

    The relationships between parent and child windows have the following properties:

    • A window's parent is specified when the window is created.

    • The Window Server imposes no limit to the number of children a window can have. The number of children is limited only by the resources of the system.

    • When a parent window is destroyed, all its children are removed from the screen. However, the objects associated with them are not destroyed until the window or the client that owns them is destroyed.

    • A window's parent defines the region in which the window can be displayed. A child cannot be displayed outside its parent, and is clipped to the parent’s visible region. If a child window is moved so that part of it extends beyond its parent, that part of the child window will not be visible.

    • Note that if a window's parent is a window group, the window can be displayed anywhere on the screen, because window groups do not have a size.

    Sibling windows

    If a window has multiple children, these are known as siblings. Sibling windows are maintained in a list, and the parent window owns a link to the first window in the sibling list. The order of the windows in the sibling list represents the windows’ ordinal position. This determines which windows are displayed on top of which, if they overlap.

    Window Types
    \ No newline at end of file +

    The relationships between parent and child windows have the following properties:

    • A window's parent is specified when the window is created.

    • The Window Server imposes no limit to the number of children a window can have. The number of children is limited only by the resources of the system.

    • When a parent window is destroyed, all its children are removed from the screen. However, the objects associated with them are not destroyed until the window or the client that owns them is destroyed.

    • A window's parent defines the region in which the window can be displayed. A child cannot be displayed outside its parent, and is clipped to the parent’s visible region. If a child window is moved so that part of it extends beyond its parent, that part of the child window will not be visible.

    • Note that if a window's parent is a window group, the window can be displayed anywhere on the screen, because window groups do not have a size.

    Sibling windows

    If a window has multiple children, these are known as siblings. Sibling windows are maintained in a list, and the parent window owns a link to the first window in the sibling list. The order of the windows in the sibling list represents the windows’ ordinal position. This determines which windows are displayed on top of which, if they overlap.

    Window Types
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E64A8D76-28AD-4F75-9E92-3290488F85D9_d0e95509_href.png Binary file Symbian3/PDK/Source/GUID-E64A8D76-28AD-4F75-9E92-3290488F85D9_d0e95509_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E64A8D76-28AD-4F75-9E92-3290488F85D9_d0e99705_href.png Binary file Symbian3/PDK/Source/GUID-E64A8D76-28AD-4F75-9E92-3290488F85D9_d0e99705_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E651C7A7-D6EB-533E-A97A-360D089DE7A5.dita --- a/Symbian3/PDK/Source/GUID-E651C7A7-D6EB-533E-A97A-360D089DE7A5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E651C7A7-D6EB-533E-A97A-360D089DE7A5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -48,7 +48,7 @@ are three parameters, one of which is an integer, and the other two being pointers to descriptors.

    - +

    Inter-thread data transfer

    See also

    Descriptor diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E65D89C5-0472-573A-BD1C-B298848CD4CF.dita --- a/Symbian3/PDK/Source/GUID-E65D89C5-0472-573A-BD1C-B298848CD4CF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E65D89C5-0472-573A-BD1C-B298848CD4CF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -Bluetooth Collection OverviewThe Bluetooth collection contains the SDP, GAVDP and notifier support components.

    Purpose

    The Bluetooth Collection contains the SDP, GAVDP and notifier support components.

    Architecture
    Components

    The Bluetooth collection contains the following components:

    • SDP

      Bluetooth Service Discovery Protocol (SDP) enables a device to find out what services are available on another device. For example, when connecting a mobile phone to a bluetooth headset, SDP can find out which Bluetooth profiles the headset supports. The SDP component enables devices to register services to the SDP database and to query the database for available services. The SDP Agent and the SDP Database provide functionality for the SDP component.

    • GAVDP

      Generic Audio Video Distribution Profile (GAVDP) enables audio or video streaming.

    • Bluetooth Notifiers Support

      The Bluetooth Notifiers Support component enables you to create dialogs for interacting with device users about Bluetooth interactions. You can offer Bluetooth dialogs for several purposes, but the main purpose is to provide security for Bluetooth interactions.

    Using the Bluetooth collection

    The Bluetooth collection has the following uses:

    • using SDP to find out what services are available on another device

    • Using GAVDP to enable audio or video streaming

    • using the Bluetooth Notifiers Support to create dialogs for interacting with device users about Bluetooth interactions.

    \ No newline at end of file +Bluetooth Collection OverviewThe Bluetooth collection contains the SDP, GAVDP and notifier support components.
    Purpose

    The Bluetooth Collection contains the SDP, GAVDP and notifier support components.

    Architecture
    Components

    The Bluetooth collection contains the following components:

    • SDP

      Bluetooth Service Discovery Protocol (SDP) enables a device to find out what services are available on another device. For example, when connecting a mobile phone to a bluetooth headset, SDP can find out which Bluetooth profiles the headset supports. The SDP component enables devices to register services to the SDP database and to query the database for available services. The SDP Agent and the SDP Database provide functionality for the SDP component.

    • GAVDP

      Generic Audio Video Distribution Profile (GAVDP) enables audio or video streaming.

    • Bluetooth Notifiers Support

      The Bluetooth Notifiers Support component enables you to create dialogs for interacting with device users about Bluetooth interactions. You can offer Bluetooth dialogs for several purposes, but the main purpose is to provide security for Bluetooth interactions.

    Using the Bluetooth collection

    The Bluetooth collection has the following uses:

    • using SDP to find out what services are available on another device

    • Using GAVDP to enable audio or video streaming

    • using the Bluetooth Notifiers Support to create dialogs for interacting with device users about Bluetooth interactions.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E6803961-14A0-44BD-A94E-5D8A38EA907F.dita --- a/Symbian3/PDK/Source/GUID-E6803961-14A0-44BD-A94E-5D8A38EA907F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E6803961-14A0-44BD-A94E-5D8A38EA907F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,7 +21,7 @@ keypad solutions should take this into account.

    Lists and grids - +
    Using lists and grids in applications

    The APIs to use for lists and grids diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E6B77879-DA27-5D8C-B72D-A165F80CFF3B.dita --- a/Symbian3/PDK/Source/GUID-E6B77879-DA27-5D8C-B72D-A165F80CFF3B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E6B77879-DA27-5D8C-B72D-A165F80CFF3B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,7 +20,7 @@

    The following diagram shows these component relationships:

    Multimode ETel component architecture - +

    Much of the functionality defined in Multimode ETel is optional, meaning that a .TSY is not required to support it. Clients should use the @@ -30,7 +30,7 @@ in the Core and Multimode APIs and their inheritance relationships. The top package is ETel Core, the lower package is Multimode ETel.

    Multimode ETel key classes - +

    The key Multimode ETel classes are R-classes. The purpose of these classes is to communicate with the telephony server. All of the classes shown derive, directly or indirectly, from RTelSubSessionBase, diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E6BC747F-12E6-5866-99E2-D13E5AAE1F12_d0e450925_href.png Binary file Symbian3/PDK/Source/GUID-E6BC747F-12E6-5866-99E2-D13E5AAE1F12_d0e450925_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E6BC747F-12E6-5866-99E2-D13E5AAE1F12_d0e456770_href.png Binary file Symbian3/PDK/Source/GUID-E6BC747F-12E6-5866-99E2-D13E5AAE1F12_d0e456770_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E6CB4891-AFC8-50BB-A2C8-057DB1269DA9.dita --- a/Symbian3/PDK/Source/GUID-E6CB4891-AFC8-50BB-A2C8-057DB1269DA9.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ - - - - - -Meta -files -

    A meta file is a simple text file associated with each template extension -makefile, it contains additional information about the extension such as makefile -type, platform and so on.

    -

    Following is the syntax for meta file:

    -

    makefile gnumake | nmake

    -

    [platform value]

    -

    [option option-name_1 option-value_1]

    -

    ...

    -

    [option option-name_n option-value_n]

    -

    The makefile gnumake | nmake is compulsory -for all the meta files. It specifies whether the makefile is of type gnumake or nmake.

    -

    The optional platform value specifies -the platforms for which the associated template extension makefile can be -applied. If not specified, the makefile is invoked for all the platforms. -For example, the platform could be winscw and/or ARMv5.

    -

    The optional option option-name option-value sets -a default value for an option, which can be changed within START EXTENSION...END block -in the bld.inf file. For more information, refer to prj_extensions.

    -

    This example will set values to platform and makefile variables.

    #copy_default.meta -# - -makefile gnumake -platform win32
    - -How to write -a meta file - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E6E6A439-B3CC-5FEA-9148-2DB5F37003F2.dita --- a/Symbian3/PDK/Source/GUID-E6E6A439-B3CC-5FEA-9148-2DB5F37003F2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E6E6A439-B3CC-5FEA-9148-2DB5F37003F2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -23,7 +23,7 @@ EndBitmap()

    If the extended bitmap rasterizer DLL has a cache of previously rasterized extended bitmaps, calls to CFbsBitmap::GetScanLine(), CFbsBitmap::GetPixel() and CFbsBitmap::GetVerticalScanLine() do not need to rasterize the bitmap for each call, which can improve performance dramatically.

    An extended bitmap rasterizer DLL cache contains the previously rasterized content for the most recently used extended bitmaps. Typically the extended bitmap rasterizer DLL adds new bitmaps to the cache when CFbsRasterizer::BeginBitmap() is called (if they are not already in the cache) and does not automatically remove bitmaps from the cache when CFbsRasterizer::EndBitmap() is called.

    It is possible for an extended bitmap to be deleted before its cached information is deleted from the cache. It is therefore important that the cache does not store pointers to the data that was used to create the pre-rasterized content.

    There are two approaches that can be used to manage the cache:

    • Remove the oldest items when a maximum cache size is reached.

    • Associate the extended bitmap rasterizer DLL with a CIdle active object and remove all of the items during idle times.

    It is recommended that you use both mechanisms in order to optimize memory usage. The example extended bitmap rasterizer DLL does this. It maintains a list of recently used bitmaps, with the most recently used one being first in the list. If the size of the cache exceeds the set maximum, the oldest bitmaps are removed until the size is within limits again. The example extended bitmap rasterizer DLL also uses a CIdle object that clears the cache during idle times.

    Memory

    The example extended bitmap rasterizer DLL allocates and frees memory during CFbsRasterizer::BeginBitmap() and CFbsRasterizer::EndBitmap(), respectively. This approach may be slow if frequent allocation and freeing of large amounts of memory is required.

    A possible solution is to pre-allocate a memory pool from which the extended bitmap rasterizer DLL can use areas of memory. This reduces the number of allocations. However, this solution may be unsuitable for some scenarios, such as when memory usage is more important than performance.

    Example extended bitmap rasterizer

    The Symbian platform provides a simple example extended bitmap rasterizer, which you can use as a reference when you are creating your own. The source code is located in the os\graphics\fbs\fontandbitmapserver\trasterizer\src folder. It is built as fbsrasterizer_test.dll when you build the test code for the Font and Bitmap Server component.

    This extended bitmap rasterizer DLL handles a tricolor flag. The data comprises the flag's three colors and the direction (horizontal or vertical) of the stripes as shown in the following picture.

    Tricolor flag with horizontal and vertical stripes -
    • When CFbsRasterizer::BeginBitmap() is called for this type of extended bitmap, the extended bitmap rasterizer DLL creates a pixel buffer the size of the whole flag and draws the flag into it. If BitGDI specifies a region, the extended bitmap rasterizer DLL draws only the region and otherwise it draws the whole flag. For some extended bitmap rasterizers it may be faster to ignore the region and draw the whole bitmap area.

    • Calls to CFbsRasterizer::ScanLine() return a pointer to the appropriate place in the pre-rasterized buffer.

    • Calling CFbsRasterizer::EndBitmap() causes the pre-rasterized buffer to be stored in the cache or deleted.

    Packaging the DLL

    Because an extended bitmap rasterizer DLL is optional, there is a stub implementation for platform security reasons. When a functional extended bitmap rasterizer DLL is not present, the stub implementation is compiled into a DLL and is installed in the ROM in order to prevent a SIS file installing a rogue DLL with the same name.

    The MMP file

    • The DLL must have the name fbsrasterizer.dll. If the DLL is renamed during the build process, use the LINKAS keyword in the MMP file to indicate that this is the final name of the DLL. See Selection of Adaptations for more information.

    • Use UIDs 0x1000008D (which indicates a static interface DLL) and 0x10285EAE (which is a unique identifier that indicates that this is an extended bitmap rasterizer DLL).

    • The DLL must have all capabilities except TCB (Trusted Computing Base).

    • Use the NOEXPORTLIBRARY keyword to prevent the generation of LIB/DSO files during the build process.

    Here is a snippet from the stub implementation's MMP file:

    TARGET fbsrasterizer_stub.dll +
    • When CFbsRasterizer::BeginBitmap() is called for this type of extended bitmap, the extended bitmap rasterizer DLL creates a pixel buffer the size of the whole flag and draws the flag into it. If BitGDI specifies a region, the extended bitmap rasterizer DLL draws only the region and otherwise it draws the whole flag. For some extended bitmap rasterizers it may be faster to ignore the region and draw the whole bitmap area.

    • Calls to CFbsRasterizer::ScanLine() return a pointer to the appropriate place in the pre-rasterized buffer.

    • Calling CFbsRasterizer::EndBitmap() causes the pre-rasterized buffer to be stored in the cache or deleted.

    Packaging the DLL

    Because an extended bitmap rasterizer DLL is optional, there is a stub implementation for platform security reasons. When a functional extended bitmap rasterizer DLL is not present, the stub implementation is compiled into a DLL and is installed in the ROM in order to prevent a SIS file installing a rogue DLL with the same name.

    The MMP file

    • The DLL must have the name fbsrasterizer.dll. If the DLL is renamed during the build process, use the LINKAS keyword in the MMP file to indicate that this is the final name of the DLL. See Selection of Adaptations for more information.

    • Use UIDs 0x1000008D (which indicates a static interface DLL) and 0x10285EAE (which is a unique identifier that indicates that this is an extended bitmap rasterizer DLL).

    • The DLL must have all capabilities except TCB (Trusted Computing Base).

    • Use the NOEXPORTLIBRARY keyword to prevent the generation of LIB/DSO files during the build process.

    Here is a snippet from the stub implementation's MMP file:

    TARGET fbsrasterizer_stub.dll TARGETTYPE DLL CAPABILITY All -Tcb UID 0x1000008D 0x10285EAE diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E6F08B67-8DBC-5896-946D-BD0D27F82FE2.dita --- a/Symbian3/PDK/Source/GUID-E6F08B67-8DBC-5896-946D-BD0D27F82FE2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E6F08B67-8DBC-5896-946D-BD0D27F82FE2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,7 +14,7 @@
    Process view

    Client objects, in the client, talk to server objects, in the server application. The client and the server are in different processes.

    - +
    Service view

    The diagram below shows the point of view of services which operate over the server @@ -24,7 +24,7 @@ link, upon which real services can be created. A service will typically provide a client-side interface that clients can use directly, and a server-side interface that server applications have to implement.

    - +
    Symbian platform component view

    The diagram below shows the Symbian platform components @@ -49,7 +49,7 @@ which is already started.

    Applications will use the server application framework appropriate for their platform. They may use whatever services are available on that platform, subject to security restrictions.

    - +
    Client-server view

    The diagram below shows Apparc's implementation of the server application system from the client/server point @@ -78,7 +78,7 @@ to handle the client requests, which the server application must override and implement.

    - +
    Security view

    This section discusses security aspects of the server application support. Essentially, @@ -106,7 +106,7 @@ of parameters received from the client. They should not assume that they are talking to their equivalent class on the client-side.

    - +
    Sequence views

    The following sections show sequence diagrams illustrating various dynamic relationships @@ -129,7 +129,7 @@ Since both numbers are known to both parties, the combination can be checked for uniqueness and they can't be used to impersonate system servers. This name agreement system is therefore safe.

    - +

    Service creation

    Continuing from the previous diagram, this diagram shows the creation and use of a service specific sub-session between the client and server application.

    To use a service, the client @@ -142,7 +142,7 @@ is called passing in the UID of the requested service. The server application can now instantiate it's implementation of the server-side objects for the service.

    - +

    Service use

    The diagram below shows the use of a service specific session between the client and server application.

    To use a service, the client-side implementation of the service sends service @@ -150,7 +150,7 @@ in the server. This decodes the messages and calls virtual functions in the server application's implementation of the service, to actually carry out the service.

    - +

    Server application lifetime monitoring

    If the client application requires monitoring of the server application's lifetime, which it often will, it should implement the MApaServerAppExitObserver interface @@ -159,7 +159,7 @@ a request for notification of exit to the server. When the server exits, this notification will be completed. The CApaServerAppExitMonitor then runs and tells its observer that the server application has exited.

    - +
    See also

    Application Architecture Overview

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E71D8907-236E-5948-9594-E14E34A31DC8.dita --- a/Symbian3/PDK/Source/GUID-E71D8907-236E-5948-9594-E14E34A31DC8.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -document

    document document-file-list

    Use the document statement to specify document files.

    Each document statement may specify an arbitrary number of document files.

    There may be an arbitrary number of document statements in the project description file relative to each sourcepath.

    This keyword is only used in the creation of IDE makefiles, where it can be useful for specifying files so that they are available for editing within the IDE but do not play a part in building the executable.

    The .mmp file is incorporated in IDE workspaces by default.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E71DEB5F-A13A-5675-B2DE-9BCFDB38A3EC.dita --- a/Symbian3/PDK/Source/GUID-E71DEB5F-A13A-5675-B2DE-9BCFDB38A3EC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E71DEB5F-A13A-5675-B2DE-9BCFDB38A3EC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -What is the mechanism for reading, writing and searching for dataThis topic describes the mechanism for reading data from the Comms Database and writing data to the Comms Database.

    All elements that you can read and write have the class MMetaDatabase as a base class. This base class contains the functions that get and store that element.

    Tables, records, links and fields are all elements. The classes that represent tables, records, links and fields have MMetaDatabase in their class hierarchy. You use the functions in MMetaDatabase to load and store tables, records, links and fields.

    The MMetaDatabase class gives you:

    • the functions to get data from the Comms Database: LoadL(), FindL(), RefreshL()

    • the functions to put data into the Comms Database: StoreL(), ModifyL(), DeleteL()

    Getting data directly from the Comms Database

    If you know the record Id part of the element Id of a table, record, field or link, you can load the table, record, field or link from the Comms Database. Call SetRecordId() on the CMDBElement base class to set the record Id. Call LoadL() on the MMetaDatabase base class to load the table, record, field or link.

    The CommsDat API gets the data that the tool or application is allowed to see from the Comms database. The data that the tool or application can see depends on platform security capabilities and the access attributes for the session.

    A request to load a single element fails if the tool or application does not have the platform security capabilities.

    A request to load a table does not fail if some records in the table are not available. The tool or application can see only those records that are available.

    A request to load a record does not fail if some fields in the record are not available. The tool or application can see only those fields that are available.

    LoadL() writes over the content of the table, record, field or link object in memory.

    LoadL() opens a read-only transaction with the Comms Database if the tool or application has not already started a transaction.

    Finding data in the Comms Database

    You can search for records in the Comms Database. There are two patterns:

    Finding a single record that has specified field values

    You create a CMDBRecordBase object in memory. You select the fields for the search and set the field values. Call FindL() on the CMDBRecordBase object. FindL() is member of the MMetaDatabase base class. If the search is successful, the CommsDat API fills the CMDBRecordBase object with the values from the first record in the Comms Database that matches. The values include the element Id. If the search is not successful, the CMDBRecordBase object is not changed.

    FindL() opens a read-only transaction with the Comms Database if the tool or application has not already started a transaction.

    Note that you do not need to set the record Id part of the element Id of the table, the record, the field or the link object.

    Finding all records in a table that match a specified record

    You create a CMDBRecordSet object and append a single record to the array of records. You select the fields for the search and set the field values. This record is the 'search record'. Call FindL() on the CMDBRecordSet object. If the search is successful, the function returns a number of complete records. The first record found writes over the 'search record'. If the search is not successful, the CMDBRecordSet object is not changed

    FindL() opens a read-only transaction with the Comms Database if the tool or application has not already started a transaction.

    Note that you do not need to set the record Id part of the element Id of the table, the record, the field or the link object.

    Refreshing data in memory

    You can update your copy of the data in memory. You call RefreshL() to update the data. The method is similar to LoadL() but the method does not write over fields that the tool or application has changed. All other fields are refreshed from the Comms Database.

    RefreshL() is a member of the MMetaDatabase base class.

    RefreshL() is useful if a tool or application maintains a cache of Comms information.

    RefreshL() opens a read-only transaction with the Comms Database if the tool or application has not already started a transaction.

    Adding new data to the Comms Database

    If need to add or change the data in the Comms Database you must add or change the data in the table, the record, the link or the field object in memory.

    Call StoreL() to create new records, tables and fields. The CommsDat API only stores the fields that the tool or application has changed.

    A table, record, field or link object that exists must have a valid element Id before the call to StoreL().

    To add a new user defined table to the Comms Database set the record Id part of the element Id of the table to KCDNewTableRequest before the call to StoreL(). Call SetRecordId() on the CMDBElement base class to set the record Id.

    To add a new record to a table set the record Id part of the element Id of the table to KCDNewRecordRequest before the call to StoreL(). Call SetRecordId() on the CMDBElement base class to set the record Id. The table must exist before you add the new record.

    To add a new column to a user defined table set the record Id part of the element Id of the table to KCDNewColumnRequest before the call to StoreL(). Call SetRecordId() on the CMDBElement base class to set the record Id. The effect of a new column is to add a new field in the user defined records.

    The tool or application must have the platform security capabilities to write to the Comms Database.

    StoreL() opens a read/write transaction with the Comms Database if the tool or application has not already started a transaction.

    Changing data in the Comms Database

    If you need to change data in the Comms Database you must change the data in the table, the record, the link or the field object in memory. The table, the record, the link and the field must already exist in the database.

    Call ModifyL() to change existing data. The function cannot create new records or tables, but can store new fields in a record.

    The tool or application must have the platform security capabilities to write to the Comms Database.

    ModifyL() opens a read/write transaction with the Comms Database if the tool or application has not already started a transaction.

    Deleting data from the Comms Database

    Call DeleteL() to delete a table, a record, a field or a link from the Comms Database.

    The tool or application must have the platform security capabilities to write to the Comms Database.

    DeleteL() opens a read/write transaction with the Comms Database if the tool or application has not already started a transaction.

    \ No newline at end of file +What is the mechanism for reading, writing and searching for dataThis topic describes the mechanism for reading data from the Comms Database and writing data to the Comms Database.

    All elements that you can read and write have the class MMetaDatabase as a base class. This base class contains the functions that get and store that element.

    Tables, records, links and fields are all elements. The classes that represent tables, records, links and fields have MMetaDatabase in their class hierarchy. You use the functions in MMetaDatabase to load and store tables, records, links and fields.

    The MMetaDatabase class gives you:

    • the functions to get data from the Comms Database: LoadL(), FindL(), RefreshL()

    • the functions to put data into the Comms Database: StoreL(), ModifyL(), DeleteL()

    Getting data directly from the Comms Database

    If you know the record Id part of the element Id of a table, record, field or link, you can load the table, record, field or link from the Comms Database. Call SetRecordId() on the CMDBElement base class to set the record Id. Call LoadL() on the MMetaDatabase base class to load the table, record, field or link.

    The CommsDat API gets the data that the tool or application is allowed to see from the Comms database. The data that the tool or application can see depends on platform security capabilities and the access attributes for the session.

    A request to load a single element fails if the tool or application does not have the platform security capabilities.

    A request to load a table does not fail if some records in the table are not available. The tool or application can see only those records that are available.

    A request to load a record does not fail if some fields in the record are not available. The tool or application can see only those fields that are available.

    LoadL() writes over the content of the table, record, field or link object in memory.

    LoadL() opens a read-only transaction with the Comms Database if the tool or application has not already started a transaction.

    Finding data in the Comms Database

    You can search for records in the Comms Database. There are two patterns:

    Finding a single record that has specified field values

    You create a CMDBRecordBase object in memory. You select the fields for the search and set the field values. Call FindL() on the CMDBRecordBase object. FindL() is member of the MMetaDatabase base class. If the search is successful, the CommsDat API fills the CMDBRecordBase object with the values from the first record in the Comms Database that matches. The values include the element Id. If the search is not successful, the CMDBRecordBase object is not changed.

    FindL() opens a read-only transaction with the Comms Database if the tool or application has not already started a transaction.

    Note that you do not need to set the record Id part of the element Id of the table, the record, the field or the link object.

    Finding all records in a table that match a specified record

    You create a CMDBRecordSet object and append a single record to the array of records. You select the fields for the search and set the field values. This record is the 'search record'. Call FindL() on the CMDBRecordSet object. If the search is successful, the function returns a number of complete records. The first record found writes over the 'search record'. If the search is not successful, the CMDBRecordSet object is not changed

    FindL() opens a read-only transaction with the Comms Database if the tool or application has not already started a transaction.

    Note that you do not need to set the record Id part of the element Id of the table, the record, the field or the link object.

    Refreshing data in memory

    You can update your copy of the data in memory. You call RefreshL() to update the data. The method is similar to LoadL() but the method does not write over fields that the tool or application has changed. All other fields are refreshed from the Comms Database.

    RefreshL() is a member of the MMetaDatabase base class.

    RefreshL() is useful if a tool or application maintains a cache of Comms information.

    RefreshL() opens a read-only transaction with the Comms Database if the tool or application has not already started a transaction.

    Adding new data to the Comms Database

    If need to add or change the data in the Comms Database you must add or change the data in the table, the record, the link or the field object in memory.

    Call StoreL() to create new records, tables and fields. The CommsDat API only stores the fields that the tool or application has changed.

    A table, record, field or link object that exists must have a valid element Id before the call to StoreL().

    To add a new user defined table to the Comms Database set the record Id part of the element Id of the table to KCDNewTableRequest before the call to StoreL(). Call SetRecordId() on the CMDBElement base class to set the record Id.

    To add a new record to a table set the record Id part of the element Id of the table to KCDNewRecordRequest before the call to StoreL(). Call SetRecordId() on the CMDBElement base class to set the record Id. The table must exist before you add the new record.

    To add a new column to a user defined table set the record Id part of the element Id of the table to KCDNewColumnRequest before the call to StoreL(). Call SetRecordId() on the CMDBElement base class to set the record Id. The effect of a new column is to add a new field in the user defined records.

    The tool or application must have the platform security capabilities to write to the Comms Database.

    StoreL() opens a read/write transaction with the Comms Database if the tool or application has not already started a transaction.

    Changing data in the Comms Database

    If you need to change data in the Comms Database you must change the data in the table, the record, the link or the field object in memory. The table, the record, the link and the field must already exist in the database.

    Call ModifyL() to change existing data. The function cannot create new records or tables, but can store new fields in a record.

    The tool or application must have the platform security capabilities to write to the Comms Database.

    ModifyL() opens a read/write transaction with the Comms Database if the tool or application has not already started a transaction.

    Deleting data from the Comms Database

    Call DeleteL() to delete a table, a record, a field or a link from the Comms Database.

    The tool or application must have the platform security capabilities to write to the Comms Database.

    DeleteL() opens a read/write transaction with the Comms Database if the tool or application has not already started a transaction.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E726406A-2DAF-5A5F-91AF-7919C671F18F_d0e549108_href.png Binary file Symbian3/PDK/Source/GUID-E726406A-2DAF-5A5F-91AF-7919C671F18F_d0e549108_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E726406A-2DAF-5A5F-91AF-7919C671F18F_d0e556564_href.png Binary file Symbian3/PDK/Source/GUID-E726406A-2DAF-5A5F-91AF-7919C671F18F_d0e556564_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E73A181C-0C9B-513C-ABAE-585C80D566DF.dita --- a/Symbian3/PDK/Source/GUID-E73A181C-0C9B-513C-ABAE-585C80D566DF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E73A181C-0C9B-513C-ABAE-585C80D566DF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Bluetooth GPS PSY OverviewThis describes the Bluetooth GPS PSY, which connects the Location Server (eposserver.exe) to external Bluetooth GPS devices. The audience is device creators and developers who want to integrate the Bluetooth GPS PSY into their products.
    Purpose

    The Bluetooth GPS PSY is used by the Location Server (eposserver.exe) to obtain position fixes from external Bluetooth GPS devices. The PSY uses the Bluetooth APIs to pair with an external Bluetooth GPS device. The PSY obtains position fixes from the Bluetooth GPS device. If the Bluetooth GPS PSY is installed, a mobile device without an internal GPS chipset can obtain GPS position fixes from external Bluetooth GPS hardware.

    Required background

    A knowledge of the material covered in the following is useful to understanding how this component fits into the LBS architecture:

    • LBS Architecture Overview

    • LBS Integration and Configuration Guide

    Key concepts and terms
    Bluetooth

    A wireless protocol for data exchange over small distances.

    PSY

    A Positioning Plug-in. The Bluetooth GPS PSY implements the Positioning Plug-in API to interface with the Location Server. It uses the Positioning Plug-in Information API to register itself with the Location Server.

    NMEA

    In this context, an abbreviation of the NMEA (National Maritime Electronics Association) 0183 standard. This defines an electrical and data exchange protocol for marine electronic devices (including GPS receivers). The Bluetooth GPS PSY supports devices that use the NMEA 0183 standard and also devices that support PNOK NMEA extensions.

    PNOK

    Nokia proprietary extension to the NMEA 0183 standard. It defines additional messages that give extra information about the status of a Bluetooth GPS device that supports PNOK. The Bluetooth GPS PSY supports PNOK.

    RFCOMM

    A Bluetooth protocol that provides simulated serial communications over a wireless connection. It is used by the Bluetooth stack to support data exchange with the Bluetooth GPS device on behalf of the Bluetooth GPS PSY.

    Architecture

    Figure 1 shows the Bluetooth GPS PSY component with associated LBS components.

    Figure 1. Bluetooth GPS PSY and related components. -

    The Bluetooth GPS PSY implements the Positioning Plug-in API. It also uses the Positioning Plug-in Information API to register itself with the LBS subsystem. The PSY provides three APIs (described in more detail later in this document).

    The PSY uses the Bluetooth APIs to pair with a Bluetooth GPS device. Bluetooth uses the RFCOMM protocols to connect with the Bluetooth GPS device.

    Supported features

    The Bluetooth GPS PSY provides the following features:

    • Support for devices that use the NMEA 0183 protocol.

      A Bluetooth device must support NMEA 0183 to be compatible with the Bluetooth GPS PSY.

    • Support for devices that implement the PNOK NMEA 0183 extensions.

      These proprietary extensions support additional information about the paired Bluetooth GPS device.

    • Support for multiple simultaneous client requests for position fixes.

      The PSY uses the target time specified as part of the client request to decide if multiple client requests can be bundled into a single request to the Bluetooth subsystem. Bundling requests improves efficiency and reduces the power requirements of using an external Bluetooth GPS device.

    • Support for tracking.

      Tracking is the process of returning periodic position updates with a constant time interval between them. This feature is typically used by navigation applications.

    • Support for multiple Bluetooth GPS devices.

      The Bluetooth protocols can discover more than one Bluetooth GPS device (for example a mobile phone may be able to connect with both a standalone Bluetooth GPS device and an in-car device).

      It is useful to be able to try to connect to more than one Bluetooth GPS device. One example use-case is when the mobile device is used for in-car navigation. GPS reception may be limited inside a vehicle, but there may be access to an in-car Bluetooth GPS device with an external aerial. The Bluetooth protocols can discover all available Bluetooth GPS devices and ask the user which one to pair with their mobile. The PSY then connects to the chosen Bluetooth GPS device.

      It is not necessary for a user to follow this manual pairing procedure each time LBS decides it needs to use a Bluetooth GPS device. The PSY maintains its own ordered list of Bluetooth GPS devices. It tries to connect to each of the devices in succession and pairs with the first device to which it can successfully connect. The details of this device are stored by the PSY and are automatically used the next time the mobile must be paired with Bluetooth GPS hardware. Note that the PSY can only be paired with one Bluetooth GPS device at any time.

    PSY libraries and installation

    Most of the Bluetooth GPS PSY is packaged in nlabtgpspsy.dll. The Bluetooth GPS PSY Configuration API (see below) is packaged as a separate library lbsbtgpsconfig.dll.

    The PSY can be installed in one of two ways:

    • By a device creator at ROM build time by using a ROM build macro.

    • In a SIS file, which can be installed by the mobile device user.

    See Bluetooth GPS PSY Tutorial for more information about these installation options.

    APIs

    The Bluetooth GPS PSY provides three APIs:

    • Bluetooth GPS PSY Settings Storage API

      A client can use this API to get the properties of the Bluetooth GPS device paired with the Bluetooth GPS PSY. If the device supports PNOK, some properties can also be set.

      A client is typically a Bluetooth GPS settings application developed by a device creator.

    • Bluetooth GPS PSY Events API

      A client can use this API to get information about the paired Bluetooth GPS device. If the device supports PNOK, the client can subscribe for notification of some Bluetooth device events (such as device status changes).

      A client is typically a UI component, such as a notifier, that informs a user of Bluetooth GPS device events.

    • Bluetooth GPS PSY Configuration API

      This API allows a user to manage an ordered list of Bluetooth GPS device details. The PSY tries to connect with each of the devices in the list in succession and stops when it is successful.

    Typical uses

    The PSY can be used to obtain a location fix one of two ways:

    • A Location Acquisition API client can select the PSY by default by opening a session with the Default PSY. The Default PSY always tries to use the Bluetooth GPS PSY first to obtain a location fix, and then tries to use other PSYs if the Bluetooth GPS PSY cannot provide a position fix.

    • A Location Acquisition API client can select the PSY explicitly by opening a session with the Location Server. The client application must specify the implementation UID of the Bluetooth GPS PSY (0x101FE999).

    The PSY can also report the status of a Bluetooth GPS device through the Bluetooth GPS PSY Events API.

    Bluetooth GPS PSY +

    The Bluetooth GPS PSY implements the Positioning Plug-in API. It also uses the Positioning Plug-in Information API to register itself with the LBS subsystem. The PSY provides three APIs (described in more detail later in this document).

    The PSY uses the Bluetooth APIs to pair with a Bluetooth GPS device. Bluetooth uses the RFCOMM protocols to connect with the Bluetooth GPS device.

    Supported features

    The Bluetooth GPS PSY provides the following features:

    • Support for devices that use the NMEA 0183 protocol.

      A Bluetooth device must support NMEA 0183 to be compatible with the Bluetooth GPS PSY.

    • Support for devices that implement the PNOK NMEA 0183 extensions.

      These proprietary extensions support additional information about the paired Bluetooth GPS device.

    • Support for multiple simultaneous client requests for position fixes.

      The PSY uses the target time specified as part of the client request to decide if multiple client requests can be bundled into a single request to the Bluetooth subsystem. Bundling requests improves efficiency and reduces the power requirements of using an external Bluetooth GPS device.

    • Support for tracking.

      Tracking is the process of returning periodic position updates with a constant time interval between them. This feature is typically used by navigation applications.

    • Support for multiple Bluetooth GPS devices.

      The Bluetooth protocols can discover more than one Bluetooth GPS device (for example a mobile phone may be able to connect with both a standalone Bluetooth GPS device and an in-car device).

      It is useful to be able to try to connect to more than one Bluetooth GPS device. One example use-case is when the mobile device is used for in-car navigation. GPS reception may be limited inside a vehicle, but there may be access to an in-car Bluetooth GPS device with an external aerial. The Bluetooth protocols can discover all available Bluetooth GPS devices and ask the user which one to pair with their mobile. The PSY then connects to the chosen Bluetooth GPS device.

      It is not necessary for a user to follow this manual pairing procedure each time LBS decides it needs to use a Bluetooth GPS device. The PSY maintains its own ordered list of Bluetooth GPS devices. It tries to connect to each of the devices in succession and pairs with the first device to which it can successfully connect. The details of this device are stored by the PSY and are automatically used the next time the mobile must be paired with Bluetooth GPS hardware. Note that the PSY can only be paired with one Bluetooth GPS device at any time.

    PSY libraries and installation

    Most of the Bluetooth GPS PSY is packaged in nlabtgpspsy.dll. The Bluetooth GPS PSY Configuration API (see below) is packaged as a separate library lbsbtgpsconfig.dll.

    The PSY can be installed in one of two ways:

    • By a device creator at ROM build time by using a ROM build macro.

    • In a SIS file, which can be installed by the mobile device user.

    See Bluetooth GPS PSY Tutorial for more information about these installation options.

    APIs

    The Bluetooth GPS PSY provides three APIs:

    • Bluetooth GPS PSY Settings Storage API

      A client can use this API to get the properties of the Bluetooth GPS device paired with the Bluetooth GPS PSY. If the device supports PNOK, some properties can also be set.

      A client is typically a Bluetooth GPS settings application developed by a device creator.

    • Bluetooth GPS PSY Events API

      A client can use this API to get information about the paired Bluetooth GPS device. If the device supports PNOK, the client can subscribe for notification of some Bluetooth device events (such as device status changes).

      A client is typically a UI component, such as a notifier, that informs a user of Bluetooth GPS device events.

    • Bluetooth GPS PSY Configuration API

      This API allows a user to manage an ordered list of Bluetooth GPS device details. The PSY tries to connect with each of the devices in the list in succession and stops when it is successful.

    Typical uses

    The PSY can be used to obtain a location fix one of two ways:

    • A Location Acquisition API client can select the PSY by default by opening a session with the Default PSY. The Default PSY always tries to use the Bluetooth GPS PSY first to obtain a location fix, and then tries to use other PSYs if the Bluetooth GPS PSY cannot provide a position fix.

    • A Location Acquisition API client can select the PSY explicitly by opening a session with the Location Server. The client application must specify the implementation UID of the Bluetooth GPS PSY (0x101FE999).

    The PSY can also report the status of a Bluetooth GPS device through the Bluetooth GPS PSY Events API.

    Bluetooth GPS PSY Tutorial Bluetooth GPS PSY Settings Storage API Bluetooth GPS PSY Events API Bluetooth diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E77E2E2A-2F2D-549E-ABD6-175E68A406CB_d0e552552_href.png Binary file Symbian3/PDK/Source/GUID-E77E2E2A-2F2D-549E-ABD6-175E68A406CB_d0e552552_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E77E2E2A-2F2D-549E-ABD6-175E68A406CB_d0e560008_href.png Binary file Symbian3/PDK/Source/GUID-E77E2E2A-2F2D-549E-ABD6-175E68A406CB_d0e560008_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E7C820D7-7E00-5A95-9847-29A0FB0E78F1.dita --- a/Symbian3/PDK/Source/GUID-E7C820D7-7E00-5A95-9847-29A0FB0E78F1.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E7C820D7-7E00-5A95-9847-29A0FB0E78F1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -40,7 +40,7 @@ for encryption/decryption and authentication.

    Functional Model of SRTP

    The figure below describes the functional model of SRTP.

    - +

    The SRTP Stack is not an active component and is not network aware. It sits as a processing layer between the RTP stack and the network. The RTP stack calls for SRTP encryption before it sends the RTP Packets to the network. diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E7DD9CFD-F477-5D25-BC10-BEBFB1022F7E.dita --- a/Symbian3/PDK/Source/GUID-E7DD9CFD-F477-5D25-BC10-BEBFB1022F7E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E7DD9CFD-F477-5D25-BC10-BEBFB1022F7E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -63,7 +63,7 @@ a network initiated location request.

    Figure 1: SUPL Push API and Symbian plug-ins - +

    SUPL WAP Push plug-in

    The Symbian platform includes the WAP Push Framework to process WAP Push messages. If the Symbian SUPL WAP Push plug-in is installed, @@ -104,7 +104,7 @@ (if required).

    Figure 2: Class diagram of SUPL Push API sender classes - + @@ -178,7 +178,7 @@ are used by the Symbian reference SUPL Protocol Module.

    Figure 3: Class diagram of SUPL Push API receiver classes - +
    @@ -224,7 +224,7 @@ the SUPL INIT message is received, but this does not guarantee that the network initiated location request will complete successfully.

    Figure 4: SUPL Push API sequence diagram - +
    References

    [1] Open Mobile Alliance Secure User Plane Location (SUPL) Architecture OMA-AD-SUPL-V1_0-20070615-A

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E7EFAD50-3323-49A6-A5D9-95B95F0FBF0E.dita --- a/Symbian3/PDK/Source/GUID-E7EFAD50-3323-49A6-A5D9-95B95F0FBF0E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E7EFAD50-3323-49A6-A5D9-95B95F0FBF0E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ data about an item that has focus in the main pane.

    Preview pop-up - +

    The preview is displayed with a 0.6 second delay after the focus is moved (for example, scrolling down a list with the Arrow keys) to avoid too rapid diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E808AB2B-3A2D-5C91-9047-A74AAA770CE6_d0e147949_href.png Binary file Symbian3/PDK/Source/GUID-E808AB2B-3A2D-5C91-9047-A74AAA770CE6_d0e147949_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E808AB2B-3A2D-5C91-9047-A74AAA770CE6_d0e150190_href.png Binary file Symbian3/PDK/Source/GUID-E808AB2B-3A2D-5C91-9047-A74AAA770CE6_d0e150190_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E80AA33B-E5E0-5F4B-9A7F-65B357F7161C.dita --- a/Symbian3/PDK/Source/GUID-E80AA33B-E5E0-5F4B-9A7F-65B357F7161C.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,34 +0,0 @@ - - - - - -Overview -

    This section details the source text resource file format, and is a useful -reference for developers in C++ and OPL.

    -

    Topics covered include: the lexical conventions obeyed, the C++ pre-processor -statements supported, and a description of the native resource compiler statements.

    -

    Changes since v5

    -

    Note the following changes since v5:

    -
      -
    • UTF8 encoding can be -used in source files to represent Unicode values.

    • -
    • TEXT resources -have been deprecated: you should use LTEXT instead.

    • -
    • Binary compatible is -broken with Unicode resource files prepared with v5. The handling of Unicode -string resources (TEXT16 and LTEXT16) has -changed to ensure that the Unicode characters are aligned to a multiple of -2 bytes when the resource is used.

    • -
    • The < number > syntax -for using special character codes expects a Unicode character value if a Unicode -resource is being created. The < number > syntax cannot be used to specify -individual 8-bit values in Unicode resource files.

    • -
    - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E81D70B1-FB3F-501D-AD3F-038C8BE997BF.dita --- a/Symbian3/PDK/Source/GUID-E81D70B1-FB3F-501D-AD3F-038C8BE997BF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E81D70B1-FB3F-501D-AD3F-038C8BE997BF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,7 +9,7 @@ --> -Updating the Network PSY Central Repository Initialization File This topic shows you how to modify the settings of the Network PSY and the Network Location Manager so that they do not conflict with each other.

    As described in Network PSY Overview, the Network PSY does not integrate directly with positioning hardware. It uses the Network Location Manager with a Network Protocol Module to connect the Location Server (eposserver.exe) to positioning hardware.

    There are two places that information about the properties of the Network PSY and Network Protocol Module are stored:

    • The Network PSY registers itself as a PSY with the LBS subsystem using a Central Repository Initialization file 10285abe.cre with keys defined by the Positioning Plug-in Information API.

    • The Network Location Manager uses the file networklocationmanager.ini to specify the positioning properties of your Network Protocol Module and network.

    The description of the properties of the Network PSY and the Network Protocol Module must be correctly described in both networklocationmanager.ini and 10285abe.cre.

    This procedure assumes you have created a Network Protocol Module for your device's positioning hardware and have modified networklocationmanager.ini to describe correctly the properties of the Network Protocol Module/network.

    The contents of networklocationmanager.ini as supplied with the Symbian platform are shown below. You need to modify this if your Network Protocol Module and network have different properties from the ones shown here. +Updating the Network PSY Central Repository Initialization File This topic shows you how to modify the settings of the Network PSY and the Network Location Manager so that they do not conflict with each other.

    As described in Network PSY Overview, the Network PSY does not integrate directly with positioning hardware. It uses the Network Location Manager with a Network Protocol Module to connect the Location Server (eposserver.exe) to positioning hardware.

    There are two places that information about the properties of the Network PSY and Network Protocol Module are stored:

    • The Network PSY registers itself as a PSY with the LBS subsystem using a Central Repository Initialization file 10285abe.cre with keys defined by the Positioning Plug-in Information API.

    • The Network Location Manager uses the file networklocationmanager.ini to specify the positioning properties of your Network Protocol Module and network.

    The description of the properties of the Network PSY and the Network Protocol Module must be correctly described in both networklocationmanager.ini and 10285abe.cre.

    This procedure assumes you have created a Network Protocol Module for your device's positioning hardware and have modified networklocationmanager.ini to describe correctly the properties of the Network Protocol Module/network.

    The contents of networklocationmanager.ini as supplied with the Symbian platform are shown below. You need to modify this if your Network Protocol Module and network have different properties from the ones shown here. # networklocationmanager.ini [1] @@ -53,7 +53,7 @@ 0xe int 1 0 cap_rd=alwayspass cap_wr=alwaysfail 0xf string "\\resource\\lbsnetpsy_name.rsc" 0 cap_rd=alwayspass cap_wr=alwaysfail 0x10000000 int 2000000 0 cap_rd=alwayspass cap_wr=alwaysfail - For a full description of the meanings of these keys, see Positioning Plug-in Information API. The important keys for this task are shown in the following table:
    Key name Key value Meaning Description

    KPSYTimeToFirstFix

    0x4

    Time to First Fix

    This must be the same time as the TimeToFirstFix value in networklocationmanager.ini.

    Important note: In the PSY Central Repository Initialization file the time is specified in microseconds. In the Integration Module .ini file the time is specified in milliseconds.

    KPSYTimeToNextFix

    0x5

    Time to Next Fix

    This must be the same time as the TimeToNextFix value in networklocationmanager.ini.

    Important note: In the PSY Central Repository Initialization file the time is specified in microseconds. In the Integration Module .ini file the time is specified in milliseconds.

    KPSYHorizontalAccuracy

    0x6

    Horizontal Accuracy

    This must be the same as the HorizontalAccuracy value in networklocationmanager.ini. The value is specified in metres.

    KPSYVerticalAccuracy

    0x7

    Vertical Accuracy

    This must be the same as the VerticalAccuracy value in networklocationmanager.ini. The value is specified in metres.

    KPSYCostIndicator

    0x8

    Cost Indicator

    This must be the same as the CostIndicator value in networklocationmanager.ini. The value is an integer taken from the TPositionQuality::TCostIndicator enum.

    KPSYPowerConsumption

    0x9

    Power Consumption

    This must be the same as the PowerConsumption value in networklocationmanager.ini. The value is an integer taken from the TPositionQuality::TPowerConsumption enum.

    KPSYTechnologyType

    0xa

    Technology Type

    This must be the same as the TechnologyType value in networklocationmanager.ini. The value is taken from the TPositionModuleInfo::_TTechnologyType enum.

    Important note: In the PSY Central Repository Initialization file the value is specified as decimal integer. In the Integration Module .ini file the value is specified in binary.

    In the file shown above, the value of 2 for this key specifies that the Network PSY supports a technology type of ETechnologyNetwork = 2 = 0010 in binary.

    KPSYCapabilities

    0xc

    Device Capabilities

    This must be the same as the Capabilities value in networklocationmanager.ini. The value is taken from the TPositionModuleInfo::_Capabilities enum.

    Important note: In the PSY Central Repository Initialization file the value is specified as a decimal integer. In the Integration Module .ini file the value is specified in binary.

    In the file shown above the value of 15 for this key specifies that the Network PSY supports the capabilities:

    ECapabilityHorizontal + ECapabilityVertical + + For a full description of the meanings of these keys, see Positioning Plug-in Information API. The important keys for this task are shown in the following table:

    Key name Key value Meaning Description

    KPSYTimeToFirstFix

    0x4

    Time to First Fix

    This must be the same time as the TimeToFirstFix value in networklocationmanager.ini.

    Important note: In the PSY Central Repository Initialization file the time is specified in microseconds. In the Integration Module .ini file the time is specified in milliseconds.

    KPSYTimeToNextFix

    0x5

    Time to Next Fix

    This must be the same time as the TimeToNextFix value in networklocationmanager.ini.

    Important note: In the PSY Central Repository Initialization file the time is specified in microseconds. In the Integration Module .ini file the time is specified in milliseconds.

    KPSYHorizontalAccuracy

    0x6

    Horizontal Accuracy

    This must be the same as the HorizontalAccuracy value in networklocationmanager.ini. The value is specified in metres.

    KPSYVerticalAccuracy

    0x7

    Vertical Accuracy

    This must be the same as the VerticalAccuracy value in networklocationmanager.ini. The value is specified in metres.

    KPSYCostIndicator

    0x8

    Cost Indicator

    This must be the same as the CostIndicator value in networklocationmanager.ini. The value is an integer taken from the TPositionQuality::TCostIndicator enum.

    KPSYPowerConsumption

    0x9

    Power Consumption

    This must be the same as the PowerConsumption value in networklocationmanager.ini. The value is an integer taken from the TPositionQuality::TPowerConsumption enum.

    KPSYTechnologyType

    0xa

    Technology Type

    This must be the same as the TechnologyType value in networklocationmanager.ini. The value is taken from the TPositionModuleInfo::_TTechnologyType enum.

    Important note: In the PSY Central Repository Initialization file the value is specified as decimal integer. In the Integration Module .ini file the value is specified in binary.

    In the file shown above, the value of 2 for this key specifies that the Network PSY supports a technology type of ETechnologyNetwork = 2 = 0010 in binary.

    KPSYCapabilities

    0xc

    Device Capabilities

    This must be the same as the Capabilities value in networklocationmanager.ini. The value is taken from the TPositionModuleInfo::_Capabilities enum.

    Important note: In the PSY Central Repository Initialization file the value is specified as a decimal integer. In the Integration Module .ini file the value is specified in binary.

    In the file shown above the value of 15 for this key specifies that the Network PSY supports the capabilities:

    ECapabilityHorizontal + ECapabilityVertical + ECapabilitySpeed + ECapabilityDirection = 15 decimal or 1111 in binary.

    Make a binary version of the Central Repository Initialization text file 10285abe.txt. The LBS build process makes a binary version of the Network PSY Central Repository files and copies them to epoc32\winscw\c\private\10202BE9. To rebuild the Network PSY Central Repository file you can use the makefile createlbsnetpsyrep.mk in datasourcemodules\lbsposfwadaptation\lbsnetpsy\group. Use the ROM macros to copy the Network PSY DLL and the Central Repository files into a device ROM. Network PSY Overview Include the Network PSY in ROM \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E81D72B2-BA77-5F4E-8742-3812A60A4DAC.dita --- a/Symbian3/PDK/Source/GUID-E81D72B2-BA77-5F4E-8742-3812A60A4DAC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E81D72B2-BA77-5F4E-8742-3812A60A4DAC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,106 +1,101 @@ - - - - - -How to -use modifiable buffer descriptor — TBuf<TInt>Modifiable buffer descriptors are useful for holding strings or -data and providing safe ways to access and modify that data. -
      -
    • For text data, it is -usual to construct a TBuf<TInt> type and allow the appropriate -variant, either a TBuf8<TInt> or a TBuf16<TInt> to -be selected at build time.

    • -
    • For binary data, an -explicit TBuf8<TInt> is used.

    • -
    • It is rare to use an -explicit TBuf16<TInt>.

    • -
    -

    Although, the following notes refer to the build independent types; they -are equally valid for the explicit 8 bit and 16 bit types.

    -
    Constructing -a TBuf<TInt>

    A modifiable buffer descriptor can be constructed -in a number of ways:

      -
    • as an empty buffer descriptor.

    • -
    • as an empty buffer descriptor -but giving it a length.

    • -
    • by copying data from -any other type of descriptor.

    • -
    • by copying data from -another modifiable buffer descriptor of the same size.

    • -

    The following code fragment constructs a TBuf<16> object. -The buffer descriptor is uninitialised, i.e. it contains no data. The assignment -operator or the Copy() function can be used to put data into -the buffer descriptor after construction:

    _LIT(KText,"Hello World!"); -... -TBuf<16> buf1; // length of buf1 is 0 -... -buf1 = KText; // data assigned

    The source descriptor is a -literal which is converted to descriptor type.

    The following code fragment -constructs a TBuf<16> object and sets it length to 12. -No data is assigned into the descriptor.

    ... -TBuf<16> buf1(12); // length of buf1 is 12 -...

    The following code fragment constructs a TBuf<16> object, -initialised with the 12 characters making up the English language phrase "Hello -World!".

    _LIT(KText,"Hello World!"); -... -TBuf<16> buf1(KText);

    The following code fragment constructs -a TBuf<16> object from another TBuf<16> object. -This is, in effect, copy construction.

    _LIT(KText,"Hello World!"); -... -TBuf<16> buf1(KText); -TBuf<16> buf2(buf1); // buf2 constructed from the data in buf1

    In -both of these cases, the resulting length of the descriptor is 12.

    A -non-modifiable buffer descriptor can also be constructed from 'C' style zero -terminated string. However, this is rarely necessary but may make it easier -to port legacy 'C' code.

    -
    Replacing data

    Data -within a modifiable buffer descriptor can be completely replaced through the -assignment operator or by using the Copy() function.

    _LIT(KText,"Hello World!"); -_LIT(KNewText,"New text"); -_LIT(KReplaced,"Replaced"); -... -TBuf<16> buf1(KText); -TBuf<16> buf2; -... -buf2 = buf1; // buf2 now contains "Hello World!" -... -buf2 = KNewText; // buf2 now contains "New text". - // the literal is converted to a descriptor - // type. -buf2.Copy(KReplaced); // buf2 content replaced using Copy()
    -
    Accessing and -changing data

    Once a modifiable buffer descriptor has been constructed, -the functions in the base classes, TDesC and TDes, -are available to be access and change the data.

    _LIT(KText,"Hello World!"); -... -TBufC<16> buf1(KText); -... -buf1.Length();

    and

    _LIT(KText,"Hello World!"); -... -TBufC<16> buf1(KText); // length is 12 -... -buf1.Delete(6,6); // length is now 6, leaving "Hello" in - // the buffer
    -
    Illegal access -causing an exception

    The following code fragment raises a panic -because of an attempt to assign too much data. The maximum length of the buffer -descriptor is 16 but the length of the data to be copied is 31:

    _LIT(KText,"Hello World! The sun is shining"); -... -TBufC<16> buf1(KText);

    The following code fragment raises -a panic because of an attempt to delete data outside the boundary defined -by the descriptor:

    _LIT(KText,"Hello World!"); -... -TBufC<16> buf1(KText); -buf1.Delete(99,1);
    -
    - -Literal Descriptors - + + + + + +How to use modifiable buffer descriptor — TBuf<TInt>Modifiable buffer descriptors are useful for holding strings +or data and providing safe ways to access and modify that data. +
      +
    • For text data, +it is usual to construct a TBuf<TInt> type and +allow the appropriate variant, either a TBuf8<TInt> or a TBuf16<TInt> to be selected at build time.

    • +
    • For binary data, +an explicit TBuf8<TInt> is used.

    • +
    • It is rare to +use an explicit TBuf16<TInt>.

    • +
    +

    Although, the following notes refer to the build independent types; +they are equally valid for the explicit 8 bit and 16 bit types.

    +
    Constructing +a TBuf<TInt>

    A modifiable buffer descriptor can be constructed +in a number of ways:

      +
    • as an empty +buffer descriptor.

    • +
    • as an empty +buffer descriptor but giving it a length.

    • +
    • by copying data +from any other type of descriptor.

    • +
    • by copying data +from another modifiable buffer descriptor of the same size.

    • +

    The following code fragment constructs a TBuf<16> object. The buffer descriptor is uninitialised, i.e. it contains +no data. The assignment operator or the Copy() function +can be used to put data into the buffer descriptor after construction:

    _LIT(KText,"Hello World!"); +... +TBuf<16> buf1; // length of buf1 is 0 +... +buf1 = KText; // data assigned

    The source descriptor +is a literal which is converted to descriptor type.

    The following +code fragment constructs a TBuf<16> object and +sets it length to 12. No data is assigned into the descriptor.

    ... +TBuf<16> buf1(12); // length of buf1 is 12 +...

    The following code fragment constructs a TBuf<16> object, initialised with the 12 characters making +up the English language phrase "Hello World!".

    _LIT(KText,"Hello World!"); +... +TBuf<16> buf1(KText);

    The following code fragment +constructs a TBuf<16> object from another TBuf<16> object. This is, in effect, copy construction.

    _LIT(KText,"Hello World!"); +... +TBuf<16> buf1(KText); +TBuf<16> buf2(buf1); // buf2 constructed from the data in buf1

    In both of these cases, the resulting length of the descriptor +is 12.

    A non-modifiable buffer descriptor can also be constructed +from 'C' style zero terminated string. However, this is rarely necessary +but may make it easier to port legacy 'C' code.

    +
    Replacing +data

    Data within a modifiable buffer descriptor can be +completely replaced through the assignment operator or by using the Copy() function.

    _LIT(KText,"Hello World!"); +_LIT(KNewText,"New text"); +_LIT(KReplaced,"Replaced"); +... +TBuf<16> buf1(KText); +TBuf<16> buf2; +... +buf2 = buf1; // buf2 now contains "Hello World!" +... +buf2 = KNewText; // buf2 now contains "New text". + // the literal is converted to a descriptor + // type. +buf2.Copy(KReplaced); // buf2 content replaced using Copy()
    +
    Accessing +and changing data

    Once a modifiable buffer descriptor has +been constructed, the functions in the base classes, TDesC and TDes, are available to be access and change +the data.

    _LIT(KText,"Hello World!"); +... +TBufC<16> buf1(KText); +... +buf1.Length();

    and

    _LIT(KText,"Hello World!"); +... +TBufC<16> buf1(KText); // length is 12 +... +buf1.Delete(6,6); // length is now 6, leaving "Hello" in + // the buffer
    +
    Illegal +access causing an exception

    The following code fragment +raises a panic because of an attempt to assign too much data. The +maximum length of the buffer descriptor is 16 but the length of the +data to be copied is 31:

    _LIT(KText,"Hello World! The sun is shining"); +... +TBufC<16> buf1(KText);

    The following code fragment +raises a panic because of an attempt to delete data outside the boundary +defined by the descriptor:

    _LIT(KText,"Hello World!"); +... +TBufC<16> buf1(KText); +buf1.Delete(99,1);
    +
    + +Literal Descriptors
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E8266924-FA52-5171-BD73-423A46227A74.dita --- a/Symbian3/PDK/Source/GUID-E8266924-FA52-5171-BD73-423A46227A74.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E8266924-FA52-5171-BD73-423A46227A74.dita Fri Jul 16 17:23:46 2010 +0100 @@ -64,7 +64,7 @@ this. The diagram is also true for TPtrC8 and TPtrC16.

    Array of non-modifiable pointer descriptor elements - +

    NOTE: delete() and reset() removes the non-modifiable pointer descriptors from the array but does not delete the data or descriptors that they point to.

    @@ -75,7 +75,7 @@ is added as an array element. The following diagram illustrates this. The diagram is also true for HBufC8 and HBufC16.

    Array of pointer elements - +

    There are two implementations of the array, one using a flat buffer and the other using a segmented buffer.

    The flat buffer implementation is supplied in two variants:

      @@ -120,10 +120,10 @@ concrete classes and the base classes which support them.

      The class relationships for CDesCArrayFlat & CDesCArraySeg - +

      The class relationships for CPtrCArray - +
    Copying Descriptor Arrays

    An array of non-modifiable pointer descriptors, a CPtrCArray type, @@ -137,7 +137,7 @@ the effect of the copy operation based on the concrete type of the source array.

    Copying descriptor arrays - +
    8-Bit Variant, 16-Bit Variant and Build Independence

    Descriptor arrays are supplied diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E86347E8-8D3C-5FCB-BD9F-EA0DF8F0D9FD_d0e434869_href.png Binary file Symbian3/PDK/Source/GUID-E86347E8-8D3C-5FCB-BD9F-EA0DF8F0D9FD_d0e434869_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E86347E8-8D3C-5FCB-BD9F-EA0DF8F0D9FD_d0e440714_href.png Binary file Symbian3/PDK/Source/GUID-E86347E8-8D3C-5FCB-BD9F-EA0DF8F0D9FD_d0e440714_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E87018CD-01B4-5886-87FC-CD25EE90587D.dita --- a/Symbian3/PDK/Source/GUID-E87018CD-01B4-5886-87FC-CD25EE90587D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E87018CD-01B4-5886-87FC-CD25EE90587D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,8 +11,8 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Central Repository Transactions

    This topic describes the concepts of Central Repository transactions.

    Overview of transactions

    In a typical use case, a repository is accessed by several different applications for different purposes such as reading, updating, caching and backing up. These applications are regarded as having a client-server relationship with the repository. When multiple applications can access a repository there is a danger of concurrent write operations corrupting the data. To prevent this, applications access repositories within sessions and perform operations on a repository within subdivisions of a session called transactions. The concept of a transaction is borrowed from database programming and is designed to ensure that only one application can modify a repository at any one time. Operations performed within a transaction are virtual, operating on a copy of the repository, until the transaction is successfully committed and the actual repository is modified. Transactions conform to a model which prevents them from being committed concurrently, so maintaining data integity.

    Only the following operations are permitted within a transaction:

    • Find()

    • Get()

    • Set()

    • Create()

    • Delete()

    • Move()

    Transactions are either synchronous or asynchronous. As the programmer you are responsible for avoiding errors such as beginning a transaction within a transaction which will cause a leave. You do this by conforming to a transaction model.

    The recommended transaction model is the optimistic non-serialised transaction model. It works on the principle that any number of clients may start a transaction at the same time, but as soon as one transaction is committed, any other transactions fail and must be started again.

    A session is in various states:

    • Not in transaction

    • Active

    • Failed

    An asynchronous transaction involves two other states:

    • Pending start

    • Pending commit

    Synchronous transactions

    A synchronous transaction has the following structure.

    • A session is initially in the state Not in transaction.

    • Call the synchronous form of StartTransaction() with the single parameter EConcurrentReadWriteTransaction.

    • The session changes state to Active.

    • Manipulate the repository with the functions Get() Set() Find() etc covered above.

    • The session continues in the Active state. The changes to the repository are cached but not actually applied during the Active state. You then either revoke or persist the changes.

    • To revoke the changes, call CancelTransaction()

    • The session returns to Not in transaction.

    • To persist the changes, call the synchronous form of CommitTransaction() with the parameter aKeyInfo of type TUint32 This function returns success or an error message and its parameter holds information about the transaction. On success, the parameter holds the number of settings which were changed. On failure, the parameter holds the settings which caused failure in the form of a key or partial key.

    • On success the session returns to Not in transaction. On failure it enters the Failed state. When a transaction fails, the operations already performed are discarded and no subsequent operations can reverse the failure.

    • If the reason for failure was the success of another transaction, the error message is KErrLocked and the session is Not in transaction. You try the same sequence of function calls until you get a successful commit.

      If there was some other reason for failure you must close the transaction yourself. To do this, either call CancelTransaction() or else call CommitTransaction() a second time.

      There is sometimes reason to fail the transaction deliberately by calling FailTransaction() For instance you might want to generate failure after an unsuccessful Get() operation and then cancel the transaction.

    Synchronous transaction state diagram -
    Asynchronous transactions

    Synchronous transactions have the disadvantage that a busy server may block the client thread before any action takes place. To avoid this problem you can use the slightly more complicated asynchronous transactions. An asynchronous transaction has the same structure as a synchronous one except that there are two new states Pending Start and Pending Commit where a transaction waits until the server is ready to communicate with it. The transition from Not in transaction to Active now proceeds like this.

    • A session is initially in the state Not in transaction.

    • Call the asynchronous form of StartTransaction() with the parameters EConcurrentReadWriteTransaction and aStatus of type TRequestStatus This function returns void: success or the reasons for failure are determined from the state of aStatus after execution.

    • The session changes state to Pending Start. Activity on the server will eventually promote the session to Active.

    • Manipulate the repository with the functions Get(), Set(), Find() etc covered above.

    • The session continues in the Active state. The changes to the repository are cached but not actually applied during the Active state. You then either revoke or persist the changes.

    • To revoke the changes, call CancelTransaction() This call has different effects depending on whether it was called in the Pending Start state or the Active state. If it was called in the Pending Start state it sets aStatus to KErrCancel

    • The session returns to Not in transaction.

    • To persist the changes, call the asynchronous form of CommitTransaction() with the parameters aKeyInfo of type TUint32 and aStatus of type TRequestStatus This function returns void. Its first parameter holds information about the transaction.

    • On success, the aStatus parameter holds the number of settings which were changed. On failure, the parameter holds the settings which caused failure in the form of a key or partial key. The aStatus parameter is set to success or failure.

    • If the reason for failure was the success of another transaction, aStatus is set to KErrLocked and the session is Not in transaction. You try the same sequence of function calls until you get a successful commit.

      If there was some other reason for failure you must close the transaction yourself. To do this, either call CancelTransaction() or else call CommitTransaction() a second time.

      There is sometimes reason to fail the transaction deliberately by calling FailTransaction() For instance you might want to generate failure after an unsuccessful Get() operation and then cancel the transaction.

    +
    Asynchronous transactions

    Synchronous transactions have the disadvantage that a busy server may block the client thread before any action takes place. To avoid this problem you can use the slightly more complicated asynchronous transactions. An asynchronous transaction has the same structure as a synchronous one except that there are two new states Pending Start and Pending Commit where a transaction waits until the server is ready to communicate with it. The transition from Not in transaction to Active now proceeds like this.

    • A session is initially in the state Not in transaction.

    • Call the asynchronous form of StartTransaction() with the parameters EConcurrentReadWriteTransaction and aStatus of type TRequestStatus This function returns void: success or the reasons for failure are determined from the state of aStatus after execution.

    • The session changes state to Pending Start. Activity on the server will eventually promote the session to Active.

    • Manipulate the repository with the functions Get(), Set(), Find() etc covered above.

    • The session continues in the Active state. The changes to the repository are cached but not actually applied during the Active state. You then either revoke or persist the changes.

    • To revoke the changes, call CancelTransaction() This call has different effects depending on whether it was called in the Pending Start state or the Active state. If it was called in the Pending Start state it sets aStatus to KErrCancel

    • The session returns to Not in transaction.

    • To persist the changes, call the asynchronous form of CommitTransaction() with the parameters aKeyInfo of type TUint32 and aStatus of type TRequestStatus This function returns void. Its first parameter holds information about the transaction.

    • On success, the aStatus parameter holds the number of settings which were changed. On failure, the parameter holds the settings which caused failure in the form of a key or partial key. The aStatus parameter is set to success or failure.

    • If the reason for failure was the success of another transaction, aStatus is set to KErrLocked and the session is Not in transaction. You try the same sequence of function calls until you get a successful commit.

      If there was some other reason for failure you must close the transaction yourself. To do this, either call CancelTransaction() or else call CommitTransaction() a second time.

      There is sometimes reason to fail the transaction deliberately by calling FailTransaction() For instance you might want to generate failure after an unsuccessful Get() operation and then cancel the transaction.

    Asynchronous Transaction State Diagram -
    Cleanup

    There is a danger that a transaction might remain open for ever if it is opened by code which subsequently leaves. To avoid this possibility, the CCentralRepository class has two functions which cause the cleanup stack to end the transaction in the event of a leave. CleanupCancelTransactionPushL(), also named CleanupRollbackTransactionPushL(), causes a leave to be followed by a call to CancelTransaction(). CleanupFailTransactionPushL() causes a leave to be followed by a call to FailTransaction().

    Central Repository Guide Optimising Repository +
    Cleanup

    There is a danger that a transaction might remain open for ever if it is opened by code which subsequently leaves. To avoid this possibility, the CCentralRepository class has two functions which cause the cleanup stack to end the transaction in the event of a leave. CleanupCancelTransactionPushL(), also named CleanupRollbackTransactionPushL(), causes a leave to be followed by a call to CancelTransaction(). CleanupFailTransactionPushL() causes a leave to be followed by a call to FailTransaction().

    Central Repository Guide Optimising Repository Access Modifications to Keyspaces \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E88E64C6-5A80-59EE-8227-455EC033E6E9.dita --- a/Symbian3/PDK/Source/GUID-E88E64C6-5A80-59EE-8227-455EC033E6E9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E88E64C6-5A80-59EE-8227-455EC033E6E9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -What are sessions with the Comms DatabaseThis topic describes the use of sessions to access the Comms Database.

    Tools and applications create and use a session to access the Comms Database. A session is an instance of the class CMDBSession. An instance of CMDBSession acts as a handle to the database. The functions provided by MMetaDatabase to access the Comms Database require an instance of CMDBSession.

    You must create a session before you get data from the Comms Database and before you update the Comms Database. To create a session, you create an instance of the CMDBSession class.

    You delete the session after you finish your use of the Comms Database. To delete a session, you delete the instance of the CMDBSession class.

    \ No newline at end of file +What are sessions with the Comms DatabaseThis topic describes the use of sessions to access the Comms Database.

    Tools and applications create and use a session to access the Comms Database. A session is an instance of the class CMDBSession. An instance of CMDBSession acts as a handle to the database. The functions provided by MMetaDatabase to access the Comms Database require an instance of CMDBSession.

    You must create a session before you get data from the Comms Database and before you update the Comms Database. To create a session, you create an instance of the CMDBSession class.

    You delete the session after you finish your use of the Comms Database. To delete a session, you delete the instance of the CMDBSession class.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E89F034F-C807-5FF9-B06B-F7CCD2441041.dita --- a/Symbian3/PDK/Source/GUID-E89F034F-C807-5FF9-B06B-F7CCD2441041.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E89F034F-C807-5FF9-B06B-F7CCD2441041.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ and information, printer devices abstraction, line breaking and text rendering. The GDI collection - + Graphics diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E8B0BDC7-714E-48EF-89F3-D8B7B34552ED.dita --- a/Symbian3/PDK/Source/GUID-E8B0BDC7-714E-48EF-89F3-D8B7B34552ED.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ - - - - - -InteractionThis section explains the guidelines for rotation and basic interaction -style in Symbian devices. \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E8E32DC5-EABC-5125-8EDA-718CF434E01C_d0e467635_href.png Binary file Symbian3/PDK/Source/GUID-E8E32DC5-EABC-5125-8EDA-718CF434E01C_d0e467635_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E8E32DC5-EABC-5125-8EDA-718CF434E01C_d0e473480_href.png Binary file Symbian3/PDK/Source/GUID-E8E32DC5-EABC-5125-8EDA-718CF434E01C_d0e473480_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E8EF06D7-FB4E-598D-9D9D-4395AB6F51C8.dita --- a/Symbian3/PDK/Source/GUID-E8EF06D7-FB4E-598D-9D9D-4395AB6F51C8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E8EF06D7-FB4E-598D-9D9D-4395AB6F51C8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,7 +9,7 @@ --> -Creating a Charconv Plug-in DLL

    This section describes how to create a Charconv plug-in DLL.

    Introduction

    The flowchart below shows the steps to create a Charconv plug-in DLL.

    Procedure

    An example is used to explain the procedure for creating a Charconv plug-in DLL. This plug-in converts between the cp850 character set and Unicode.

    1. Create a cnvtool source file using a text editor and save it as, for example d:\charconvfiles\data\cp850.txt. This file contains pairs of hexadecimal numbers. The first number in each pair is the encoding of a character in cp850and the second is the Unicode encoding of the same character.

      ... +Creating a Charconv Plug-in DLL

      This section describes how to create a Charconv plug-in DLL.

      Introduction

      The flowchart below shows the steps to create a Charconv plug-in DLL.

      Procedure

      An example is used to explain the procedure for creating a Charconv plug-in DLL. This plug-in converts between the cp850 character set and Unicode.

      1. Create a cnvtool source file using a text editor and save it as, for example d:\charconvfiles\data\cp850.txt. This file contains pairs of hexadecimal numbers. The first number in each pair is the encoding of a character in cp850and the second is the Unicode encoding of the same character.

        ... 0x00 0x0000 #NULL 0x01 0x0001 #START OF HEADING 0x02 0x0002 #START OF TEXT diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E9191C31-4D09-4C95-85E4-4282ADEE1D82.dita --- a/Symbian3/PDK/Source/GUID-E9191C31-4D09-4C95-85E4-4282ADEE1D82.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E9191C31-4D09-4C95-85E4-4282ADEE1D82.dita Fri Jul 16 17:23:46 2010 +0100 @@ -33,7 +33,7 @@ with a red frame are new features.

        <parmname>CCoeControl::HandlePointerEventL()</parmname> usage - +

        To handle pointer events in your custom control:

          @@ -121,8 +121,7 @@ more information on this and other touch event options, see Enabling additional touch events for your application.

        1. Optional MTouchFeedback observer for sending a vibration when a mobile device user touches a control with the feedback interface.

          For -more information on tactile feedback, see Tactile -feedback.

        2. +more information on tactile feedback, see Tactile feedback.

          diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E91931D8-E433-58FB-B064-70903FA4C4A5_d0e141418_href.png Binary file Symbian3/PDK/Source/GUID-E91931D8-E433-58FB-B064-70903FA4C4A5_d0e141418_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E91931D8-E433-58FB-B064-70903FA4C4A5_d0e143667_href.png Binary file Symbian3/PDK/Source/GUID-E91931D8-E433-58FB-B064-70903FA4C4A5_d0e143667_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E932B20C-5155-530F-9669-6F5BB1F1AD41.dita --- a/Symbian3/PDK/Source/GUID-E932B20C-5155-530F-9669-6F5BB1F1AD41.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ - - - - - -STRUCT -statement -<struct-statement> -struct-statement ::= -STRUCT <struct-name> [ BYTE | WORD ] { <struct-member-list> } -

          A STRUCT statement defines the format of a struct; all -resources are defined in terms of structs. The struct has a name designated -by struct-name, and some items designated by struct-member-list.

          -
          Struct names

          The following rules must -be observed for struct-names:

            -
          • they must be given in -upper case

          • -
          • they must begin with -an alphabetic character, although subsequent characters may be numeric

          • -
          • they may not begin with -any of the 12 struct type-names (see STRUCT -members), or the keywords: GLOBAL, STRUCT, LEN or RESOURCE. -This restriction applies only to the struct-name, not the member-name of -any individual struct members.

            So the following struct definition will -generate an error

            STRUCT BUFTHING - { - BUF buffer; - }

            whereas this struct definition will compile correctly

            STRUCT ABUFTHING - { - BUF buffer; - }
          • -
          -
          Struct member list

          The struct-member-list is -a sequence of struct-member s where each member is terminated -by a semi-colon. The complete list is enclosed within a pair of braces.

          See STRUCT members for -more details.

          -
          BYTE/WORD keywords

          STRUCT definitions -allow resource instances to be of variable length, as the struct can allow -default variables for its members. A resource’s entire length can be deduced -from the position of the next resource; this information is available in a -resource file’s index. If the resource is used as a member within an instance -of another resource, however, its length must be identified another -way.

            -
          • Use BYTE to -prefix the struct with a single byte indicating its length (zero to 255 characters).

          • -
          • Use WORD to -prefix the struct with a word indicating its length (zero to 65,535 characters).

          • -
          -

          The following are valid STRUCT statements:

          STRUCT STRING - { - LTEXT str; - }

          This defines a struct called STRING which -contains a single LTEXT item.

          STRUCT TEST BYTE - { - WORD status; - STRUCT text; - }

          This defines a struct called TEST which -contains a WORD and an embedded struct. The total length -of TEST is unknown, but should not exceed 255 characters: -the BYTE directive in the definition indicates that, when -this struct is embedded within another, it should be preceded with a byte -indicating its length (zero to 255 characters).

          -
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E93EE459-8CF4-42A1-B06C-E78E56FD25A0.dita --- a/Symbian3/PDK/Source/GUID-E93EE459-8CF4-42A1-B06C-E78E56FD25A0.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E93EE459-8CF4-42A1-B06C-E78E56FD25A0.dita Fri Jul 16 17:23:46 2010 +0100 @@ -17,8 +17,8 @@

          The client applications can use the property listener to monitor the property changes made by other clients.

          - -Create a property + +Create a property listener implementation for the MSensrvPropertyListener interface. class PropertyListener:public MSensrvPropertyListener { diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E96D8052-0CB2-53A6-915F-133D3058DCF9.dita --- a/Symbian3/PDK/Source/GUID-E96D8052-0CB2-53A6-915F-133D3058DCF9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E96D8052-0CB2-53A6-915F-133D3058DCF9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -10,7 +10,7 @@ MTM Registration

          Any MTM that is used by a client application must be registered with the Message Server. The registration information about all the MTMs installed on a device is contained in a dedicated file managed by the Message Server called the MTM Registry. Registry classes use this registration data to allow MTM components to be identified and instantiated. For example, the CClientMtmRegistry class has a member function to create a Client-side MTM object.

          MTM registries

          Registration of an MTM on the device is managed by four registries—three transient registries within each client process (Client MTM, UI MTM and UI Data MTM) and one permanent registry on the server-side (Server MTM). The server-side registry owns and maintains a streamed copy of the registration data for all MTM components on the device. When a new client-side registry is created by a client process, the server-side registry initialises the client registry by setting the available and relevant types (UI, UI Data, Client) of MTMs. This initialisation takes place through the Message Server and the session object which is owned by the process that instantiated the new registry object.

          Note: Updating the client-side registries during run-time is done through the same process. The MTM installation control panel is a client-side process that uses a session object to talk to the server. Registration data representing new MTM DLLs is passed to the Message Server and onto the server-side registry. The server-side registry then updates its cached data before notifying all current client processes about the newly available MTM DLL.

          The Messaging Server uses a registry to instantiate Server MTMs, and deletes the MTM objects when there no client requests. The server-side registry classes monitor the use of MTM component DLLs and maintain a reference count of the objects instantiated from each DLL. When that reference count falls to zero, the DLL that provides the MTM is unloaded. However, this is not done immediately, but only after the time specified in TTimeIntervalMicroSeconds32 - aTimeoutMicroSeconds32. This increases the efficiency in cases where the DLL is required again shortly.

          The CClientMtmRegistry::NewMtmL(TUid) function is used to create a Client MTM object for a protocol with a specified UID. The following steps illustrate how a Client MTM is identified and initialised:

          1. A Messaging client application calls the CClientMtmRegistry::NewMtmL() function, passing the UID of the MTM component that it wants.

          2. The CClientMtmRegistry class searches the registry for a record for the required MTM component, and obtains the library name from it, and the ordinal number of the library's exported factory function that can create an MTM object.

          3. The CClientMtmRegistry class loads the DLL and calls the factory function, passing the new object back to the caller.

          A similar process is used for UI and UI Data MTMs. After a client application has obtained an MTM object from the registry, it is responsible for that object and must delete it when it is no longer needed.

          Example

          The following example explains the steps to create a Client MTM registry.

          When a Messaging client application is created to send and receive messages, a Client registry must be created. For detailed instructions, see the POP3 and IMAP4 example programs.

          Use the CClientMtmRegistry::NewL() function with TTimeIntervalMicroSeconds32 + aTimeoutMicroSeconds32. This increases the efficiency in cases where the DLL is required again shortly.

          The CClientMtmRegistry::NewMtmL(TUid) function is used to create a Client MTM object for a protocol with a specified UID. The following steps illustrate how a Client MTM is identified and initialised:

          1. A Messaging client application calls the CClientMtmRegistry::NewMtmL() function, passing the UID of the MTM component that it wants.

          2. The CClientMtmRegistry class searches the registry for a record for the required MTM component, and obtains the library name from it, and the ordinal number of the library's exported factory function that can create an MTM object.

          3. The CClientMtmRegistry class loads the DLL and calls the factory function, passing the new object back to the caller.

          A similar process is used for UI and UI Data MTMs. After a client application has obtained an MTM object from the registry, it is responsible for that object and must delete it when it is no longer needed.

          Example

          The following example explains the steps to create a Client MTM registry.

          When a Messaging client application is created to send and receive messages, a Client registry must be created. For detailed instructions, see the POP3 and IMAP4 example programs.

          Use the CClientMtmRegistry::NewL() function with TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32 to create a Client MTM object for a protocol with a specified UID. The TTimeIntervalMicroSeconds32 aTimeoutMicroSeconds32 parameter represents a microsecond time interval stored in 32 bit, which is used to wait before unloading MTM DLLs.

          void CImap4Example::CreateClientRegistryL() { diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E9AF73E8-DF31-5C5E-889E-96CCD4C4A46B.dita --- a/Symbian3/PDK/Source/GUID-E9AF73E8-DF31-5C5E-889E-96CCD4C4A46B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E9AF73E8-DF31-5C5E-889E-96CCD4C4A46B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -55,7 +55,7 @@ registration process.

          IETF profile registration sequence diagram - +

          Updating an IETF profile

          To update an IETF profile, the IETF Profile Agent plug-in is loaded and the profile is in the RegisteredState state. The following steps describe how to update the IETF profile:

            @@ -77,7 +77,7 @@ IETF profile:

            IETF profile update sequence diagram - +

            Deregistering an IETF profile

            To deregister an IETF profile, the IETF Profile Agent plug-in is loaded and the profile is in the RegisteredState. The following steps describe the IETF profile deregistration process:

              @@ -98,7 +98,7 @@ deregistration process:

              IETF profile deregistration sequence diagram - +
          Source code

          Here is the source for the IETF Profile Agent plug-in:

          sipietfprofileagent.h

          // sipietfprofileagent.h diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E9C620EF-4C77-56C3-8023-A6F13989246A_d0e665517_href.png Binary file Symbian3/PDK/Source/GUID-E9C620EF-4C77-56C3-8023-A6F13989246A_d0e665517_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E9C620EF-4C77-56C3-8023-A6F13989246A_d0e678344_href.png Binary file Symbian3/PDK/Source/GUID-E9C620EF-4C77-56C3-8023-A6F13989246A_d0e678344_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E9C6DBBF-1910-595D-94A1-67664CF7B7A6.dita --- a/Symbian3/PDK/Source/GUID-E9C6DBBF-1910-595D-94A1-67664CF7B7A6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E9C6DBBF-1910-595D-94A1-67664CF7B7A6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,7 +21,7 @@ DirectGDI Interface component classes and related classes - +

          The following table provides a summary of the key classes that make up the DirectGDI Interface component.

          @@ -81,11 +81,11 @@ illustrate the behaviour of key DirectGDI classes in two separate scenarios.

          Context usage

          DirectGDI context usage sequence diagram - +

          Driver creation and deletion

          DirectGDI driver creation and deletion sequence diagram - +
          DirectGDI diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E9E21C82-13F6-50D4-A271-F9E5F1BD982F.dita --- a/Symbian3/PDK/Source/GUID-E9E21C82-13F6-50D4-A271-F9E5F1BD982F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E9E21C82-13F6-50D4-A271-F9E5F1BD982F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,7 +12,7 @@ Background Processing for EcamThis topic describes how to capture an image using standalone background processing in Ecam. -

          Before you start +

          Before you start you should understand the Onboard Camera Overview topic.

          The Ecam API has diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E9F08BCA-39F6-55D3-8974-BD0FFB90DE11_d0e485521_href.png Binary file Symbian3/PDK/Source/GUID-E9F08BCA-39F6-55D3-8974-BD0FFB90DE11_d0e485521_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E9F08BCA-39F6-55D3-8974-BD0FFB90DE11_d0e491350_href.png Binary file Symbian3/PDK/Source/GUID-E9F08BCA-39F6-55D3-8974-BD0FFB90DE11_d0e491350_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-E9F203A6-D9E3-41B7-9FC4-24EDE20C4753.dita --- a/Symbian3/PDK/Source/GUID-E9F203A6-D9E3-41B7-9FC4-24EDE20C4753.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-E9F203A6-D9E3-41B7-9FC4-24EDE20C4753.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ user has tried to do something that may cause a considerable problem.

          Error note - +
          Guidelines for using error notes

          Use an error note when the user does diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EA0C5715-7CE8-5415-A915-D5701E3C957A_d0e377898_href.png Binary file Symbian3/PDK/Source/GUID-EA0C5715-7CE8-5415-A915-D5701E3C957A_d0e377898_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EA0C5715-7CE8-5415-A915-D5701E3C957A_d0e383751_href.png Binary file Symbian3/PDK/Source/GUID-EA0C5715-7CE8-5415-A915-D5701E3C957A_d0e383751_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EA107811-240C-5F95-922B-7C042FA00A87.dita --- a/Symbian3/PDK/Source/GUID-EA107811-240C-5F95-922B-7C042FA00A87.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EA107811-240C-5F95-922B-7C042FA00A87.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,15 +9,13 @@ --> -Reading -a String Resource

          The simplest use of a resource file involves reading string resources -and interpreting the source data.

          -

          Resources are defined in terms of structs which are accessed and -read by the RResourceFile class, and interpreted by the TResourceReader. -An application may also use resources from multiple files simultaneously. -See Resource File examples for -more information.

          Consider a sample resource file where a struct of -STRING is defined having a single member of type LTEXT:

          // define structures +Reading a String Resource

          The simplest use of a resource file involves reading +string resources and interpreting the source data.

          +

          Resources are defined in terms of structs which are accessed +and read by the RResourceFile class, and interpreted +by the TResourceReader. An application may also +use resources from multiple files simultaneously. See Resource File examples for more information.

          Consider a sample resource file where +a struct of STRING is defined having a single member of type LTEXT:

          // define structures STRUCT STRING { LTEXT text; @@ -30,52 +28,48 @@
          -Compile the resource file using the -resource compiler (rcomp) to generate an .rsc file -and an .rsg file. +Compile the resource file using the resource compiler (rcomp) +to generate an .rsc file and an .rsg file. +

          For information on resource compiler, see Symbian^3 Tools +Guide > Building.

          - .rsc file contains the resource data; this is -the resource file that must be referred to at run-time by the RResourceFile class -in the C++ code. + .rsc file contains the resource data; +this is the resource file that must be referred to at run-time by +the RResourceFile class in the C++ code. - .rsg file is a generated - header file that contains #define statements -for each resource defined in the source file. In the resource file generated -here, the only resource is called hello and the generated -header file contains: + .rsg file is a generated + header file that contains #define statements for each resource defined in the source file. In the +resource file generated here, the only resource is called hello and the generated header file contains: #define HELLO 1 -Note that the name in the generated header file is converted to upper -case. +Note that the name in the generated header file is converted +to upper case.
          - #include the .rsg file in the -file containing the C++ code, to access the resource IDs generated by the -resource compiler. For example, for a project refered as ReadText, -this might be: + #include the .rsg file +in the file containing the C++ code, to access the resource IDs generated +by the resource compiler. For example, for a project refered as ReadText, this might be: #include ReadText.rsg -Initialize the RResourceFile object in the C++ program, -specifying the name of the resource file: +Initialize the RResourceFile object in the +C++ program, specifying the name of the resource file: RResourceFile resourceFile; resourceFile.OpenL( fsSession,_L( Z:\\system\\data\\ReadText.rsc ) ); -Note: To access the resource file contents, a session with the file -server must be started using an instance of RFs class. +Note: To access the resource file contents, a session with the +file server must be started using an instance of RFs class. -Use one of the three functions (RResourceFile::AllocReadLC(), RResourceFile::AllocReadL() or RResourceFile::ReadL() to read a resource as shown in the following -code fragment: +Use one of the three functions (RResourceFile::AllocReadLC(), RResourceFile::AllocReadL() or RResourceFile::ReadL() to read a resource as shown in the following code fragment: HBufC8* dataBuffer = resourceFile.AllocReadLC( HELLO ); -Interpret the resource data using a TResourceReader object. -This provides access to the text string through a pointer descriptor as shown -in the following code fragment: +Interpret the resource data using a TResourceReader object. This provides access to the text string through a pointer +descriptor as shown in the following code fragment: TResourceReader theReader; ... @@ -83,11 +77,10 @@ TPtrC textdata = reader.ReadTPtrC();
          -

          In this example, once the resource data is no longer needed, the -heap descriptor, dataBuffer, can be removed from the cleanup stack and destroyed -as shown in the code fragment:

          CleanupStack::PopAndDestroy();

          When -all operations on the resource file are complete, the resource file can be -closed using the RResourceFile::close() function as:

          resourceFile.Close();
          +

          In this example, once the resource data is no longer needed, +the heap descriptor, dataBuffer, can be removed from the cleanup stack +and destroyed as shown in the code fragment:

          CleanupStack::PopAndDestroy();

          When all operations on the resource file are complete, the resource +file can be closed using the RResourceFile::close() function as:

          resourceFile.Close();
          Example

          Consider a resource constructed from the following definition.

          RESOURCE ARRAY anarray { @@ -99,9 +92,9 @@ LBUF { txt="Del"; }, LBUF { txt="Space"; } }; -}

          A TPtrC representing the second item can -be constructed using the ReadTPtrC() function. The example -simply takes the length of the text Enter:

          // open the resource file +}

          A TPtrC representing the second +item can be constructed using the ReadTPtrC() function. +The example simply takes the length of the text Enter:

          // open the resource file ... HBufC8* res = resourceFile.AllocReadLC( ANARRAY ); TResourceReader theReader; @@ -112,8 +105,4 @@
          Resource files -Resource -file format -Resource -compilation
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EA20E614-C911-4EE9-92B5-C8F9B657D59E.dita --- a/Symbian3/PDK/Source/GUID-EA20E614-C911-4EE9-92B5-C8F9B657D59E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EA20E614-C911-4EE9-92B5-C8F9B657D59E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,37 +9,31 @@ --> -Platform -security architecture -

          The purpose of the Symbian platform security architecture is to enable -users to use their mobile devices in an easy and trusted manner.

          -

          This section introduces some central platform security concepts. These -include the following:

          +Platform security architecture +

          The purpose of the Symbian platform security architecture is +to enable users to use their mobile devices in an easy and trusted +manner.

          +

          This section introduces some central platform security concepts. +These include the following:

            -
          • Capabilities

            -
          • -
          • Application -signing

          • -
          • Data -caging

          • +
          • Capabilities

          • +
          • Application signing

          • +
          • Data caging

          -

          For more details on the above concepts, see the Symbian -Signed website.

          -
          Additional information -on security +

          For more details on the above concepts, see the Symbian Signed website.

          +
          Additional +information on security
            -
          • For more information on how to test and certify your applications -and how to access capabilities, -see The -Complete Guide to Symbian Signed.

          • -
          • For more information about security in Symbian C++ application -development, see the Security -Articles in the Forum Nokia Developer Community Wiki.

          • -
          • For more advanced information and practical examples on how -to use various security options provided by the platform, see the following -Forum Nokia resources:All these examples -are listed as compatible with the 3rd Edition on Forum Nokia, and therefore -it is unclear whether they apply to 5th Edition.

            +
          • For more information on how to test and certify your +applications and how to access capabilities, see The Complete Guide to Symbian Signed.

          • +
          • For more information about security in Symbian C++ +application development, see the Security Articles in the Forum Nokia Developer Community +Wiki.

          • +
          • For more advanced information and practical examples +on how to use various security options provided by the platform, see +the following Forum Nokia resources:All these examples are listed as compatible +with the 3rd Edition on Forum Nokia, and therefore it is unclear whether +they apply to 5th Edition.

            • System Information Example

            • ECom Plug-in Architecture and ECom Plug-In Examples

            • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EA2AAE86-0BD3-52C9-BD13-75E9F04DE77F_d0e330727_href.png Binary file Symbian3/PDK/Source/GUID-EA2AAE86-0BD3-52C9-BD13-75E9F04DE77F_d0e330727_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EA2AAE86-0BD3-52C9-BD13-75E9F04DE77F_d0e336704_href.png Binary file Symbian3/PDK/Source/GUID-EA2AAE86-0BD3-52C9-BD13-75E9F04DE77F_d0e336704_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EA3419BD-D757-5AC3-AE6F-DF21F794AE47.dita --- a/Symbian3/PDK/Source/GUID-EA3419BD-D757-5AC3-AE6F-DF21F794AE47.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EA3419BD-D757-5AC3-AE6F-DF21F794AE47.dita Fri Jul 16 17:23:46 2010 +0100 @@ -51,19 +51,19 @@
            Buffer descriptor - + Heap descriptor - + Pointer descriptor - + Resizable buffer descriptor - +

            Although the four types seem to be different, the underlying class structure makes such differences transparent allowing them to be treated in the same diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EA5E9A07-587C-5E64-A157-1077AD9E56ED_d0e604073_href.png Binary file Symbian3/PDK/Source/GUID-EA5E9A07-587C-5E64-A157-1077AD9E56ED_d0e604073_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EA5E9A07-587C-5E64-A157-1077AD9E56ED_d0e631967_href.png Binary file Symbian3/PDK/Source/GUID-EA5E9A07-587C-5E64-A157-1077AD9E56ED_d0e631967_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7.dita --- a/Symbian3/PDK/Source/GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EA8038F6-8727-5ABE-805C-9FF095293EB7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -29,7 +29,7 @@ standards define terminology specific to individual profiles. Please refer to the latest Bluetooth standard at www.bluetooth.com for all official definitions.

          Architecture - +
          Description

          There are two kinds of profiles provided for by Symbian platform: implemented and @@ -40,7 +40,7 @@

          Figure 1 above shows the dependencies of profiles. The shaded profiles, discussed in the next section, are implemented by the Symbian platform Bluetooth subsystem.

          - +

          Implemented Bluetooth profiles

          The following profiles are implemented by Symbian platform Bluetooth:

            diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EA8974A2-1E8F-4272-880A-183AD1A40371.dita --- a/Symbian3/PDK/Source/GUID-EA8974A2-1E8F-4272-880A-183AD1A40371.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EA8974A2-1E8F-4272-880A-183AD1A40371.dita Fri Jul 16 17:23:46 2010 +0100 @@ -14,8 +14,8 @@

            The function TEntry::SetFileSize() is intended for use by file-system plugins, and not recommended to be called by general clients of the File Server.

            - -Declare the variable + +Declare the variable type as a TInt64. //TInt fileSize = 3000; TInt64 fileSize = 3000000000; diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EAA6A9FB-A470-550C-B7B4-FF68A733A2D5.dita --- a/Symbian3/PDK/Source/GUID-EAA6A9FB-A470-550C-B7B4-FF68A733A2D5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EAA6A9FB-A470-550C-B7B4-FF68A733A2D5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -88,7 +88,7 @@ already have the kernel lock, or in the case of IDFCs, you do not need to acquire it as no preemption can occur. In these cases, you just call NFastMutex::Wait() and NFastMutex::Signal().

            The following diagram illustrates the general principle:

            Fast mutex - +

            There are a number of assumptions here, one of which is that the priorities are such that thread T1 does not run until a reschedule occurs, after T2 has been interrupted.

            Example @@ -489,7 +489,7 @@ somewhat artificial, and not based on real code, the following diagram nevertheless shows the basic idea behind Symbian platform semaphores.

            Symbian platform semaphore - +

            Rules

            There are a few rules about the use of Symbian platform semaphores:

            • Only Symbian platform diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EADC4EA6-4492-5A00-A29E-6F7747FCAAC9_d0e228016_href.png Binary file Symbian3/PDK/Source/GUID-EADC4EA6-4492-5A00-A29E-6F7747FCAAC9_d0e228016_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EADC4EA6-4492-5A00-A29E-6F7747FCAAC9_d0e234015_href.png Binary file Symbian3/PDK/Source/GUID-EADC4EA6-4492-5A00-A29E-6F7747FCAAC9_d0e234015_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EAFD71DD-0EB2-402A-9511-D0F3362BDCE3_d0e95787_href.png Binary file Symbian3/PDK/Source/GUID-EAFD71DD-0EB2-402A-9511-D0F3362BDCE3_d0e95787_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EAFD71DD-0EB2-402A-9511-D0F3362BDCE3_d0e99906_href.png Binary file Symbian3/PDK/Source/GUID-EAFD71DD-0EB2-402A-9511-D0F3362BDCE3_d0e99906_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EB212C35-5416-4CA7-8091-61B45D78E220.dita --- a/Symbian3/PDK/Source/GUID-EB212C35-5416-4CA7-8091-61B45D78E220.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EB212C35-5416-4CA7-8091-61B45D78E220.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ buttons that have touch functionality. Toolbar - +

              A tooltip is an information pop-up containing information regarding each button must be shown.

              @@ -107,7 +107,7 @@ session.

              Toolbar button states: example of ON/OFF type of button - +
              Floating toolbar

              Floating toolbar is a component for showing the key functions on top of the Main pane @@ -167,7 +167,7 @@ it is always visible. Toolbar can be hidden in case other controls are also hidden (in full screen views).

              Toolbar in touch UI fixed in the layout - +
              Toolbar extension in touch UI

              As in non-touch UI, toolbars can have extensions also diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EB58901D-66BD-56BF-B0CD-5FC4F73F06F3.dita --- a/Symbian3/PDK/Source/GUID-EB58901D-66BD-56BF-B0CD-5FC4F73F06F3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EB58901D-66BD-56BF-B0CD-5FC4F73F06F3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> DevVideo Library Overview

              This document provides an overview of the DevVideo library.

              Purpose

              DevVideo provides the interface between the Symbian platform and the video processing hardware for all video functionality.

              DevVideo Library Details

              The DLL that provides the functionality and the library to which your code must link is identified below.

              DLL LIB Short Description

              devvideo.dll

              devvideo.lib

              These files are used for implementing DevVideo.

              Architectural Relationship

              DevVideo provides middleware components, such as MMF controller plug-ins, access to video codecs, pre-processors and post-processors. DevVideo interacts with:

              • MMF Controller Framework

                The controller framework helps to manage the interface to DevVideo and provides controller plug-ins for playing and recording video data.

              • Controller plug-ins

                Video play and video record controller plug-ins implement play and record functionality respectively.

              • Video Hardware Device interface

                CMMFVideoHwDevice is the base class for all video hardware devices. Video playback hardware devices are video decoders and video post-processors. Video recording hardware devices are video pre-processors and encoders.

                Note that, although the interface is called "Hardware Device" interface, it is possible that the codecs, and pre-processors and post-processors, are not running on a separate hardware device. They could be running on the same processor as all the other software.

              Shown below is a representation of how DevVideo interacts with the Multimedia Framework and Media Device Framework components:

              DevVideo and related components -
              Description

              DevVideo is a hardware abstraction layer that provides access to video functionality. DevVideo functionality includes video decoding, encoding, pre-processing and post-processing.

              Key DevVideo Classes

              The video play and record functionality provided by DevVideo is contained within the following key classes:

              • MMMFDevVideoPlayProxy - the interface to CMMFDevVideoPlay. Hardware devices use this interface to deliver data back to the client.

              • CMMFDevVideoPlay - DevVideoPlay interface and implementation.

              • MMMFDevVideoPlayObserver - set of callback functions that any client using CMMFDevVideoPlay must implement.

              • MMMFDevVideoRecordProxy - the interface to CMMFDevVideoRecord. Hardware devices use this interface to deliver data back to the client.

              • CMMFDevVideoRecord - DevVideoRecord interface and implementation.

              • MMMFDevVideoRecordObserver - set of callback functions that any client using CMMFDevVideoRecord must implement.

              Using DevVideo

              Clients can use DevVideo to:

              • Select the video decoder to use.

              • Configure the video decoder.

              • Select the video post-processor to use.

              • Configure the video post-processor.

              • Set clock source for timing video playback.

              • Set video output destination.

              • Start video playback.

              • Pause video playback.

              • Stop video playback.

              • Select the video encoder to use.

              • Configure the video encoder.

              • Select the video pre-processor to use.

              • Configure the video pre-processor.

              • Set clock source for timing of video recording.

              • Start video recording.

              • Pause video recording.

              • Stop video recording.

              • Pass video buffers to and from the client.

              • Pass pictures to and from the client.

              See Also

              Video Client Overview

              \ No newline at end of file +
              Description

              DevVideo is a hardware abstraction layer that provides access to video functionality. DevVideo functionality includes video decoding, encoding, pre-processing and post-processing.

              Key DevVideo Classes

              The video play and record functionality provided by DevVideo is contained within the following key classes:

              • MMMFDevVideoPlayProxy - the interface to CMMFDevVideoPlay. Hardware devices use this interface to deliver data back to the client.

              • CMMFDevVideoPlay - DevVideoPlay interface and implementation.

              • MMMFDevVideoPlayObserver - set of callback functions that any client using CMMFDevVideoPlay must implement.

              • MMMFDevVideoRecordProxy - the interface to CMMFDevVideoRecord. Hardware devices use this interface to deliver data back to the client.

              • CMMFDevVideoRecord - DevVideoRecord interface and implementation.

              • MMMFDevVideoRecordObserver - set of callback functions that any client using CMMFDevVideoRecord must implement.

              Using DevVideo

              Clients can use DevVideo to:

              • Select the video decoder to use.

              • Configure the video decoder.

              • Select the video post-processor to use.

              • Configure the video post-processor.

              • Set clock source for timing video playback.

              • Set video output destination.

              • Start video playback.

              • Pause video playback.

              • Stop video playback.

              • Select the video encoder to use.

              • Configure the video encoder.

              • Select the video pre-processor to use.

              • Configure the video pre-processor.

              • Set clock source for timing of video recording.

              • Start video recording.

              • Pause video recording.

              • Stop video recording.

              • Pass video buffers to and from the client.

              • Pass pictures to and from the client.

              See Also

              Video Client Overview

              \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EB914A6D-9B61-5789-9546-8E466A0988D1.dita --- a/Symbian3/PDK/Source/GUID-EB914A6D-9B61-5789-9546-8E466A0988D1.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EB914A6D-9B61-5789-9546-8E466A0988D1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -47,7 +47,7 @@ API consists of the classes shown in the following diagram:

              Integrated GPS HW Status API class diagram - +

              The classes of the Integrated GPS Hardware Status API are defined in the file epos_intgpshwstatus.h and are summarised in table 1.

              @@ -107,7 +107,7 @@ GPS hardware.

              Simple sequence showing publishing the status of GPS hardware. - +

              Below is a code example that demonstrates how to publish the GPS hardware status. The example class CMyGpsStatusController class publishes the GPS hardware status. When it is instantiated, it creates a new CPosIntGpsHwStatus object @@ -193,7 +193,7 @@

              The following diagram shows a simple sequence for getting GPS hardware status events.

              Getting GPS hardware status changes - +

              Below is a code example that shows how a client gets updates of GPS hardware status changes

              #include <epos_intgpshwstatus.h> diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EBD1242B-6BD9-5ABB-B471-24ABC78A918C.dita --- a/Symbian3/PDK/Source/GUID-EBD1242B-6BD9-5ABB-B471-24ABC78A918C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EBD1242B-6BD9-5ABB-B471-24ABC78A918C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> MIME Recognition Framework Overview

              The MIME (Multipurpose Internet Mail Extension) recognition framework enables data type identification.

              The MIME recognition framework implements data type recognition using MIME (data) recognizers. The MIME recognizers are ECOM plug-ins. A MIME recognizer reads a small piece of the data. A data type can be recognized by more than one MIME recognizer. The framework uses the concepts of priority and confidence level to determine the data type.

              The Application Architecture (AppArc) launches the appropriate application using the MIME framework to handle the data.

              It is not guaranteed that an application will be available to handle a data type, even if it was successfully recognized.

              Purpose

              MIME type recognition enables devices to identify data type in streams or files and start appropriate application automatically.

              Key concepts and terms
              MIME

              MIME (Multipurpose Internet Mail Extension) is an internet standard system for identifying the type of data in a file or stream. Types can include graphics, photos, audio, video files and formatted text.

              Priority

              The plug-in developer assigns a priority (EHigh, ENormal or ELow) to the data recognizers. A data type can be handled by more than one application and may therefore be recognized by more than one recognizer.

              The priority determines the position at which the recognizer is inserted into the recognizer list. The higher priority recognizers are placed at the start of the list. If more than one recognizer recognizes a data type with the same confidence, the recognizer with the higher priority takes precedence. The sequence in which recognizers are invoked by the framework is determined by their priority. High priority recognizers are invoked first.

              For more details refer to CApaDataRecognizerType::TRecognizerPriority.

              Recognizer list

              The MIME recognition framework maintains a list of MIME recognizers. The recognizer list is constructed based on the data types the MIME recognizers claim to support and is ordered by priority.

              Confidence level

              A MIME recognizer reads a small piece of data from the start of a file or stream. It attempts to match the data with one of its known types. If the match is complete it returns the associated data type with full confidence (ECertain) and if there is no match it returns no data type with no confidence (ENotRecognized). If there is a partial match it can return a data type with an intermediate confidence level (EPossible, EUnlikely, ENotRecognized).

              The confidence of MIME recognizers can be expressed in 5 different levels:

              • ECertain

              • EProbable

              • EPossible

              • EUnlikely

              • ENotRecognized

              By default, the confidence level of the MIME Recognizer is ECertain.

              For more details refer CApaDataRecognizerType::TRecognitionConfidence.

              Architecture

              MIME recognizers are ECOM plugins, located under \sys\bin\.

              MIME framework architecture -
              • AppArc is the main client of the MIME recognition framework.

              • Applications that need data type recognition use the MIME recognition framework via AppArc APIs.

              • The MIME recognition framework delegates the data type identification task to an appropriate MIME recognizer.

              • The MIME recognizer identifies the data type.

              • AppArc launches the application for the identified data type.

              APIs
              API Description

              CApaDataRecognizerType

              Is the abstract base class for a recognizer. Recognizers need to define and implement a derived class and provide an implementation of the functions.This class contains the MIME APIs related to MIME recognition framework.

              RApaLsSession

              A session with the application architecture server. The server provides access to a cached list of the applications on the device. This class contains the AppArc APIs related to MIME recognition framework.

          Typical uses

          The MIME recognition framework allows the plug-in writers to:

          • Write Data(MIME) Recogzisers

          \ No newline at end of file +
          • AppArc is the main client of the MIME recognition framework.

          • Applications that need data type recognition use the MIME recognition framework via AppArc APIs.

          • The MIME recognition framework delegates the data type identification task to an appropriate MIME recognizer.

          • The MIME recognizer identifies the data type.

          • AppArc launches the application for the identified data type.

          APIs API Description

          CApaDataRecognizerType

          Is the abstract base class for a recognizer. Recognizers need to define and implement a derived class and provide an implementation of the functions.This class contains the MIME APIs related to MIME recognition framework.

          RApaLsSession

          A session with the application architecture server. The server provides access to a cached list of the applications on the device. This class contains the AppArc APIs related to MIME recognition framework.

          Typical uses

          The MIME recognition framework allows the plug-in writers to:

          • Write Data(MIME) Recogzisers

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EBF025DB-1552-5E99-8C07-09932DB60552.dita --- a/Symbian3/PDK/Source/GUID-EBF025DB-1552-5E99-8C07-09932DB60552.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EBF025DB-1552-5E99-8C07-09932DB60552.dita Fri Jul 16 17:23:46 2010 +0100 @@ -503,7 +503,7 @@ true.

          Consider the following case. A request has been made to read 1024 bytes from a media device that has a block size of 512 bytes. The 1024 bytes start at offset +256 on the media device.

          - +

          To get the first 256 bytes, you must read the first block of 512 bytes from the media device. This can corrupt the physical memory passed in the I/O request. The solution is to read the first block from the media device diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EBF4F1F1-F76B-455B-B8EE-B7965CF0717E.dita --- a/Symbian3/PDK/Source/GUID-EBF4F1F1-F76B-455B-B8EE-B7965CF0717E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EBF4F1F1-F76B-455B-B8EE-B7965CF0717E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -37,7 +37,7 @@ which enables user side code to get information about a device.

          The following diagram shows the general idea:

          Device driver LDD/PDD model - +

          To make porting to particular hardware platforms easier, some drivers make a further logical split in their PDD code between a platform-independent layer (PIL), which contains code that is common to all the hardware platforms diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EBFD653D-6E6A-5F6F-88D7-8CCE07B4002D.dita --- a/Symbian3/PDK/Source/GUID-EBFD653D-6E6A-5F6F-88D7-8CCE07B4002D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EBFD653D-6E6A-5F6F-88D7-8CCE07B4002D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -69,7 +69,7 @@ and management of TProperty objects are part of Symbian platform's internal implementation and will not be discussed further.

          Objects internal to Symbian platform - +

          To establish a reference to a property, create an RPropertyRef object, and then use one of the following functions:

          • RPropertyRef::Attach() - diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EC49B54F-7724-433B-BD7F-201DE3B7DAA6.dita --- a/Symbian3/PDK/Source/GUID-EC49B54F-7724-433B-BD7F-201DE3B7DAA6.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EC49B54F-7724-433B-BD7F-201DE3B7DAA6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,126 +1,118 @@ - - - - - -Resource -file structure -

            Resource files -may consist of comments, C++ pre-processor statements, and structure statements -indicated by predefined keywords.

            -

            For more information on the format of resource files, see Resource file source format.

            -

            For a commented example of a resource file, see Resource -management example: HelloWorldBasic.

            -

            A resource file has the following structure:

            -
            Comments -

            You can use either C (/* */) or C++ (//) -style comments.

            -

            For more information on the lexical conventions of resource files, see - Lexical conventions.

            -
            -
            NAME statements -

            The first non-comment statement in a resource must be the NAME statement. -The syntax is as follows:

            -NAME name -

            where name is a 4 letter ID that is unique in the -application. This ID is used to differentiate and access resource files when -an application uses multiple resource files.

            -

            For more information on the NAME statement, see NAME statement.

            -
            -
            C++ pre-processor -statements -

            The resource compiler supports a set of pre-processor statements, including:

            -
              -
            • #define

            • -
            • #include

            • -
            • #ifdef

            • -
            • #ifndef

            • -
            • #if

            • -
            • #else

            • -
            • #endif

            • -
            -

            For more information on the supported pre-processor statements, see - C++ pre-processor statements.

            -

            Typically, resource files contain #includes statements -for the following files:

            -
              -
            • appinfo.rh

            • -
            • avkon.rh

            • -
            • avkon.rsg

            • -
            • eikon.rh

            • -
            -

            These files are located under the /Epoc32/include folder. -They contain the structure declarations for commonly used data structures -in the Symbian platform.

            - -
            -
            RESOURCE statements -syntax -

            The RESOURCE keyword is used to declare a resource in a resource file. -The syntax is as follows:

            -RESOURCE <STRUCT_NAME> | <resource_name> | -{ -<resource-initialiser-list> -} -

            where:

            -
              -
            • <STRUCT_NAME> is the name of a declared -data structure in an included resource header file.

              <STRUCT_NAME> must -be in upper case.

            • -
            • resource_name identifies the resource -.

              resource_name must be in lower case.

              -
            • -
            • resource-initialiser-list contains the -values the members of the structure should be initialized with when the default -values should not be used.

            • -
            -

            RESOURCE statements may include resources defined -within other resource statements in the resource file. For example:

            -RESOURCE EIK_APP_INFO - { - menubar = r_name; - } -

            uses a resource declared in a later statement to define its menu bar. -For more information, seeEIK_APP_INFO.

            -

            Resource statements may also included nested resource structures. For -example:

            -RESOURCE MENU_PANE r_name2 - { - items = - { - MENU_TITLE - { - menu_pane = r_name3; - } - }; - } -

            For more information on the MENU_PANE resource -see , Menu bar resource -statements.

            -

            For more information on structures, see:

            -
              -
            • STRUCT -statement

            • -
            • STRUCT member types

            • -
            • Arrays -within structs

            • -
            -

            For more on resource statements, see:

            -
              -
            • Required -resource file statements

              -
            • -
            • Optional -resource file statements

              -
            • -
            • RESOURCE -statement.

            • -
            -
            + + + + + +Resource file structure +

            Resource files may consist of comments, C++ pre-processor statements, and +structure statements indicated by predefined keywords.

            +

            For more information on the format of resource files, see Resource file source format.

            +

            For a commented example of a resource file, see Resource +management example: HelloWorldBasic.

            +

            A resource file has the following structure:

            +
            Comments +

            You can use either C (/* */) or C++ (//) style comments.

            +

            For more information on the lexical conventions of resource +files, see Lexical conventions.

            +
            +
            NAME +statements +

            The first non-comment statement in a resource must be the NAME statement. The syntax is as follows:

            +NAME name +

            where name is a 4 letter ID that is unique +in the application. This ID is used to differentiate and access resource +files when an application uses multiple resource files.

            +

            For more information on the NAME statement, +see NAME statement.

            +
            +
            C++ pre-processor +statements +

            The resource compiler supports a set of pre-processor statements, +including:

            +
              +
            • #define

            • +
            • #include

            • +
            • #ifdef

            • +
            • #ifndef

            • +
            • #if

            • +
            • #else

            • +
            • #endif

            • +
            +

            For more information on the supported pre-processor statements, +see C++ pre-processor statements.

            +

            Typically, resource files contain #includes statements for the following files:

            +
              +
            • appinfo.rh

            • +
            • avkon.rh

            • +
            • avkon.rsg

            • +
            • eikon.rh

            • +
            +

            These files are located under the /Epoc32/include folder. They contain the structure declarations for commonly used +data structures in the Symbian platform.

            + +
            +
            RESOURCE +statements syntax +

            The RESOURCE keyword is used to declare a resource in a resource +file. The syntax is as follows:

            +RESOURCE <STRUCT_NAME> | <resource_name> | +{ +<resource-initialiser-list> +} +

            where:

            +
              +
            • <STRUCT_NAME> is the name +of a declared data structure in an included resource header file.

              +

              <STRUCT_NAME> must be in upper case.

              +
            • +
            • resource_name identifies the +resource .

              resource_name must be +in lower case.

            • +
            • resource-initialiser-list contains +the values the members of the structure should be initialized with +when the default values should not be used.

            • +
            +

            RESOURCE statements may include resources +defined within other resource statements in the resource file. For +example:

            +RESOURCE EIK_APP_INFO + { + menubar = r_name; + } +

            uses a resource declared in a later statement to define its +menu bar. For more information, seeEIK_APP_INFO.

            +

            Resource statements may also included nested resource structures. +For example:

            +RESOURCE MENU_PANE r_name2 + { + items = + { + MENU_TITLE + { + menu_pane = r_name3; + } + }; + } +

            For more information on the MENU_PANE resource +see , Menu +bar resource statements.

            +

            For more information on structures, see:

            +
              +
            • STRUCT statement

            • +
            • STRUCT member types

            • +
            • Arrays within structs

            • +
            +

            For more on resource statements, see:

            +
              +
            • Required resource file statements

            • +
            • Optional resource file statements

            • +
            • RESOURCE statement.

            • +
            +
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EC6B9856-978A-5C5C-AC44-B6C93D631FD6_d0e450816_href.png Binary file Symbian3/PDK/Source/GUID-EC6B9856-978A-5C5C-AC44-B6C93D631FD6_d0e450816_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EC6B9856-978A-5C5C-AC44-B6C93D631FD6_d0e456661_href.png Binary file Symbian3/PDK/Source/GUID-EC6B9856-978A-5C5C-AC44-B6C93D631FD6_d0e456661_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EC6C21FB-16E1-57FA-B995-8B0F34B6588A_d0e489112_href.png Binary file Symbian3/PDK/Source/GUID-EC6C21FB-16E1-57FA-B995-8B0F34B6588A_d0e489112_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EC6C21FB-16E1-57FA-B995-8B0F34B6588A_d0e494933_href.png Binary file Symbian3/PDK/Source/GUID-EC6C21FB-16E1-57FA-B995-8B0F34B6588A_d0e494933_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EC7DE823-BFAC-47E5-B7CC-154B11FE5D77.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-EC7DE823-BFAC-47E5-B7CC-154B11FE5D77.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,55 @@ + + + + + +Obsolete +NKern Interrupt MethodsThis document specifies two obsolete interrupt handling methods +and describes their replacement. +
            Description +of the obsolete interrupt methods

            The obsolete NKern interrupt +methods are:

              +
            • NKern::DisableInterrupts() and

            • +
            • NKern::DisableAllInterrupts()

            • +

            These methods are used (with other methods in the NKern class) +to protect shared data between an ISR (Interrupt Service Request) and a thread +(or a DFC (Delayed Function Call )).

            The steps involved in disabling/enabling +an interrupt are:

              +
            1. Disable the interrupts

            2. +
            3. Process the data

            4. +
            5. Re-enable the interrupts

            6. +
            The time spent processing the data must be as short as possible, +otherwise performance problems could occur.
            +
            The reason +why these methods are obsolete

            These methods only affect the core +that the thread is running on instead of all the cores on the system.

            +
            The replacement +for these methods

            These methods have been replaced by the following:

              +
            • Spin Lock macros

              These +macros automatically carry out the required interrupt operations.

            • +
            • Atomic Operations

            • +
            +
            Areas that +could be affected

            These obsolete methods are used within drivers +and the following points should be considered when removing them:

              +
            • Could the same functionality be accomplished by disabling the interrupts +in hardware?

            • +
            • Are these methods required at all?

              If memory is not accessible +in ISR (Interrupt Service Request) routines, then use spin locks or atomic +operations.

            • +
            • Explore the use of DFC (Delayed Function Call) signalling.

            • +
            +
            +Obsolete +Mechanisms +Spin Locks + + Atomic Operations + +
            \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EC7E0C0E-EEB0-45B5-BE4A-11CAF78EC366_d0e101368_href.png Binary file Symbian3/PDK/Source/GUID-EC7E0C0E-EEB0-45B5-BE4A-11CAF78EC366_d0e101368_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EC7E0C0E-EEB0-45B5-BE4A-11CAF78EC366_d0e79773_href.png Binary file Symbian3/PDK/Source/GUID-EC7E0C0E-EEB0-45B5-BE4A-11CAF78EC366_d0e79773_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EC7E0C0E-EEB0-45B5-BE4A-11CAF78EC366_d0e83971_href.png Binary file Symbian3/PDK/Source/GUID-EC7E0C0E-EEB0-45B5-BE4A-11CAF78EC366_d0e83971_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EC7E0C0E-EEB0-45B5-BE4A-11CAF78EC366_d0e86312_href.png Binary file Symbian3/PDK/Source/GUID-EC7E0C0E-EEB0-45B5-BE4A-11CAF78EC366_d0e86312_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EC7E0C0E-EEB0-45B5-BE4A-11CAF78EC366_d0e90510_href.png Binary file Symbian3/PDK/Source/GUID-EC7E0C0E-EEB0-45B5-BE4A-11CAF78EC366_d0e90510_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EC7E0C0E-EEB0-45B5-BE4A-11CAF78EC366_d0e97289_href.png Binary file Symbian3/PDK/Source/GUID-EC7E0C0E-EEB0-45B5-BE4A-11CAF78EC366_d0e97289_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EC824DA2-CA19-567C-8218-7C6E1C5ED461_d0e481267_href.png Binary file Symbian3/PDK/Source/GUID-EC824DA2-CA19-567C-8218-7C6E1C5ED461_d0e481267_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EC824DA2-CA19-567C-8218-7C6E1C5ED461_d0e487096_href.png Binary file Symbian3/PDK/Source/GUID-EC824DA2-CA19-567C-8218-7C6E1C5ED461_d0e487096_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EC98E7E0-872D-467D-BDC8-6471F6165705.dita --- a/Symbian3/PDK/Source/GUID-EC98E7E0-872D-467D-BDC8-6471F6165705.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EC98E7E0-872D-467D-BDC8-6471F6165705.dita Fri Jul 16 17:23:46 2010 +0100 @@ -24,7 +24,7 @@ the indicator.

            Universal indicator pop-up - +

            Default touch diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ECACB935-AD19-5BE6-AC27-A63465244087_d0e219852_href.png Binary file Symbian3/PDK/Source/GUID-ECACB935-AD19-5BE6-AC27-A63465244087_d0e219852_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ECACB935-AD19-5BE6-AC27-A63465244087_d0e225872_href.png Binary file Symbian3/PDK/Source/GUID-ECACB935-AD19-5BE6-AC27-A63465244087_d0e225872_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781.dita --- a/Symbian3/PDK/Source/GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,7 +9,7 @@ --> <!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> -<concept xml:lang="en" id="GUID-ECBA6331-2187-52C9-A5DF-20CD1EEFE781"><title>Audio Output Streaming Tutorial

            This tutorial describes how to use Audio Output Streaming.

            Purpose

            The purpose of this tutorial is to show you how to open, play and then close an audio output stream.

            Required Background

            The user needs to maintain the data packets in a queue before starting to send it to the server. There is no need for the entire sound clip to arrive to be able to pass on to the low level audio controller. They can be forwarded as they arrive. If the server tends to receive data more than it can read or process, then a separate queue is maintained in the client side whose elements are references to the buffers passed to it. Once the server is free to receive more data the client sends the data in the queue and receives a notification from the server by means of a callback. As a result of this, the client deletes the data fragments from the queue.

            Upon receiving the data packets the audio controller maintains them in the received buffers. A read function is instantiated to read the data into the destination descriptors.

            Introduction

            The Audio streaming API is the interface providing the functionalities for playing, stopping, and recording the audio stream to and from the audio buffers. The audio output stream interface class, CMdaAudioOutputStream, enables client applications to:

            • Stream raw audio data from specified buffers to audio devices.

            • Specify the priority of the audio stream relative to other clients trying to use the same hardware.

            • Set the sample rate and the number of audio channels before playback.

            • Adjust the volume and channel balance during playback.

            Using Audio Output Streaming

            Typically, using an audio output stream involves the following steps as shown in the sequence diagram below:

            The following tasks will be covered in this tutorial:

            • Constructing an audio output stream

            • Opening an audio output stream

            • Getting and setting the stream properties

            • Playing an audio output stream

            • Stopping an audio output stream

            Basic Procedure for Constructing an Audio Output Stream

            The high level step to construct an audio output stream is shown here:

            • The client application creates an audio output stream object using the static function CMdaAudioOutputStream::NewL(). Optionally, it also sets the audio priorities to be able to access the audio hardware in relation to the other clients trying to access the same device.

              static IMPORT_C CMdaAudioOutputStream *NewL(MMdaAudioOutputStreamCallback &aCallBack, +Audio Output Streaming Tutorial

              This tutorial describes how to use Audio Output Streaming.

              Purpose

              The purpose of this tutorial is to show you how to open, play and then close an audio output stream.

              Required Background

              The user needs to maintain the data packets in a queue before starting to send it to the server. There is no need for the entire sound clip to arrive to be able to pass on to the low level audio controller. They can be forwarded as they arrive. If the server tends to receive data more than it can read or process, then a separate queue is maintained in the client side whose elements are references to the buffers passed to it. Once the server is free to receive more data the client sends the data in the queue and receives a notification from the server by means of a callback. As a result of this, the client deletes the data fragments from the queue.

              Upon receiving the data packets the audio controller maintains them in the received buffers. A read function is instantiated to read the data into the destination descriptors.

              Introduction

              The Audio streaming API is the interface providing the functionalities for playing, stopping, and recording the audio stream to and from the audio buffers. The audio output stream interface class, CMdaAudioOutputStream, enables client applications to:

              • Stream raw audio data from specified buffers to audio devices.

              • Specify the priority of the audio stream relative to other clients trying to use the same hardware.

              • Set the sample rate and the number of audio channels before playback.

              • Adjust the volume and channel balance during playback.

              Using Audio Output Streaming

              Typically, using an audio output stream involves the following steps as shown in the sequence diagram below:

              The following tasks will be covered in this tutorial:

              • Constructing an audio output stream

              • Opening an audio output stream

              • Getting and setting the stream properties

              • Playing an audio output stream

              • Stopping an audio output stream

              Basic Procedure for Constructing an Audio Output Stream

              The high level step to construct an audio output stream is shown here:

              • The client application creates an audio output stream object using the static function CMdaAudioOutputStream::NewL(). Optionally, it also sets the audio priorities to be able to access the audio hardware in relation to the other clients trying to access the same device.

                static IMPORT_C CMdaAudioOutputStream *NewL(MMdaAudioOutputStreamCallback &aCallBack, TInt aPriority, TMdaPriorityPreference aPref=EMdaPriorityPreferenceTimeAndQuality);

              Basic Procedure for Opening an Audio Output Stream

              The high level steps to open an audio output stream are shown here:

              1. To open the output stream, use the Open() member function. For example:

                virtual void Open(TMdaPackage* aSettings);
              2. Once the stream is open MMdaAudioOutputStreamCallback::MaoscOpenComplete() is invoked to indicate that the stream is ready to use.

                void CIOStreamAudio::MaoscOpenComplete(TInt aError) { ASSERT(iState==EStateOpeningOutput); diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ED784025-4E65-4BE9-ADA8-A13427B6EA30.dita --- a/Symbian3/PDK/Source/GUID-ED784025-4E65-4BE9-ADA8-A13427B6EA30.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-ED784025-4E65-4BE9-ADA8-A13427B6EA30.dita Fri Jul 16 17:23:46 2010 +0100 @@ -23,7 +23,7 @@

                Marked items are indicated graphically.

                Markable list. Marked items are indicated graphically in the list. - +

                The Mark and Unmark functions are available in the Options menu of the markable list. Alternatively, or as a shortcut, the user can keep diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ED823C5E-A59B-476A-BF88-0FCBA5D35FED_d0e100410_href.png Binary file Symbian3/PDK/Source/GUID-ED823C5E-A59B-476A-BF88-0FCBA5D35FED_d0e100410_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-ED823C5E-A59B-476A-BF88-0FCBA5D35FED_d0e104495_href.png Binary file Symbian3/PDK/Source/GUID-ED823C5E-A59B-476A-BF88-0FCBA5D35FED_d0e104495_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EDAF82B1-C388-5F57-890F-68010A6E5800_d0e450008_href.png Binary file Symbian3/PDK/Source/GUID-EDAF82B1-C388-5F57-890F-68010A6E5800_d0e450008_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EDAF82B1-C388-5F57-890F-68010A6E5800_d0e455853_href.png Binary file Symbian3/PDK/Source/GUID-EDAF82B1-C388-5F57-890F-68010A6E5800_d0e455853_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EDBCCC26-BA4D-4318-9F0D-62272FA97BBF_d0e79198_href.png Binary file Symbian3/PDK/Source/GUID-EDBCCC26-BA4D-4318-9F0D-62272FA97BBF_d0e79198_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EDBCCC26-BA4D-4318-9F0D-62272FA97BBF_d0e79578_href.png Binary file Symbian3/PDK/Source/GUID-EDBCCC26-BA4D-4318-9F0D-62272FA97BBF_d0e79578_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EDBCCC26-BA4D-4318-9F0D-62272FA97BBF_d0e83396_href.png Binary file Symbian3/PDK/Source/GUID-EDBCCC26-BA4D-4318-9F0D-62272FA97BBF_d0e83396_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EDBCCC26-BA4D-4318-9F0D-62272FA97BBF_d0e83776_href.png Binary file Symbian3/PDK/Source/GUID-EDBCCC26-BA4D-4318-9F0D-62272FA97BBF_d0e83776_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EDBCCC26-BA4D-4318-9F0D-62272FA97BBF_d0e95358_href.png Binary file Symbian3/PDK/Source/GUID-EDBCCC26-BA4D-4318-9F0D-62272FA97BBF_d0e95358_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EDC16636-B24E-598B-9084-EAE782A4A213.dita --- a/Symbian3/PDK/Source/GUID-EDC16636-B24E-598B-9084-EAE782A4A213.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EDC16636-B24E-598B-9084-EAE782A4A213.dita Fri Jul 16 17:23:46 2010 +0100 @@ -26,7 +26,7 @@ network and creates a bearer to access the Wi-Fi network. The device then moves all the existing connections across to the Wi-Fi bearer. In the final step the device disconnects from the GPRS network.

                - +

                Bearer Mobility operates in response to changes in the environment of the device. A bearer is known as available when the device is in range diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EDC39EFF-B633-41DE-93A4-A52D2E7A4A64_d0e90175_href.jpg Binary file Symbian3/PDK/Source/GUID-EDC39EFF-B633-41DE-93A4-A52D2E7A4A64_d0e90175_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EDC39EFF-B633-41DE-93A4-A52D2E7A4A64_d0e94373_href.jpg Binary file Symbian3/PDK/Source/GUID-EDC39EFF-B633-41DE-93A4-A52D2E7A4A64_d0e94373_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EDC405DC-F222-59CD-836E-180F8E1D2D11_d0e237481_href.png Binary file Symbian3/PDK/Source/GUID-EDC405DC-F222-59CD-836E-180F8E1D2D11_d0e237481_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EDC405DC-F222-59CD-836E-180F8E1D2D11_d0e243454_href.png Binary file Symbian3/PDK/Source/GUID-EDC405DC-F222-59CD-836E-180F8E1D2D11_d0e243454_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EDCBBB5E-FAAD-50A5-9EE4-B4F399B77CE9.dita --- a/Symbian3/PDK/Source/GUID-EDCBBB5E-FAAD-50A5-9EE4-B4F399B77CE9.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ - - - - - -bld.inf -file syntax overview -

                Component definition files, which are always called bld.inf, -are used by bldmake to define the abld.bat and -makefiles to be created.

                -

                bld.inf files are made up of a number of sections, -with headers prj_platforms, prj_exports, prj_testexports, -and prj_mmpfiles.

                -

                Note that:

                -
                  -
                • Each section header -can appear any number of times in the file (including none).

                • -
                • The section headers -and their data are case-insensitive.

                • -
                • A trailing backslash -is used to indicate a line continuation.

                • -
                • Use the C++ style comment -syntax for comments.

                • -
                • Preprocessor directives -such as #include and #ifdef can -be used.

                • -
                - -// Files to be exported -prj_exports -myheader1.h -myheader2.h - -// Project files -prj_mmpfiles -myprj1.mmp -myprj2.mmp - -// Files to be exported for test purposes -prj_testexports -mytestheader1.h - -// Project files for test programs -prj_testmmpfiles -mytest1.mmp -mytest2.mmp - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EDDEA6A0-D45D-5241-B594-94ADDD803646.dita --- a/Symbian3/PDK/Source/GUID-EDDEA6A0-D45D-5241-B594-94ADDD803646.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EDDEA6A0-D45D-5241-B594-94ADDD803646.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,36 +9,35 @@ --> -Rendezvous -Thread rendezvous example codeThis example demonstrates the use of Rendezvous() API. -
                Purpose

                The code is a simple example that shows -the principle of synchronization using the thread rendezvous technique.

                -
                Class summary
                  +Rendezvous Thread rendezvous example codeThis example demonstrates the use of Rendezvous() API. +
                  Purpose

                  The code is a simple example that shows the principle of synchronization +using the thread rendezvous technique.

                  +
                  Class +summary
                  • RThread - A handle to a thread.

                  -
                  Download

                  Download the example: Rendezvous.zip.

                  Download some additional files -required by the example: CommonFramework.zip.

                  View the source code: browse. View the additional files: browse

                  -
                  Building and -configuring
                    -
                  • You can build the example -from your IDE or the command line.

                    If you use an IDE, import the bld.inf file -of the example into your IDE, and use the build command of the IDE.

                    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:

                    bldmake -bldfiles

                    abld build

                    How to use bldmake and How to use abld describe -how to use the SBSv1 build tools.

                  • -
                  • For the emulator, the -example builds an executable called threadrendezvous.exe in -the epoc32\release\winscw\<udeb or urel>\ folder.

                  • +
                    Download

                    Download the example: Rendezvous.zip.

                    Download some additional +files required by the example: CommonFramework.zip.

                    View the source +code: browse. View the additional files: browse

                    +
                    Building +and configuring
                      +
                    • You can build +the example from your IDE or the command line.

                      If you use +an IDE, import the bld.inf file of the example +into your IDE, and use the build command of the IDE.

                      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:

                      bldmake bldfiles

                      abld +build

                    • +
                    • For the emulator, +the example builds an executable called threadrendezvous.exe in the epoc32\release\winscw\<udeb or urel>\ folder.

                    -
                    Running the example

                    When running the example, the -user is presented with various menu options that are self explanatory. The -code is a simple example that shows the principle of synchronization using -the thread rendezvous technique.

                    +
                    Running +the example

                    When running the example, the user is presented +with various menu options that are self explanatory. The code is a +simple example that shows the principle of synchronization using the +thread rendezvous technique.

                    - -Synchronisation -techniques - +Synchronization +techniques \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EDE54D27-D902-5C67-BF8E-5E7E0A33A98E.dita --- a/Symbian3/PDK/Source/GUID-EDE54D27-D902-5C67-BF8E-5E7E0A33A98E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EDE54D27-D902-5C67-BF8E-5E7E0A33A98E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,4 +9,4 @@ --> -ASN-PKCS OverviewThe ASN-PKCS component provides interfaces for:
                    • Performing ASN.1 -DER (Abstract Syntax Notation One - Distinguished Encoding Rules) encoding and decoding of PKCS (Public-Key Cryptography Standards) private keys in raw text as well as PBE (Password-Based Encryption) encrypted forms.

                    • Performing ASN.1 encoding and decoding of PBE parameters associated with the private keys.

                    Key concepts and terms
                    Key

                    A cryptography key is a constant value applied using a cryptographic algorithm to encrypt text or to decrypt encrypted text.

                    Keys are classified as symmetric and asymmetric based on the type of algorithm applied. If the same key is used for both encryption and decryption, it is symmetric. If different keys are used for encryption and decryption, they are asymmetric. Asymmetric keys exist in the form of a public and private key pair, where the public key is used for encryption and the private key is used for decryption.

                    Key Store

                    A key store is a repository of keys that can be retrieved and used to accomplish a variety of tasks.

                    The key store provides the following functionality:

                    • Generation, import and export of RSA, DSA, and DH key pairs

                    • Listing of stored keys

                    • Authentication of users

                    • Private key operations for authenticated users

                    Architecture

                    The following block diagram describes the interaction of the ASN-PKCS component with the certificate and key stores:

                    The client application accesses the various certificates and keys of the device stored in the respective stores. Depending on the requests received from the store management and implementation components, ASN-PKCS acts on the keys during certain key and certificate manipulation operations. For details of the operations during which the ASN-PKCS APIs are invoked, see Typical uses.

                    APIs
            API Description

            CDecPKCS8Data

            Provides the means to decode PKCS#8 encoded private keys.

          Typical uses

          ASN-PKCS APIs are used for encoding and decoding purposes during the following key and certificate manipulation operations:

          • Encoding and decoding of PKCS private keys (in raw text and PBE-encrypted forms) during import and export of keys. When PBE-encrypted PKCS keys are imported or exported, the ASN-PKCS APIs also help in encoding or decoding of the PBE parameters.

          • Encoding of the private keys accompanying public key certificates (according to PKCS#12 standards) while creating certificate requests.

          • Creation of PKCS#7 messages for creating the certificate requests.

          Notes:

          • Device creators can use the ASN-PKCS component along with their own implementation of the certificate and key stores.

          • For details of the key and certificate operations, see Unified Keystore Tutorials and Unified Certificate Store Tutorial respectively.

          Unified Stores
          \ No newline at end of file +ASN-PKCS OverviewThe ASN-PKCS component provides interfaces for:
          • Performing ASN.1 -DER (Abstract Syntax Notation One - Distinguished Encoding Rules) encoding and decoding of PKCS (Public-Key Cryptography Standards) private keys in raw text as well as PBE (Password-Based Encryption) encrypted forms.

          • Performing ASN.1 encoding and decoding of PBE parameters associated with the private keys.

          Key concepts and terms
          Key

          A cryptography key is a constant value applied using a cryptographic algorithm to encrypt text or to decrypt encrypted text.

          Keys are classified as symmetric and asymmetric based on the type of algorithm applied. If the same key is used for both encryption and decryption, it is symmetric. If different keys are used for encryption and decryption, they are asymmetric. Asymmetric keys exist in the form of a public and private key pair, where the public key is used for encryption and the private key is used for decryption.

          Key Store

          A key store is a repository of keys that can be retrieved and used to accomplish a variety of tasks.

          The key store provides the following functionality:

          • Generation, import and export of RSA, DSA, and DH key pairs

          • Listing of stored keys

          • Authentication of users

          • Private key operations for authenticated users

          Architecture

          The following block diagram describes the interaction of the ASN-PKCS component with the certificate and key stores:

          The client application accesses the various certificates and keys of the device stored in the respective stores. Depending on the requests received from the store management and implementation components, ASN-PKCS acts on the keys during certain key and certificate manipulation operations. For details of the operations during which the ASN-PKCS APIs are invoked, see Typical uses.

          APIs API Description

          CDecPKCS8Data

          Provides the means to decode PKCS#8 encoded private keys.

          Typical uses

          ASN-PKCS APIs are used for encoding and decoding purposes during the following key and certificate manipulation operations:

          • Encoding and decoding of PKCS private keys (in raw text and PBE-encrypted forms) during import and export of keys. When PBE-encrypted PKCS keys are imported or exported, the ASN-PKCS APIs also help in encoding or decoding of the PBE parameters.

          • Encoding of the private keys accompanying public key certificates (according to PKCS#12 standards) while creating certificate requests.

          • Creation of PKCS#7 messages for creating the certificate requests.

          Notes:

          • Device creators can use the ASN-PKCS component along with their own implementation of the certificate and key stores.

          • For details of the key and certificate operations, see Unified Keystore Tutorials and Unified Certificate Store Tutorial respectively.

          Unified Stores
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EE2F64B2-A2E3-524F-8E04-68BE9AA9EA36_d0e389647_href.png Binary file Symbian3/PDK/Source/GUID-EE2F64B2-A2E3-524F-8E04-68BE9AA9EA36_d0e389647_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EE2F64B2-A2E3-524F-8E04-68BE9AA9EA36_d0e395500_href.png Binary file Symbian3/PDK/Source/GUID-EE2F64B2-A2E3-524F-8E04-68BE9AA9EA36_d0e395500_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EE556214-BFB8-582E-ACD9-5287D7C64EFA_d0e549066_href.jpg Binary file Symbian3/PDK/Source/GUID-EE556214-BFB8-582E-ACD9-5287D7C64EFA_d0e549066_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EE556214-BFB8-582E-ACD9-5287D7C64EFA_d0e556522_href.jpg Binary file Symbian3/PDK/Source/GUID-EE556214-BFB8-582E-ACD9-5287D7C64EFA_d0e556522_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EE5937B6-9103-4711-B13B-06A62D56AF79_d0e102012_href.png Binary file Symbian3/PDK/Source/GUID-EE5937B6-9103-4711-B13B-06A62D56AF79_d0e102012_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EE5937B6-9103-4711-B13B-06A62D56AF79_d0e97934_href.png Binary file Symbian3/PDK/Source/GUID-EE5937B6-9103-4711-B13B-06A62D56AF79_d0e97934_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EE927F50-C1E0-55D9-AFC8-77CEB5617BEF.dita --- a/Symbian3/PDK/Source/GUID-EE927F50-C1E0-55D9-AFC8-77CEB5617BEF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EE927F50-C1E0-55D9-AFC8-77CEB5617BEF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,5 +11,5 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Network Location Manager OverviewThe Network Location Manager is responsible for obtaining a location fix from the network on behalf of the LBS Location Server.
          Purpose

          The Network Location Manager is used by the Location Server. It communicates with the Network Gateway to obtain a position from the network.

          Required background

          The reader should be familiar with the LBS architecture.

          Key concepts and terms

          There are no additional concepts for this component.

          Architecture

          The Network Location Manager is a process that runs as part of the LBS subsystem.

          The Location Server sends requests for location to the Network Location Manager when the position quality criteria required by MO-LR (self locate) can best be satisfied by the network. The Network Location Manager interacts with the Network Gateway to obtain a location from the network.

          Figure 1. Network Location Manager. -
          APIs

          The Network Location Manager is an internal component of the LBS subsystem. It does not expose any published APIs.

          Typical uses

          The Network Location Manager is only used internally by the LBS subsystem.

          Location +
      APIs

      The Network Location Manager is an internal component of the LBS subsystem. It does not expose any published APIs.

      Typical uses

      The Network Location Manager is only used internally by the LBS subsystem.

      Location Server
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EEC50FC0-46D5-4ED7-AD95-67430D5EC651.dita --- a/Symbian3/PDK/Source/GUID-EEC50FC0-46D5-4ED7-AD95-67430D5EC651.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EEC50FC0-46D5-4ED7-AD95-67430D5EC651.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,24 +1,25 @@ - - - - - -Application -security -

      Native C++ applications have broad access to the mobile device functionality. -They can access, for example, network and mobile device interfaces, storage -memory and messaging framework. This provides many features for application -developers to use, but can be exploited in the wrong hands.

      -

      The Symbian platform -security architecture allows an application server to determine whether -installed software using the server can be trusted. This section covers the -most critical components in the security system, the components that first -encounter problems and form the front line of defense when a system is attacked.

      -

      The following aspects of application security are covered in this section:

      + + + + + +Application security +

      Native C++ applications have broad access to the mobile device +functionality. They can access, for example, network and mobile device +interfaces, storage memory and messaging framework. This provides +many features for application developers to use, but can be exploited +in the wrong hands.

      +

      The Symbian platform security architecture allows an application server +to determine whether installed software using the server can be trusted. +This section covers the most critical components in the security system, +the components that first encounter problems and form the front line +of defense when a system is attacked.

      +

      The following aspects of application security are covered in +this section:

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EEF2F892-8900-475F-926B-A49D0D98C1C6.dita --- a/Symbian3/PDK/Source/GUID-EEF2F892-8900-475F-926B-A49D0D98C1C6.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ - - - - - -Navigation -

      The model of navigation is based on states arranged as hierarchical trees. -The following features provide the flexibility for navigation:

      -
        -
      • Tabs

      • -
      • Home / Menu key and the Menu

      • -
      • Direct navigation between sibling folders

      • -
      • Links to applications and documents

      • -
      -
      - -UI concepts - -Framework -requirements for GUI applications - -
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EF3DB813-B0B9-5099-9E57-561A32111BF0.dita --- a/Symbian3/PDK/Source/GUID-EF3DB813-B0B9-5099-9E57-561A32111BF0.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EF3DB813-B0B9-5099-9E57-561A32111BF0.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,5 +11,5 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Feature Manager Server GuideThis document describes the feature management server.
      Purpose

      The feature management server maintains the table which contains and maintains the list of features available on the device.

      Required background

      The feature management system uses the standard client server architecture that is the feature manager server that does the work associated with the feature management functionality. Communication between the application and the server is undertaken by two dlls.

      Architecture

      The relationship between the parts of the feature management system is :

      Architecture of the feature management system -
      APIs

      Communication to and from the feature management server is only provided by the methods available in the Feature Manager Client API and the Feature Manager Discovery API.

      Typical uses

      These are the same as for feature management (since it does all the work). They include adding, disabling, enabling and removing features.

      For the description of the APIs used in feature management look at the component overview for featmgr.dll and featdiscovery.dll.

      Feature Manager Overview Feature Manager Client +
    APIs

    Communication to and from the feature management server is only provided by the methods available in the Feature Manager Client API and the Feature Manager Discovery API.

    Typical uses

    These are the same as for feature management (since it does all the work). They include adding, disabling, enabling and removing features.

    For the description of the APIs used in feature management look at the component overview for featmgr.dll and featdiscovery.dll.

    Feature Manager Overview Feature Manager Client Overview Feature Discovery Overview
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EF71F4BF-2206-5489-BDB9-2F85ED74D6E2.dita --- a/Symbian3/PDK/Source/GUID-EF71F4BF-2206-5489-BDB9-2F85ED74D6E2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EF71F4BF-2206-5489-BDB9-2F85ED74D6E2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> 3GP Library Overview

    This document describes 3GP Library.

    Purpose

    3GP Library lets you read (parse) and write (compose) 3GP, 3G2, and MP4 files. You can use 3GP Library to provide direct data access for applications. When you need to develop reference audio and video controllers, you can use 3GP Library.

    3GP Library details

    The DLL that provides the functionality and the library to which your code must link is identified below.

    DLL LIB Short Description

    3gplibrary.dll

    3gplibrary.lib

    These files are used to implement 3GP Library.

    Architectural relationship

    The following diagram shows the architecture of 3GP Library:

    3GP Library Architecture -

    Description

    3GP Library provides two APIs to compose and parse multimedia files.

    3GP Composer

    The 3GP Composer accepts H.263, MPEG-4 and AVC (also known as H.264) video formats, and AMR, MPEG-4 AAC and QCELP audio formats. These formats are used to create 3GP, 3G2 or MP4 files. If QCELP audio is supplied, the file to be composed is automatically switched to a 3G2 file. To compose an MP4 file, the video source must be either of type MPEG-4 video or AVC, and the audio source must be of type MPEG-4 AAC audio, otherwise the output file type will be automatically changed to 3GP.

    3GP Parser

    The 3GP Parser parses 3GP, 3G2 and MP4 content containing H.263, MPEG-4 or AVC video formats, and AMR, MPEG-4 or QCELP audio formats. Content can be from a file, a Content Access Framework (CAF) object, or given through memory buffer.

    Key 3GP Library classes

    The key classes that make up 3GP Library are as follows:

    • C3GPCompose

      This class provides the functions for the 3GP Composer.

    • C3GPParse

      This class provides the functions for the 3GP Parser.

    • M3GPParseCallback

      An interface provided by 3GP Library for the asynchronous retrieval of video and audio frames. The client application normally implements M3GPParseCallback.

    Using 3GP Library

    You can use the 3GP Composer to do the following:

    • Create an instance of a 3GP Composer

    • Initialise the 3GP Composer for writing 3GP, 3G2 or MP4 data

    • Write video and audio data streams

    • Commit video and audio data to an output file.

    You can use the 3GP Parser to do the following:

    • Create an instance of a 3GP Parser

    • Initialise the 3GP Parser for reading 3GP, 3G2 or MP4 data

    • Retrieve video and audio metadata

    • Read video and audio data streams (synchronously and asynchronously)

    • Release 3GP Parser resources.

    See also

    3GP Library Tutorials

    \ No newline at end of file +

    Description

    3GP Library provides two APIs to compose and parse multimedia files.

    3GP Composer

    The 3GP Composer accepts H.263, MPEG-4 and AVC (also known as H.264) video formats, and AMR, MPEG-4 AAC and QCELP audio formats. These formats are used to create 3GP, 3G2 or MP4 files. If QCELP audio is supplied, the file to be composed is automatically switched to a 3G2 file. To compose an MP4 file, the video source must be either of type MPEG-4 video or AVC, and the audio source must be of type MPEG-4 AAC audio, otherwise the output file type will be automatically changed to 3GP.

    3GP Parser

    The 3GP Parser parses 3GP, 3G2 and MP4 content containing H.263, MPEG-4 or AVC video formats, and AMR, MPEG-4 or QCELP audio formats. Content can be from a file, a Content Access Framework (CAF) object, or given through memory buffer.

    Key 3GP Library classes

    The key classes that make up 3GP Library are as follows:

    • C3GPCompose

      This class provides the functions for the 3GP Composer.

    • C3GPParse

      This class provides the functions for the 3GP Parser.

    • M3GPParseCallback

      An interface provided by 3GP Library for the asynchronous retrieval of video and audio frames. The client application normally implements M3GPParseCallback.

    Using 3GP Library

    You can use the 3GP Composer to do the following:

    • Create an instance of a 3GP Composer

    • Initialise the 3GP Composer for writing 3GP, 3G2 or MP4 data

    • Write video and audio data streams

    • Commit video and audio data to an output file.

    You can use the 3GP Parser to do the following:

    • Create an instance of a 3GP Parser

    • Initialise the 3GP Parser for reading 3GP, 3G2 or MP4 data

    • Retrieve video and audio metadata

    • Read video and audio data streams (synchronously and asynchronously)

    • Release 3GP Parser resources.

    See also

    3GP Library Tutorials

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EF7F79E4-21B1-59E3-A063-ABD2C6426E7C_d0e174623_href.png Binary file Symbian3/PDK/Source/GUID-EF7F79E4-21B1-59E3-A063-ABD2C6426E7C_d0e174623_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EF7F79E4-21B1-59E3-A063-ABD2C6426E7C_d0e180691_href.png Binary file Symbian3/PDK/Source/GUID-EF7F79E4-21B1-59E3-A063-ABD2C6426E7C_d0e180691_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EFAEDFA5-3807-56EB-8D47-3A6960C4056C.dita --- a/Symbian3/PDK/Source/GUID-EFAEDFA5-3807-56EB-8D47-3A6960C4056C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EFAEDFA5-3807-56EB-8D47-3A6960C4056C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -28,7 +28,7 @@ the SDP description, delete the CSdpDocument object and close the string pool.

    The following illustration shows how to create an SDP description.

    - +

    Note: In the following illustration only required SDP fields are included.

    Error handling

    All diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EFC72FB6-5FA0-537C-978D-50FC67A6F857_d0e449518_href.png Binary file Symbian3/PDK/Source/GUID-EFC72FB6-5FA0-537C-978D-50FC67A6F857_d0e449518_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EFC72FB6-5FA0-537C-978D-50FC67A6F857_d0e455363_href.png Binary file Symbian3/PDK/Source/GUID-EFC72FB6-5FA0-537C-978D-50FC67A6F857_d0e455363_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EFE378EA-C668-5CD5-A630-B8041027791A_d0e107198_href.png Binary file Symbian3/PDK/Source/GUID-EFE378EA-C668-5CD5-A630-B8041027791A_d0e107198_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EFE378EA-C668-5CD5-A630-B8041027791A_d0e109641_href.png Binary file Symbian3/PDK/Source/GUID-EFE378EA-C668-5CD5-A630-B8041027791A_d0e109641_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EFEACBE5-B9E1-5315-88CA-DA3B7C1BFCE0_d0e389963_href.png Binary file Symbian3/PDK/Source/GUID-EFEACBE5-B9E1-5315-88CA-DA3B7C1BFCE0_d0e389963_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EFEACBE5-B9E1-5315-88CA-DA3B7C1BFCE0_d0e395816_href.png Binary file Symbian3/PDK/Source/GUID-EFEACBE5-B9E1-5315-88CA-DA3B7C1BFCE0_d0e395816_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EFF3BD37-BC29-52F5-B8AA-6362F0C3E20F.dita --- a/Symbian3/PDK/Source/GUID-EFF3BD37-BC29-52F5-B8AA-6362F0C3E20F.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,87 +0,0 @@ - - - - - -ARMV5 -build targets -

    The ARMV5 build target builds to the ARMV5 architecture. -It is built to conform to a binary standard developed by ARM (the ABI for -the ARM architecture). Details of the standard are published at http://www.arm.com/products/DevTools/ABI.html.

    -

    The situation is complicated by there existing two versions of the ARM -ABI, referred to as v1 and v2 respectively, both of which are supported by -the toolchain. This page explains the build target to use in each case. For -more information on the differences in the toolchain used for each version -of the ABI, see ABIv1 -to ABIv2 toolchain changes.

    -

    This page includes the following sections, which describe RVCT compiler -versions for the ARM platform and ABI versions of ARM:

    -
      -
    • ARM RVCT compiler versions

    • -
    • ARMV5 (ABI v1 mode)

    • -
    • ARMV5 (ABI v2 mode)

    • -
    -
    ARM RVCT compiler -versions

    The ARMV5 build targets are built using -ARM's own RealView Compiler Tools (RVCT) (http://www.arm.com/products/DevTools/RealViewDevSuite.html).

    Note -that RVCT 2.2 build 435 used with Symbian OS v9.2 is not supported from v9.3 -onwards. Symbian OS v9.3 uses RVCT 2.2 build 559 and from OS v9.4 onwards -RVCT 2.2 build 616 is used.

    The following section discusses issues -concerned with having RVCT 2.2 builds 435, 559 and 616 installed on a single -PC, so as to enable development on both v9.2, v9.3 and v9.4.

    Compiler -set-up for v9.2, v9.3 and v9.4 builds

    If you need to develop for -Symbian OS v9.2, v9.3 and v9.4 on the same PC, you need to have the RVCT 2.2 -builds 435, 559 and 616 installed. The build tools will use the version that -appears first in the environment path variable. You will -need to modify this setting yourself when moving between development kits.

    Assuming -the tools are installed to C:\apps\:

      -
    • When working with v9.2, -include build 435 version of the tools first in the path.

      For example:

      set -PATH=C:\apps\ARM\RVCT\Programs\2.2\435\win_32-pentium;%path%

    • -
    • When working with v9.3, -include build 559 version of the tools first in the path.

      For example:

      set -PATH=C:\apps\ARM\RVCT\Programs\2.2\559\win_32-pentium;%path%

    • -
    • When working with v9.4, -include build 616 version of the tools first in the path.

      For example:

      set -PATH=C:\apps\ARM\RVCT\Programs\2.2\616\win_32-pentium;%path%

    • -

    To know which version is currently installed on your PC, use the -following command:

    armcc --vsn

    This -reports the compiler version and build number.

    -
    ARMV5 (ABI -v1 mode)

    Use this target to create binaries conforming to the ABI -v1.

    To build for ARMV5 (ABI v1) with abld on -Symbian OS v9.3 and earlier versions, use:

    abld build ARMV5 -[udeb | urel]

    To build for ARMV5 (ABI -v1) with abld on Symbian OS v9.4 and later versions, -use:

    abld build ARMV5_ABIv1 [udeb | urel]

    Binaries -are generated in the udeb and/or urel sub-directories -of the epoc32\release\ARMV5\ directory. From Symbian -OS v9.4 onwards, the binaries are generated in epoc32\release\ARMV5_ABIv1\.

    Library -export (.lib) files are generated in the epoc32\release\ARMV5\lib\ directory.

    -
    ARMV5 (ABI -v2 mode)

    Use this target to create binaries conforming to the ABI -v2.

    To build for ARMV5 (ABI v2) with abld on -Symbian OS v9.3 and earlier versions, use:

    abld build ARMV5_ABIv2 -[udeb | urel]

    To build for ARMV5 (ABI -v2) with abld on Symbian OS v9.4 and later versions, -use:

    abld build ARMV5 [udeb | urel]

    Binaries -are generated in the udeb and/or urel sub-directories -of the epoc32\release\ARMV5_ABIv2\ directory. From Symbian -OS v9.4 onwards, the binaries are generated in epoc32\release\ARMV5\.

    Library -export (.dso) files are generated in the epoc32\release\ARMV5\lib\ directory. -The ABI v2 toolchain need to support multiple ABI v2 compatible compilers -to have a common directory for the import library files.

    From Symbian -OS v9.4 and later, ABI v2 is the default platform. So, a simple abld -build command will create a binary conforming to ABI v2. To create -a binary conforming to ABI v1, use abld build ARMV5_ABIv1.

    You -can switch back to the old approach, where the targets ARMV5 and ARMV5_ABIv2 will -build binaries conforming to ABI v1 and ABI v2 respectively. For more details -on this, refer to Switching -between ABI modes.

    - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EFF8D1A1-00D5-5F96-8285-414DC0044AB8.dita --- a/Symbian3/PDK/Source/GUID-EFF8D1A1-00D5-5F96-8285-414DC0044AB8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-EFF8D1A1-00D5-5F96-8285-414DC0044AB8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,14 +16,14 @@ the calling process. The calling process should have a WriteUserData capability.

    The following steps explain the process of setting a use policy for a key:

    - -Create a file system + +Create a file system session using an RFs object. - + Create an object of type CUnifiedKeyStore using CUnifiedKeyStore::NewL() or CUnifiedKeyStore::NewLC(). - + Initialise the member functions and keystore using the asynchronous function CUnifiedKeyStore::Initialize(). @@ -31,13 +31,13 @@ List all keys in the keystore using the CUnifiedKeyStore::List() function. Retrieve the handle of the key for which the use policy needs to be set. - + Set the use policy for the key using the CUnifiedKeyStore::SetUsePolicy() function.

    Use policy is set for the selected key.

    -Example

    The -following code snippet shows how to set use policy for a key.

    // Create a file system session object +Example

    The +following code snippet shows how to set use policy for a key.

    // Create a file system session object RFs iFs; CleanupClosePushL(&iFs); diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EFFEB18E-5BF5-5855-9D1F-E7C39CB569D0_d0e278346_href.png Binary file Symbian3/PDK/Source/GUID-EFFEB18E-5BF5-5855-9D1F-E7C39CB569D0_d0e278346_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-EFFEB18E-5BF5-5855-9D1F-E7C39CB569D0_d0e284346_href.png Binary file Symbian3/PDK/Source/GUID-EFFEB18E-5BF5-5855-9D1F-E7C39CB569D0_d0e284346_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F0185CC2-C175-556E-A4BB-0D781487817A.dita --- a/Symbian3/PDK/Source/GUID-F0185CC2-C175-556E-A4BB-0D781487817A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F0185CC2-C175-556E-A4BB-0D781487817A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,47 +1,39 @@ - - - - - -EmbeddingShell: -embedded pictures -
    Description

    EmbeddingShell provides -an application shell, and a concrete control.

    CGraphicExampleControl is -a control class, derived from CCoeControl, which links the -app shell to the concrete control.

    The CPictureControl class, -derived from CGraphicExampleControl, illustrates the drawing -of pictures and how they can be stored to and restored from a direct file -store.

    -
    Download

    Click -on the following link to download the example: Embedding.zip

    Download some additional files required -by the example: CommonGraphicsExampleFiles

    Click: browse to view the example code.

    View the additional -files: browse.
    -
    Class Summary

    CPicture

    MPictureFactory

    CDirectFileStore

    RStoreWriteStream

    RStoreReadStream

    TStreamId

    TSwizzle

    RFs

    -
    Build

    The -source code for this example application can be found in the directory:

    examples\Graphics\Embedding

    This -source code may be in the directory in which you installed the Symbian platform, -or it may be in the src\common\developerlibrary\ directory. -The directory includes the two project files needed for building the example: bld.inf and -the .mmp file.

    The -Symbian build process describes how to build this application. For -the emulator, an application called EmbeddingShell.exe is -created in epoc32\release\winscw\<udeb or urel>\.

    -
    Usage
      -
    1. Launch the emulator:

      epoc32\release\winscw\<urel -or udeb>\EPOC.EXE.

    2. -
    3. Click on EMBEDDINGSHELL to -run the application. If using the TechView emulator, this will be in -the Extras menu.

    4. -
    5. Start the example by -choosing Picture from the menu List of Programs.

    6. -
    7. Step through each phase -of the example by pressing the space bar or by tapping on the window drawn -by that example.

    8. -
    + + + + + +EmbeddingShell: embedded pictures +
    Description

    EmbeddingShell provides an application +shell, and a concrete control.

    CGraphicExampleControl is a control class, derived from CCoeControl, which +links the app shell to the concrete control.

    The CPictureControl class, derived from CGraphicExampleControl, illustrates +the drawing of pictures and how they can be stored to and restored +from a direct file store.

    +
    Download

    Click on the following link to download the example: Embedding.zip

    Download some additional +files required by the example: CommonGraphicsExampleFiles

    Click: browse to view the example code.

    View the +additional files: browse.
    +
    Class +Summary

    CPicture

    MPictureFactory

    CDirectFileStore

    RStoreWriteStream

    RStoreReadStream

    TStreamId

    TSwizzle

    RFs

    +
    Build

    The source code for this example application can be found in +the directory:

    examples\Graphics\Embedding

    This source code may be in the directory in which you installed +the Symbian platform, or it may be in the src\common\developerlibrary\ directory. The directory includes the two project files needed for +building the example: bld.inf and the .mmp file.

    he Symbian build process describes +how to build this application. For the emulator, an application called EmbeddingShell.exe is created in epoc32\release\winscw\<udeb +or urel>\.

    +
    Usage
      +
    1. Launch the emulator:

      epoc32\release\winscw\<urel or udeb>\EPOC.EXE.

    2. +
    3. Click on EMBEDDINGSHELL to run the application. If using the TechView emulator, this will be in the Extras menu.

    4. +
    5. Start the example +by choosing Picture from the menu List +of Programs.

    6. +
    7. Step through +each phase of the example by pressing the space bar or by tapping +on the window drawn by that example.

    8. +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F03A323A-2FCC-5247-909F-4AB2701B1C45.dita --- a/Symbian3/PDK/Source/GUID-F03A323A-2FCC-5247-909F-4AB2701B1C45.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ - - - - - -smpsafe -

    smpsafe

    Sets a flag on the target. -This indicates the OS that the program when run on muti-core processors can -make use of full symmetric multiprocessing (SMP) capabilities. SMP safe programs -can achieve high performance.

    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F041E4F2-AAA3-5C8C-B8C6-646974DEF76E_d0e49420_href.png Binary file Symbian3/PDK/Source/GUID-F041E4F2-AAA3-5C8C-B8C6-646974DEF76E_d0e49420_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F041E4F2-AAA3-5C8C-B8C6-646974DEF76E_d0e53654_href.png Binary file Symbian3/PDK/Source/GUID-F041E4F2-AAA3-5C8C-B8C6-646974DEF76E_d0e53654_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F057FFF8-EA6A-5719-BE6B-B37950A07A7B_d0e321628_href.png Binary file Symbian3/PDK/Source/GUID-F057FFF8-EA6A-5719-BE6B-B37950A07A7B_d0e321628_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F057FFF8-EA6A-5719-BE6B-B37950A07A7B_d0e327614_href.png Binary file Symbian3/PDK/Source/GUID-F057FFF8-EA6A-5719-BE6B-B37950A07A7B_d0e327614_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F0923110-D5D9-56D7-8CBC-82CAE062BC1A.dita --- a/Symbian3/PDK/Source/GUID-F0923110-D5D9-56D7-8CBC-82CAE062BC1A.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ - - - - - --check

    This option is for checking that the required files have been created during a particular build step.

    The option creates a list of files that should have been created and then checks that each one exists in turn. If a file is missing the full name of the file is piped to STDERR.

    Note that if this option is specified with abld - build, makefiles will not be included in the list of files to be checked.

    If the option is specified with abld - reallyclean, however, the makefiles will be included in the list.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F0BC230B-CAEC-452D-8FF4-20803C63B07C_d0e101025_href.png Binary file Symbian3/PDK/Source/GUID-F0BC230B-CAEC-452D-8FF4-20803C63B07C_d0e101025_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F0BC230B-CAEC-452D-8FF4-20803C63B07C_d0e79393_href.png Binary file Symbian3/PDK/Source/GUID-F0BC230B-CAEC-452D-8FF4-20803C63B07C_d0e79393_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F0BC230B-CAEC-452D-8FF4-20803C63B07C_d0e83591_href.png Binary file Symbian3/PDK/Source/GUID-F0BC230B-CAEC-452D-8FF4-20803C63B07C_d0e83591_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F0BC230B-CAEC-452D-8FF4-20803C63B07C_d0e96946_href.png Binary file Symbian3/PDK/Source/GUID-F0BC230B-CAEC-452D-8FF4-20803C63B07C_d0e96946_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F0BDE1EC-5042-5328-9290-22BB2189F6B4.dita --- a/Symbian3/PDK/Source/GUID-F0BDE1EC-5042-5328-9290-22BB2189F6B4.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F0BDE1EC-5042-5328-9290-22BB2189F6B4.dita Fri Jul 16 17:23:46 2010 +0100 @@ -24,7 +24,7 @@ with GPSSetClock.lib.

    Figure 1. CGPSSetClockBase is the base class for LBS set clock plug-in classes. - +

    To implement a set clock plug-in a developer must follow the steps in the next section.

    Procedure
      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F0C47F37-354B-51BD-B607-D4575C249DC8.dita --- a/Symbian3/PDK/Source/GUID-F0C47F37-354B-51BD-B607-D4575C249DC8.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F0C47F37-354B-51BD-B607-D4575C249DC8.dita Fri Jul 16 17:23:46 2010 +0100 @@ -66,7 +66,7 @@
    1. MDvbhScanObserver

      Provides notification of scan operations.

    2. The Class diagram of RDvbhReceiver is shown below:

      - +

    Using DVB-H Receiver Library
    • A receiver hardware diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F0DCFAB5-DE92-5336-B4E2-1ED40BE05DEC_d0e684686_href.png Binary file Symbian3/PDK/Source/GUID-F0DCFAB5-DE92-5336-B4E2-1ED40BE05DEC_d0e684686_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F0DCFAB5-DE92-5336-B4E2-1ED40BE05DEC_d0e697513_href.png Binary file Symbian3/PDK/Source/GUID-F0DCFAB5-DE92-5336-B4E2-1ED40BE05DEC_d0e697513_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F12437C5-BD96-5B43-AD76-614CFAB104D2_d0e296351_href.png Binary file Symbian3/PDK/Source/GUID-F12437C5-BD96-5B43-AD76-614CFAB104D2_d0e296351_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F12437C5-BD96-5B43-AD76-614CFAB104D2_d0e302343_href.png Binary file Symbian3/PDK/Source/GUID-F12437C5-BD96-5B43-AD76-614CFAB104D2_d0e302343_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F127644A-6072-52CA-9B17-E9DDEA784BE0_d0e379843_href.png Binary file Symbian3/PDK/Source/GUID-F127644A-6072-52CA-9B17-E9DDEA784BE0_d0e379843_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F127644A-6072-52CA-9B17-E9DDEA784BE0_d0e385696_href.png Binary file Symbian3/PDK/Source/GUID-F127644A-6072-52CA-9B17-E9DDEA784BE0_d0e385696_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F13D4492-4E0C-5D7A-A30D-9E79F092CF72.dita --- a/Symbian3/PDK/Source/GUID-F13D4492-4E0C-5D7A-A30D-9E79F092CF72.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ - - - - - -listing -

      abld [ test ] listing [-k] -[-v] [ platform ] [ build ] -[ program ] [ source_basename ]

      -

      This command creates an assembler listing file for a particular source -file.

      -

      The listing file name has the format extension source_basename .lis. ABI-name.

      -

      The listing file is created in the build directory and then copied to the -directory containing the source file.

      -

      Assuming myproject is a project, -and cappui.cpp is the file to get the listing for, the -following command would produce an ARMI release assembly listing for that -file:

      abld listing armi urel myproject cappui

      This -would produce an output file cappui.lis.armi.

      - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F149726A-CC79-42A1-8A25-E15AC14ABE9A.dita --- a/Symbian3/PDK/Source/GUID-F149726A-CC79-42A1-8A25-E15AC14ABE9A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F149726A-CC79-42A1-8A25-E15AC14ABE9A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ items that the user can adjust. Setting lists are displayed in the main pane.

      Setting list - +

      A setting item can be adjusted by selecting it in the same way as selection list items are selected in general; that is, by pressing the Selection key, @@ -67,19 +67,19 @@ Pop-up setting - + Multi-selection setting - + Text setting - + Slider setting - +

      By default, in a setting editor, the keypad functions are as follows:

      Default key events diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F14A2252-7D7B-5631-9796-3C9AC54014E7.dita --- a/Symbian3/PDK/Source/GUID-F14A2252-7D7B-5631-9796-3C9AC54014E7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F14A2252-7D7B-5631-9796-3C9AC54014E7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -33,7 +33,7 @@ your client application. </p> <codeblock id="GUID-EED135A5-C141-5525-9C0C-DCF318040C46" xml:space="preserve">IMPORT_C void RequestL (CMsvSearchSortQuery* aQuery, TBool aMarkQuery, TRequestStatus& aQueryStatus, TInt aIterator=0)</codeblock> <p><b>Unmarking</b> </p> <p>To unmark a query ID, use the CMsvSearchSortOperation::UnmarkQuery() function in your client application. </p> <codeblock id="GUID-1C27E207-33F0-5F64-81FC-C50BF257BCB7" xml:space="preserve">IMPORT_C TInt UnmarkQuery (const TInt aQueryId )</codeblock> <fig id="GUID-7D09EFAE-67B3-5142-A6EF-F9D86E39414F"> <title> Repetitive search request process - +
      Procedure
      1. To get a query ID, complete diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita --- a/Symbian3/PDK/Source/GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F15B9BDF-EDF8-5684-A0FC-C0A08F9C1F22.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,116 +9,91 @@ --> -linkedlist: -Using the Linked List classes -

        The following examples -show the use of the linked list classes:

          +linkedlist: Using the Linked List classes +

          The following +examples show the use of the linked list classes:

          • Singly linked list example

          • Doubly linked list example

          • Delta queue example

          -
          Singly linked -list example

          This example application demonstrates the use of singly -linked lists. The templated TSglQue class is used to create -a singly linked list.

          Download

          Click on the following -link to download the example: sgllist.zip

          Click: browse to view the example.

          Description

          The -example creates a singly linked list of objects of the TDigit class. -This list represents a long number. An object of class CLongNumber owns -the list. The user can edit this list using the functions defined in the CLongNumber class. -The following edit operations are possible:

            -
          • Insert an object of -the TDigit class at the start of the singly linked list

          • -
          • Insert an object of -the TDigit class at the end of the singly linked list

          • -
          • Remove an object of -the TDigit class from the end of the singly linked list

          • -

          The user can perform any of these operations by pressing keys specified -in the menu. CLongNumber is an active object class and handles -the key press events in the CLongNumber::RunL() function.The CLongNumber::ReadFunc() function -displays a menu and waits for an asynchronous key press event.

          An -object of the templated TSglQueIter class is used to traverse -this linked list. The sum of all digits of the number represented by the linked -list is displayed to the user.

          An object of the CAdder class -is used to traverse the CLongNumber::iNumber list and print -the sum of all digits of the number represented by this list. The CAdder::Add() function -gets this sum.

          Related APIs

            +
            Singly +linked list example

            This example application demonstrates +the use of singly linked lists. The templated TSglQue class is used to create a singly linked list.

            Download

            Click on the following link to download the example: sgllist.zip

            Click: browse to view the example.

            Description

            The example creates a singly linked list of objects of the TDigit class. This list represents a long number. An object +of class CLongNumber owns the list. The user can +edit this list using the functions defined in the CLongNumber class. The following edit operations are possible:

              +
            • Insert an object +of the TDigit class at the start of the singly linked +list

            • +
            • Insert an object +of the TDigit class at the end of the singly linked +list

            • +
            • Remove an object +of the TDigit class from the end of the singly linked +list

            • +

            The user can perform any of these operations by pressing +keys specified in the menu. CLongNumber is an active +object class and handles the key press events in the CLongNumber::RunL() function.The CLongNumber::ReadFunc() function displays +a menu and waits for an asynchronous key press event.

            An object +of the templated TSglQueIter class is used to traverse +this linked list. The sum of all digits of the number represented +by the linked list is displayed to the user.

            An object of +the CAdder class is used to traverse the CLongNumber::iNumber list and print the sum of all digits +of the number represented by this list. The CAdder::Add() function gets this sum.

            Related APIs

            • CAdder

            • CLongNumber

            • TDigit

            • TSglQueIter

            • -

            Design and implementation

            Figure 1 shows the classes -in the example.

            - Figure 1. Classes in the singly linked list example - - +

          Design and implementation

          Figure 1 shows the +classes in the example.

          + Figure 1. Classes in the singly linked list example + +

          Class summary

          • TSglQue

          • TSglQueIter

          • -

          Build

          The -Symbian build process describes how to build this example.

          For -the emulator, the example builds an executable called sgllist.exe in -the epoc32\release\winscw\<udeb or urel>\ folder.

          See -also:

          Using -Singly Linked Lists

          -
          Doubly linked -list example

          This example application demonstrates the use of doubly -linked lists. The templated TDblQue class is used create -a doubly linked list.

          Download

          Click on the following -link to download the example: dbllist.zip

          Click: browse to view the example code

          Description

          The -example creates a doubly linked list of objects of the TLetter class. -This list represents a character string. An object of class CMyStringReverse owns -this string. The user can edit this string using the functions defined in -the CMyStringReverse class. The following edit operations -are possible:

            -
          • Insert a character at -the start of the list

          • -
          • Insert a character at -the end of the list

          • -

          The user can perform either of these operations by pressing keys -specified in the menu. CMyStringReverse is an active object -class and handles key press events in the CMyStringReverse::RunL() function. -The CMyStringReverse::ReadFunc() function displays a menu -and waits for an asynchronous key press event.

          The CMyStringReverse class -has a doubly linked list iterator, iIteratorString. The iIteratorString object -iterates through the list iString from start to end to print -the string reversed.

          Design and implementation

          Figure -2 shows the classes in the example.

          +

        Build

        For the emulator, the +example builds an executable called sgllist.exe in the epoc32\release\winscw\<udeb or urel>\ folder.

        See also:

        Using Singly Linked +Lists

        +
        Doubly +linked list example

        This example application demonstrates +the use of doubly linked lists. The templated TDblQue class is used create a doubly linked list.

        Download

        Click on the following link to download the example: dbllist.zip

        Click: browse to view the example code

        Description

        The example creates a doubly linked list of objects of the TLetter class. This list represents a character string. +An object of class CMyStringReverse owns this string. +The user can edit this string using the functions defined in the CMyStringReverse class. The following edit operations are +possible:

          +
        • Insert a character +at the start of the list

        • +
        • Insert a character +at the end of the list

        • +

        The user can perform either of these operations by pressing +keys specified in the menu. CMyStringReverse is an +active object class and handles key press events in the CMyStringReverse::RunL() function. The CMyStringReverse::ReadFunc() function +displays a menu and waits for an asynchronous key press event.

        The CMyStringReverse class has a doubly linked +list iterator, iIteratorString. The iIteratorString object iterates through the list iString from start +to end to print the string reversed.

        Design and implementation

        Figure 2 shows the classes in the example.

        Figure 2. Classes in the doubly linked list example - +

        Class summary

          -
        • TDblQue - A templated class that provides the behaviour -for managing a doubly linked list.

        • -

        Build

        The -Symbian build process describes how to build this example.

        For -the emulator, the example builds an executable called dbllist.exe in -the epoc32\release\winscw\<udeb or urel>\ folder.

        See -also

        Using -Doubly Linked Lists

        Example code

        -
        Delta queue -example

        This example application demonstrates the use of the delta -queue. The templated TDeltaQue class is used create a delta -queue.

        Download

        Click on the following link to download -the example: deltaque.zip

        Click: browse to view the example code.

        Description

        The -example creates an object of the CTimerEntry class. This -is a CTimer derived class. An object of this class generates -timer events by using the CTimer::After() function. The -data member of this class, iQueue is a delta list. The offset -value of each node in this list is the tick count after each timer event. -The CTimerEntry::Arbitrator() function decides the action -to be performed for each event generated by the timer. It either adds tick -counts to the list or removes elements from the list based on the state of -the queue.

        Related APIs

          +
        • TDblQue - A templated class that provides +the behaviour for managing a doubly linked list.

        • +

        Build

        For the emulator, the example builds +an executable called dbllist.exe in the epoc32\release\winscw\<udeb or urel>\ folder.

        See also

        Using Doubly Linked +Lists

        Example code

        +
        Delta +queue example

        This example application demonstrates the +use of the delta queue. The templated TDeltaQue class is used create a delta queue.

        Download

        Click on the following link to download the example: deltaque.zip

        Click: browse to view the example code.

        Description

        The example creates an object of the CTimerEntry class. This is a CTimer derived class. An object +of this class generates timer events by using the CTimer::After() function. The data member of this class, iQueue is a delta list. The offset value of each node in this list is the +tick count after each timer event. The CTimerEntry::Arbitrator() function decides the action to be performed for each event generated +by the timer. It either adds tick counts to the list or removes elements +from the list based on the state of the queue.

        Related APIs

        • CTimer - Base class for a timer active object.

        • CTimer::After()

        • -

        Design and implementation

        Figure 3 shows the classes -of the example.

        +

        Design and implementation

        Figure 3 shows the +classes of the example.

        Figure 3. Classes of the delta queue example - +

        Class summary

        • TDeltaQue

        • CTimer - Base class for a timer active object.

        • -

        Build

        The -Symbian build process describes how to build this example.

        For -the emulator, the example builds an executable called deltaque.exe in -the epoc32\release\winscw\<udeb or urel>\ folder.

        +

        Build

        For the emulator, the example builds +an executable called deltaque.exe in the epoc32\release\winscw\<udeb or urel>\ folder.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F15D2D1A-FA45-5665-9507-1EC7ECB301BF.dita --- a/Symbian3/PDK/Source/GUID-F15D2D1A-FA45-5665-9507-1EC7ECB301BF.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F15D2D1A-FA45-5665-9507-1EC7ECB301BF.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Policy Check RequestsThis section describes how the client application requests are authorised by the User Prompt Service.

      The network user prompt service framework enables the developers to invoke the user prompt in two ways.

      1. Using a TNoBearer request

      2. Using TPolicyCheckRequest

      Piggy-back Request With TNoBearer

      The piggy back using TNoBearer is used when an application attempts to write data into a socket for the first time without an existing bearer. The Piggy back request using TNoBearer method is recommended to be used by IP networking processes but can be used by other frameworks. This method is used when the TCP/IP stack calls a NoBearer() function or when a control provider (IP SCPR) sends a TNoBearer to the MCPR. The MCPR retrieves the attributes of the client from the UPS access point configuration extension, which is created by the node and the MCPR prior to a TNoBearer.

      UPS Access Point Configuration Extension

      The UPS access point configuration extension is used to provide the information necessary to send the UPS prompt request to the MCPR. The TNoBearer message does not contain enough attributes for the MCPR to forward the request to the UPS server, so the UPS access point configuration extension populates the required field in the TNoBearer message. The UPS access point configuration extension is created in either of the following situations :

      • TCP/IP stack calls CTransportFlowShim::NoBearer()

      • IP SCPR receives a CConection::Start()

      The extension contains the details of the client which originated the above calls. The extension contains the details such as process id, thread id, result of the platform security check, destination address and a Boolean flag specifying if a particular process needs to be authenticated by UPS server.

      Authorisation Request With - TPolicyCheckRequest

      TPolicyCheckRequest is used when an application attempts to write data into a socket with an existing bearer. When the application must be authenticated by the user, the framework implementers pass the user prompts request to the control providers. The node passes the client side request through a TPolicyCheckRequest. This mechanism is implemented in the core framework and is available to all the framework implementers. The mechanism requires TPolicyCheckRequest message to be sent from the node which requires UPS authorisation to its MCPR through an intermediate clients. A TPolicyCheckResponse is sent in the opposite direction once the response is received from the UPS server.

      TPolicyCheckRequest contains client information such as the process id, the result of platform security check and, when available, the destination address field .

      \ No newline at end of file + TPolicyCheckRequest

      TPolicyCheckRequest is used when an application attempts to write data into a socket with an existing bearer. When the application must be authenticated by the user, the framework implementers pass the user prompts request to the control providers. The node passes the client side request through a TPolicyCheckRequest. This mechanism is implemented in the core framework and is available to all the framework implementers. The mechanism requires TPolicyCheckRequest message to be sent from the node which requires UPS authorisation to its MCPR through an intermediate clients. A TPolicyCheckResponse is sent in the opposite direction once the response is received from the UPS server.

      TPolicyCheckRequest contains client information such as the process id, the result of platform security check and, when available, the destination address field .

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F161C184-2016-4331-A57C-78C753453EFE_d0e101332_href.png Binary file Symbian3/PDK/Source/GUID-F161C184-2016-4331-A57C-78C753453EFE_d0e101332_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F161C184-2016-4331-A57C-78C753453EFE_d0e79732_href.png Binary file Symbian3/PDK/Source/GUID-F161C184-2016-4331-A57C-78C753453EFE_d0e79732_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F161C184-2016-4331-A57C-78C753453EFE_d0e83930_href.png Binary file Symbian3/PDK/Source/GUID-F161C184-2016-4331-A57C-78C753453EFE_d0e83930_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F161C184-2016-4331-A57C-78C753453EFE_d0e86411_href.png Binary file Symbian3/PDK/Source/GUID-F161C184-2016-4331-A57C-78C753453EFE_d0e86411_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F161C184-2016-4331-A57C-78C753453EFE_d0e90609_href.png Binary file Symbian3/PDK/Source/GUID-F161C184-2016-4331-A57C-78C753453EFE_d0e90609_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F161C184-2016-4331-A57C-78C753453EFE_d0e92147_href.png Binary file Symbian3/PDK/Source/GUID-F161C184-2016-4331-A57C-78C753453EFE_d0e92147_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F161C184-2016-4331-A57C-78C753453EFE_d0e96345_href.png Binary file Symbian3/PDK/Source/GUID-F161C184-2016-4331-A57C-78C753453EFE_d0e96345_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F161C184-2016-4331-A57C-78C753453EFE_d0e97253_href.png Binary file Symbian3/PDK/Source/GUID-F161C184-2016-4331-A57C-78C753453EFE_d0e97253_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F18A6C91-136D-450E-90F0-7C2B9263777C_d0e3021_href.png Binary file Symbian3/PDK/Source/GUID-F18A6C91-136D-450E-90F0-7C2B9263777C_d0e3021_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F18A6C91-136D-450E-90F0-7C2B9263777C_d0e3031_href.png Binary file Symbian3/PDK/Source/GUID-F18A6C91-136D-450E-90F0-7C2B9263777C_d0e3031_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F18AA5AC-80C6-51B2-8D15-61C59D877520_d0e602735_href.jpg Binary file Symbian3/PDK/Source/GUID-F18AA5AC-80C6-51B2-8D15-61C59D877520_d0e602735_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F18AA5AC-80C6-51B2-8D15-61C59D877520_d0e630629_href.jpg Binary file Symbian3/PDK/Source/GUID-F18AA5AC-80C6-51B2-8D15-61C59D877520_d0e630629_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F1CC06C0-0D3A-4BBC-97E1-E52D2856D7A7.dita --- a/Symbian3/PDK/Source/GUID-F1CC06C0-0D3A-4BBC-97E1-E52D2856D7A7.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F1CC06C0-0D3A-4BBC-97E1-E52D2856D7A7.dita Fri Jul 16 17:23:46 2010 +0100 @@ -15,7 +15,7 @@ Find pane is situated in the bottom part of the main pane.

      Find pane within a selection list of names in Phonebook - +

      The standard functionality of the Find pane is as follows:

        diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F1DD8800-389C-5A88-A5EB-138359EF7DC5.dita --- a/Symbian3/PDK/Source/GUID-F1DD8800-389C-5A88-A5EB-138359EF7DC5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F1DD8800-389C-5A88-A5EB-138359EF7DC5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,5 +11,5 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> MTP Framework Overview

        The Symbian MTP implementation defines a transport layer, an MTP layer and a storage layer. The MTP Framework is the MTP layer, which is the core component of the implementation. It manages and works with data providers and transports for MTP requests and operations.

        Required background

        You must have a general understanding of the MTP enhanced specification and the Symbian implementation of the Media Transfer Protocol to use the MTP Framework component.

        Architecture

        The following diagram shows the Symbian MTP implementation including the MTP Framework, the MTP Data Providers and the MTP Transports.

        Symbian MTP Architecture -

        MTP Framework performs the following functions:

        • Provides a standard Symbian client/server interface to start and stop MTP services with a transport protocol binding, for example MTP USB Transport.

        • Manages MTP transport connections.

        • Maintains the core MTP protocol connection, session and transaction states.

        • Manages data providers which determine the MTP media data formats supported by a device.

        • Routes MTP operation requests and event datasets to data providers for processing.

        • Efficiently manages the flow of potentially very large volumes of media object data, for example files over 4GB.

        • Maintains a set of MTP data object metadata storages that collectively manage the set of MTP data objects on the device. These objects are enumerated to a connected MTP initiator.

        • Provides the MTP Data Provider API for device creators to extend the data providers.

        APIs

        The MTP Framework exports the following key APIs:

        MTP Client API (mtpclient.dll)

      API Description

      RMTPClient

      The MTP client interface for starting and stopping MTP services, and for specifying the transport protocol.

      MTP Data Provider API (mtpdataproviderapi.dll)

      API Description

      CMTPDataProviderPlugin

      The data provider ECom plug-in interface. Each ECOM plug-in data provider must be derived from this class.

      CMTPMetaData

      The MTP meta-data base class.

      CMTPObjectMetaData

      Represents MTP object meta-data.

      CMTPStorageMetaData

      Represents MTP storage meta-data.

      MTP Framework Library (mtpframework.dll)

      API Description

      MMTPDataCodeGenerator

      Provides functions to generate a set of unique datacodes for a data provider service. For more information about datacode generation, refer to Creating an MTP Data Provider Plug-in.

      MMTPDataProviderFramework

      Can be used to get a reference of MMTPDataCodeGenerator.

      MTP Data Types Library

      The MTP Data Types Library implements the MTP standard data types and dataset. It also allows device creators to write extended data types. For the MTP data types and their relationships, refer to the MTP Data Types Overview.

    Typical uses

    Device creators can use the MTP Framework in the following ways:

    • To write MTP client applications which start and stop an MTP service.

    • To create additional data providers to support various data types.

    • To configure the Framework to support Picture Transfer Protocol (PTP) or PictBridge data in addition to MTP data.

    Media Transfer Protocol and Symbian +

    MTP Framework performs the following functions:

    • Provides a standard Symbian client/server interface to start and stop MTP services with a transport protocol binding, for example MTP USB Transport.

    • Manages MTP transport connections.

    • Maintains the core MTP protocol connection, session and transaction states.

    • Manages data providers which determine the MTP media data formats supported by a device.

    • Routes MTP operation requests and event datasets to data providers for processing.

    • Efficiently manages the flow of potentially very large volumes of media object data, for example files over 4GB.

    • Maintains a set of MTP data object metadata storages that collectively manage the set of MTP data objects on the device. These objects are enumerated to a connected MTP initiator.

    • Provides the MTP Data Provider API for device creators to extend the data providers.

    APIs

    The MTP Framework exports the following key APIs:

    MTP Client API (mtpclient.dll)

    API Description

    RMTPClient

    The MTP client interface for starting and stopping MTP services, and for specifying the transport protocol.

    MTP Data Provider API (mtpdataproviderapi.dll)

    API Description

    CMTPDataProviderPlugin

    The data provider ECom plug-in interface. Each ECOM plug-in data provider must be derived from this class.

    CMTPMetaData

    The MTP meta-data base class.

    CMTPObjectMetaData

    Represents MTP object meta-data.

    CMTPStorageMetaData

    Represents MTP storage meta-data.

    MTP Framework Library (mtpframework.dll)

    API Description

    MMTPDataCodeGenerator

    Provides functions to generate a set of unique datacodes for a data provider service. For more information about datacode generation, refer to Creating an MTP Data Provider Plug-in.

    MMTPDataProviderFramework

    Can be used to get a reference of MMTPDataCodeGenerator.

    MTP Data Types Library

    The MTP Data Types Library implements the MTP standard data types and dataset. It also allows device creators to write extended data types. For the MTP data types and their relationships, refer to the MTP Data Types Overview.

    Typical uses

    Device creators can use the MTP Framework in the following ways:

    • To write MTP client applications which start and stop an MTP service.

    • To create additional data providers to support various data types.

    • To configure the Framework to support Picture Transfer Protocol (PTP) or PictBridge data in addition to MTP data.

    Media Transfer Protocol and Symbian Implementation MTP Data Providers Overview MTP Transports Overview \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F1E8B6F9-AAEA-5A55-B838-36C74FC8B4BA_d0e373132_href.png Binary file Symbian3/PDK/Source/GUID-F1E8B6F9-AAEA-5A55-B838-36C74FC8B4BA_d0e373132_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F1E8B6F9-AAEA-5A55-B838-36C74FC8B4BA_d0e378980_href.png Binary file Symbian3/PDK/Source/GUID-F1E8B6F9-AAEA-5A55-B838-36C74FC8B4BA_d0e378980_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F1EFB7C3-BC06-4822-BA37-06B02BECE80A_d0e102540_href.png Binary file Symbian3/PDK/Source/GUID-F1EFB7C3-BC06-4822-BA37-06B02BECE80A_d0e102540_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F1EFB7C3-BC06-4822-BA37-06B02BECE80A_d0e106560_href.png Binary file Symbian3/PDK/Source/GUID-F1EFB7C3-BC06-4822-BA37-06B02BECE80A_d0e106560_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F21A1ABE-4844-54E2-83E0-4AD25E867A72.dita --- a/Symbian3/PDK/Source/GUID-F21A1ABE-4844-54E2-83E0-4AD25E867A72.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ - - - - - -ABIv1 -to ABIv2 toolchain changes -

    The principal task of Symbian platform build tools such as abld/makmake is -to read the specified project (.mmp) files and then call the appropriate compiler -and linker with the necessary inputs and option settings. The binaries output -from commercial compiler and linkers, such as ARM's RVCT and GNU GCC, cannot -however be directly used by Symbian platform. Symbian platform requires binaries -to be in Symbian-specific format, known as the E32Image format.

    -

    In order to create binaries in this format, the toolchain must perform -additional steps on the compiler/linker output. How these steps are performed -is considerably different between builds for the ABIv1 and ABIv2 targets. -Essentially, a number of small tools used for ABIv1 targets, are replaced -for ABIv2 targets by a single tool called the post-linker (file name elf2e32.exe). -This redesign is intended to simplify the work needed to introduce support -for a new ABIv2 compatible compiler into the toolchain.

    -

    The following diagram shows the steps (somewhat simplified) performed by -the toolchain for the creation of a DLL for ABIv1 and v2 respectively:

    - - ABIv1 and v2 toolchains compared - - -

    The elf2e32 tool replaces the ABIv1 toolchain tools def2dll.bat, elf2inf.pl, makedef.pl and elftran.exe.

    -
    .dso files

    In the ABIv2 toolchain, .lib files -are replaced by .dso files. These files are used in similar -situations to .lib files. However, the format of these -two files is completely different. A .lib file is an -archive file created from stubs generated for each of the exported symbols. -A .dso file is an ELF object similar to other objects -created with the compiler. It has all the associated sections required for -an ELF object, such as the symbol table, string table, etc. The .dso file -also has the information required for the linker to link to the correct ordinals -to the DLL. .lib files cannot be used by the ABIv2 toolchain, -and .dso files cannot be used by the ABIv1 toolchain.

    -
    Linked objects

    The compiler toolchain that supports -ABIv2 produces linked objects that are different to those produced by the -ABIv1 toolchain. The linked objects produced are both ELF format, but they -have extra information that can be used by a postlinker to create platform -specific binaries. As the ELF produced by ABIv2 has more information, it is -not necessary to perform the sort of manipulations performed by the many small -tools in the ABIv1 toolchain. As the linked objects differ significantly in -their content, it is not possible to mix ABIv1 and ABIv2 toolchain objects -in the same build tree.

    -
    E32Image format

    The final E32image produced by -the ABIv2 toolchain is in the same format as that of the ABIv1 toolchain. -However, a byte by byte comparison of the same E32image file in ABIv1 and -ABIv2 is not possible. The layout of the code produced by the linker is different, -although the code is still binary compatible.

    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F220E2B7-DE9B-5230-A396-15853369C176_d0e227215_href.png Binary file Symbian3/PDK/Source/GUID-F220E2B7-DE9B-5230-A396-15853369C176_d0e227215_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F220E2B7-DE9B-5230-A396-15853369C176_d0e233208_href.png Binary file Symbian3/PDK/Source/GUID-F220E2B7-DE9B-5230-A396-15853369C176_d0e233208_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F22B8035-CD08-4181-B03A-759E92CA967B.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-F22B8035-CD08-4181-B03A-759E92CA967B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,16 @@ + + + + + +Organizer Guide +

    The Organizer package is a collection of various components related +to Personal Information Management (PIM). Organizer package includes +Calendar, Clock, Alarm, Notepad and Search applications.

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F23BB1F1-CF90-597F-8410-34AB8B567501.dita --- a/Symbian3/PDK/Source/GUID-F23BB1F1-CF90-597F-8410-34AB8B567501.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F23BB1F1-CF90-597F-8410-34AB8B567501.dita Fri Jul 16 17:23:46 2010 +0100 @@ -35,7 +35,7 @@ such as Telephony, SyncML and Messaging.

    PIM Subsystem components are part of the Application Services and Generic Middleware layers - +
    Application Engines

    Application Engines provide data storage and manipulation diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F2487AEE-966E-472E-9162-E0400C9A8234.dita --- a/Symbian3/PDK/Source/GUID-F2487AEE-966E-472E-9162-E0400C9A8234.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F2487AEE-966E-472E-9162-E0400C9A8234.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,8 +11,8 @@ PUBLIC "-//OASIS//DTD DITA Task//EN" "task.dtd"> Converting from UTC to local time in the system time zone - -To convert from + +To convert from UTC to the local time of the system time zone, use CTzConverter::ConvertToLocalTime(), without specifying a time zone ID to convert to:

    TInt errCode = myConverter->ConvertToLocalTime( myTime );

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F25C17AC-BA88-4965-BAE8-AEF0E2EA66EC.dita --- a/Symbian3/PDK/Source/GUID-F25C17AC-BA88-4965-BAE8-AEF0E2EA66EC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F25C17AC-BA88-4965-BAE8-AEF0E2EA66EC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,43 +1,41 @@ - - - - -Zo<?Pub Caret?>oming actions -Mobile device users must be able to zoom in and out consistently -within applications on a mobile device. However the zooming actions -may differ from one device model to another. - - - - -

    The product features and form factor of a mobile device determine -which zooming actions application developers should make available -on it:

    -
      -
    • If the device has an ITU-T keypad, the asterisk (*) key zooms -in and the hash mark (#) key zooms out. This functionality is not -available in editors or other states where the keys play another role. -In these cases, the zoom functions, if applicable, must be available -in the Options menu.

    • -
    • If the device has a QWERTY or half-QWERTY keyboard, use the -two topmost keys at the top left of the keyboard for zooming in and -out. For example, on a Latin keyboard, use the Q key to zoom in and -the A key to zoom out. Some products might have zooming symbols printed -on the keyboard to help users find the zooming features. Again, the -functions are not available in editors.

    • -
    • On touch devices, users can use touch stripes to zoom. Finger -movement along the stripe controls zooming. Applications may support -different number of zoom levels. It should be possible to zoom across -the full range with one swipe.

    • -
    • On touch devices with multiple touch support, users can use -pinch zoom. See Multiple touch section for more details on pinch in and pinch out.

    • -
    • On touch devices, some applications may support double-tapping -zoom. A double tap can toggle between zoomed and normal view, but -this depends on the application.

    • -
    -
    -
    - + + + + + +Zooming actionsMobile device users must be able to zoom in and out consistently +within applications on a mobile device. However the zooming actions +may differ from one device model to another. +

    The product features and form factor of a mobile device determine +which zooming actions application developers should make available +on it:

    +
      +
    • If the device has an ITU-T keypad, the asterisk (*) key zooms +in and the hash mark (#) key zooms out. This functionality is not +available in editors or other states where the keys play another role. +In these cases, the zoom functions, if applicable, must be available +in the Options menu.

    • +
    • If the device has a QWERTY or half-QWERTY keyboard, use the +two topmost keys at the top left of the keyboard for zooming in and +out. For example, on a Latin keyboard, use the Q key to zoom in and +the A key to zoom out. Some products might have zooming symbols printed +on the keyboard to help users find the zooming features. Again, the +functions are not available in editors.

    • +
    • On touch devices, users can use touch stripes to zoom. Finger +movement along the stripe controls zooming. Applications may support +different number of zoom levels. It should be possible to zoom across +the full range with one swipe.

    • +
    • On touch devices with multiple touch support, users can use +pinch zoom. See Multiple touch section for more details on pinch in and pinch +out.

    • +
    • On touch devices, some applications may support double-tapping +zoom. A double tap can toggle between zoomed and normal view, but +this depends on the application.

    • +
    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F263A3D1-EA96-5D4B-B8C9-4B8471082DBA.dita --- a/Symbian3/PDK/Source/GUID-F263A3D1-EA96-5D4B-B8C9-4B8471082DBA.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F263A3D1-EA96-5D4B-B8C9-4B8471082DBA.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,6 +9,6 @@ --> -MVS GUI layout

    The MVS GUI is shown below.

    This example shows the GUI while an audio file is playing, and includes the tool bar (at the top), the information pane (in the middle), and the status bar (at the bottom).

    Tool bar

    The tool bar buttons let you control the currently loaded media file.

    From left to right, the buttons let you:

    • play, pause, stop and record a file. These buttons have the standard symbols for AV devices.

    • set the number of repeats for the file (curved arrow)

    • set the playback sound volume (megaphone)

    • set the stereo balance (arrows pointing left and right)

    • fast reverse the file (standard symbol)

    • fast forward the file (standard symbol).

    Information pane

    The information pane displays details of the current media file:

    • The state of the file: AUDIO or VIDEO, PLAYING, RECORDING, PAUSED or STOPPED

    • The sound volume as a percentage of the maximum

    • The sound balance: Left, Right or Centre

    • The number of times the file contents are played

    • The audio priority

    • The length of the clip in milliseconds

    • The bit rate (per second).

    When the a video file is loaded, the pane also contains:

    • The frame size

    • The frame rate.

    Status bar

    The status bar displays the current state of the GUI.

    +<concept xml:lang="en" id="GUID-F263A3D1-EA96-5D4B-B8C9-4B8471082DBA"><title>MVS GUI layout

    The MVS GUI is shown below.

    This example shows the GUI while an audio file is playing, and includes the tool bar (at the top), the information pane (in the middle), and the status bar (at the bottom).

    Tool bar

    The tool bar buttons let you control the currently loaded media file.

    From left to right, the buttons let you:

    • play, pause, stop and record a file. These buttons have the standard symbols for AV devices.

    • set the number of repeats for the file (curved arrow)

    • set the playback sound volume (megaphone)

    • set the stereo balance (arrows pointing left and right)

    • fast reverse the file (standard symbol)

    • fast forward the file (standard symbol).

    Information pane

    The information pane displays details of the current media file:

    • The state of the file: AUDIO or VIDEO, PLAYING, RECORDING, PAUSED or STOPPED

    • The sound volume as a percentage of the maximum

    • The sound balance: Left, Right or Centre

    • The number of times the file contents are played

    • The audio priority

    • The length of the clip in milliseconds

    • The bit rate (per second).

    When the a video file is loaded, the pane also contains:

    • The frame size

    • The frame rate.

    Status bar

    The status bar displays the current state of the GUI.

    Status bar -

    From left to right, the boxes show:

    • The path and name of the file (if any) being recorded or played.

    • What the GUI is doing; for example: Recording, Opened, Playing or Idle.

    • The elapsed time of clip being recorded or played, in hours, minutes, seconds and hundredths of a second (centiseconds): hh:mm:ss:cs.

    See Also

    Introduction to the MVS

    Recording media files

    Playing media files

    Editing media files

    Configuring and clearing files

    \ No newline at end of file +

    From left to right, the boxes show:

    • The path and name of the file (if any) being recorded or played.

    • What the GUI is doing; for example: Recording, Opened, Playing or Idle.

    • The elapsed time of clip being recorded or played, in hours, minutes, seconds and hundredths of a second (centiseconds): hh:mm:ss:cs.

    See Also

    Introduction to the MVS

    Recording media files

    Playing media files

    Editing media files

    Configuring and clearing files

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F2877A25-1FBC-5C7C-9542-9EDED2748AD3_d0e549917_href.png Binary file Symbian3/PDK/Source/GUID-F2877A25-1FBC-5C7C-9542-9EDED2748AD3_d0e549917_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F2877A25-1FBC-5C7C-9542-9EDED2748AD3_d0e557373_href.png Binary file Symbian3/PDK/Source/GUID-F2877A25-1FBC-5C7C-9542-9EDED2748AD3_d0e557373_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F2D86E40-279A-5B48-B91F-922803FEF5DE.dita --- a/Symbian3/PDK/Source/GUID-F2D86E40-279A-5B48-B91F-922803FEF5DE.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F2D86E40-279A-5B48-B91F-922803FEF5DE.dita Fri Jul 16 17:23:46 2010 +0100 @@ -59,7 +59,7 @@ support for 7, 8, and 16-bit text messages, and message concatenation.

    The following figure shows the SMS architecture:

    SMS MTM architecture - +

    SMS Client MTM

    The SMS Client MTM implements the standard set of Client MTM APIs described in Client @@ -162,7 +162,7 @@ as type of operation, and number of messages processed. Progress information is provided by TSmsProgress.

    APIs - +

    The following are the important classes for SMS Client MTM:

    diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F2D96A30-7264-5CAF-9CC7-8AF05EF978E1_d0e147981_href.png Binary file Symbian3/PDK/Source/GUID-F2D96A30-7264-5CAF-9CC7-8AF05EF978E1_d0e147981_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F2D96A30-7264-5CAF-9CC7-8AF05EF978E1_d0e150222_href.png Binary file Symbian3/PDK/Source/GUID-F2D96A30-7264-5CAF-9CC7-8AF05EF978E1_d0e150222_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F2E8CB4B-C1BB-577D-B018-7FF231B70D8C_d0e236815_href.png Binary file Symbian3/PDK/Source/GUID-F2E8CB4B-C1BB-577D-B018-7FF231B70D8C_d0e236815_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F2E8CB4B-C1BB-577D-B018-7FF231B70D8C_d0e242788_href.png Binary file Symbian3/PDK/Source/GUID-F2E8CB4B-C1BB-577D-B018-7FF231B70D8C_d0e242788_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F2F19F40-E87B-4FF2-ABE8-4E14AE728364_d0e95030_href.png Binary file Symbian3/PDK/Source/GUID-F2F19F40-E87B-4FF2-ABE8-4E14AE728364_d0e95030_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F2F19F40-E87B-4FF2-ABE8-4E14AE728364_d0e99228_href.png Binary file Symbian3/PDK/Source/GUID-F2F19F40-E87B-4FF2-ABE8-4E14AE728364_d0e99228_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F31EC49A-FE01-58B2-9CB5-4A3BBCCB7DA7_d0e227999_href.png Binary file Symbian3/PDK/Source/GUID-F31EC49A-FE01-58B2-9CB5-4A3BBCCB7DA7_d0e227999_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F31EC49A-FE01-58B2-9CB5-4A3BBCCB7DA7_d0e233998_href.png Binary file Symbian3/PDK/Source/GUID-F31EC49A-FE01-58B2-9CB5-4A3BBCCB7DA7_d0e233998_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F322F81A-40D3-5365-A437-73B60DD31D5E_d0e448716_href.png Binary file Symbian3/PDK/Source/GUID-F322F81A-40D3-5365-A437-73B60DD31D5E_d0e448716_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F322F81A-40D3-5365-A437-73B60DD31D5E_d0e454561_href.png Binary file Symbian3/PDK/Source/GUID-F322F81A-40D3-5365-A437-73B60DD31D5E_d0e454561_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F32E2F00-B68F-59B2-AABA-181E16354C86.dita --- a/Symbian3/PDK/Source/GUID-F32E2F00-B68F-59B2-AABA-181E16354C86.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F32E2F00-B68F-59B2-AABA-181E16354C86.dita Fri Jul 16 17:23:46 2010 +0100 @@ -35,7 +35,7 @@ on to the next control in the hierarchy.

    The sequence diagram below illustrates the Object Provider process for supplying an interface pointer from the run-time hierarchy.

    - +

    Object1 wishes to call a function on MInterface. It calls MopGetObject() on the nearest control in the run-time hierarchy. The Object Provider Framework identifies the Uid for Minterface and diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F342B002-0667-5D51-AE2D-3CF534D70B62_d0e315439_href.png Binary file Symbian3/PDK/Source/GUID-F342B002-0667-5D51-AE2D-3CF534D70B62_d0e315439_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F342B002-0667-5D51-AE2D-3CF534D70B62_d0e321429_href.png Binary file Symbian3/PDK/Source/GUID-F342B002-0667-5D51-AE2D-3CF534D70B62_d0e321429_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F35C5336-907C-5B2A-92C6-F8883D49996E.dita --- a/Symbian3/PDK/Source/GUID-F35C5336-907C-5B2A-92C6-F8883D49996E.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,107 +0,0 @@ - - - - - -How -to localise resources -

    Overview

    Symbian developers can localise a C++ -application by simply changing the resource file text associated with each -menu item, task bar or other control. Since changes to the text do not change -the symbol information in the generated header file, it is not necessary to -recompile the application to use the new file. Consequently, a resource file -may be generated for each language supported, and the actual resource used -is determined by the end-user at installation time.

    The examples quoted -in this page are taken from the code example Examples\ToolsAndUtilities\Localise, -which provides the Hello World application, localised for English and German.

    -
    Localisable strings

    Localisable strings should -not be defined within a resource file, but in separate files with the extension .rls. -An .rls file defines symbolic identifiers for strings, -to which the resource file refers when it needs the associated string.

    An -example from an .rls file is shown below:

    // Strings localised for UK -rls_string STRING_r_example_first_menu_name "Hello" -rls_string STRING_r_example_item0 "Item 0"

    The keyword rls_string appears -before each string definition, followed by a symbolic identifier, and then -the string itself in quotes. To localise the file for German, the same identifiers -would be used, but the strings would be translated, i.e.

    // Strings localised for German -rls_string STRING_r_example_first_menu_name "Hallo" -rls_string STRING_r_example_item0 "Eintrag 0"

    The resource -file itself would be the same, whatever the locale, as it would only refer -to strings through their symbolic names, e.g.

    MENU_TITLE - { - menu_pane=r_example_first_menu; - txt=STRING_r_example_first_menu_name; - }

    defines a menu title resource, with a title string defined -by STRING_r_example_first_menu_name (i.e. "Hello" in UK, -"Hallo" in German).

    -
    Building localised resource files

    You can define -in a project definition (.mmp) file the locales that -the project supports. Given appropriate resource source and .rls files, -the build process then builds a separate compiled resource file for each supported -locale.

    The process in detail can be broken into three steps:

      -
    • determine on a symbolic -identifier for every supported locale

    • -
    • specify in the project -definition file the supported locales

    • -
    • #include the .rls files -for the supported locales in the resource source file

    • -

    These are discussed further below.

    Locale identifiers

    You -should decide on a symbolic identifier for every supported language. The symbol -should be of the form:

    LANGUAGE_ language-code

    where language-code should -be two characters long, but otherwise can be anything you like, as long as -each language in the resource file has a unique symbol.

    You are recommended -to use a standard two-digit number as defined by Symbian in an enumeration TLanguage in e32std.h, -which gives numeric values to the languages. For example, the value ELangGerman (German) -in TLanguage has the value 3, so you could use LANGUAGE_03 as -the symbol for German.

    Alternatively, you can use logical letters -for each language: e.g. US English might have the symbol LANGUAGE_US, -while French might have the symbol LANGUAGE_FR.

    Project -definition files

    For projects with localised resources, you must -use the lang statement in the .mmp file -to set the languages codes used. So, for the above example, in which the language -codes used are for German (03) and UK English (01), the lang statement -should read:

    lang 01 03

    When -the project is built, each resource file specified in the project file will -be compiled multiple times, once for each language-code specified. The language -codes are used to complete the extension of the built resource files: for -our example, two files would be built: project-name .r01 and project-name .r03.

    Resource source files

    The symbols can then used, -with conditional compilation statements, to specify which string definitions -should be compiled for each language. In the example code fragment below, -the file 01-strings.rls is assumed to have the strings -localised for UK English, and the file 03-strings.rls the -strings localised for German.

    // Conditional compile, depending on locale -#ifdef LANGUAGE_01 // if language code is for UK - #include "01-strings.rls" -#elif defined LANGUAGE_03 // if language code is for German - #include "03-strings.rls" -#endif -// end conditional compile -
      -
    • when built with the -code 01, the UK English strings in 01-strings.rls are -compiled into the resource file

    • -
    • when built with the -code 03, the German strings in 03-strings.rls are compiled -into the resource file

    • -
    -
    How programs load resource files

    The Uikon application -framework attempts to load the project's resource file when the application -starts up. If the resource file has the extension .rsc, -then this is loaded. Alternatively, the framework attempts to load the correct -resource file by comparing the system locale setting with the available resource -files: for example, in a German locale, the resource file with extension .r03 would -be loaded. Resource files that are explicitly loaded by programs, rather than -by the framework, can use the same stategy, by calling BalfUtils::NearestLanguageFile() to -find a resource file with the correct language extension.

    More typically -than installing all the resource files for all the available locales, you -would only want to select a single resource file for installation, based on -the system locale or user preference. The Symbian platform Installation System -enables this, as described in PKG -file format to support multilingual application installation.

    - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F389671B-FC30-561B-BF48-E597D0CB2D47-GENID-1-12-1-24-1-1-8-1-4-1-4-1-5-1-3-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-F389671B-FC30-561B-BF48-E597D0CB2D47-GENID-1-12-1-24-1-1-8-1-4-1-4-1-5-1-3-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,55 @@ + + + + + +Using +Secure Sockets : TutorialThis topic describes how to use secure sockets. + +Open a socket using +RSocket::Open() function and connect it with RSocket::Connect() function. + + +Create a secure socket by calling CSecureSocket::NewL() function with +the parameters as socket and secure protocol name. + + +To start the application acting as a client, use the CSecureSocket::StartClientHandshake() +function to initiate a handshake with the remote server. To start the application +acting as a server, use the CSecureSocket::StartServerHandshake() function. +The call completes with an error code, if the handshake fails. + + +Secure Sockets example

    In the following example +iSocket is a reference to the already opened and connected socket and KSSLProtocol +is the descriptor containing the name of a protocol, in this case TLS1.0. +The function should return a pointer to the CSecureSocket.

    +// Connect the socket server + User::LeaveIfError(iSocketServ.Connect()); +// Open the socket + User::LeaveIfError(iSocket.Open(iSocketServ, KAfInet, KSockStream, KProtocolInetTcp)); +//Connect the socket + connectInetAddr.SetAddress(KTestAddress); + connectInetAddr.SetPort(KSSLPort); //TLS port + + iSocket.Connect(connectInetAddr, iStatus); + + ... + + +// Construct the Tls socket + iTlsSocket = CSecureSocket::NewL(iSocket, KSSLProtocol()); + +// start the handshake + iTlsSocket->StartClientHandshake(iStatus); + +
    +

    Use CSecureSocket::Send() to send data over the socket. Use CSecureSocket::Recv() +and CSecureSocket::RecvOneOrMore() to receive data from the socket.

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F389671B-FC30-561B-BF48-E597D0CB2D47-GENID-1-12-1-24-1-1-8-1-5-1-4-1-5-1-3-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-F389671B-FC30-561B-BF48-E597D0CB2D47-GENID-1-12-1-24-1-1-8-1-5-1-4-1-5-1-3-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,55 @@ + + + + + +Using +Secure Sockets : TutorialThis topic describes how to use secure sockets. + +Open a socket using +RSocket::Open() function and connect it with RSocket::Connect() function. + + +Create a secure socket by calling CSecureSocket::NewL() function with +the parameters as socket and secure protocol name. + + +To start the application acting as a client, use the CSecureSocket::StartClientHandshake() +function to initiate a handshake with the remote server. To start the application +acting as a server, use the CSecureSocket::StartServerHandshake() function. +The call completes with an error code, if the handshake fails. + + +Secure Sockets example

    In the following example +iSocket is a reference to the already opened and connected socket and KSSLProtocol +is the descriptor containing the name of a protocol, in this case TLS1.0. +The function should return a pointer to the CSecureSocket.

    +// Connect the socket server + User::LeaveIfError(iSocketServ.Connect()); +// Open the socket + User::LeaveIfError(iSocket.Open(iSocketServ, KAfInet, KSockStream, KProtocolInetTcp)); +//Connect the socket + connectInetAddr.SetAddress(KTestAddress); + connectInetAddr.SetPort(KSSLPort); //TLS port + + iSocket.Connect(connectInetAddr, iStatus); + + ... + + +// Construct the Tls socket + iTlsSocket = CSecureSocket::NewL(iSocket, KSSLProtocol()); + +// start the handshake + iTlsSocket->StartClientHandshake(iStatus); + +
    +

    Use CSecureSocket::Send() to send data over the socket. Use CSecureSocket::Recv() +and CSecureSocket::RecvOneOrMore() to receive data from the socket.

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F389671B-FC30-561B-BF48-E597D0CB2D47-GENID-1-12-1-24-1-1-9-1-4-1-5-1-3-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-F389671B-FC30-561B-BF48-E597D0CB2D47-GENID-1-12-1-24-1-1-9-1-4-1-5-1-3-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,55 @@ + + + + + +Using +Secure Sockets : TutorialThis topic describes how to use secure sockets. + +Open a socket using +RSocket::Open() function and connect it with RSocket::Connect() function. + + +Create a secure socket by calling CSecureSocket::NewL() function with +the parameters as socket and secure protocol name. + + +To start the application acting as a client, use the CSecureSocket::StartClientHandshake() +function to initiate a handshake with the remote server. To start the application +acting as a server, use the CSecureSocket::StartServerHandshake() function. +The call completes with an error code, if the handshake fails. + + +Secure Sockets example

    In the following example +iSocket is a reference to the already opened and connected socket and KSSLProtocol +is the descriptor containing the name of a protocol, in this case TLS1.0. +The function should return a pointer to the CSecureSocket.

    +// Connect the socket server + User::LeaveIfError(iSocketServ.Connect()); +// Open the socket + User::LeaveIfError(iSocket.Open(iSocketServ, KAfInet, KSockStream, KProtocolInetTcp)); +//Connect the socket + connectInetAddr.SetAddress(KTestAddress); + connectInetAddr.SetPort(KSSLPort); //TLS port + + iSocket.Connect(connectInetAddr, iStatus); + + ... + + +// Construct the Tls socket + iTlsSocket = CSecureSocket::NewL(iSocket, KSSLProtocol()); + +// start the handshake + iTlsSocket->StartClientHandshake(iStatus); + +
    +

    Use CSecureSocket::Send() to send data over the socket. Use CSecureSocket::Recv() +and CSecureSocket::RecvOneOrMore() to receive data from the socket.

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F3913401-83F6-5A12-BCA8-ABA232C2BF3D-GENID-1-12-1-24-1-1-8-1-4-1-4-1-6-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-F3913401-83F6-5A12-BCA8-ABA232C2BF3D-GENID-1-12-1-24-1-1-8-1-4-1-4-1-6-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,20 @@ + + + + + +End-to-End +Sockets API Example +
    Description

    This +updated example is a Sockets reference implementation of an enterprise system +that includes mobile clients, a server-based database, and Web portals (PHP +and JSP implementations).

    +
    Download

    Click +on the following link to download the example: Symbian_OS_End-to-End_Sockets_API_Example.zip

    Click browse to view the example code.

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F3913401-83F6-5A12-BCA8-ABA232C2BF3D-GENID-1-12-1-24-1-1-8-1-5-1-4-1-6-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-F3913401-83F6-5A12-BCA8-ABA232C2BF3D-GENID-1-12-1-24-1-1-8-1-5-1-4-1-6-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,20 @@ + + + + + +End-to-End +Sockets API Example +
    Description

    This +updated example is a Sockets reference implementation of an enterprise system +that includes mobile clients, a server-based database, and Web portals (PHP +and JSP implementations).

    +
    Download

    Click +on the following link to download the example: Symbian_OS_End-to-End_Sockets_API_Example.zip

    Click browse to view the example code.

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F3913401-83F6-5A12-BCA8-ABA232C2BF3D-GENID-1-12-1-24-1-1-9-1-4-1-6-1-4-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-F3913401-83F6-5A12-BCA8-ABA232C2BF3D-GENID-1-12-1-24-1-1-9-1-4-1-6-1-4-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,20 @@ + + + + + +End-to-End +Sockets API Example +
    Description

    This +updated example is a Sockets reference implementation of an enterprise system +that includes mobile clients, a server-based database, and Web portals (PHP +and JSP implementations).

    +
    Download

    Click +on the following link to download the example: Symbian_OS_End-to-End_Sockets_API_Example.zip

    Click browse to view the example code.

    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F392355C-C499-555A-85B7-1DF40492E9B2_d0e321805_href.png Binary file Symbian3/PDK/Source/GUID-F392355C-C499-555A-85B7-1DF40492E9B2_d0e321805_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F392355C-C499-555A-85B7-1DF40492E9B2_d0e327791_href.png Binary file Symbian3/PDK/Source/GUID-F392355C-C499-555A-85B7-1DF40492E9B2_d0e327791_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F3EE1000-71A6-4D48-A30B-3D2357BF20FB.dita --- a/Symbian3/PDK/Source/GUID-F3EE1000-71A6-4D48-A30B-3D2357BF20FB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F3EE1000-71A6-4D48-A30B-3D2357BF20FB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -30,7 +30,7 @@ interface.

    Generic button used in a toolbar - +

    The Generic button API is used for creating buttons that are displayed as parts of container components, such as a toolbar. It is not used for creating diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F40BA7EA-AF7E-5BCF-96DD-9C4D8E947F0C.dita --- a/Symbian3/PDK/Source/GUID-F40BA7EA-AF7E-5BCF-96DD-9C4D8E947F0C.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F40BA7EA-AF7E-5BCF-96DD-9C4D8E947F0C.dita Fri Jul 16 17:23:46 2010 +0100 @@ -67,7 +67,7 @@ TBool aFinished );

    A snapshot transfer type must be passed to the function above. For more information about creating -snapshot transfer types, refer to the Creating +snapshot transfer types, refer to the Creating transfer types section.

  • Inform the Backup Engine that all snapshots have been supplied and it is ready to do the backup.

    iBackupClient->AllSnapshotsSuppliedL();

  • @@ -85,7 +85,7 @@ the backup server. Device creators must copy the public files from the device and supply them to the host PC in their backup server implementations.

  • Request the system data -from the Backup Engine for backup.

    iBackupClient->RequestDataL(CSBGenericTransferType& aGenericTransferType);

    Note: Refer to the Creating +from the Backup Engine for backup.

    iBackupClient->RequestDataL(CSBGenericTransferType& aGenericTransferType);

    Note: Refer to the Creating transfer types section for an example of creating the required CSBGenericTransferType.

  • Request active private data from the backup Engine for backup.

    iBackupClient->RequestDataL(CSBGenericTransferType& aGenericTransferType);

  • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F41C1661-9704-500F-9324-B13748642332-GENID-1-12-1-24-1-1-8-1-4-1-4-1-5-1-5-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-F41C1661-9704-500F-9324-B13748642332-GENID-1-12-1-24-1-1-8-1-4-1-4-1-5-1-5-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,49 @@ + + + + + +Configuring +the Server Name Indication : TutorialThis topic describes how to configure the server name indication. +

    Servers that support a virtual name-based hosting must know the +virtual names of the client that tries to establish a connection. The virtual +name-based hosts controls the decision of the server. The decision of server +is to return the server certificate or PSK if you use a PSK +ciphersuite.

    To address this issue, Symbian implements the server +name indication extension which is specified in RFC4366.

    Note: To maintain maximum compatibility +with the existing servers, a server name indication extension is not sent +to the server unless the server explicitly requests it. For example the implementer +Secure User Plane Location (SUPL) has to use this feature explicitly.

    The +steps required to establish a connection are shown below:

    + +Create an array +class. + +Wrap the array class. + +Call Setopt() on +CSecureSocket to pass the array of names. + + + Example

    The following example code shows how to +find the server names that the client is attempting to establish a connection:

    + +//Create an array class + CDesC8ArrayFlat *serverNames = new(ELeave) CDesC8ArrayFlat(1); + CleanupStack::PushL(serverNames); +//Wrap the array class + serverNames->AppendL(serverName); +//Call Setopt() on CSecureSocket to pass the array of names in + TPckgC<CDesC8Array *> serverNameIndicationPkg(serverNames); + User::LeaveIfError(secureSocket->SetOpt(KSoServerNameIndication, KSolInetSSL, serverNameIndicationPkg)); +//SecureSocket now owns the serverNames object + CleanupStack::Pop(serverNames); + +
    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F41C1661-9704-500F-9324-B13748642332-GENID-1-12-1-24-1-1-8-1-5-1-4-1-5-1-5-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-F41C1661-9704-500F-9324-B13748642332-GENID-1-12-1-24-1-1-8-1-5-1-4-1-5-1-5-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,49 @@ + + + + + +Configuring +the Server Name Indication : TutorialThis topic describes how to configure the server name indication. +

    Servers that support a virtual name-based hosting must know the +virtual names of the client that tries to establish a connection. The virtual +name-based hosts controls the decision of the server. The decision of server +is to return the server certificate or PSK if you use a PSK +ciphersuite.

    To address this issue, Symbian implements the server +name indication extension which is specified in RFC4366.

    Note: To maintain maximum compatibility +with the existing servers, a server name indication extension is not sent +to the server unless the server explicitly requests it. For example the implementer +Secure User Plane Location (SUPL) has to use this feature explicitly.

    The +steps required to establish a connection are shown below:

    + +Create an array +class. + +Wrap the array class. + +Call Setopt() on +CSecureSocket to pass the array of names. + + + Example

    The following example code shows how to +find the server names that the client is attempting to establish a connection:

    + +//Create an array class + CDesC8ArrayFlat *serverNames = new(ELeave) CDesC8ArrayFlat(1); + CleanupStack::PushL(serverNames); +//Wrap the array class + serverNames->AppendL(serverName); +//Call Setopt() on CSecureSocket to pass the array of names in + TPckgC<CDesC8Array *> serverNameIndicationPkg(serverNames); + User::LeaveIfError(secureSocket->SetOpt(KSoServerNameIndication, KSolInetSSL, serverNameIndicationPkg)); +//SecureSocket now owns the serverNames object + CleanupStack::Pop(serverNames); + +
    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F41C1661-9704-500F-9324-B13748642332-GENID-1-12-1-24-1-1-9-1-4-1-5-1-5-1.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-F41C1661-9704-500F-9324-B13748642332-GENID-1-12-1-24-1-1-9-1-4-1-5-1-5-1.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,49 @@ + + + + + +Configuring +the Server Name Indication : TutorialThis topic describes how to configure the server name indication. +

    Servers that support a virtual name-based hosting must know the +virtual names of the client that tries to establish a connection. The virtual +name-based hosts controls the decision of the server. The decision of server +is to return the server certificate or PSK if you use a PSK +ciphersuite.

    To address this issue, Symbian implements the server +name indication extension which is specified in RFC4366.

    Note: To maintain maximum compatibility +with the existing servers, a server name indication extension is not sent +to the server unless the server explicitly requests it. For example the implementer +Secure User Plane Location (SUPL) has to use this feature explicitly.

    The +steps required to establish a connection are shown below:

    + +Create an array +class. + +Wrap the array class. + +Call Setopt() on +CSecureSocket to pass the array of names. + + + Example

    The following example code shows how to +find the server names that the client is attempting to establish a connection:

    + +//Create an array class + CDesC8ArrayFlat *serverNames = new(ELeave) CDesC8ArrayFlat(1); + CleanupStack::PushL(serverNames); +//Wrap the array class + serverNames->AppendL(serverName); +//Call Setopt() on CSecureSocket to pass the array of names in + TPckgC<CDesC8Array *> serverNameIndicationPkg(serverNames); + User::LeaveIfError(secureSocket->SetOpt(KSoServerNameIndication, KSolInetSSL, serverNameIndicationPkg)); +//SecureSocket now owns the serverNames object + CleanupStack::Pop(serverNames); + +
    +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F4203C60-EB2A-4644-8B2D-291087724BA9_d0e184675_href.png Binary file Symbian3/PDK/Source/GUID-F4203C60-EB2A-4644-8B2D-291087724BA9_d0e184675_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F4203C60-EB2A-4644-8B2D-291087724BA9_d0e190752_href.png Binary file Symbian3/PDK/Source/GUID-F4203C60-EB2A-4644-8B2D-291087724BA9_d0e190752_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita --- a/Symbian3/PDK/Source/GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F43A54C0-E82B-5790-8493-1372D214C642.dita Fri Jul 16 17:23:46 2010 +0100 @@ -28,13 +28,13 @@ indicate the division of Planes.

    Planes in the Communications Framework - +

    The following diagram overlays the Planes with an example series of Layers

    Planes and Layers in the Communications Framework - +
    • Data Plane

    • @@ -63,7 +63,7 @@ Data Plane corresponds to the Sockets Server API: RSocket.

      The following diagram shows the thread divide.

      Data Plane in the Communications Framework - +

      Features

      The Data Plane:

      • exchanges data with remote peers and uses data transfer protocols

      • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F46D5A5B-EC44-53B0-9A11-886735B28610.dita --- a/Symbian3/PDK/Source/GUID-F46D5A5B-EC44-53B0-9A11-886735B28610.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F46D5A5B-EC44-53B0-9A11-886735B28610.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,87 +1,81 @@ - - - - - -How to -use the modifiable pointer descriptor — TPtrModifiable pointer descriptors are useful for referencing strings -or data which can be accessed and changed. -
          -
        • For text data, it is -usual to construct a TPtr type and allow the appropriate -variant, either a TPtr or a TPtrC to be -selected at build time.

        • -
        • For binary data, an -explicit TPtr8 is used.

        • -
        • It is rare to use an -explicit TPtr16.

        • -
        -
        Constructing a TPtr

        A modifiable pointer descriptor -can be constructed in a number of ways:

          -
        • another modifiable pointer -descriptor.

        • -
        • from a non-modifiable -buffer descriptor using the Des() function

        • -
        • from an explicit pointer -into memory and specifying a maximum length.

        • -
        • from an explicit pointer -into memory and specifying the length of the data and a maximum length.

        • -

        The following code fragment constructs a TPtr to -represent the data already represented by another TPtr:

        TPtr ptr1; -... -TPtr ptr2(ptr1); -...

        The following code fragment constructs a TPtr for -a non-modifiable buffer descriptor, a TBufC<TInt>, using -the Des() function. Data that would normally be unmodifiable -through the TBufC<TInt> can be changed through the TPtr.

        The -source are literals which are converted to descriptor type.

        _LIT(KText,"Hello World!"); -_LIT(KExtraText," & Hi"); -... -TBufC<16> buf1(KText); -... -TPtr ptr = buf1.Des(); -... -ptr.Delete((ptr.Length()-1),1); -ptr.Append(KExtraText);

        Define a TText area -initialised to contain the string "Have a nice day":

        The following -code fragments show the construction of a TPtr using a pointer -and specifying a length and a maximum length. This technique is not commonly -used. Literals are a much better way of defining string constants.

        TText str[16] = {'H', 'a', 'v', 'e', ' ', 'a', - ' ', 'n', 'i', 'c', 'e', - ' ', 'd', 'a', 'y', '\0'}; TPtr ptr(&str[0],15,16);

        The -descriptor ptr represents the data in str and -is constructed to have a current length of 15 (the length of the text, excluding -the zero terminator) and a maximum length of 16 (the actual length of str). -Once the descriptor has been constructed, it has no further use for the zero -terminator.

        TPtr ptr(&str[0],15,16);
        -
        Replacing data through the TPtr

        Data can be completely -replaced using the assignment operator or the Copy() function.:

        _LIT(KText,"Hi there"); -... -ptr = KText; -... -ptr.Copy(KText);

        Note the use of the _LIT macro -to define the source string. A literal is converted into a descriptor type.

        The -length of ptr is now 8 but the maximum length remains unchanged. -The size depends on the build variant. In a non-Unicode build, this is 8 but -in a Unicode build, this becomes 16 (two bytes for every character).

        -
        Changing the length of data

        The length of the data -represented can be changed.

        _LIT(KText,"Hi there"); -... -ptr = KText; -ptr.SetLength(2); -ptr.Zero(); -

        For example, after ptr.SetLength(2), the -descriptor represents the string "Hi". The length can even be set to zero -so that after ptr.Zero(), the descriptor represents no data. -Nevertheless, the maximum length remains unchanged.

        -
        - -Literal Descriptors - + + + + + +How to use the modifiable pointer descriptor — TPtrModifiable pointer descriptors are useful for referencing +strings or data which can be accessed and changed. +
          +
        • For text data, +it is usual to construct a TPtr type and allow the +appropriate variant, either a TPtr or a TPtrC to be selected at build time.

        • +
        • For binary data, +an explicit TPtr8 is used.

        • +
        • It is rare to +use an explicit TPtr16.

        • +
        +
        Constructing +a TPtr

        A modifiable pointer descriptor can be constructed +in a number of ways:

          +
        • another modifiable +pointer descriptor.

        • +
        • from a non-modifiable +buffer descriptor using the Des() function

        • +
        • from an explicit +pointer into memory and specifying a maximum length.

        • +
        • from an explicit +pointer into memory and specifying the length of the data and a maximum +length.

        • +

        The following code fragment constructs a TPtr to represent the data already represented by another TPtr:

        TPtr ptr1; +... +TPtr ptr2(ptr1); +...

        The following code fragment constructs a TPtr for a non-modifiable buffer descriptor, a TBufC<TInt>, using the Des() function. Data that would normally +be unmodifiable through the TBufC<TInt> can be +changed through the TPtr.

        The source are literals +which are converted to descriptor type.

        _LIT(KText,"Hello World!"); +_LIT(KExtraText," & Hi"); +... +TBufC<16> buf1(KText); +... +TPtr ptr = buf1.Des(); +... +ptr.Delete((ptr.Length()-1),1); +ptr.Append(KExtraText);

        Define a TText area initialised to contain the string "Have a nice day":

        The following code fragments show the construction of a TPtr using a pointer and specifying a length and a maximum length. This +technique is not commonly used. Literals are a much better way of +defining string constants.

        TText str[16] = {'H', 'a', 'v', 'e', ' ', 'a', + ' ', 'n', 'i', 'c', 'e', + ' ', 'd', 'a', 'y', '\0'}; TPtr ptr(&str[0],15,16);

        The descriptor ptr represents the data in str and is constructed to have a current length of 15 (the +length of the text, excluding the zero terminator) and a maximum length +of 16 (the actual length of str). Once the descriptor +has been constructed, it has no further use for the zero terminator.

        TPtr ptr(&str[0],15,16);
        +
        Replacing +data through the TPtr

        Data can be completely replaced using +the assignment operator or the Copy() function.:

        _LIT(KText,"Hi there"); +... +ptr = KText; +... +ptr.Copy(KText);

        Note the use of the _LIT macro to define the source string. A literal is converted into a +descriptor type.

        The length of ptr is now +8 but the maximum length remains unchanged. The size depends on the +build variant. In a non-Unicode build, this is 8 but in a Unicode +build, this becomes 16 (two bytes for every character).

        +
        Changing +the length of data

        The length of the data represented can +be changed.

        _LIT(KText,"Hi there"); +... +ptr = KText; +ptr.SetLength(2); +ptr.Zero(); +

        For example, after ptr.SetLength(2), the descriptor represents the string "Hi". The length can even +be set to zero so that after ptr.Zero(), the descriptor +represents no data. Nevertheless, the maximum length remains unchanged.

        +
        +Literal +Descriptors
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0.dita --- a/Symbian3/PDK/Source/GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F46E4F89-B9ED-5A4A-B812-B605B925D0C0.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,47 +1,202 @@ - - - - - -How to use the audio convert utility
        Overview

        Audio convert utility is used to convert audio clips contained in files or descriptors to other formats using the default codecs provided by MMF. This functionality is implemented by the CMdaAudioConvertUtility class.

        Description

        Using a audio converter utility involves the following tasks:

        • Construct and open converter utility object

        • Configure conversion parameters

        • Convert audio clip

        • Change conversion position and crop audio data

        • Custom commands

        Construct and open converter utility object

        The MMF provides a utility class called CMdaAudioConverterUtility. Using this class, you can convert audio clips from one format to another. The CMdaAudioConverterUtility::NewL() function need to be used to construct an object of this utility class, with the following arguments:

        • An object of the class, which inherits the MMdaObjectStateChangeObserver class to receive state change notifications from the converter object.

        • Client's relative priority, which can be EMdaPriorityMin, EMdaPriorityNormal or EMdaPriorityMax.

        • An object of TMdaPriorityPreference specifying the behaviour, if a higher priority client takes over the device.

        The following code shows how the client application CClientApp inherits the MMdaObjectStateChangeObserver and creates the audio converter utility object:

        class CClientApp : public CBase, MMdaObjectStateChangeObserver - { -public: - void CClientApp(); -protected: - - // from MMdaObjectStateChangeObserver - virtual void MoscoStateChangeEvent(CBase *aObject, TInt aPreviousState, TInt aCurrentState, TInt aErrorCode); - -protected: - CMdaAudioConverterUtility* iConverter; - }; - -void CClientApp() -{ - iConverter = CMdaAudioConverterUtility::NewL(*this, EMdaPriorityNormal, - EMdaPriorityPreferenceTimeAndQuality); -} -

        Once the audio converter utility object is constructed, you can open an audio clip for conversion using the function CMdaAudioConverterUtility::OpenL(). You can use the following versions of this function:

        • To open an existing audio file and append the converted audio data to another file, use the following version:

          OpenL(const TDesC& aPrimaryFile, const TdesC& aSecondaryFile);

          Where, aPrimaryFile and aSecondaryFile are used to specify the source and destination audio file names.

        • To open existing audio file and store the converted audio data to either a file or a descriptor, use the following version:

          OpenL(const TdesC& aPrimaryFile - TMdaClipLocation* aLocation, - TMdaClipFormat* aFormat, - TMdaPackage* aArg1 = NULL, - TMdaPackage* aArg2 = NULL); -

          Where, aPrimaryFile specifies the source audio file names. The aLocation, aFormat, aArg1 and aArg2 are used to specify the target location for the converted audio data, target audio format, codec for the target audio and target audio settings.

        • To open audio data either from a file or a descriptor source and store the resulting data to either a file or descriptor, use the following version:

          OpenL(TmdaClipLocation* aPriLocation - TMdaClipLocation* aSecLocation, - TMdaClipFormat* aPriFormat, - TMdaClipFormat* aSecFormat, - TMdaPackage* aPriArg1 = NULL, - TMdaPackage* aPriArg2 = NULL, - TMdaPackage* aSecArg1 = NULL, - TMdaPackage* aSecArg2 = NULL); -

          Where, aPriLocation and aPriLocation specifies the source and destination audio data locations. The aPriFormat and aSecFormat specifies the audio format of the source and target audio data. The aPriArg1 and aPriArg2 specifies codec and settings for the source audio data. Whereas, the aSecArg1 and aSecArg2 specifies the codec and settings for the target audio data.

        Note: It is recommended to use the first version of OpenL to specify source and destination audio file location. The arguments for the other versions are deprecated.

        The following code uses the first version of OpenL to specify source and destination audio location:

        TFileName fromFilename = _L("C:\\rectest2.wav"); -TFileName toFilename = _L("C:\\rectest2.wav"); - -iConverter-&gt;OpenL(&fromFilename, &toFilename); -

        Once the converter calls the CMdaAudioConverterUtility::OpenL() function, the callback function MMdaObjectStateChangeObserver::MoscoStateChangeEvent() will notify the client application about the change in state of the object.

        Configure conversion parameters

        The configuration parameters can be broadly classified into four categories as shown below:

        Set recorded file length

        You can control the size settings of a recorded file. This is handled by the SetMaxWriteLength() function that sets the maximum number of bytes that can be written to a recorded audio clip. The SetMaxWriteLength() function is provided so that converters can limit the amount of file storage or memory that should be allocated. If the maximum limit is reached, MMF stops recording and notifies the client application.

        The following code sets the maximum number of bytes to 800:

        iConverter->SetMaxWriteLength(800);

        Formats and Codecs

        You can report and set formats and codecs for audio data that is already open. The four methods related to DataTypes (codecs) enable you to retrieve a list of supported codecs for the current data format, set a new codec to use or determine which codec is currently in use. A further three methods are provided to query and set the audio format to use.

        Codec related actions:

        • To get the data type of the destination audio clip, use the DestinationDataTypeL() function.

        • To set the data type of the destination audio clip, use the SetDestinationDataTypeL() function.

        • To get a list of supported data types for the conversion destination, use the GetSupportedDestinationDataTypesL() function.

        • To get the data type of the source audio clip, use the SourceDataTypeL() function.

        Data format related actions:

        • To get the format of the destination audio clip, use the DestinationFormatL() function.

        • To set the format of the destination audio clip, use the SetDestinationFormatL() function.

        • To get the format of the source audio clip, use the SourceFormatL() function.

        Note: It is only possible to report the format and codec used by the source audio and cannot be changed.

        Bit and sample rates

        You can report and set bit and sample rates as required by specific codecs.

        Methods to control the bit rate of audio data:

        • To get a list of supported bit rates to the conversion destination, use the GetSupportedConversionBitRatesL() function.

        • To get the bit rate of the destination audio clip, use the DestinationBitRateL() function.

        • To set the bit rate of the destination audio clip, use the SetDestinationBitRateL() function. The bit rate must be one of the supported bit rates of the audio target. Use the GetSupportedConversionBitRatesL() function to retrieve a list of supported bit rates.

        • To get the bit rate of the source audio clip, use the SourceBitRateL() function.

        Note: None of the default codecs provided in the MMF support the use of bit rates. These methods are provided to enable the creation of additional codecs that might require bit rate information, such as the audio format MP3.

        Methods for controlling the sampling rate of audio data:

        • To get a list of supported conversion sample rates, use the GetSupportedConversionSampleRatesL() function. The list of sample rates is used by the conversion destination.

        • To get the sample rate of the conversion destination, use the DestinationSampleRateL() function.

        • To set the sample rate for the conversion destination, use the SetDestinationSampleRateL() function. The sample rate must be one of the supported sample rates of the audio target. Use the GetSupportedConversionSampleRatesL() function to retrieve a list of supported sample rates.

        • To get the sample rate of the source audio clip, use the SourceSampleRateL() function.

        Note: It is only possible to report the bit rate or sample rate used by the source audio and cannot be changed.

        Balance

        You can report and set the audio mode (mono or stereo).

        • To get a list of the supported number of channels for conversion, use the GetSupportedConversionNumberOfChannelsL() function.

        • To get the number of channels the destination audio clip contains, use the DestinationNumberOfChannelsL() function.

        • To set the number of channels the destination audio clip contains, use the SetDestinationNumberOfChannelsL() function. The number of channels must be one of the values returned by GetSupportedConversionNumberOfChannelsL().

        • To get the number of channels used by the conversion source, use the SourceNumberOfChannelsL() function.

        Note: It is only possible to report the number of supported channels for the source audio and cannot be changed.

        Convert audio clip

        Several methods are provided in CMdaAudioConvertUtility to enable the conversion of audio data. The specific functions to convert and perform related tasks are as follows:

        • To start converting audio data from the current position within the audio source and writing the converted data to a play window within the destination file, use the ConvertL() function.

        • To stop audio conversion, use the Stop() function. The positions within the audio source and destination are maintained to handle subsequent ConvertL() statements.

        • To stop audio conversion and close all related controllers, use the Close() function.

        Change conversion position and crop audio data

        It is possible to crop the audio clip from the current position to the end of the clip or from the begging to the current position as illustrated below:

        • To crop the current clip from the current position, use the CropL() function. The remainder of the clip is discarded. The effects of the function cannot be undone. The function is synchronous and can leave if there is a problem. The leave code depends on the configuration settings.

        • To crop the audio clip from the start of the file to the current position, use the CropFromBeginningL() function. The audio data prior to the current position is discarded. The effects of the function cannot be undone. The function is synchronous and can leave if there is a problem. The leave code depends on the configuration settings.

        To retrieve the current position of the audio clip or move the position to the desired location use the following functions:

        • To get the current position in the audio clip, use the Position() function. The position is defined in terms of a time interval measured from the beginning of the audio sample data.

        • To set the current position in the audio clip, use the SetPosition() function. A subsequent call to the ConvertL() function starts conversion from this new position.

        Custom commands

        • To send a raw custom command synchronously to the controller or to allow data to be returned from the controller, use the CustomCommandSync() function.

        • To send a raw custom command asynchronously to the controller or to allows data to be returned from the controller, use the CustomCommandAsync() function.

        See Also

        How to use the audio player utility

        How to use audio recorder utility

        How to use the audio tone player utility

        \ No newline at end of file + + + + + +How to use the audio convert utility +
        Overview

        Audio convert utility is used to convert audio clips contained +in files or descriptors to other formats using the default codecs +provided by MMF. This functionality is implemented by the CMdaAudioConvertUtility class.

        +
        Description

        Using a audio converter utility +involves the following tasks:

          +
        • Construct and open converter utility object

        • +
        • Configure conversion parameters

        • +
        • Convert audio clip

        • +
        • Change conversion position and crop audio data

        • +
        • Custom commands

        • +

        Construct and open +converter utility object

        The MMF provides a utility class +called CMdaAudioConverterUtility. Using this class, +you can convert audio clips from one format to another. The CMdaAudioConverterUtility::NewL() function need to be used +to construct an object of this utility class, with the following arguments:

          +
        • An object of +the class, which inherits the MMdaObjectStateChangeObserver class to receive state change notifications from the converter object.

        • +
        • Client's relative +priority, which can be EMdaPriorityMin, EMdaPriorityNormal or EMdaPriorityMax.

        • +
        • An object of TMdaPriorityPreference specifying the behaviour, if a higher +priority client takes over the device.

        • +

        The following code shows how the client application CClientApp inherits the MMdaObjectStateChangeObserver and creates the audio converter utility object:

        class CClientApp : public CBase, MMdaObjectStateChangeObserver + { +public: + void CClientApp(); +protected: + + // from MMdaObjectStateChangeObserver + virtual void MoscoStateChangeEvent(CBase *aObject, TInt aPreviousState, TInt aCurrentState, TInt aErrorCode); + +protected: + CMdaAudioConverterUtility* iConverter; + }; + +void CClientApp() +{ + iConverter = CMdaAudioConverterUtility::NewL(*this, EMdaPriorityNormal, + EMdaPriorityPreferenceTimeAndQuality); +} +

        Once the audio converter utility object is constructed, +you can open an audio clip for conversion using the function CMdaAudioConverterUtility::OpenL(). You can use the following +versions of this function:

          +
        • To open an existing +audio file and append the converted audio data to another file, use +the following version:

          OpenL(const TDesC& aPrimaryFile, const TdesC& aSecondaryFile);

          Where, aPrimaryFile and aSecondaryFile are used to specify the source and destination audio file names.

        • +
        • To open existing +audio file and store the converted audio data to either a file or +a descriptor, use the following version:

          OpenL(const TdesC& aPrimaryFile + TMdaClipLocation* aLocation, + TMdaClipFormat* aFormat, + TMdaPackage* aArg1 = NULL, + TMdaPackage* aArg2 = NULL); +

          Where, aPrimaryFile specifies the +source audio file names. The aLocation, aFormat, aArg1 and aArg2 are used to specify +the target location for the converted audio data, target audio format, +codec for the target audio and target audio settings.

        • +
        • To open audio +data either from a file or a descriptor source and store the resulting +data to either a file or descriptor, use the following version:

          OpenL(TmdaClipLocation* aPriLocation + TMdaClipLocation* aSecLocation, + TMdaClipFormat* aPriFormat, + TMdaClipFormat* aSecFormat, + TMdaPackage* aPriArg1 = NULL, + TMdaPackage* aPriArg2 = NULL, + TMdaPackage* aSecArg1 = NULL, + TMdaPackage* aSecArg2 = NULL); +

          Where, aPriLocation and aPriLocation specifies the source and destination audio data locations. The aPriFormat and aSecFormat specifies the +audio format of the source and target audio data. The aPriArg1 and aPriArg2 specifies codec and settings for the +source audio data. Whereas, the aSecArg1 and aSecArg2 specifies the codec and settings for the target +audio data.

        • +

        Note: It is recommended to use the first version +of OpenL to specify source and destination audio +file location. The arguments for the other versions are deprecated.

        The following code uses the first version of OpenL to specify +source and destination audio location:

        TFileName fromFilename = _L("C:\\rectest2.wav"); +TFileName toFilename = _L("C:\\rectest2.wav"); + +iConverter-&gt;OpenL(&fromFilename, &toFilename); +

        Once the converter calls the CMdaAudioConverterUtility::OpenL() function, the callback function MMdaObjectStateChangeObserver::MoscoStateChangeEvent() will notify the client application about the change in state of +the object.

        Configure conversion +parameters

        The configuration parameters can be broadly +classified into four categories as shown below:

        Set recorded file length

        You can control the size +settings of a recorded file. This is handled by the SetMaxWriteLength() function that sets the maximum number of bytes that can be written +to a recorded audio clip. The SetMaxWriteLength() function is provided so that converters can limit the amount of +file storage or memory that should be allocated. If the maximum limit +is reached, MMF stops recording and notifies the client application.

        The following code sets the maximum number of bytes to 800:

        iConverter->SetMaxWriteLength(800);

        Formats and Codecs

        You can report and set formats +and codecs for audio data that is already open. The four methods related +to DataTypes (codecs) enable you to retrieve a list of supported codecs +for the current data format, set a new codec to use or determine which +codec is currently in use. A further three methods are provided to +query and set the audio format to use.

        Codec related actions:

          +
        • To get the data +type of the destination audio clip, use the DestinationDataTypeL() function.

        • +
        • To set the data +type of the destination audio clip, use the SetDestinationDataTypeL() function.

        • +
        • To get a list +of supported data types for the conversion destination, use the GetSupportedDestinationDataTypesL() function.

        • +
        • To get the data +type of the source audio clip, use the SourceDataTypeL() function.

        • +

        Data format related actions:

          +
        • To get the format +of the destination audio clip, use the DestinationFormatL() function.

        • +
        • To set the format +of the destination audio clip, use the SetDestinationFormatL() function.

        • +
        • To get the format +of the source audio clip, use the SourceFormatL() function.

        • +

        Note: It is only possible to report the format and +codec used by the source audio and cannot be changed.

        Bit and sample rates

        You can report and set bit and +sample rates as required by specific codecs.

        Methods to control +the bit rate of audio data:

          +
        • To get a list +of supported bit rates to the conversion destination, use the GetSupportedConversionBitRatesL() function.

        • +
        • To get the bit +rate of the destination audio clip, use the DestinationBitRateL() function.

        • +
        • To set the bit +rate of the destination audio clip, use the SetDestinationBitRateL() function. The bit rate must be one of the supported bit rates of +the audio target. Use the GetSupportedConversionBitRatesL() function to retrieve a list of supported bit rates.

        • +
        • To get the bit +rate of the source audio clip, use the SourceBitRateL() function.

        • +

        Note: None of the default codecs provided in the +MMF support the use of bit rates. These methods are provided to enable +the creation of additional codecs that might require bit rate information, +such as the audio format MP3.

        Methods for controlling the +sampling rate of audio data:

          +
        • To get a list +of supported conversion sample rates, use the GetSupportedConversionSampleRatesL() function. The list of sample rates is used by the conversion destination.

        • +
        • To get the sample +rate of the conversion destination, use the DestinationSampleRateL() function.

        • +
        • To set the sample +rate for the conversion destination, use the SetDestinationSampleRateL() function. The sample rate must be one of the supported sample rates +of the audio target. Use the GetSupportedConversionSampleRatesL() function to retrieve a list of supported sample rates.

        • +
        • To get the sample +rate of the source audio clip, use the SourceSampleRateL() function.

        • +

        Note: It is only possible to report the bit rate +or sample rate used by the source audio and cannot be changed.

        Balance

        You can report and set the audio mode (mono +or stereo).

          +
        • To get a list +of the supported number of channels for conversion, use the GetSupportedConversionNumberOfChannelsL() function.

        • +
        • To get the number +of channels the destination audio clip contains, use the DestinationNumberOfChannelsL() function.

        • +
        • To set the number +of channels the destination audio clip contains, use the SetDestinationNumberOfChannelsL() function. The number +of channels must be one of the values returned by GetSupportedConversionNumberOfChannelsL().

        • +
        • To get the number +of channels used by the conversion source, use the SourceNumberOfChannelsL() function.

        • +

        Note: It is only possible to report the number of +supported channels for the source audio and cannot be changed.

        Convert audio clip

        Several methods are provided in CMdaAudioConvertUtility to enable the conversion of audio data. The specific functions to +convert and perform related tasks are as follows:

          +
        • To start converting +audio data from the current position within the audio source and writing +the converted data to a play window within the destination file, use +the ConvertL() function.

        • +
        • To stop audio +conversion, use the Stop() function. The positions +within the audio source and destination are maintained to handle subsequent ConvertL() statements.

        • +
        • To stop audio +conversion and close all related controllers, use the Close() function.

        • +

        Change conversion +position and crop audio data

        It is possible to crop the +audio clip from the current position to the end of the clip or from +the begging to the current position as illustrated below:

          +
        • To crop the +current clip from the current position, use the CropL() function. The remainder of the clip is discarded. The effects of +the function cannot be undone. The function is synchronous and can +leave if there is a problem. The leave code depends on the configuration +settings.

        • +
        • To crop the +audio clip from the start of the file to the current position, use +the CropFromBeginningL() function. The audio data +prior to the current position is discarded. The effects of the function +cannot be undone. The function is synchronous and can leave if there +is a problem. The leave code depends on the configuration settings.

        • +

        To retrieve the current position of the audio clip or move +the position to the desired location use the following functions:

          +
        • To get the current +position in the audio clip, use the Position() function. +The position is defined in terms of a time interval measured from +the beginning of the audio sample data.

        • +
        • To set the current +position in the audio clip, use the SetPosition() function. A subsequent call to the ConvertL() function starts conversion from this new position.

        • +

        Custom commands

          +
        • To send a raw +custom command synchronously to the controller or to allow data to +be returned from the controller, use the CustomCommandSync() function.

        • +
        • To send a raw +custom command asynchronously to the controller or to allows data +to be returned from the controller, use the CustomCommandAsync() function.

        • +
        +
        See Also

        How to use the audio +tone player utility

        +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F492978A-1732-4BCD-8D3C-D2F657BAB504_d0e18587_href.png Binary file Symbian3/PDK/Source/GUID-F492978A-1732-4BCD-8D3C-D2F657BAB504_d0e18587_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F492978A-1732-4BCD-8D3C-D2F657BAB504_d0e20579_href.png Binary file Symbian3/PDK/Source/GUID-F492978A-1732-4BCD-8D3C-D2F657BAB504_d0e20579_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F4C3DDE1-F7D3-5256-BABD-34759DCA57BF.dita --- a/Symbian3/PDK/Source/GUID-F4C3DDE1-F7D3-5256-BABD-34759DCA57BF.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - - tidy

        abld [ test ] tidy [-k] [-v] [ platform ] [ build [ program ] ]

        This command removes releasables defined by .mmp files which are listed with the tidy attribute in your component’s description file.

        The command can be run following a build to remove any releasables which are no longer required now that the build has completed.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F4E04E00-D9C6-5E8F-9EC6-F90BC951D4D0_d0e291444_href.png Binary file Symbian3/PDK/Source/GUID-F4E04E00-D9C6-5E8F-9EC6-F90BC951D4D0_d0e291444_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F4E04E00-D9C6-5E8F-9EC6-F90BC951D4D0_d0e297436_href.png Binary file Symbian3/PDK/Source/GUID-F4E04E00-D9C6-5E8F-9EC6-F90BC951D4D0_d0e297436_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F4E64499-57CB-5E4A-AAD7-439191BF5E0F.dita --- a/Symbian3/PDK/Source/GUID-F4E64499-57CB-5E4A-AAD7-439191BF5E0F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F4E64499-57CB-5E4A-AAD7-439191BF5E0F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Launching Zsh

        This topic describes how to launch Zsh using a Telnet session on a PC. You can use the following methods:

        • Emulator as a Telnet server

        • Device (phone) as a Telnet server

        Emulator as a Telnet server

        To launch Zsh (using a Telnet session) on a PC using an emulator as a Telnet server, perform the following steps:

        1. Start the emulator by selecting Extras > Eshell.

        2. Run the following command:

          TelnetD

          Note: Before running the Telnetd command, ensure that Zsh.exe and the external command executables such as find.exe, grep.exe, ps.exe, unzip.exe and zip.exe are present in a sys/bin folder. You can copy these files from the /epoc32/release/winscw/<udeb/urel > directory.

        3. The IP address of the Telnet server running on the emulator is displayed, as shown in the following image:

          IP configuration -
        4. In a scenario where multiple IP addresses are listed, use the ping command from the PC console to identify the IP address that is accessible from the PC, as shown in the following image.

          +
        5. In a scenario where multiple IP addresses are listed, use the ping command from the PC console to identify the IP address that is accessible from the PC, as shown in the following image.

          Using the ping command -
        6. Open command prompt on a Windows PC.

        7. Run the following command by typing the IP address (associated with the emulator) that is accessible from the PC:

          telnet <ip-address of the emulator>

          The emulator and the Telnet client console prompts for an alphanumeric key to authenticate the session.

        8. Type the same alphanumeric key (which is upto eight characters) both on the emulator console window and also on the Telnet client console.

          Zsh is successfully launched on the PC.

        Device (phone) as a Telnet server

        After establishing a connection between a device and the PC using one of the methods described in the Device Setup section, you can launch Zsh. To launch Zsh (using a Telnet session) on a PC using a device as a Telnet server, perform the following steps:

        Note: Before starting a Telnet session, ensure that TelnetD and Zsh are installed on the device.

        1. Start TelnetD on the device by clicking the Zsh icon. The IP address of the Telnet server running on the device is displayed.

        2. In a scenario where multiple IP addresses are listed, use the ping command from the PC console to identify the IP address of the device that is accessible from the PC.

        3. Open command prompt on a Windows PC.

        4. Run the following command, by typing the IP address (associated with the device) that is accessible from the PC:

          Telnet <ip-address of the device>

          The device and the Telnet client console prompts for an alphanumeric key to authenticate the session.

        5. Type the same alphanumeric key (which is upto eight characters) both on the device console window and also on the Telnet client console.

          Zsh is successfully launched on the PC. The following image shows the result of this command on a Linux PC:

        Emulator Setup Device Setup Using TelnetD and Zsh
        \ No newline at end of file +
      • Open command prompt on a Windows PC.

      • Run the following command by typing the IP address (associated with the emulator) that is accessible from the PC:

        telnet <ip-address of the emulator>

        The emulator and the Telnet client console prompts for an alphanumeric key to authenticate the session.

      • Type the same alphanumeric key (which is upto eight characters) both on the emulator console window and also on the Telnet client console.

        Zsh is successfully launched on the PC.

      • Device (phone) as a Telnet server

        After establishing a connection between a device and the PC using one of the methods described in the Device Setup section, you can launch Zsh. To launch Zsh (using a Telnet session) on a PC using a device as a Telnet server, perform the following steps:

        Note: Before starting a Telnet session, ensure that TelnetD and Zsh are installed on the device.

        1. Start TelnetD on the device by clicking the Zsh icon. The IP address of the Telnet server running on the device is displayed.

        2. In a scenario where multiple IP addresses are listed, use the ping command from the PC console to identify the IP address of the device that is accessible from the PC.

        3. Open command prompt on a Windows PC.

        4. Run the following command, by typing the IP address (associated with the device) that is accessible from the PC:

          Telnet <ip-address of the device>

          The device and the Telnet client console prompts for an alphanumeric key to authenticate the session.

        5. Type the same alphanumeric key (which is upto eight characters) both on the device console window and also on the Telnet client console.

          Zsh is successfully launched on the PC. The following image shows the result of this command on a Linux PC:

        Emulator Setup Device Setup Using TelnetD and Zsh
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F4F3A37A-AB0C-47B8-A538-C05F1CA73BF3.dita --- a/Symbian3/PDK/Source/GUID-F4F3A37A-AB0C-47B8-A538-C05F1CA73BF3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F4F3A37A-AB0C-47B8-A538-C05F1CA73BF3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -26,7 +26,7 @@ configurations depending on the functionality requirements, languages, and so on. Also, indirect strokes and gestures provide flexibility reducing the need for physical buttons.

        - +
      • Intuitive - Manipulating objects directly by touching them is natural and intuitive. Touch interface allows better real-time experience diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F50E1C81-E80F-5692-996B-3AC2BE995425_d0e411499_href.png Binary file Symbian3/PDK/Source/GUID-F50E1C81-E80F-5692-996B-3AC2BE995425_d0e411499_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F50E1C81-E80F-5692-996B-3AC2BE995425_d0e417352_href.png Binary file Symbian3/PDK/Source/GUID-F50E1C81-E80F-5692-996B-3AC2BE995425_d0e417352_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F5107783-6B4F-549B-B46D-E1294C241306_d0e230721_href.png Binary file Symbian3/PDK/Source/GUID-F5107783-6B4F-549B-B46D-E1294C241306_d0e230721_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F5107783-6B4F-549B-B46D-E1294C241306_d0e236716_href.png Binary file Symbian3/PDK/Source/GUID-F5107783-6B4F-549B-B46D-E1294C241306_d0e236716_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F5371A59-A637-4623-A2C0-9A8B8E5F3CFB.dita --- a/Symbian3/PDK/Source/GUID-F5371A59-A637-4623-A2C0-9A8B8E5F3CFB.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ - - - - - -Interaction -with other hardware components -

        In addition to traditional keys, interaction devices of other types may -be built in the devices. In most scenarios, they produce input events similar -to keys, so that the software need not be changed. The hardware commands do -not have any effect on the application.

        -

        Examples of specific interaction devices are:

          -
        • Optical joysticks

        • -
        • Optical 9-way finger navigation

        • -
        • Acceleration sensors

        • -

        -
        Optical joystick

        An optical joystick can be used -instead of (or in addition to) the traditional navigation keys.

        When -used in combination with traditional scroll keys, optical joystick performs -same functions as that of mechanical scroll keys. However, the speed of the -movement can differ.

        When used individually as the only scrolling device, -optical joystick emulates the functions of mechanical scroll keys. Sliding -a finger down over the joystick provides the same function as that of pressing -the down key. Repeat functionality can be produced with longer strokes.

        -
        Optical -9-way navigation

        The Symbian platform supports additional optical -navigation that is integrated to centre Select key. The supported directions -in 9-way rocker key are domed main directions and diagonals by combining the -main directions. Optical navigation allows continues moment of the finger -as observed in touch pad. It is suitable for pointer moving in browser and -content panning, for example, in photos, browser, and maps.

        -
        Acceleration -sensor

        There are three types of interaction events that can be recognized -with acceleration sensors:

          -
        1. Tapping the device by -hand (double tap) to perform a given function in set events. Tapping interaction -is not recommended for touch devices to prevent the unintentional touch actions.

        2. -
        3. Changing the device’s -orientation from portrait to landscape and back to perform screen re-orientation.

        4. -
        5. Changing the device -orientation from screen up (for example on a table) to screen down and back -to silence an alert tone (for example, silencing an incoming call).

        6. -

        The system is capable of sensing any of listed events. The supported -sensor interactions are configurable per device, but must be consistent in -not assigning different functions to these standard events. Also, the user -can be provided with the option to set the desired interactions. For example, -it is possible to set methods 1 and 3 (double tap by hand and turning the -screen downwards) for the 'silence incoming call' event. The settings are -available in General Settings. A double tap on the device produces -tactile (vibrating) feedback to reinforce and acknowledge that the interaction -is successful. See Tactile -feedback for more details.
        - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F58C17D1-3834-5DEB-8B8B-52CD81AA9BF4_d0e244344_href.png Binary file Symbian3/PDK/Source/GUID-F58C17D1-3834-5DEB-8B8B-52CD81AA9BF4_d0e244344_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F58C17D1-3834-5DEB-8B8B-52CD81AA9BF4_d0e250355_href.png Binary file Symbian3/PDK/Source/GUID-F58C17D1-3834-5DEB-8B8B-52CD81AA9BF4_d0e250355_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F59B0B89-94C3-4E0B-BF87-2AE5B3811F59.dita --- a/Symbian3/PDK/Source/GUID-F59B0B89-94C3-4E0B-BF87-2AE5B3811F59.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F59B0B89-94C3-4E0B-BF87-2AE5B3811F59.dita Fri Jul 16 17:23:46 2010 +0100 @@ -24,6 +24,6 @@

      Smiley picker in portrait and landscape modes - + \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F5A82F61-B93A-5652-93A4-B9CE877B4D4A_d0e546929_href.png Binary file Symbian3/PDK/Source/GUID-F5A82F61-B93A-5652-93A4-B9CE877B4D4A_d0e546929_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F5A82F61-B93A-5652-93A4-B9CE877B4D4A_d0e554385_href.png Binary file Symbian3/PDK/Source/GUID-F5A82F61-B93A-5652-93A4-B9CE877B4D4A_d0e554385_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F5B58B20-B85C-5BCD-B1EB-69CCE42DE6BB_d0e218447_href.png Binary file Symbian3/PDK/Source/GUID-F5B58B20-B85C-5BCD-B1EB-69CCE42DE6BB_d0e218447_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F5B58B20-B85C-5BCD-B1EB-69CCE42DE6BB_d0e224467_href.png Binary file Symbian3/PDK/Source/GUID-F5B58B20-B85C-5BCD-B1EB-69CCE42DE6BB_d0e224467_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F5BFE35F-ED90-50C5-8F63-7A780A97689B_d0e275314_href.png Binary file Symbian3/PDK/Source/GUID-F5BFE35F-ED90-50C5-8F63-7A780A97689B_d0e275314_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F5BFE35F-ED90-50C5-8F63-7A780A97689B_d0e281314_href.png Binary file Symbian3/PDK/Source/GUID-F5BFE35F-ED90-50C5-8F63-7A780A97689B_d0e281314_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F5D49215-B34A-5FCC-A7E1-0AF3275694B3.dita --- a/Symbian3/PDK/Source/GUID-F5D49215-B34A-5FCC-A7E1-0AF3275694B3.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,141 +0,0 @@ - - - - - -GCCXML -build target -

      The GCCXML build target generates an XML description of the project and -the program. This XML is intended to be parsed by other development and program -analysis tools. The XML is generated using the GCC-XML (http://www.gccxml.org) tool, which is distributed -on kits in the epoc32\tools\ directory.

      -

      To execute a GCCXML build, use the abld command as -follows:

      -

      abld build gccxml [udeb/urel]

      -

      GCCXML is available as a target for all projects that can be built for -an ARM target (this is assumed by the build tools unless the bld.inf file -specifies otherwise with a prj_platforms statement.)

      -

      The build of a Symbian platform component for the GCCXML platform results -in three actions:

      -
        -
      1. The GCC-XML tool is -called on each source file used in the build of a component's binary. An XML -file is output as a result.

        The GCC-XML output format is not yet extensively -documented: see http://www.gccxml.org/HTML/FAQ.html for -the latest information.

      2. -
      3. The tool chain also -generates an XML file describing some elements of the component's .mmp file.

        The -XML format is described below.

      4. -
      5. The tool chain packages -the output from steps 1 and 2 into a zip file named <project-name>.gxp. -The file is stored in epoc32\release\gccxml\[udeb|urel]\.

      6. -
      -
      Format of <project>.mmp.xml

      A GCCXML build creates -an XML representation of the project's mmp file named <project>.mmp.xml. -Not all the mmp file statements are represented in the XML.

      The following -XML elements and attributes are used:

    - - - -

    Element

    -

    Attribute

    -

    Description

    -
    - -

    mmpInfo

    -

    -

    Top-level wrapper element

    -
    - -

    mmp

    -

    path

    -

    Full path of the .mmp file

    -
    - -

    target

    -

    name

    -

    TARGET statement value

    -
    - -

    -

    type

    -

    TARGETTYPE statement value

    -
    - - -

    path

    -

    TARGETPATH statement value

    -
    - -

    abi

    -

    type

    -

    Deduced ABI e.g. ARM4

    -
    - -

    linkas

    -

    name

    -

    LINKAS statement value

    -
    - -

    uids

    -

    u0

    -

    1st UID of the executable

    -
    - -

    -

    u1

    -

    2nd UID of the executable (from the UID statement)

    -
    - -

    -

    u2

    -

    3rd UID of the executable (from the UID statement)

    -
    - -

    defFile

    -

    path

    -

    Full path of the .def file

    -
    - -

    libs

    -

    -

    Wrapper for lib elements that describe the libraries the project -links to

    -
    - -

    lib

    -

    name

    -

    Name of the library

    -
    - -

    -

    type

    -

    For standard libraries specified by the LIBRARY keyword -this is not used.

    For a stub library inserted by the build processor, -this is "First".

    For libraries specified by the ASSPLIBRARY statement, -this is "ASSP".

    Note: "ASSP" is applicable only for Symbian -platform versions prior to v9.1. Since v9.1, it is not a valid library type.

    For -libraries specified by the STATICLIBRARY statement, this -is "Static".

    -
    - -

    sourceFile

    -

    name

    -

    Source file name

    -
    - - -

    path

    -

    Path to the source file

    -
    - - -

    The population of some of attributes is dependent on the type and -format of the component being built.

    - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F618EE02-927E-584B-8F80-79DE766AA62F_d0e536773_href.png Binary file Symbian3/PDK/Source/GUID-F618EE02-927E-584B-8F80-79DE766AA62F_d0e536773_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F618EE02-927E-584B-8F80-79DE766AA62F_d0e544233_href.png Binary file Symbian3/PDK/Source/GUID-F618EE02-927E-584B-8F80-79DE766AA62F_d0e544233_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F61FEF82-FD8F-5C5B-9125-A6DE4569EAF3.dita --- a/Symbian3/PDK/Source/GUID-F61FEF82-FD8F-5C5B-9125-A6DE4569EAF3.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F61FEF82-FD8F-5C5B-9125-A6DE4569EAF3.dita Fri Jul 16 17:23:46 2010 +0100 @@ -29,7 +29,7 @@ to applications.

    The following diagram illustrates the class hierarchy used to implement the core client-side interface.

    Core Telephony Blocks - +

    The following sections define the root server session, and each of the fundamental core telephony classes.

    • Root server

    • diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F6460808-A806-5701-983E-CCD92EF3F688.dita --- a/Symbian3/PDK/Source/GUID-F6460808-A806-5701-983E-CCD92EF3F688.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F6460808-A806-5701-983E-CCD92EF3F688.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,160 +1,160 @@ - - - - - -Networking -Services Quick StartNetworking Services provides a standard framework for accessing -network services and implementations of network protocols. The components -of the Networking Services are closely related to the framework provided by -the Communications Framework module. -
      Getting started with Networking Services

      Networking -Services is used in the following circumstances:

        -
      • If you are writing an -application or application level protocol that needs access to the Internet, -use the Internet Sockets interface and the Communications Framework Sockets -Server client.

      • -
      • If you are a licensee -and need to extend or modify the behaviour of the TCP/IP implementation, write -a plug-in using the IPHook interface.

      • -
      • If you want to debug -existing application software and configure network settings.

      • -
      -
      Architecture

      Networking Services enable mobile -devices to connect to the internet and network applications using protocols -such as TCP/IP and IPSec. The main areas of Networking Services are:

        -
      • Link Layer Protocols

        The -Link Layer Protocols collection groups the networking protocols for the Data -Link Layer, including Ethernet and PPP. For more information, see Link -Layer Protocols.

      • -
      • Network Security

        The -Network Security collection is the set of components that provide security -protocols for an IP connection. For more information, see Network -Security.

      • -
      • Network Test and -Utilities

        The Network Test and Utilities collection provides -components that are used to measure network performance. For more information, -see Network Performance -Testing.

      • -
      • Network Protocols

        The -Network Protocols collection is a set of plug-ins to the Sockets Server. The -plug-ins implement network protocols, such as TCP/IP, that can be accessed -through a sockets type interface. For more information, see Network -Protocols.

      • -
      • Network Control

        The -Network Control collection controls the resource availablity for applications -in mobile devices. It prioritises the applications on the device to ensure -performance consistancy and application access to the network. For more information, -see Network Control.

      • -
      • PPP Compression -Plugins

        This collection contains the Point-to-Point Protocol -(PPP) Compression Plugins used by the Point-to-Point Protocol component. For -more information, see PPP -Compression Plugins.

      • -
      • TCP/IP Utilities

        The -TCP/IP Utilities collection provides libraries used by TCP/IPv4/v6 for the -DNS and DHCP protocols. For more information, see TCP/IP -Utilities.

      • -

      The Symbian platform Networking Services structure can be compared -to the standard OSI Model for the layering of network protocols. The OSI Model -defines seven layers. Each layer defines a stage that data must go through -to travel from one device to another over a network. A layer corresponds to -a group of components that perform similar tasks in the Operating System.

      The -uppermost OSI Model layer is the Application Layer, which provides application -services to the end user software applications. The lowest OSI Model layer -is the Physical Layer, which deals with network connections and other physical -network attributes.

      The following section lists the OSI Model layers -and gives a brief description of each:

        -
      • Application Layer

        The -Application Layer interacts with the operating system or application when -the user wants to transfer files, read messages or perform other network related -activities.

      • -
      • Presentation Layer

        The -Presentation Layer takes data from the Application Layer and converts it into -a format that the other layers can interpret.

      • -
      • Session Layer

        The -Session Layer establishes, maintains, and ends communication with the receiving -device.

      • -
      • Transport Layer

        The -Transport Layer takes the incoming data from applications and combines it -into a single stream. This stream is then passed on to the Network Layer.

      • -
      • Network Layer

        The -Network Layer determines the way the data is sent to the recipient device. -Logical protocols, routing, and addressing are all dealt with in this layer.

      • -
      • Data Layer

        The -Data Layer assigns physical protocol to the data.

      • -
      • Physical Layer

        The -Physical Layer defines the physical characteristics such as connections, voltage -levels and timing.

      • -
      -
      Technologies

      The following table maps the various -communications technologies implemented in Symbian platform to the layers -defined by the OSI Model. Networking Services implements technologies that -mostly map to the Transport and Network Layers. Other Symbian platform -modules implement higher level application layer protocols and device drivers -that implement the bottom layers of the stack.

      - - - -Application Layer - - -DHCP      -¦      DNS      ¦ -      FTP      ¦     HTTP      -¦     RTCP      -¦      SIP       -¦     TELNET - - -Presentation Layer - - -TLS/SSL - - -Session Layer - - -RTP - - - Transport Layer - - -TCP         -¦       UDP - - - Network Layer - - -IP (IPv4/IPv6)     -¦       IPsec - - - Data Link Layer - - -Ethernet      -¦      GPRS - - - Physical Layer - - -RS232     -¦    Ethernet Physical Layer     ¦ -     Serial -Communications       ¦               USB - - - -
      + + + + + +Networking +Services Quick StartNetworking Services provides a standard framework for accessing +network services and implementations of network protocols. The components +of the Networking Services are closely related to the framework provided by +the Communications Framework module. +
      Getting started with Networking Services

      Networking +Services is used in the following circumstances:

        +
      • If you are writing an +application or application level protocol that needs access to the Internet, +use the Internet Sockets interface and the Communications Framework Sockets +Server client.

      • +
      • If you are a licensee +and need to extend or modify the behaviour of the TCP/IP implementation, write +a plug-in using the IPHook interface.

      • +
      • If you want to debug +existing application software and configure network settings.

      • +
      +
      Architecture

      Networking Services enable mobile +devices to connect to the internet and network applications using protocols +such as TCP/IP and IPSec. The main areas of Networking Services are:

        +
      • Link Layer Protocols

        The +Link Layer Protocols collection groups the networking protocols for the Data +Link Layer, including Ethernet and PPP. For more information, see Link +Layer Protocols.

      • +
      • Network Security

        The +Network Security collection is the set of components that provide security +protocols for an IP connection. For more information, see Network +Security.

      • +
      • Network Test and +Utilities

        The Network Test and Utilities collection provides +components that are used to measure network performance. For more information, +see Network Performance +Testing.

      • +
      • Network Protocols

        The +Network Protocols collection is a set of plug-ins to the Sockets Server. The +plug-ins implement network protocols, such as TCP/IP, that can be accessed +through a sockets type interface. For more information, see Network +Protocols.

      • +
      • Network Control

        The +Network Control collection controls the resource availablity for applications +in mobile devices. It prioritises the applications on the device to ensure +performance consistancy and application access to the network. For more information, +see Network Control.

      • +
      • PPP Compression +Plugins

        This collection contains the Point-to-Point Protocol +(PPP) Compression Plugins used by the Point-to-Point Protocol component. For +more information, see PPP +Compression Plugins.

      • +
      • TCP/IP Utilities

        The +TCP/IP Utilities collection provides libraries used by TCP/IPv4/v6 for the +DNS and DHCP protocols. For more information, see TCP/IP +Utilities.

      • +

      The Symbian platform Networking Services structure can be compared +to the standard OSI Model for the layering of network protocols. The OSI Model +defines seven layers. Each layer defines a stage that data must go through +to travel from one device to another over a network. A layer corresponds to +a group of components that perform similar tasks in the Operating System.

      The +uppermost OSI Model layer is the Application Layer, which provides application +services to the end user software applications. The lowest OSI Model layer +is the Physical Layer, which deals with network connections and other physical +network attributes.

      The following section lists the OSI Model layers +and gives a brief description of each:

        +
      • Application Layer

        The +Application Layer interacts with the operating system or application when +the user wants to transfer files, read messages or perform other network related +activities.

      • +
      • Presentation Layer

        The +Presentation Layer takes data from the Application Layer and converts it into +a format that the other layers can interpret.

      • +
      • Session Layer

        The +Session Layer establishes, maintains, and ends communication with the receiving +device.

      • +
      • Transport Layer

        The +Transport Layer takes the incoming data from applications and combines it +into a single stream. This stream is then passed on to the Network Layer.

      • +
      • Network Layer

        The +Network Layer determines the way the data is sent to the recipient device. +Logical protocols, routing, and addressing are all dealt with in this layer.

      • +
      • Data Layer

        The +Data Layer assigns physical protocol to the data.

      • +
      • Physical Layer

        The +Physical Layer defines the physical characteristics such as connections, voltage +levels and timing.

      • +
      +
      Technologies

      The following table maps the various +communications technologies implemented in Symbian platform to the layers +defined by the OSI Model. Networking Services implements technologies that +mostly map to the Transport and Network Layers. Other Symbian platform +modules implement higher level application layer protocols and device drivers +that implement the bottom layers of the stack.

      + + + +Application Layer + + +DHCP      +¦      DNS      ¦ +      FTP      ¦     HTTP      +¦     RTCP      +¦      SIP       +¦     TELNET + + +Presentation Layer + + +TLS/SSL + + +Session Layer + + +RTP + + + Transport Layer + + +TCP         +¦       UDP + + + Network Layer + + +IP (IPv4/IPv6)     +¦       IPsec + + + Data Link Layer + + +Ethernet      +¦      GPRS + + + Physical Layer + + +RS232     +¦    Ethernet Physical Layer     ¦ +     Serial +Communications       ¦               USB + + + +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F64B88E0-49DA-5563-896E-29BAB8A244C9.dita --- a/Symbian3/PDK/Source/GUID-F64B88E0-49DA-5563-896E-29BAB8A244C9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F64B88E0-49DA-5563-896E-29BAB8A244C9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,65 +1,59 @@ - - - - - -HelloWorld: -A simple GUI application with a single viewThis example demonstrates a simple application using a GUI with -a single view. -
      Download

      Click on the following link to download -the example: HelloWorldGUI.zip

      Click: browse to view the example code.

      -
      Class Summary

      CEikApplication

      CEikDocument

      CEikAppUi

      CCoeControl

      -
      Design and implementation

      This application consists -of 4 classes:

        -
      • Application class derived -from CEikApplication.

      • -
      • Document class derived -from CEikDocument.

      • -
      • AppUi class derived -from CEikAppUi.

      • -
      • AppView class derived -from CCoeControl.

      • -

      E32Main() marks the entry point to the example. -It calls EikStart::RunApplication() to create a new application -instance. The UI framework then calls CExampleApplication::AppDllUid() to -obtain the application's UID. The UID returned must match the second value -defined in the project definition file.

      Once the application is created, -the UI framework calls CExampleApplication::CreateDocumentL() to -create an instance of the document class. CreateDocumentL() internally -calls the constructor of the document class and passes the supplied reference -to the constructor initialisation list. The document has no real work to do -in this simple GUI application.

      As soon as the document has been created -the UI framework creates an instance of the application UI (appUI). The appUI -class is an instance of a CEikAppUi -derived class and -this class takes care of user interaction.

      AppUI creation uses two -phase construction where first CExampleDocument::CreateAppUiL() is -called and then the framework calls the second phase constructor of the appUI -class. CExampleAppUi::ConstructL() creates and owns the view. -User commands are handled by the CExampleAppUi::HandleCommandL() method.

      The -app view class is used to draw the view. The view in this example consists -of a simple outline rectangle with text drawn in the middle.

      The example -contains a resource file HelloWorld.rss which defines -resource information. This includes a menubar with four menu items, an icon -and caption.

      HelloWorld.hrh defines the menu -command IDs and HelloWorld.pkg file is the source file -used for installation file (SIS file) generation.

      -
      Building and configuring

      Steps to build the example:

        -
      • You can build the example -from your IDE or the command line.

        If you use an IDE, import the bld.inf file -of the example into your IDE, and use the build command of the IDE.

        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:

        bldmake -bldfiles

        abld build

        How to use bldmake and How to use abld describe -how to use the SBSv1 build tools.

      • -
      • For the emulator, the -example builds an executable called helloworld.exe in -the epoc32\release\winscw\<udeb or urel>\ folder.

      • -
      + + + + + +HelloWorld: A simple GUI application with a single viewThis example demonstrates a simple application using a +GUI with a single view. +
      Download

      Click on the following link to +download the example: HelloWorldGUI.zip

      Click: browse to view the example code.

      +
      Class Summary

      CEikApplication

      CEikDocument

      CEikAppUi

      CCoeControl

      +
      Design and implementation

      This application +consists of 4 classes:

        +
      • Application +class derived from CEikApplication.

      • +
      • Document class +derived from CEikDocument.

      • +
      • AppUi class +derived from CEikAppUi.

      • +
      • AppView class +derived from CCoeControl.

      • +

      E32Main() marks the entry point to the +example. It calls EikStart::RunApplication() to create +a new application instance. The UI framework then calls CExampleApplication::AppDllUid() to obtain the application's UID. The UID returned must match the +second value defined in the project definition file.

      Once +the application is created, the UI framework calls CExampleApplication::CreateDocumentL() to create an instance of the document class. CreateDocumentL() internally calls the constructor of the document class and passes +the supplied reference to the constructor initialisation list. The +document has no real work to do in this simple GUI application.

      As soon as the document has been created the UI framework creates +an instance of the application UI (appUI). The appUI class is an instance +of a CEikAppUi -derived class and this class takes +care of user interaction.

      AppUI creation uses two phase construction +where first CExampleDocument::CreateAppUiL() is called +and then the framework calls the second phase constructor of the appUI +class. CExampleAppUi::ConstructL() creates and owns +the view. User commands are handled by the CExampleAppUi::HandleCommandL() method.

      The app view class is used to draw the view. The +view in this example consists of a simple outline rectangle with text +drawn in the middle.

      The example contains a resource file HelloWorld.rss which defines resource information. This +includes a menubar with four menu items, an icon and caption.

      HelloWorld.hrh defines the menu command +IDs and HelloWorld.pkg file is the source file +used for installation file (SIS file) generation.

      +
      Building and configuring

      Steps to build +the example:

        +
      • You can build +the example from your IDE or the command line.

        If you use +an IDE, import the bld.inf file of the example +into your IDE, and use the build command of the IDE.

        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:

        bldmake bldfiles

        abld +build

      • +
      • For the emulator, +the example builds an executable called helloworld.exe in the epoc32\release\winscw\<udeb or urel>\ folder.

      • +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita --- a/Symbian3/PDK/Source/GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F64E6551-670E-5E12-8103-DE504D3EC94F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,7 +20,7 @@ in other packages.

      The Symbian Foundation non-ScreenPlay graphics architecture - +

      The software model is as follows:

        @@ -48,7 +48,7 @@

        The following diagram shows the rendering stack in the non-ScreenPlay variant.

        The rendering stack in the non-ScreenPlay variant - +

        For the equivalent ScreenPlay diagram, see Graphics Composition @@ -61,7 +61,7 @@ in this type of use case.

        Example non-uniform memory, non-ScreenPlay hardware model - + The ScreenPlay diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F669F877-2DBD-55C3-97DA-78745E78347D.dita --- a/Symbian3/PDK/Source/GUID-F669F877-2DBD-55C3-97DA-78745E78347D.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F669F877-2DBD-55C3-97DA-78745E78347D.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,4 +11,4 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> System State Transition

        The System State Manager component (SysStateMgr.exe) controls transitioning of the device to different system states and reacts to changes made to the system-wide properties.

        The following image shows the system states and the transitions that are allowed between these states:

        System State Transitions -

        SSM policies determine the set of permissible states and state transitions and the tasks that are performed while changing the system state. SSM distributes system state change notifications to components in the systems that have requested notifications. These components respond to the change notifications.

        When there is a change in system state, the system state policies select the tasks to be performed from the available common tasks and task plug-ins.

        \ No newline at end of file +

        SSM policies determine the set of permissible states and state transitions and the tasks that are performed while changing the system state. SSM distributes system state change notifications to components in the systems that have requested notifications. These components respond to the change notifications.

        When there is a change in system state, the system state policies select the tasks to be performed from the available common tasks and task plug-ins.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F6780E5A-26DA-5453-B9BE-11039CFA4FFB.dita --- a/Symbian3/PDK/Source/GUID-F6780E5A-26DA-5453-B9BE-11039CFA4FFB.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -Resource file compiled format

        This section describes the binary format of compiled resource files.

        The resource reading API's in can read resources in the legacy Unicode format, as well as the two new formats introduced from v7.0.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F681C857-086F-527A-9946-A91560601658_d0e655935_href.jpg Binary file Symbian3/PDK/Source/GUID-F681C857-086F-527A-9946-A91560601658_d0e655935_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F681C857-086F-527A-9946-A91560601658_d0e668762_href.jpg Binary file Symbian3/PDK/Source/GUID-F681C857-086F-527A-9946-A91560601658_d0e668762_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F68FF4C2-F9DB-5935-9027-9BEC006D031F_d0e538236_href.png Binary file Symbian3/PDK/Source/GUID-F68FF4C2-F9DB-5935-9027-9BEC006D031F_d0e538236_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F68FF4C2-F9DB-5935-9027-9BEC006D031F_d0e545696_href.png Binary file Symbian3/PDK/Source/GUID-F68FF4C2-F9DB-5935-9027-9BEC006D031F_d0e545696_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F6903E31-DF4A-572F-BF2C-65CE618F016E.dita --- a/Symbian3/PDK/Source/GUID-F6903E31-DF4A-572F-BF2C-65CE618F016E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F6903E31-DF4A-572F-BF2C-65CE618F016E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -18,7 +18,7 @@ containers, one container for each type; i.e. one for threads, one for processes, one for mutexes etc. as shown below.

        - +

        See also:

          diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F6B5F777-D12F-5913-AECE-047DF8C72F1F.dita --- a/Symbian3/PDK/Source/GUID-F6B5F777-D12F-5913-AECE-047DF8C72F1F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F6B5F777-D12F-5913-AECE-047DF8C72F1F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> How to Get Location InformationThis document demonstrates how a client application uses the Location Acquisition API to get a position.
          Purpose

          This tutorial explains how to get location information using the Location Acquisition API.

          Required background

          Location Acquisition API Overview describes the main client/server classes of the API.

          Position Data and Info Classes describes the classes that hold location information.

          Getting location information

          This section describes how to get location information using the Location Acquisition API.

          Introduction

          Client applications use the RPositionServer and RPositioner classes to get position updates. RPositionServer is used by client applications to manage a session with the Location Server and to get Positioning Module information. RPositioner is used by client applications to manage a subsession with the Location Server and to get position updates.

          GPS positioning modes

          The Global Positioning System (GPS) is a technology that is often included in devices that support LBS.

          For each location request from a client, the LBS subsystem can operate in one of several different GPS positioning modes. The Location Acquisition API hides the details of which GPS positioning mode is in use from client applications. A client makes the same sequence of calls to the API to get a position update whichever positioning mode is used. Note that only some of these positioning modes may be available to a client application at runtime.

          Each GPS positioning mode is a different way of getting a position fix:

          • Autonomous

            LBS uses a GPS Positioning Module to calculate position fixes without assistance data from the network. This mode typically takes the longest time to obtain a location fix compared to the other modes.

          • Terminal Based Mode

            LBS uses an A-GPS Positioning Module to calculate position fixes using assistance data from the network. Assistance data specifies the GPS satellites that are above the horizon as seen from the mobile device's current location. Assistance data is used by an A-GPS Positioning Module to reduce the time necessary to obtain a position fix.

            The network can also supply a reference position to the LBS subsystem as part of the sequence of events. This position is calculated in the network using cell-based techniques and may be less accurate than that obtained from GPS. If a reference position is available, it may be returned to the client before a GPS position.

            See Location Acquisition API Runtime Behaviour for more information about the position updates that can be returned by LBS.

          • Terminal Assisted Mode

            LBS uses an A-GPS Positioning Module to obtain GPS measurements (using assistance data from the network). GPS measurements are the raw data used to calculate a GPS fix. Measurements are sent to the network and a position fix is calculated by a remote server. The remotely calculated position fix is returned to the mobile device and is known as the final network position. The LBS subsystem returns this position to the client.

          • Simultaneous Terminal Based Mode and Terminal Assisted Mode.

            LBS passes GPS measurements to the network (as in Terminal Assisted Mode), but also attempts to use those measurements to calculate a GPS position fix (as in Terminal Based Mode). The position returned to the client may be either a GPS position (calculated in the mobile device) or a final network position (calculated using the measurements by a remote server in the network). The position that is calculated first (the GPS position or the final network position) is generally returned to the client. The final network position may also be returned to the client after the return of the GPS position.

          Some devices also support a Cell-based Mode in which LBS obtains a position fix from the network without using GPS. This position fix is sometimes less accurate than that obtained using GPS.

          A client application cannot directly choose the GPS positioning mode that is used for its location request. A handset manufacturer may provide an LBS settings application where the GPS mode can be selected by an end user. However for modes that involve the network (Terminal Based Mode, Terminal Assisted Mode and Cell-based Mode) it is possible for a network operator to override the GPS mode as part of the location request. If a client wants to know precisely how a position fix was calculated, this information is available in the returned position info object (as described in more detail later in this document).

          Example sequence

          Figure 1 shows a simplified sequence for a client requesting a position update from LBS. The sequence shows simplified behaviour for Terminal Based Mode. The A-GPS Module is a Positioning Module that uses Assisted GPS to calculate a position. The Network Protocol Module is a Positioning Module that obtains GPS assistance data and reference positions (often approximate positions) from the network. Note that Terminal Based Mode may not be available on all mobile devices. This depends on the Positioning Modules that have been installed by the mobile device creator.

          Figure 1. Simplified Terminal Based Mode Sequence -

          Example code and description

          The following code shows a simple example of how a client application can get a single position update. The numbers in the code comments refer to sections that follow the code example.

          #include <lbs.h> +

          Example code and description

          The following code shows a simple example of how a client application can get a single position update. The numbers in the code comments refer to sections that follow the code example.

          #include <lbs.h> #include <lbserrors.h> ... @@ -201,4 +201,4 @@ TPositionModuleInfo::ETechnologyAssisted, but it is possible for LBS to return TPositionModuleInfo::ETechnologyTerminal | TPositionModuleInfo::ETechnologyAssisted if it is configured to do so. See Location Acquisition API runtime behaviour for more information.

        Note that NotifyPositionUpdate() may complete early if a GPS positioning module signals to LBS that it will be unable to return a location fix with the required quality criteria. In this case the Location Server returns the best location fix it can obtain to the client. The value of the TRequestStatus parameter of the client is set to either KPositionQualityLoss or KErrNone depending on the configuration of Location Acquisition API runtime behaviour.

        Tracking

        A position update time line for tracking is shown in figure 2. Note that the exact behaviour of tracking on systems may differ from that shown in Figure 2.

        A client application has previously called TPositionUpdateOptions::SetUpdateInterval(T) and RPositioner::SetUpdateOptions() (not shown in figure 2). Partial updates are not set. LBS is also configured to return reference positions and accurate positions only (see Location Acquisition API runtime behaviour for more information about this behaviour). The important points are:

        • A client application makes its first call to RPositioner::NotifyPositionUpdate() (First NPUD in figure 2).

        • After a time t, the client's RunL() method is called and it receives its first position update (the reference position update Ref Pos in figure 2). This first position update is delivered to the client by LBS as soon as possible (t is as short as possible and is not equal to T). The client then makes its next call to NotifyPositionUpdate() (the next NPUD in figure 2). When tracking, a client application should make its next call to RPositioner::NotifyPositionUpdate() as soon as possible in its RunL() method. The time between the client's RunL() and the client's next NPUD is exaggerated for clarity in Figure 2.

        • At a time t + T (where T is the update interval) the client's RunL() method is called and it receives the next position update (GPS Pos in figure 2). The client makes its next call to NotifyPositionUpdate().

        • The next position update is expected at time t + 2T, but in the case shown in figure 2 this is not possible (the mobile device may have moved into an area where the GPS signal is weak). In general if it is not possible to obtain an accurate GPS fix by time t + nT, but the fix is obtained a short time later, the next position update is delivered as soon as possible after time t + nT (after t + 2T in figure 2).

        • The client makes its next call to NotifyPositionUpdate() and at time t + (n+1)T the next position update is delivered (at t + 3T in figure 2).

          The important point to note is that LBS attempts to deliver position updates at regular times t + nT but the time interval between position updates may temporarily be greater than or less than T.

        • Note that if partial updates were enabled, an incomplete position would be delivered at time t + 2T if it were available. Also note that an inaccurate position would be delivered if one was available at that time and LBS was configured to return it.

        Figure 2. Position updates when tracking -

        Error codes

        The value of a client's TRequestStatus can be set to an LBS error code (defined in lbserrors.h) or an error code defined in a licensee's Positioning Module. An error causes NotifyPositionUpdate() to complete. An application should always check the value of TRequestStatus when its RunL() method is called.

        7. Cancel or complete a location information request

        To cancel a location request a client application calls RPositionerSubSessionBase::CancelRequest(), passing a EPositionerNotifyPositionUpdate parameter. The client's TRequestStatus is set to KErrCancel if the request was successfully cancelled and no position update is returned.

        To complete a location request early, a client application calls RPositionerSubSessionBase::CompleteRequest() passing a EPositionerNotifyPositionUpdate parameter. Calling this method does not cancel the position update, but asks the Location Server to return any available position data. The returned position update may be different from that which would have been returned if the request had been allowed to complete normally. If the request is completed early, the client's TRequestStatus is set to KPositionEarlyComplete.

        8. Close the subsession and session

        RPositioner::Close() closes the subsession. RPositionServer::Close() closes the server session. In the code example the cleanup stack function is used. Any privacy requester objects created by a client must also be cleaned up.

    \ No newline at end of file +

    Error codes

    The value of a client's TRequestStatus can be set to an LBS error code (defined in lbserrors.h) or an error code defined in a licensee's Positioning Module. An error causes NotifyPositionUpdate() to complete. An application should always check the value of TRequestStatus when its RunL() method is called.

    7. Cancel or complete a location information request

    To cancel a location request a client application calls RPositionerSubSessionBase::CancelRequest(), passing a EPositionerNotifyPositionUpdate parameter. The client's TRequestStatus is set to KErrCancel if the request was successfully cancelled and no position update is returned.

    To complete a location request early, a client application calls RPositionerSubSessionBase::CompleteRequest() passing a EPositionerNotifyPositionUpdate parameter. Calling this method does not cancel the position update, but asks the Location Server to return any available position data. The returned position update may be different from that which would have been returned if the request had been allowed to complete normally. If the request is completed early, the client's TRequestStatus is set to KPositionEarlyComplete.

    8. Close the subsession and session

    RPositioner::Close() closes the subsession. RPositionServer::Close() closes the server session. In the code example the cleanup stack function is used. Any privacy requester objects created by a client must also be cleaned up.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F6B9860A-E7F2-5B03-878D-9BCA0AF029C2.dita --- a/Symbian3/PDK/Source/GUID-F6B9860A-E7F2-5B03-878D-9BCA0AF029C2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F6B9860A-E7F2-5B03-878D-9BCA0AF029C2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -81,7 +81,7 @@ and components associated with each collection:

    Collections and components of Generic OS Services - +
    Technologies

    Generic OS services enables, implements or uses the following technologies:

      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F6BC696F-0279-5902-B945-AEF7257D3EEB.dita --- a/Symbian3/PDK/Source/GUID-F6BC696F-0279-5902-B945-AEF7257D3EEB.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F6BC696F-0279-5902-B945-AEF7257D3EEB.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,15 +1,16 @@ - - - - - -PIM -ExamplesExample code for Application Engines and Services. - + + + + + +PIM +Examples +

      Example code for Application Engines and Services.

      +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F6C68A6B-2D66-56A6-A706-7145C5E7F52A_d0e450838_href.png Binary file Symbian3/PDK/Source/GUID-F6C68A6B-2D66-56A6-A706-7145C5E7F52A_d0e450838_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F6C68A6B-2D66-56A6-A706-7145C5E7F52A_d0e456683_href.png Binary file Symbian3/PDK/Source/GUID-F6C68A6B-2D66-56A6-A706-7145C5E7F52A_d0e456683_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F7181D22-8607-56CE-B8CC-77AE0E378503_d0e527048_href.png Binary file Symbian3/PDK/Source/GUID-F7181D22-8607-56CE-B8CC-77AE0E378503_d0e527048_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F7181D22-8607-56CE-B8CC-77AE0E378503_d0e534508_href.png Binary file Symbian3/PDK/Source/GUID-F7181D22-8607-56CE-B8CC-77AE0E378503_d0e534508_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F740BA72-B00E-5D98-BD0F-5937F60460BC_d0e210795_href.jpg Binary file Symbian3/PDK/Source/GUID-F740BA72-B00E-5D98-BD0F-5937F60460BC_d0e210795_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F740BA72-B00E-5D98-BD0F-5937F60460BC_d0e216796_href.jpg Binary file Symbian3/PDK/Source/GUID-F740BA72-B00E-5D98-BD0F-5937F60460BC_d0e216796_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F765C7EB-A8C6-50C0-B350-85BE04C8984F.dita --- a/Symbian3/PDK/Source/GUID-F765C7EB-A8C6-50C0-B350-85BE04C8984F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F765C7EB-A8C6-50C0-B350-85BE04C8984F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -18,7 +18,7 @@

      Anchor points are always referred to as headers.

      A doubly linked list is useful for maintaining a circular queue of items.

      - +

      Doubly linked lists involve the creation and use of the classes:

        diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F77CC49A-904D-486B-8D16-972525EC34D5.dita --- a/Symbian3/PDK/Source/GUID-F77CC49A-904D-486B-8D16-972525EC34D5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F77CC49A-904D-486B-8D16-972525EC34D5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -23,7 +23,7 @@

        The Clear key is used for deleting characters and for that purpose only.

        Data query. - +
        Using data queries in applications

        For implementation information, diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F78F12AE-64CA-50BD-A715-8F254FBDB793_d0e214506_href.png Binary file Symbian3/PDK/Source/GUID-F78F12AE-64CA-50BD-A715-8F254FBDB793_d0e214506_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F78F12AE-64CA-50BD-A715-8F254FBDB793_d0e220526_href.png Binary file Symbian3/PDK/Source/GUID-F78F12AE-64CA-50BD-A715-8F254FBDB793_d0e220526_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F79A3DD7-DB91-545F-8165-F1F2DD6D0AD2.dita --- a/Symbian3/PDK/Source/GUID-F79A3DD7-DB91-545F-8165-F1F2DD6D0AD2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F79A3DD7-DB91-545F-8165-F1F2DD6D0AD2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -12,4 +12,4 @@ Creating an Implicitly Bound SocketThis topic describes how create an implicitly bound socket.

        • An application opens a socket using the default interface connection and binds to a port and IP address of the connection. The application receives inbound traffic only from the interface the socket is bound to.

          For example, an application opens an implicit UDP socket and listens on port 8000. The UDP socket binds to interface IP address 10.253.4.134. The UDP socket must receive data packets from this interface only.

        • If an application opens a socket and does not bind to a port or IP address of the default interface connection, then the application receives inbound traffic from multiple interfaces.

          For example, if an application opens an implicit UDP socket and does not bind the port 8000 to the IP address of the default interface connection, then the application receives inbound traffic from all the interfaces.

        Implicit binding example

        Client B creates a socket with implicit binding without specifying the interface connection.

        server = RSocketServ.Connect(); socket1 = RSocket.Open(server); -

        ESock creates the socket within the default connection and subconnection.

        Socket Binding \ No newline at end of file +

        ESock creates the socket within the default connection and subconnection.

        Socket Binding \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F79E4F18-19E2-577E-8409-8B82BD48AC66.dita --- a/Symbian3/PDK/Source/GUID-F79E4F18-19E2-577E-8409-8B82BD48AC66.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F79E4F18-19E2-577E-8409-8B82BD48AC66.dita Fri Jul 16 17:23:46 2010 +0100 @@ -52,7 +52,7 @@
        Architecture

        The following diagram illustrates the XML framework, consisting of client and a parser:

        Block diagram of XML framework - +

        The XML framework consists of classes which model the main constituents of the architecture - the framework as a whole, the parser plug-ins and extensions to XML, the content processor chain and the content handler mechanism.

        The diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F79EE68F-FFC3-541E-AE3A-D7203034DA43.dita --- a/Symbian3/PDK/Source/GUID-F79EE68F-FFC3-541E-AE3A-D7203034DA43.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ - - - - - -mmp -project specification -

        This page describes the MMP for a typical GUI application.

        -

        TARGETTYPE

        -

        From v9.0, a GUI application is an exe. This is specified with the targettype statement:

        -TARGETTYPE exe -

        The target filename's extension can be either .app or .exe. This is specified -using a target statement:

        -TARGET <appname>.exe -

        UID

        -

        Specify the UID for the application in a uid statement:

        -UID 0x100039CE <UID3> -

        The UID2 value 0x100039CE should be used for all applications. -The UID3 value is the unique identifier for the particular application.

        -

        Stack size

        -

        By default, processes have a stack size of 8K. This can be insufficient -for some applications. To increase the size, use an epocstacksize statement:

        -// set stack to 20K -epocstacksize 0x5000 -

        UI resource

        -

        Specify the application's UI resource file using a start -resource statement:

        -START RESOURCE <appname>.RSS -HEADER -TARGETPATH \Resource\Apps -END -

        The resource should be built into the \Resource\Apps directory. -This is specified using the TARGETPATH part of the statement.

        -

        The header line tells the resource compiler to produce -a file \epoc32\include\<appname>.rsg, which defines -macro constants through which C++ programs can refer to resource structures.

        -

        Caption/icon resource

        -

        An application can specify localisable captions and icons to display on -the shell using a LOCALISABLE_APP_INFO resource, either -in the UI resource file or in a separate resource file.

        -

        Registration file

        -

        Specify the application's registration file using another start -resource statement:

        -START RESOURCE <appname>_reg.rss -TARGETPATH \private\10003a3f\apps -END -

        The registration file must be built to the private system directory \private\10003a3f\apps directory.

        -

        Note that for security reasons a registration file cannot be installed -directly to this location on a target device. When creating a PKG file (software -install package file) for an application, the registration file must be installed -to the \private\10003a3f\import\apps\ directory.

        -

        For more information, see Application -registration information.

        -

        Icons

        -

        A bitmap file containing icons for an application can be specified using -a start bitmap statement:

        -START BITMAP <appname>.mbm -TARGETPATH \Resource\Apps -SOURCE <color-depth> <source-bitmap-list> -END -

        Icon files, like the UI resource file, should be built into the \Resource\Apps directory.

        -

        An example of a real GUI application project file -is given below:

        TARGET HelloWorld.exe -TARGETTYPE exe -UID 0x100039CE 0x10004299 -VENDORID 0x70000001 -epocstacksize 0x5000 - -SOURCEPATH . -SOURCE HelloWorld_Main.cpp -SOURCE HelloWorld_Application.cpp -SOURCE HelloWorld_Document.cpp -SOURCE HelloWorld_AppUi.cpp -SOURCE HelloWorld_AppView.cpp -USERINCLUDE . -SYSTEMINCLUDE \epoc32\include - -START RESOURCE HelloWorld.RSS -HEADER -TARGETPATH \Resource\Apps -end - -START RESOURCE HelloWorld_reg.rss -TARGETPATH \private\10003a3f\apps -END - -START BITMAP HelloWorld.mbm -TARGETPATH \Resource\Apps -SOURCE c8,1 icon24.bmp icon2m.bmp icon32.bmp icon3m.bmp icon48.bmp icon4m.bmp -END - -LIBRARY euser.lib apparc.lib cone.lib eikcore.lib
        - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F7A17E65-CB2D-41D3-9404-1A7D7F55FABC_d0e103103_href.png Binary file Symbian3/PDK/Source/GUID-F7A17E65-CB2D-41D3-9404-1A7D7F55FABC_d0e103103_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F7A17E65-CB2D-41D3-9404-1A7D7F55FABC_d0e99023_href.png Binary file Symbian3/PDK/Source/GUID-F7A17E65-CB2D-41D3-9404-1A7D7F55FABC_d0e99023_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F7AE615A-DA24-5F88-A505-89962CA43E93_d0e531178_href.png Binary file Symbian3/PDK/Source/GUID-F7AE615A-DA24-5F88-A505-89962CA43E93_d0e531178_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F7AE615A-DA24-5F88-A505-89962CA43E93_d0e538638_href.png Binary file Symbian3/PDK/Source/GUID-F7AE615A-DA24-5F88-A505-89962CA43E93_d0e538638_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F7BFE6E3-0EEE-536C-8411-65D8F5FEBF2E_d0e109434_href.png Binary file Symbian3/PDK/Source/GUID-F7BFE6E3-0EEE-536C-8411-65D8F5FEBF2E_d0e109434_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F7BFE6E3-0EEE-536C-8411-65D8F5FEBF2E_d0e111857_href.png Binary file Symbian3/PDK/Source/GUID-F7BFE6E3-0EEE-536C-8411-65D8F5FEBF2E_d0e111857_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F7C762AA-3961-4739-ADD1-346DBF7CD7F8-master.png Binary file Symbian3/PDK/Source/GUID-F7C762AA-3961-4739-ADD1-346DBF7CD7F8-master.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F7C762AA-3961-4739-ADD1-346DBF7CD7F8_d0e105362_href.png Binary file Symbian3/PDK/Source/GUID-F7C762AA-3961-4739-ADD1-346DBF7CD7F8_d0e105362_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F7C9730D-7A41-4EE3-881C-393BB52B99C8_d0e63710_href.png Binary file Symbian3/PDK/Source/GUID-F7C9730D-7A41-4EE3-881C-393BB52B99C8_d0e63710_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F7C9730D-7A41-4EE3-881C-393BB52B99C8_d0e67932_href.png Binary file Symbian3/PDK/Source/GUID-F7C9730D-7A41-4EE3-881C-393BB52B99C8_d0e67932_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F7CC81CE-E823-5196-944A-5F7524411A08.dita --- a/Symbian3/PDK/Source/GUID-F7CC81CE-E823-5196-944A-5F7524411A08.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F7CC81CE-E823-5196-944A-5F7524411A08.dita Fri Jul 16 17:23:46 2010 +0100 @@ -9,35 +9,33 @@ --> -Registration -and Discovery -

        Server applications need to advertise what services they provide and clients -of server application services need to know what implementations of the services -exist. This happens through Apparc's application registration file system.

        -

        Application registration files have a table in which applications can list -the service UIDs that they implement. For each service UID listed, there is -an associated opaque (i.e. not interpreted by the framework) data field which -indicates how the service is implemented by that application. The opaque data -field is accessed through an LLINK into a resource elsewhere -in the application registration file group. The meaning of this opaque data -field is not known to the framework, it will vary according to the service. -For some services the opaque data field may be a name intended for user display, -for others it may be structured data that the service's client-side code can -interpret.

        +Registration and Discovery +

        Server applications need to advertise what services they provide +and clients of server application services need to know what implementations +of the services exist. This happens through Apparc's application registration +file system.

        +

        Application registration files have a table in which applications +can list the service UIDs that they implement. For each service UID +listed, there is an associated opaque (i.e. not interpreted by the +framework) data field which indicates how the service is implemented +by that application. The opaque data field is accessed through an LLINK into a resource elsewhere in the application registration +file group. The meaning of this opaque data field is not known to +the framework, it will vary according to the service. For some services +the opaque data field may be a name intended for user display, for +others it may be structured data that the service's client-side code +can interpret.

        - + -

        Clients of a service can discover which applications implement a particular -service by using RApaLsSession. This has a number of APIs -for retrieving an application list, filtered to only include applications -that implement a particular service. RApaLsSession can also -return other information about server applications, including how the services -are implemented as described by the opaque data field. If a service uses the -opaque data field to store localised strings to describe implementations, -these can be shown to the user. If a service uses structured data, a resource +

        Clients of a service can discover which applications implement +a particular service by using RApaLsSession. This +has a number of APIs for retrieving an application list, filtered +to only include applications that implement a particular service. RApaLsSession can also return other information about server +applications, including how the services are implemented as described +by the opaque data field. If a service uses the opaque data field +to store localised strings to describe implementations, these can +be shown to the user. If a service uses structured data, a resource reader can be created over the opaque data field to extract the data.

        -

        Also see the 'Service list' section in Defining -application icons, captions and properties.

        -
        See also

        Application -Architecture Overview

        +
        See also

        Application Architecture +Overview

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F7FEB759-E64D-5B6D-9017-C5E982E4FC16.dita --- a/Symbian3/PDK/Source/GUID-F7FEB759-E64D-5B6D-9017-C5E982E4FC16.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F7FEB759-E64D-5B6D-9017-C5E982E4FC16.dita Fri Jul 16 17:23:46 2010 +0100 @@ -24,7 +24,7 @@ illustrates how Standard C++ interacts with the Symbian platform and P.I.P.S. libraries:

        Standard C++ on the Symbian platform - +
        Copyright diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F8069628-BD32-535C-963A-A1CF8172E275.dita --- a/Symbian3/PDK/Source/GUID-F8069628-BD32-535C-963A-A1CF8172E275.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F8069628-BD32-535C-963A-A1CF8172E275.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> What are CF Protocols, Binders, and FlowsThis topic describes the concepts of Communications Framework (CF) Protocols,Binders and Flows in the Communications Framework.

        In the Communications Architecture each Layer requires the participation of several communications components; namely the Tier Manager, MCPR, CPR, SCPR and the components. The name given to the Data Flow components is a Communications Framework Protocol (CF Protocol).

        Figure 1 - A CF Protocol in the Layered Comms Stack -

        A CF Protocol is a collection of components on the Data Plane, most importantly the Flow and the Binder(s). The Flow is a Node and communicates with the SCPR that caused it to be started, using the asynchronous Message Transport mechanism. Each Flow has one or more Binders which connect the Flow to the layer above.

        CF Protocol components +

        A CF Protocol is a collection of components on the Data Plane, most importantly the Flow and the Binder(s). The Flow is a Node and communicates with the SCPR that caused it to be started, using the asynchronous Message Transport mechanism. Each Flow has one or more Binders which connect the Flow to the layer above.

        CF Protocol components Components of a CF Protocol -

        A CF Protocol is constructed of two main components:

        • Flow - a single conversation with a remote peer. There can be multiple Flows in a CF Protocol to handle multiple concurrent conversations through the same instance of the CF Protocol.

        • Binder - A Binder handles the interface between the current Flow and the Layer above. A Binder connects two CF Protocols together so that they can communicate data and sometimes commands. A Flow can have more than one Binder if it needs to connect to more than one Flow in the Layer above.

          A Protocol Binder is the binding point for de-multiplexed incoming data but provides no flow control, data will be lost if the layer above is not ready to process it.

          A Session Binder handles flow control by contacting the Layer above to say data is available, and waits for the CF Protocol of the Layer above to request the data.

        Flow

        A Flow is an instance of a class which represents a single conversation with a remote peer.

        There may be many active Flows in a CF Protocol to represent many concurrent conversations through the same instance of the CF Protocol.

        A Flow is a Stack Node created and controlled by one SCPR.

        Configuration data for the Flow is provisioned directly by the SCPR and usually originates from the MCPR.

        Since a Flow handles message exchange with the corresponding SCPR asynchronously, a Flow is always a state machine. State transitions are mostly triggered by exchange of different message types with the remote peer. State transitions may also be triggered by other mechanisms, such as timeouts, that require active objects within the Flow. A Flow is created by a Factory.

        The Flow can de-multiplex the inbound, though it is up to the specific Flow to have appropriate code to do the de-multiplexing. De-multiplexing could be performed based on address information, port information, protocol specific session, source identifier or other data. De-multiplexing passes data to specific Flows, via individual Protocol Binders, to higher level CF Protocols which can also de-multiplex the data further. If there is no de-multiplexing then the layer above does not have to bind a protocol interface as a data receiver. An example would be an IP Flow, which may contain IPv4 and IPv6 packets and would have separate Protocl Binders for each version.

        Each Flow must serve the following messages:

        • TBindTo - tells the Flow which lower Flow to bind to

        • TProvisionConfig - carries a configuration object

        • TStartFlow - starts the Flow

        • TStopFlow - stops the Flow

        • TDestroy - instructs the Flow to delete itself

        • TStateChange - the Flow should send this whenever it wants to inform the control side of its state change

        Binder

        The Binder is split into two parts:

        • Binder Control - used by the upper layer to set up the binding with the lower layer.

        • Binder - the actual binding between two Layers so that data can be sent and received. Again there are two types of Binder, Protocol Binder and Session Binder. It is common for a particular CF Protocol to only support one kind of Binder, Session or Protocol.

        There will be CF Protocols where it will be a good design to have a Protocol Binder for data, and to use a Session Binder for control messages. These will usually be separate Flows.

        Protocol Binder

        A Protocol Binder is used by the Flow as the link to the next higher CF Protocol for inbound data.

        A Protocol Binder only communicates with the Flow and should never communicate with an SCPR. Any design that would require the Protocol Binder to communicate with the SCPR should be redesigned.

        Protocol Binders are most commonly used for lower-level protocols (nearer the hardware) rather than the higher-level Link layer protocols.

        Session Binder

        A Session Binder offers much richer functionality than a Protocol Binder as it is mostly used by higher level protocols (closer to application space) that are more complex than the lower level ones (closer to hardware). A Session Binder operates independently of the protocol of the next Layer above with which it connects, as opposed to the Protocol Binder which is specific for a particular protocol in the Layer above. A Session Binder may offer functionality that is supported by only some of the protocols using that binder. For example a Session Binder may provide flow control on the data, while a Protocol Binder will pass the data upwards immediately and if the Layer above is not able to accept the data it will be discarded.

        Layers Planes Nodes \ No newline at end of file +

        A CF Protocol is constructed of two main components:

        • Flow - a single conversation with a remote peer. There can be multiple Flows in a CF Protocol to handle multiple concurrent conversations through the same instance of the CF Protocol.

        • Binder - A Binder handles the interface between the current Flow and the Layer above. A Binder connects two CF Protocols together so that they can communicate data and sometimes commands. A Flow can have more than one Binder if it needs to connect to more than one Flow in the Layer above.

          A Protocol Binder is the binding point for de-multiplexed incoming data but provides no flow control, data will be lost if the layer above is not ready to process it.

          A Session Binder handles flow control by contacting the Layer above to say data is available, and waits for the CF Protocol of the Layer above to request the data.

        Flow

        A Flow is an instance of a class which represents a single conversation with a remote peer.

        There may be many active Flows in a CF Protocol to represent many concurrent conversations through the same instance of the CF Protocol.

        A Flow is a Stack Node created and controlled by one SCPR.

        Configuration data for the Flow is provisioned directly by the SCPR and usually originates from the MCPR.

        Since a Flow handles message exchange with the corresponding SCPR asynchronously, a Flow is always a state machine. State transitions are mostly triggered by exchange of different message types with the remote peer. State transitions may also be triggered by other mechanisms, such as timeouts, that require active objects within the Flow. A Flow is created by a Factory.

        The Flow can de-multiplex the inbound, though it is up to the specific Flow to have appropriate code to do the de-multiplexing. De-multiplexing could be performed based on address information, port information, protocol specific session, source identifier or other data. De-multiplexing passes data to specific Flows, via individual Protocol Binders, to higher level CF Protocols which can also de-multiplex the data further. If there is no de-multiplexing then the layer above does not have to bind a protocol interface as a data receiver. An example would be an IP Flow, which may contain IPv4 and IPv6 packets and would have separate Protocl Binders for each version.

        Each Flow must serve the following messages:

        • TBindTo - tells the Flow which lower Flow to bind to

        • TProvisionConfig - carries a configuration object

        • TStartFlow - starts the Flow

        • TStopFlow - stops the Flow

        • TDestroy - instructs the Flow to delete itself

        • TStateChange - the Flow should send this whenever it wants to inform the control side of its state change

        Binder

        The Binder is split into two parts:

        • Binder Control - used by the upper layer to set up the binding with the lower layer.

        • Binder - the actual binding between two Layers so that data can be sent and received. Again there are two types of Binder, Protocol Binder and Session Binder. It is common for a particular CF Protocol to only support one kind of Binder, Session or Protocol.

        There will be CF Protocols where it will be a good design to have a Protocol Binder for data, and to use a Session Binder for control messages. These will usually be separate Flows.

        Protocol Binder

        A Protocol Binder is used by the Flow as the link to the next higher CF Protocol for inbound data.

        A Protocol Binder only communicates with the Flow and should never communicate with an SCPR. Any design that would require the Protocol Binder to communicate with the SCPR should be redesigned.

        Protocol Binders are most commonly used for lower-level protocols (nearer the hardware) rather than the higher-level Link layer protocols.

        Session Binder

        A Session Binder offers much richer functionality than a Protocol Binder as it is mostly used by higher level protocols (closer to application space) that are more complex than the lower level ones (closer to hardware). A Session Binder operates independently of the protocol of the next Layer above with which it connects, as opposed to the Protocol Binder which is specific for a particular protocol in the Layer above. A Session Binder may offer functionality that is supported by only some of the protocols using that binder. For example a Session Binder may provide flow control on the data, while a Protocol Binder will pass the data upwards immediately and if the Layer above is not able to accept the data it will be discarded.

        Layers Planes Nodes
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F82675C4-C2FD-50E2-BEDA-EB454FF1C57E_d0e260935_href.png Binary file Symbian3/PDK/Source/GUID-F82675C4-C2FD-50E2-BEDA-EB454FF1C57E_d0e260935_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F82675C4-C2FD-50E2-BEDA-EB454FF1C57E_d0e266944_href.png Binary file Symbian3/PDK/Source/GUID-F82675C4-C2FD-50E2-BEDA-EB454FF1C57E_d0e266944_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F84E18B8-5883-5A3A-A9DB-EC25BB86149F.dita --- a/Symbian3/PDK/Source/GUID-F84E18B8-5883-5A3A-A9DB-EC25BB86149F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F84E18B8-5883-5A3A-A9DB-EC25BB86149F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,39 +1,42 @@ - - - - - -TimersThe Kernel implements timing functions using a 1 millisecond tick -timer. -

        The phone hardware must therefore provide a high-speed timer that can -provide regular 1 ms interrupts. The ASSP/Variant part of the base port must -use this timer hardware to call the Kernel every millisecond.

        -

        The base port provides the timer service in an interrupt-service routine -called a tick handler. The functions used for this are as follows:

        -
          -
        • The tick handler must -be started by the Variant's implementation of the Asic::Init3() function.

        • -
        • The tick handler calls -the Kernel's NTImer::TickQ() function.

        • -
        • The Variant reports -the exact number of microseconds between ticks in its implementation of Asic::MsTickPeriod().

        • -
        -

        The ASSP/Variant must decide how to implement a repeating tick interrupt -for the hardware available. Typically this involves using either a free running -timer with a match register, which is reset on each match, or a self-reloading -countdown timer, to generate a periodic interrupt.

        -

        A base port can implement other timers that are required by peripherals -that have sub-millisecond timing requirements. This is optional, and depends -on the available hardware.

        -
        - -Asic::Init3() implementation - -Symbian OS Internals - Chapter 5.5 Timers + + + + + +TimersThe Kernel implements timing functions using a 1 millisecond +tick timer. +

        The phone hardware must therefore provide a high-speed timer that +can provide regular 1 ms interrupts. The ASSP/Variant part of the +base port must use this timer hardware to call the Kernel every millisecond.

        +

        The base port provides the timer service in an interrupt-service +routine called a tick handler. The functions used for this are as +follows:

        +
          +
        • The tick handler +must be started by the Variant's implementation of the Asic::Init3() function.

        • +
        • The tick handler +calls the Kernel's NTImer::TickQ() function.

        • +
        • The Variant +reports the exact number of microseconds between ticks in its implementation +of Asic::MsTickPeriod().

        • +
        +

        The ASSP/Variant must decide how to implement a repeating tick +interrupt for the hardware available. Typically this involves using +either a free running timer with a match register, which is reset +on each match, or a self-reloading countdown timer, to generate a +periodic interrupt.

        +

        A base port can implement other timers that are required by peripherals +that have sub-millisecond timing requirements. This is optional, and +depends on the available hardware.

        +
        + +Asic::Init3() implementation +Symbian OS Internals - Chapter 5.5 Timers +
        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F8A32666-5003-5B14-A700-C6E6388D2D38_d0e291470_href.png Binary file Symbian3/PDK/Source/GUID-F8A32666-5003-5B14-A700-C6E6388D2D38_d0e291470_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F8A32666-5003-5B14-A700-C6E6388D2D38_d0e297462_href.png Binary file Symbian3/PDK/Source/GUID-F8A32666-5003-5B14-A700-C6E6388D2D38_d0e297462_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F8C5A22F-8433-5F50-B12A-E964572E6C23.dita --- a/Symbian3/PDK/Source/GUID-F8C5A22F-8433-5F50-B12A-E964572E6C23.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F8C5A22F-8433-5F50-B12A-E964572E6C23.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,6 +11,6 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Privacy Notifiers Privacy Notifiers notify a user of privacy requests received from the network. A licensee must implement either Privacy Notifiers as described in this document, or a Privacy Controller to handle privacy requests.
        Purpose

        This document describes LBS privacy notifiers and the data types that licensees can use to create notifiers to notify a user of privacy requests. A licensee must implement either a Privacy Controller or the Privacy Notifiers described in this document to handle privacy requests. See LBS privacy requests overview for more information.

        Note that use of the LBS Privacy Notifiers described in this document is the recommended way of creating notifiers for LBS. The alternative Privacy Q&N Notifiers are deprecated.

        Some knowledge of the Extended Notifier Framework is required to understand the notifiers described in this document.

        How to create Privacy Notifiers has examples of how to create LBS Privacy Notifiers using the API described in this document.

        Contents
        • Introduction

        • Privacy Notifiers API description

        • See also

        Introduction

        Figure 1 shows the LBS Privacy Notifiers within the context of the Full LBS configuration. The LBS Privacy Notifiers are standard Symbian notifier plug-ins that use LBS Privacy Request Data Types to package the request and response data that is sent between the LBS subsystem and the notifiers.

        To use the LBS Privacy Notifiers, a licensee must implement two notifiers:

        • A Privacy Verification Notifier that receives a privacy verification request from the LBS subsystem and returns a privacy response. This notifier is used to obtain user approval to send the location.

        • A Privacy Notification Notifier that receives a privacy notification request from the LBS subsystem and does not return any response. This notifier is used simply to notify the user that their location is being sent.

        Figure 1. The Privacy Notifiers and part of the LBS subsystem. -
        Privacy Notifiers API description

        The LBS Privacy Notifiers are standard Symbian notifiers that use the Symbian Extended Notifier Framework. There are no additional LBS-specific base classes from which licensee notifier implementations must derive. LBS Privacy Notifiers derive directly from the notifier base class MEikSrvNotifierBase2.

        Classes and types

        The following table lists the main classes and types of the Privacy Data Types. Further details can be found by following the links to other sections of this document and to Symbian Developer Library reference documentation.

        The Privacy Notifiers types have publishedPartner interface access.

        Class name Description Header file

        TLbsExternalRequestInfo

        Contains information about the requester of the location.

        lbsloccommon.h

        TLbsPrivacyNotifierParams

        A container for the parameters that are sent to the LBS notifiers. Both a Privacy Verification Notifier and a Privacy Notification Notifier receive these parameters. This class wraps a TLbsExternalRequestInfo object.

        lbsextprivacynotifiers.h

        TLbsPrivacyNotifierParamsPckg

        A typedef to wrap a TLbsPrivacyNotifierParams in a TPckgBuf. Use this type to send the notifier parameters to a dialog via the RNotifier API.

        lbsextprivacynotifiers.h

        TLbsPrivacyNotifierResponse

        An enumerated type that contains the user response to the Privacy Verification Notifier (request acceptance or rejection).

        lbsextprivacynotifiers.h

        TLbsPrivacyResponseParams

        Container for the parameters that are returned from the LBS Privacy Verification Notifier.

        lbsextprivacynotifiers.h

        TLbsPrivacyResponseParamsPckg

        A typedef to wrap a TLbsPrivacyResponseParams in a TPckgBuf. Use this type to retrieve the result parameters from a dialog via the RNotifier API.

        lbsextprivacynotifiers.h

        Licensees who choose to use LBS Privacy Notifiers must implement two of them, one for privacy request verification and one for privacy request notification. Both notifiers can be packaged in the same ECOM plug-in DLL.

        The header file lbsextprivacynotifiers.h also contains definitions of the UIDs that must be used for LBS Privacy Notifiers. These values are specified as KLbsExtLocationRequestVerifyUid for a privacy verification notifier and KLbsExtLocationRequestNotifyUid for a privacy notification notifier. How to create LBS Privacy Notifiers has examples of their use.

        Privacy Notifiers API class diagram

        The LBS Privacy Notifier data classes and types are defined in lbsprivacyextnotifiers.h and are shown in figure 2. This figure also shows the TLbsExternalRequestInfo class that is used to pass request data from the LBS subsystem to the notifiers. This class is described in Privacy Controller documentation.

        +
        Privacy Notifiers API description

        The LBS Privacy Notifiers are standard Symbian notifiers that use the Symbian Extended Notifier Framework. There are no additional LBS-specific base classes from which licensee notifier implementations must derive. LBS Privacy Notifiers derive directly from the notifier base class MEikSrvNotifierBase2.

        Classes and types

        The following table lists the main classes and types of the Privacy Data Types. Further details can be found by following the links to other sections of this document and to Symbian Developer Library reference documentation.

        The Privacy Notifiers types have publishedPartner interface access.

        Class name Description Header file

        TLbsExternalRequestInfo

        Contains information about the requester of the location.

        lbsloccommon.h

        TLbsPrivacyNotifierParams

        A container for the parameters that are sent to the LBS notifiers. Both a Privacy Verification Notifier and a Privacy Notification Notifier receive these parameters. This class wraps a TLbsExternalRequestInfo object.

        lbsextprivacynotifiers.h

        TLbsPrivacyNotifierParamsPckg

        A typedef to wrap a TLbsPrivacyNotifierParams in a TPckgBuf. Use this type to send the notifier parameters to a dialog via the RNotifier API.

        lbsextprivacynotifiers.h

        TLbsPrivacyNotifierResponse

        An enumerated type that contains the user response to the Privacy Verification Notifier (request acceptance or rejection).

        lbsextprivacynotifiers.h

        TLbsPrivacyResponseParams

        Container for the parameters that are returned from the LBS Privacy Verification Notifier.

        lbsextprivacynotifiers.h

        TLbsPrivacyResponseParamsPckg

        A typedef to wrap a TLbsPrivacyResponseParams in a TPckgBuf. Use this type to retrieve the result parameters from a dialog via the RNotifier API.

        lbsextprivacynotifiers.h

        Licensees who choose to use LBS Privacy Notifiers must implement two of them, one for privacy request verification and one for privacy request notification. Both notifiers can be packaged in the same ECOM plug-in DLL.

        The header file lbsextprivacynotifiers.h also contains definitions of the UIDs that must be used for LBS Privacy Notifiers. These values are specified as KLbsExtLocationRequestVerifyUid for a privacy verification notifier and KLbsExtLocationRequestNotifyUid for a privacy notification notifier. How to create LBS Privacy Notifiers has examples of their use.

        Privacy Notifiers API class diagram

        The LBS Privacy Notifier data classes and types are defined in lbsprivacyextnotifiers.h and are shown in figure 2. This figure also shows the TLbsExternalRequestInfo class that is used to pass request data from the LBS subsystem to the notifiers. This class is described in Privacy Controller documentation.

        Figure 2. LBS Privacy Notifier data classes. -

        Libraries

        The LBS Privacy Notifiers are packaged in lbsprivacyextnotifiers.dll. A client (an LBS Privacy Notifier) links to lbsprivacyextnotifiers.lib.

        Capabilities

        Privacy Notifiers require the TrustedUI and ProtServ capabilities that are required by all notifiers that use the Extended Notifier Framework. The capabilities are specified in the Notifier's MMP file. See How to create LBS Privacy Notifiers for more information.

        LBS Configuration

        The LBS Administration setting KLbsSettingPrivacyHandler must be set to CLbsAdmin::EPrivacyHandleByNotifier to configure LBS to use Privacy Notifiers. See LBS administration for details of how to configure this setting either through the LBS Administration API or in the LBS central repository initialisation file.

        Sequential processing of privacy requests

        The LBS subsystem sends privacy requests sequentially to Privacy Notifiers. If multiple privacy requests are received how they are handled depends on the interface via which the privacy request was received:

        • Request received from a Network Protocol Module

          A second privacy request forces LBS to cancel an outstanding privacy request (but not emergency requests). The Privacy Notifier in use for the first privacy request is cancelled. The Privacy Notifier is then restarted to handle the second privacy request.

        • Request received via the Network Privacy API or the Privacy Request API

          Privacy notification and verification requests are sent sequentially to Privacy Notifiers. A Privacy Notifier must have responded to one privacy request (or LBS must have sent a timeout response) before the next request can be sent to the notifier. The maximum number of privacy requests that can be outstanding in the LBS subsystem is defined by the LBS administration setting KLbsSettingMaximumExternalLocateRequests. Further requests are rejected by the LBS subsystem if the number of outstanding privacy requests exceeds KLbsSettingMaximumExternalLocateRequests.

        \ No newline at end of file +

        Libraries

        The LBS Privacy Notifiers are packaged in lbsprivacyextnotifiers.dll. A client (an LBS Privacy Notifier) links to lbsprivacyextnotifiers.lib.

        Capabilities

        Privacy Notifiers require the TrustedUI and ProtServ capabilities that are required by all notifiers that use the Extended Notifier Framework. The capabilities are specified in the Notifier's MMP file. See How to create LBS Privacy Notifiers for more information.

        LBS Configuration

        The LBS Administration setting KLbsSettingPrivacyHandler must be set to CLbsAdmin::EPrivacyHandleByNotifier to configure LBS to use Privacy Notifiers. See LBS administration for details of how to configure this setting either through the LBS Administration API or in the LBS central repository initialisation file.

        Sequential processing of privacy requests

        The LBS subsystem sends privacy requests sequentially to Privacy Notifiers. If multiple privacy requests are received how they are handled depends on the interface via which the privacy request was received:

        • Request received from a Network Protocol Module

          A second privacy request forces LBS to cancel an outstanding privacy request (but not emergency requests). The Privacy Notifier in use for the first privacy request is cancelled. The Privacy Notifier is then restarted to handle the second privacy request.

        • Request received via the Network Privacy API or the Privacy Request API

          Privacy notification and verification requests are sent sequentially to Privacy Notifiers. A Privacy Notifier must have responded to one privacy request (or LBS must have sent a timeout response) before the next request can be sent to the notifier. The maximum number of privacy requests that can be outstanding in the LBS subsystem is defined by the LBS administration setting KLbsSettingMaximumExternalLocateRequests. Further requests are rejected by the LBS subsystem if the number of outstanding privacy requests exceeds KLbsSettingMaximumExternalLocateRequests.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F9455FE8-5247-58D5-ACEF-52753B88444F.dita --- a/Symbian3/PDK/Source/GUID-F9455FE8-5247-58D5-ACEF-52753B88444F.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -How to control binary compatibility
        Overview

        It is important for users that the software they buy and use should continue to run on new releases of Symbian platform, and that it should be transferable to new devices containing the latest releases of the operating system.

        Ensuring that a current software release does not break existing software is known as maintaining binary compatibility (BC). There is a related compatibility issue for data — ensuring that new software versions remain data compatible with previous versions. Data incompatibilities can be just as galling for software users, making existing documents obsolete, but don't intrinsically affect the software itself.

        BC is most obviously a concern for the systems developers responsible for the evolution of the operating system. However, it is relevant for any Symbian developer whose software provides services to client software. Symbian developers whose software uses such services should understand a problem that potentially they may encounter.

        A related concern is where a program is first developed using a version of some system component or a third part service. Symbian developers may need to know whether their programs will also work with older versions of that system component or third part service. This form of compatibility is an added bonus but, generally, backward compatibility is the overriding requirement.

        The interface as contract

        When a software component is changed, the changes impact all dependent software components — including the ones which have not yet been written. This means that rather than relying on testing, the safety of changes must somehow be guaranteed.

        A component which defines an interface through which it may be used should be regarded as making a contract with the rest of the world. Its interface is its contact. Other components which build against its interface must be guaranteed that when they later run against its interface, nothing will have changed. The BC requirement is that guarantee.

        Although in principle there are many different mechanisms through which software can offer an interface to clients, in the Symbian software platform, BC is a DLL related problem.

        Source compatibility, link compatibility, binary compatibility

        BC is stronger than both link and source compatibility. Maintaining BC also implies that both link and source compatibility are maintained.

        Source compatibility describes the situation where an interface we are using has changed between building against it and running against it, in such a way that we can only recover by rebuilding against the changed interface. Our source need not change, but we must rebuild.

        Because source level interfaces are defined in the published header #include files, it is easy to see whether changes are compatible — examine the changes to the header file.

        Link compatibility describes the situation where to recover from an interface change we must relink our component against a component we originally built against. Our source need not be rebuilt, but we must relink.

        Link level interfaces are defined by the published import library. Again it is not too hard to see whether a change is compatible — ensure that all exported functions are unchanged.

        Binary compatibility guarantees a constant interface between our building and running against another component.

        The BC level interface is not so easy to define and may include quite general behaviour of the changed component. Because it is hard to define it is hard to check for changes which potentially break it. Potential BC breaking changes include:

        • Virtual member functions are for life — you can't add or remove virtual member functions

        • or change the virtuality of a function

        • or change their declaration order

        • or override an existing function that was previously inherited

        • You cannot add a UID if was originally omitted from the DLL

        Safe changes which preserve backward binary compatibility include:

        • Any name can be changed but — this requires clear documentation because dependent components must change source code, and usually also requires editing the frozen .def files

        • Adding services — classes, global functions, static and non-virtual member functions can all be added to a shared library

        • Changing access specification — any member can be made more widely accessible. The reverse is not allowed. Similarly, friendship can be bestowed but not withdrawn

        • You can do what you like with private data and non-virtual function members except — when it would change the class size, or when effectively public data would move in the class

        • Parameters and return values — valid inputs must retain their interpretation and existing output values must retain their meaning

        • Inputs can be widened: e.g. less derived pointer, extended enum, adding a const qualifier or outputs can be narrowed: e.g. more derived pointer, fewer error code values, removing a const qualifier

        • Pointer and reference types can be exchanged

        To help maintain BC only release what you need to release — you don't have to support what you don't release

        Controlling binary compatibility with build time tools

        Some potentially BC breaking changes are introduced not by Symbian developers but by the build system. Symbian platform provides tools which help to control BC by blocking accidental build-time changes.

        When a DLL is loaded it supplies a table of addresses, one for each exported symbol and one for the entry point of each exported function. This is the DLL's public interface. To preserve BC the index of each export must remain constant from one release to another.

        Symbian platform uses export definitions (.def) files to manage this requirement. Each exported symbol is listed in the exports section of the file with its ordinal, which is calculated as index + ordinal base. Symbian platform uses an ordinal base of 1. By the definition of source compatibility implied by BC, every export defined in an earlier release will be defined in the new release. Exports introduced in a new release must come after those defined in earlier releases.

        For DLL builds, the build tools automatically create the .def file within the build tree for the specified target. Once these have been generated for a build, they can be archived with the project source and used in future builds to freeze the exports against change.

        This is done by copying the .def files into a default location and including the directive

        DEFFILE projectname.def

        in the project .mmp file.

        In any subsequent command-line build of the project the exports will be guaranteed compatible with the current version. If new exports are added, the new def files should once again be copied from the build directory and archived with the new release. Only command-line builds should be released.

        The creation and translation of .def files is managed by the Symbian platform build process, see The Symbian build process.

        \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F9558573-7C79-57C5-809A-9257BF84758A.dita --- a/Symbian3/PDK/Source/GUID-F9558573-7C79-57C5-809A-9257BF84758A.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F9558573-7C79-57C5-809A-9257BF84758A.dita Fri Jul 16 17:23:46 2010 +0100 @@ -36,7 +36,7 @@

        The following diagram shows how these components fit together and gives an overview of the data flow.

        - +

        Depending on the keyboard hardware, key presses in the form of key-down and key-up events are registered by the keyboard driver, either as a result diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F95A7D74-FD5C-40D2-BF4F-2F75443CAE51.dita --- a/Symbian3/PDK/Source/GUID-F95A7D74-FD5C-40D2-BF4F-2F75443CAE51.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F95A7D74-FD5C-40D2-BF4F-2F75443CAE51.dita Fri Jul 16 17:23:46 2010 +0100 @@ -26,7 +26,7 @@ b) Column A contains an icon, columns B&C combined for text. c) Columns A&B combined for a large icon, column C contains text. d) Column A: an icon; column B: a label; column C: text. - + Standard elements within list item associated with columns diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F9605837-2209-500D-AB62-48A433489C5E.dita --- a/Symbian3/PDK/Source/GUID-F9605837-2209-500D-AB62-48A433489C5E.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ - - - - - -Resource -file definition -

        A source file consists of any number of statements:

        -<source-file> -source-file ::= - <statement-list> <statement> -statement ::= - <uid2-statement> | <uid3-statement> | <character_set-statement> | <enum-statement> | <name-statement> | <resource-statement> | <struct-statement> -

        A summary of the keywords that are used for these statement types respectively -is given below:

        -
        - - - -

        CHARACTER_SET

        -

        Defines the character set to be used

        -
        - -

        ENUM

        -

        Defines a set of integer values

        -
        - -

        NAME

        -

        By default, the resource IDs in the generated header file are allocated -from 1 in ascending sequence. The sequence can be made to begin from another -value using this statement.

        -
        - -

        RESOURCE

        -

        Defines an actual resource instance of the type defined in -a struct, gives it a resource id, and causes it to be generated in the resource -file.

        -
        - -

        STRUCT

        -

        Defines a type of resource.

        -
        - -

        UID2

        -

        Defines the second UID for the resource file

        -
        - -

        UID3

        -

        Defines the third UID for the resource file

        -
        - - -
        -

        The most usual statements are STRUCT and RESOURCE.

        - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F96623BF-B646-46B4-942E-69EB065BE491_d0e101465_href.png Binary file Symbian3/PDK/Source/GUID-F96623BF-B646-46B4-942E-69EB065BE491_d0e101465_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F96623BF-B646-46B4-942E-69EB065BE491_d0e90859_href.png Binary file Symbian3/PDK/Source/GUID-F96623BF-B646-46B4-942E-69EB065BE491_d0e90859_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F96623BF-B646-46B4-942E-69EB065BE491_d0e95057_href.png Binary file Symbian3/PDK/Source/GUID-F96623BF-B646-46B4-942E-69EB065BE491_d0e95057_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F96623BF-B646-46B4-942E-69EB065BE491_d0e97386_href.png Binary file Symbian3/PDK/Source/GUID-F96623BF-B646-46B4-942E-69EB065BE491_d0e97386_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F96D14A5-58BB-4F1A-A6FB-5D13DCB84B33_d0e89929_href.png Binary file Symbian3/PDK/Source/GUID-F96D14A5-58BB-4F1A-A6FB-5D13DCB84B33_d0e89929_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F96D14A5-58BB-4F1A-A6FB-5D13DCB84B33_d0e94127_href.png Binary file Symbian3/PDK/Source/GUID-F96D14A5-58BB-4F1A-A6FB-5D13DCB84B33_d0e94127_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F97EA91E-35E3-5E69-A4C4-7415AB91C1BC_d0e107418_href.png Binary file Symbian3/PDK/Source/GUID-F97EA91E-35E3-5E69-A4C4-7415AB91C1BC_d0e107418_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F97EA91E-35E3-5E69-A4C4-7415AB91C1BC_d0e109861_href.png Binary file Symbian3/PDK/Source/GUID-F97EA91E-35E3-5E69-A4C4-7415AB91C1BC_d0e109861_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita --- a/Symbian3/PDK/Source/GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F9896E96-1076-552D-AE54-8F9DABED867F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Configuring the Video Player

        This tutorial describes how to configure the video player.

        Purpose

        The purpose of this tutorial is to show you how to make configuration adjustments to the video player.

        Required Background

        The Video Client Overview introduces the video client utilities.

        Introduction

        The video player utility is used to open, play, and obtain information from sampled video data. This functionality is implemented by the CVideoPlayerUtility class. The video data can be supplied either in a file, a descriptor or a URL.

        Using Video Player

        The following tasks will be covered in this tutorial:

        • Set the Display Window

        • Query and Set the Volume

        • Query and Set the Balance

        • Query and Set the Priority

        • Query and Set the Bit and Frame Rate

        • Query and Set the Current Playback Position

        • Query and Set the MIME and Codec Type

        Setting the Display Window

        The high level steps to set the display window are shown here:

        • CVideoPlayerUtility::SetDisplayWindowL: This is used to provide the video controller with an area of display to render the current video frame. It can be represented pictorially as shown below:

          Video display regions -

          The screeenRect specifies the area within the window provided for displaying the video image. This rectangle is in screen coordinates. The video frame will be fitted to this rectangle as best possible, while maintaining the original aspect ratio.

          The ClipRect specifies the region to draw. The drawn region will be the intersection between the ClipRect and the ScreenRect.

          A crop region is defined as a region in the source video frame. The cropped region is displayed in the center of the ScreenRect with the same scaling as if it was displayed as part of the whole image. This could be used to zoom in on a region by setting the crop region, and setting the scale factor to fill the WindowRect.

          void CPlayVideo::SetDisplayWindowL(RWsSession &aWs, CWsScreenDevice &aScreenDevice, RWindowBase &aWindow, const TRect &aWindowRect, const TRect &aClipRect) +

          The screeenRect specifies the area within the window provided for displaying the video image. This rectangle is in screen coordinates. The video frame will be fitted to this rectangle as best possible, while maintaining the original aspect ratio.

          The ClipRect specifies the region to draw. The drawn region will be the intersection between the ClipRect and the ScreenRect.

          A crop region is defined as a region in the source video frame. The cropped region is displayed in the center of the ScreenRect with the same scaling as if it was displayed as part of the whole image. This could be used to zoom in on a region by setting the crop region, and setting the scale factor to fill the WindowRect.

          void CPlayVideo::SetDisplayWindowL(RWsSession &aWs, CWsScreenDevice &aScreenDevice, RWindowBase &aWindow, const TRect &aWindowRect, const TRect &aClipRect) { iVideoUtility->SetDisplayWindowL(aWs, aScreenDevice, aWindow, aWindowRect, aClipRect); } diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F99938E9-9E06-53C0-B762-2CE51BC5F1E2_d0e679667_href.png Binary file Symbian3/PDK/Source/GUID-F99938E9-9E06-53C0-B762-2CE51BC5F1E2_d0e679667_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F99938E9-9E06-53C0-B762-2CE51BC5F1E2_d0e692494_href.png Binary file Symbian3/PDK/Source/GUID-F99938E9-9E06-53C0-B762-2CE51BC5F1E2_d0e692494_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F9BEC749-D535-55EA-8601-A961EA1E441B.dita --- a/Symbian3/PDK/Source/GUID-F9BEC749-D535-55EA-8601-A961EA1E441B.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-F9BEC749-D535-55EA-8601-A961EA1E441B.dita Fri Jul 16 17:23:46 2010 +0100 @@ -325,7 +325,7 @@ the Bluetooth GPS PSY in ROM Packaging the Bluetooth GPS PSY in a SIS File -Positioning +Positioning Plug-in Information API Bluetooth GPS PSY Settings Storage API diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-F9E10A82-88E9-57AA-AFEE-3C1A21BF05BC.dita --- a/Symbian3/PDK/Source/GUID-F9E10A82-88E9-57AA-AFEE-3C1A21BF05BC.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -target

          abld [ test ] target ( ( [-c] | [-w] ) | ( [-s] [-k] [-v] ) ) [ platform ] [ build [ program ] ]

          This command builds the executables for your component.

          Since, in the makefiles generated by makmake, the main target is dependent upon the RESOURCE and LIBRARY targets, resources and import libraries will also be created when the main target is built.

          Executables will not be regenerated where they have later datestamps than the source files they depend upon.

          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FA12B3F7-4E84-5BBD-8598-9A974FFA7FCC.dita --- a/Symbian3/PDK/Source/GUID-FA12B3F7-4E84-5BBD-8598-9A974FFA7FCC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-FA12B3F7-4E84-5BBD-8598-9A974FFA7FCC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -41,7 +41,7 @@ Figure 1 - How Root Server and Root Server relate, and the steps involved during startup - +

          Root Server Configurator is configured by two types of files: CMI files, and the c32start.ini file.

          diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FA18838A-F0C6-5241-8913-BFB46571D908.dita --- a/Symbian3/PDK/Source/GUID-FA18838A-F0C6-5241-8913-BFB46571D908.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,14 +0,0 @@ - - - - - -Device-level code

          Drivers for native ARM-based targets access real hardware, while under WINSCW, you use Win32 facilities to access or emulate hardware. This means that WINSCW device-level code must be substantially different from that used by native targets.

          First, you will need substantial conditional compilation. Device drivers will need full testing under both WINSCW and ARM targets. In general, a WINSCW device driver is best considered as a separate project from a corresponding native target device driver.

          Usually, in order to implement this kind of code, you will also need to access Win32 libraries. Specify them using .mmp specifications such as:

          start wins -win32_library kernel32.lib gdi.lib -end
          \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FA5A24BE-F4AF-5EC3-8969-6184A5A5BBFA.dita --- a/Symbian3/PDK/Source/GUID-FA5A24BE-F4AF-5EC3-8969-6184A5A5BBFA.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-FA5A24BE-F4AF-5EC3-8969-6184A5A5BBFA.dita Fri Jul 16 17:23:46 2010 +0100 @@ -48,7 +48,7 @@ following diagram shows the Cellular Baseband Service collections, and the components in each collection.

          Cellular Baseband Services: Collections - +
        Technologies
        • SIM Application diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FAC309FE-B7DA-572B-9165-BC9BEF944D83_d0e548989_href.png Binary file Symbian3/PDK/Source/GUID-FAC309FE-B7DA-572B-9165-BC9BEF944D83_d0e548989_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FAC309FE-B7DA-572B-9165-BC9BEF944D83_d0e556445_href.png Binary file Symbian3/PDK/Source/GUID-FAC309FE-B7DA-572B-9165-BC9BEF944D83_d0e556445_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FAD4A8FF-CD83-56E5-B469-5670ED873AD5.dita --- a/Symbian3/PDK/Source/GUID-FAD4A8FF-CD83-56E5-B469-5670ED873AD5.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-FAD4A8FF-CD83-56E5-B469-5670ED873AD5.dita Fri Jul 16 17:23:46 2010 +0100 @@ -30,7 +30,7 @@ #endif // SYMBIAN_EXCLUDE_LOCATION #endif // __LBS_NETPSY_IBY__ -

          The file 10285abe.cre is the central repository initialisation file that defines the values specified by the Positioning Plug-in Information API to register the Network PSY with the LBS subsystem.

        To use the Network PSY in an emulator

        The LBS code build process uses the project file lbsnetpsy.mmp to build the Network PSY DLL and copy the ECom resource file to the winscw directory. The Network PSY is therefore available for use in an emulator.

        Network PSY - Overview Positioning Plug-in Information API LBS ROM +

        The file 10285abe.cre is the central repository initialisation file that defines the values specified by the Positioning Plug-in Information API to register the Network PSY with the LBS subsystem.

    To use the Network PSY in an emulator

    The LBS code build process uses the project file lbsnetpsy.mmp to build the Network PSY DLL and copy the ECom resource file to the winscw directory. The Network PSY is therefore available for use in an emulator.

    Network PSY + Overview Positioning Plug-in Information API LBS ROM macros LBS Integration and Configuration guide \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FAFDBFC2-BFFF-536C-A96D-8404C389DD0C.dita --- a/Symbian3/PDK/Source/GUID-FAFDBFC2-BFFF-536C-A96D-8404C389DD0C.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -unpagedcode

    unpagedcode

    Use the unpagedcode statement to specify that the executable is not code paged.

    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FB12481D-B3F6-5901-A0DC-DF92BCED3B18_d0e210633_href.jpg Binary file Symbian3/PDK/Source/GUID-FB12481D-B3F6-5901-A0DC-DF92BCED3B18_d0e210633_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FB12481D-B3F6-5901-A0DC-DF92BCED3B18_d0e216634_href.jpg Binary file Symbian3/PDK/Source/GUID-FB12481D-B3F6-5901-A0DC-DF92BCED3B18_d0e216634_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FB243CC9-2614-5D5D-B5D9-C3195E93637D_d0e430653_href.png Binary file Symbian3/PDK/Source/GUID-FB243CC9-2614-5D5D-B5D9-C3195E93637D_d0e430653_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FB243CC9-2614-5D5D-B5D9-C3195E93637D_d0e436498_href.png Binary file Symbian3/PDK/Source/GUID-FB243CC9-2614-5D5D-B5D9-C3195E93637D_d0e436498_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FB45BC8B-FE99-5616-9270-132C4174DAE7_d0e597614_href.png Binary file Symbian3/PDK/Source/GUID-FB45BC8B-FE99-5616-9270-132C4174DAE7_d0e597614_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FB45BC8B-FE99-5616-9270-132C4174DAE7_d0e616455_href.png Binary file Symbian3/PDK/Source/GUID-FB45BC8B-FE99-5616-9270-132C4174DAE7_d0e616455_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FB45BC8B-FE99-5616-9270-132C4174DAE7_d0e625508_href.png Binary file Symbian3/PDK/Source/GUID-FB45BC8B-FE99-5616-9270-132C4174DAE7_d0e625508_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FB479891-8788-5548-B875-A5C637EC2DE6_d0e219494_href.png Binary file Symbian3/PDK/Source/GUID-FB479891-8788-5548-B875-A5C637EC2DE6_d0e219494_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FB479891-8788-5548-B875-A5C637EC2DE6_d0e225514_href.png Binary file Symbian3/PDK/Source/GUID-FB479891-8788-5548-B875-A5C637EC2DE6_d0e225514_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FB654184-C256-546F-AF6C-E0FADA78D5D0_d0e316335_href.png Binary file Symbian3/PDK/Source/GUID-FB654184-C256-546F-AF6C-E0FADA78D5D0_d0e316335_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FB654184-C256-546F-AF6C-E0FADA78D5D0_d0e322325_href.png Binary file Symbian3/PDK/Source/GUID-FB654184-C256-546F-AF6C-E0FADA78D5D0_d0e322325_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FB69F45C-2256-5F2D-8D2C-98C93B865962_d0e382289_href.png Binary file Symbian3/PDK/Source/GUID-FB69F45C-2256-5F2D-8D2C-98C93B865962_d0e382289_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FB69F45C-2256-5F2D-8D2C-98C93B865962_d0e388142_href.png Binary file Symbian3/PDK/Source/GUID-FB69F45C-2256-5F2D-8D2C-98C93B865962_d0e388142_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FBB9ED48-3C0F-4B2D-90FC-52127698F253.dita --- a/Symbian3/PDK/Source/GUID-FBB9ED48-3C0F-4B2D-90FC-52127698F253.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-FBB9ED48-3C0F-4B2D-90FC-52127698F253.dita Fri Jul 16 17:23:46 2010 +0100 @@ -20,7 +20,7 @@

    IPv4/IPv6 dual-stack enables applications to choose the protocol to use or automatically select it according to address type. This feature is supported from Symbian OS v7.0s onwards.

    -IPv4/IPv6 dual-protocol stack +IPv4/IPv6 dual-protocol stack

    It is possible to establish a secure connection from application to application and also from router to router. Security features implemented in low-level protocols (like IPv6) are automatically available to higher-level diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FBBC7F0D-FD4B-58B7-BEAC-B68EEBD19ACF_d0e106444_href.png Binary file Symbian3/PDK/Source/GUID-FBBC7F0D-FD4B-58B7-BEAC-B68EEBD19ACF_d0e106444_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FBBC7F0D-FD4B-58B7-BEAC-B68EEBD19ACF_d0e108887_href.png Binary file Symbian3/PDK/Source/GUID-FBBC7F0D-FD4B-58B7-BEAC-B68EEBD19ACF_d0e108887_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FBC9FA67-847F-599B-B244-3E9B72D40505_d0e536307_href.jpg Binary file Symbian3/PDK/Source/GUID-FBC9FA67-847F-599B-B244-3E9B72D40505_d0e536307_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FBC9FA67-847F-599B-B244-3E9B72D40505_d0e543767_href.jpg Binary file Symbian3/PDK/Source/GUID-FBC9FA67-847F-599B-B244-3E9B72D40505_d0e543767_href.jpg has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FBF2ED6F-D1C5-5368-96C2-FCF38234BF43_d0e275334_href.png Binary file Symbian3/PDK/Source/GUID-FBF2ED6F-D1C5-5368-96C2-FCF38234BF43_d0e275334_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FBF2ED6F-D1C5-5368-96C2-FCF38234BF43_d0e281334_href.png Binary file Symbian3/PDK/Source/GUID-FBF2ED6F-D1C5-5368-96C2-FCF38234BF43_d0e281334_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FC230C68-18FC-5DB9-A5B2-942B48DC5590_d0e549001_href.png Binary file Symbian3/PDK/Source/GUID-FC230C68-18FC-5DB9-A5B2-942B48DC5590_d0e549001_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FC230C68-18FC-5DB9-A5B2-942B48DC5590_d0e556457_href.png Binary file Symbian3/PDK/Source/GUID-FC230C68-18FC-5DB9-A5B2-942B48DC5590_d0e556457_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FC929B37-20E1-5DA7-91A7-CBBED2E69A6E.dita --- a/Symbian3/PDK/Source/GUID-FC929B37-20E1-5DA7-91A7-CBBED2E69A6E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-FC929B37-20E1-5DA7-91A7-CBBED2E69A6E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,60 +1,50 @@ - - - - - -Getting -Equivalent and Nearest Equivalent Languages This section describes how to call functions of BaflUtils to -get an equivalent language list and a nearest equivalent language. -

    This tutorial assumes that you have an understanding of the following -topics:

      -
    • Equivalent -Language Reference explains the equivalent language table, including -the equivalent language list and its priority.

    • -
    • About -Application Resources describes the purpose of resource files.

    • -
    • How -to Localize Resources describes language-neutral and language-dependent -resource files.

    • -
    -

    BaflUtils provides the following two static -functions to get the equivalent language list and a nearest equivalent language:

      -
    • GetEquivalentLanguageList(TLanguage aLang, TLanguagePath& aEquivalents)

      For a given language (TLanguage), it returns an array -(TLanguagePath) which contains the equivalent languages. -If no equivalent language is found, ELangNone is returned.

    • -
    • NearestLanguageFileV2(const RFs& aFs,TFileName& aName, TLanguage& aLanguage)

      A TLanguage value is used at the end of a resource -file name to identify a resource file for a language. For example, filename.r01 and filename.r02 are -the English and French versions of the filename.rsc resource -file.

      An application calls BaflUtils::NearestLanguageFileV2() to -determine which localized resource file is the closest to the current system -language. The function searches the following drives in the given sequence -for the available resource files, which have the same file name (without extension) -as aName. Once the resource files are searched on a drive, -the function stops searching on the next drive.

        -
      • The custom resource -drive if it is set using the HAL::ECustomResourceDrive attribute -or the legacy HAL::ESystemDrive attribute.

      • -
      • The optional drive if -it is specified in the aName parameter.

      • -
      • Z: drive -if the optional drive is not set in the aName parameter.

      • -

      The current system language is then taken as a given language. All -the available resource file names are prioritized according to the equivalent -language list. The resource file name with the highest priority is -returned.

    • -
    - -Getting -an Equivalent Language List - -Getting -a Nearest Equivalent Language - - + + + + + +Getting Equivalent and Nearest Equivalent Languages This section describes how to call functions of BaflUtils to get an equivalent language list and a nearest +equivalent language. +

    This tutorial +assumes that you have an understanding of Equivalent Language +Reference which explains the equivalent language table, including +the equivalent language list and its priority.

    +

    BaflUtils provides the following two static functions to +get the equivalent language list and a nearest equivalent language:

      +
    • GetEquivalentLanguageList(TLanguage aLang, TLanguagePath& aEquivalents)

      For a given language (TLanguage), it returns +an array (TLanguagePath) which contains the equivalent +languages. If no equivalent language is found, ELangNone is returned.

    • +
    • NearestLanguageFileV2(const RFs& aFs,TFileName& aName, TLanguage& aLanguage)

      A TLanguage value is used at the end of a +resource file name to identify a resource file for a language. For +example, filename.r01 and filename.r02 are the English and French versions of the filename.rsc resource file.

      An application calls BaflUtils::NearestLanguageFileV2() to determine which localized resource file is the closest to the +current system language. The function searches the following drives +in the given sequence for the available resource files, which have +the same file name (without extension) as aName. +Once the resource files are searched on a drive, the function stops +searching on the next drive.

        +
      • The custom resource +drive if it is set using the HAL::ECustomResourceDrive attribute or the legacy HAL::ESystemDrive attribute.

      • +
      • The optional +drive if it is specified in the aName parameter.

      • +
      • Z: drive if the optional drive is not set in the aName parameter.

      • +

      The current system language is then taken as a given language. +All the available resource file names are prioritized according to +the equivalent +language list. The resource file name with the highest priority +is returned.

    • +
    + +Getting an Equivalent +Language List + +Getting a Nearest +Equivalent Language + +
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FCA90B94-B0D1-5479-A1BF-28758FB830E5_d0e230975_href.png Binary file Symbian3/PDK/Source/GUID-FCA90B94-B0D1-5479-A1BF-28758FB830E5_d0e230975_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FCA90B94-B0D1-5479-A1BF-28758FB830E5_d0e236970_href.png Binary file Symbian3/PDK/Source/GUID-FCA90B94-B0D1-5479-A1BF-28758FB830E5_d0e236970_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FCC51FFE-DC34-5168-9564-8F30273DE1BD_d0e514193_href.png Binary file Symbian3/PDK/Source/GUID-FCC51FFE-DC34-5168-9564-8F30273DE1BD_d0e514193_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FCC51FFE-DC34-5168-9564-8F30273DE1BD_d0e521657_href.png Binary file Symbian3/PDK/Source/GUID-FCC51FFE-DC34-5168-9564-8F30273DE1BD_d0e521657_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FCE138BF-A471-5864-AE4C-8D89EF5F2BB9.dita --- a/Symbian3/PDK/Source/GUID-FCE138BF-A471-5864-AE4C-8D89EF5F2BB9.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ - - - - - -Symbian -Emulator target using Metrowerks CodeWarrior -

    This page describes how to build for the Symbian emulator using the Metrowerks -CodeWarrior compiler. The Symbian emulator is also known as the WINSCW build -target.

    -
    Building from the command line

    To build for WINSCW, -with abld use:

    bldmake bldfiles

    abld -build winscw [udeb | urel]

    Binaries are generated in the udeb and/or urel sub-directories -of the epoc32\release\winscw\ directory.

    -
    Building from the CodeWarrior IDE

    You can build -applications for a WINSCW Symbian emulator using the CodeWarrior compiler -from the CodeWarrior IDE. You can also build for ARM targets from the IDE: -this invokes the native toolchain, rather than CodeWarrior's own compiler.

    The -simplest way to use CodeWarrior, is, after defining a bld.inf file -and a .mmp file, choose the File - | Import project from .mmp file command. CodeWarrior then -reads the .mmp file that you select, and generates and -opens a CodeWarrior project. You can then use the normal CodeWarrior commands -to run, build, and debug the project.

    If later you change the .mmp file, -you can use the same commands to regenerate the IDE workspace. Changes you -make to the project made through the IDE, such as adding a source file, are -not automatically written to the .mmp file, but it is -good practice to manually keep the .mmp file up to date -with any changes made.

    The IDE project files have special build steps -which invoke the resource compiler, so for projects that use resources, this -does not need to be run separately.

    Alternative method

    A -slightly longer method is available that creates a CodeWarrior IDE project -from the command line. To do this, run bldmake bldfiles as -described, and then, to generate a CodeWarrior IDE project, use:

    abld -makefile CW_IDE

    This creates an importable project file project-name .xml in -the directory <path>\epoc32\build\ absolute_path_to_mmp_file \ mmp_basename \winscw\.

    You can now tell CodeWarrior to read -this file and from it generate a project file of its own native type (an .mcp file). -Start CodeWarrior, choose the File | Import Project... command, -select the HelloWorld.xml file, and choose a name for -the CodeWarrior project (such as HelloWorld again). CodeWarrior -will now generate and load the project, which you can build, run, debug, etc. -using the normal IDE commands.

    -
    \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FCEDC338-61CA-5D10-A8DB-E44A3EBBDE5E.dita --- a/Symbian3/PDK/Source/GUID-FCEDC338-61CA-5D10-A8DB-E44A3EBBDE5E.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-FCEDC338-61CA-5D10-A8DB-E44A3EBBDE5E.dita Fri Jul 16 17:23:46 2010 +0100 @@ -36,7 +36,7 @@ A FEP places its control on the stack with a high priority such that it has first access to key events.

    FEP Base - +

    The Window Server provides support for windows that float above other windows in the application. This allows a FEP to have a visible presence.

    Each running application has its own instance of the current FEP. Support is provided diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FCFF0750-0AE9-5F51-B4F7-B1655E1AD244_d0e317480_href.png Binary file Symbian3/PDK/Source/GUID-FCFF0750-0AE9-5F51-B4F7-B1655E1AD244_d0e317480_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FCFF0750-0AE9-5F51-B4F7-B1655E1AD244_d0e323470_href.png Binary file Symbian3/PDK/Source/GUID-FCFF0750-0AE9-5F51-B4F7-B1655E1AD244_d0e323470_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FD0593E7-A36C-4656-A85A-9D62DFBCC42F_d0e241381_href.png Binary file Symbian3/PDK/Source/GUID-FD0593E7-A36C-4656-A85A-9D62DFBCC42F_d0e241381_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FD0593E7-A36C-4656-A85A-9D62DFBCC42F_d0e247389_href.png Binary file Symbian3/PDK/Source/GUID-FD0593E7-A36C-4656-A85A-9D62DFBCC42F_d0e247389_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FD1916A9-694B-5CC6-A79C-493F754F0E64.dita --- a/Symbian3/PDK/Source/GUID-FD1916A9-694B-5CC6-A79C-493F754F0E64.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-FD1916A9-694B-5CC6-A79C-493F754F0E64.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Location Management OverviewThis document describes the purpose of the Location Management collection.

    Purpose

    The Location Management collection contains two location management components: the A-GPS Location Manager and the Network Location Manager that handle location requests sent from the Location Server and the Network Request Handler.

    The collection contains the Network Gateway component that provides the interface between the LBS subsystem and a telecommunications network.

    The collection also contains an Location Admin component that contains common libraries that are used by many components of the LBS subsystem.

    Architecture

    Figure 1 shows this collection within the context of the LBS system model.

    Figure 1. Location Management collection in the LBS system model. -
    Description

    The three main functions provided by this collection are as follows:

    • Location management.

      The A-GPS Location Manager and the Network Location Manager provide location management functions.

    • Network connectivity.

      The Network Gateway provides network connectivity to the LBS subsystem.

    • Shared data types and library functions that are used throughout the LBS subsystem.

      The Location Admin component contains these data types and libraries.

    Components

    The Location Management collection contains the following components:

    • A-GPS Location Manager

      The A-GPS Location Manager handles location requests from the Location Sever and the Network Request Handler that require the use of GPS. It loads an ECom plug-in that implements the A-GPS Location Data Source API, such as the A-GPS Integration Module of the Data Source Modules collection.

    • Network Location Manager

      The Network Location Manager handles location requests from the Location Server that require the use of network based positioning methods, such as Cell ID and Enhanced Cell ID.

    • Network Gateway

      The Network Gateway is the interface between the LBS subsystem and a network. It sends and receives location based services privacy and location requests.

      The Network Gateway must load at least one Protocol Module. The Network Gateway loads a Protocol Module from the Network Adaptation collection (or a Protocol Module developed by a device creator) to support a specific network protocol.

    • Location Admin

      The Location Admin component contains several important libraries that are used by different components of the LBS subsystem and by client applications.

    Using the Location Management collection

    The A-GPS Location Manager and Network Location Manager are components used internally by the LBS subsystem. Application programmers and device creators have no direct interaction with these components.

    A device creator must install and configure a Protocol Module to allow the Network Gateway to process privacy requests and (optionally) location requests. Symbian provides two Protocol Modules that device creators can use in their products. See Network Adaptation for more information about these Protocol Modules. Alternatively, a device creator can implement their own Protocol Module by implementing the Network Protocol Module API.

    The Location Admin component contains a set of loosely related interfaces and data types that are used by many components of the LBS subsystem. See Location Admin for more information about the APIs provided by this component.

    Location Admin A-GPS +
    Description

    The three main functions provided by this collection are as follows:

    • Location management.

      The A-GPS Location Manager and the Network Location Manager provide location management functions.

    • Network connectivity.

      The Network Gateway provides network connectivity to the LBS subsystem.

    • Shared data types and library functions that are used throughout the LBS subsystem.

      The Location Admin component contains these data types and libraries.

    Components

    The Location Management collection contains the following components:

    • A-GPS Location Manager

      The A-GPS Location Manager handles location requests from the Location Sever and the Network Request Handler that require the use of GPS. It loads an ECom plug-in that implements the A-GPS Location Data Source API, such as the A-GPS Integration Module of the Data Source Modules collection.

    • Network Location Manager

      The Network Location Manager handles location requests from the Location Server that require the use of network based positioning methods, such as Cell ID and Enhanced Cell ID.

    • Network Gateway

      The Network Gateway is the interface between the LBS subsystem and a network. It sends and receives location based services privacy and location requests.

      The Network Gateway must load at least one Protocol Module. The Network Gateway loads a Protocol Module from the Network Adaptation collection (or a Protocol Module developed by a device creator) to support a specific network protocol.

    • Location Admin

      The Location Admin component contains several important libraries that are used by different components of the LBS subsystem and by client applications.

    Using the Location Management collection

    The A-GPS Location Manager and Network Location Manager are components used internally by the LBS subsystem. Application programmers and device creators have no direct interaction with these components.

    A device creator must install and configure a Protocol Module to allow the Network Gateway to process privacy requests and (optionally) location requests. Symbian provides two Protocol Modules that device creators can use in their products. See Network Adaptation for more information about these Protocol Modules. Alternatively, a device creator can implement their own Protocol Module by implementing the Network Protocol Module API.

    The Location Admin component contains a set of loosely related interfaces and data types that are used by many components of the LBS subsystem. See Location Admin for more information about the APIs provided by this component.

    Location Admin A-GPS Location Manager Network Location Manager Network Gateway Location diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FD1BB5C6-A042-56C9-8F1F-B51BF9DF5389_d0e597407_href.png Binary file Symbian3/PDK/Source/GUID-FD1BB5C6-A042-56C9-8F1F-B51BF9DF5389_d0e597407_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FD1BB5C6-A042-56C9-8F1F-B51BF9DF5389_d0e625301_href.png Binary file Symbian3/PDK/Source/GUID-FD1BB5C6-A042-56C9-8F1F-B51BF9DF5389_d0e625301_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FD21D8B1-EB37-409A-9158-19DBBF1A67B7_d0e101081_href.png Binary file Symbian3/PDK/Source/GUID-FD21D8B1-EB37-409A-9158-19DBBF1A67B7_d0e101081_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FD21D8B1-EB37-409A-9158-19DBBF1A67B7_d0e105166_href.png Binary file Symbian3/PDK/Source/GUID-FD21D8B1-EB37-409A-9158-19DBBF1A67B7_d0e105166_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FD49B745-965F-5CC6-A9FC-D950FDEB00FD_d0e450022_href.png Binary file Symbian3/PDK/Source/GUID-FD49B745-965F-5CC6-A9FC-D950FDEB00FD_d0e450022_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FD49B745-965F-5CC6-A9FC-D950FDEB00FD_d0e455867_href.png Binary file Symbian3/PDK/Source/GUID-FD49B745-965F-5CC6-A9FC-D950FDEB00FD_d0e455867_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FD503B6E-889C-521F-B61A-0EBDCA8CD9AC_d0e581918_href.png Binary file Symbian3/PDK/Source/GUID-FD503B6E-889C-521F-B61A-0EBDCA8CD9AC_d0e581918_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FD503B6E-889C-521F-B61A-0EBDCA8CD9AC_d0e631206_href.png Binary file Symbian3/PDK/Source/GUID-FD503B6E-889C-521F-B61A-0EBDCA8CD9AC_d0e631206_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FD52DFC5-03CD-4C7A-B118-0D5C90D99F1A_d0e104020_href.png Binary file Symbian3/PDK/Source/GUID-FD52DFC5-03CD-4C7A-B118-0D5C90D99F1A_d0e104020_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FD52DFC5-03CD-4C7A-B118-0D5C90D99F1A_d0e99935_href.png Binary file Symbian3/PDK/Source/GUID-FD52DFC5-03CD-4C7A-B118-0D5C90D99F1A_d0e99935_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FD8634B8-E522-4AC4-8129-ED807A7754A2.dita --- a/Symbian3/PDK/Source/GUID-FD8634B8-E522-4AC4-8129-ED807A7754A2.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-FD8634B8-E522-4AC4-8129-ED807A7754A2.dita Fri Jul 16 17:23:46 2010 +0100 @@ -21,7 +21,7 @@ Device driver logical channel communication - +

    There are two options for implementing this:

      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FDA575AB-F5A5-4244-B47C-F1B1794F09F6.dita --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Symbian3/PDK/Source/GUID-FDA575AB-F5A5-4244-B47C-F1B1794F09F6.dita Fri Jul 16 17:23:46 2010 +0100 @@ -0,0 +1,68 @@ + + + + + +Subscribing to SIF operation progressClients must subscribe to SIF operation progress to receive +status of operations (installation or uninstallation). +

      The client +applications must link against Sifnotification.dll . It is the utility library that provides the APIs to subscribe +for SIF operation progress.

      + +Derive from +the MSifOperationsHandler abstract handler class. +Clients must implement MSifOperationsHandler interfaces +to receive notifications. +Class CMySifOperationHandler : public MSifOperationsHandler + { + // Virtual Handler Functions + void StartOperationHandler(TUint aKey,const CSifOperationStartData& aStartData); + void EndOperationHandler(const CSifOperationEndData& aEndData); + void ProgressOperationHandler(const CSifOperationProgressData& aProgressData); + private: + CSifOperationsNotifier* iNotifier; + } +

      Create a CSifOperationsNotifier object +by passing the handler object.

      CMySifOperationHandler::ConstructL() +    { +    iNotifier = CSifOperationsNotifier::NewL(*this); +    } +

      Implement the virtual functions StartOperationHandler(), EndOperationHandler(), ProgressOperationHandler() .

      StartOperationHandler() is called when +a new operation is started. The subscriber must use the CSifOperationsNotifier::SubscribeL() to register for progress and end notification for the operation.

      CSifOperationsNotifier::SubscribeL() must be +invoked in the implementation of StartOperationHandler(). The first +parameter is the key to uniquely identify an ongoing operation. The +second parameter is a boolean to specify optional subscription to +progress information. Setting the value to ETrue subscribes to both +progress and end notification and setting the value to Efalse subscribes +to only end notification.

      void CMySifOperationHandler::StartOperationHandler(TUint aKey, + const CSifOperationStartData& aStartData) + { + iNotifier->SubscribeL(aKey, ETrue); + DEBUG_PRINTF2(_L8("Subscribing to progress information for component: %S."), + aStartData.GlobalComponentId()); + }

      ProgressOperationHandler() is +invoked when progress update is available .

      void ProgressOperationHandler(const CSifOperationProgressData& aProgressData) + { + DEBUG_PRINTF2(_L8("%S progress: %d out of %d."), aProgressData.GlobalComponentId(), + aProgressData.CurrentProgress(), aProgressData.Total()); + }

      EndOperationHandler() functions +are invoked when operation completes.

      void CMySifOperationHandler::EndOperationHandler(const CSifOperationEndData& aEndData) + { + DEBUG_PRINTF2(_L8("SIF operation on %S is complete."), + aEndData.GlobalComponentId()); + DEBUG_PRINTF2(_L8("ErrorCode: %d."), aEndData.ErrorCode()); + DEBUG_PRINTF2(_L8("ErrorMessage: %S."), aEndData.ErrorMessage()); + }

      Both ProgressOperationHandler() and EndOperationHandler() should return quickly +as they are run as part of an active object request completion handler.

      The client can cancel the subscription by invoking CSifOperationsNotifier::CancelSubscribeL(). iNotifier->CancelSubscribeL(aKey);

      +
      +
      +

      The client +now receives the start, progress and end status notifications as and +when published by the installer.

      +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FDC0004A-A2EE-5B73-9E2D-B6864C600AF9.dita --- a/Symbian3/PDK/Source/GUID-FDC0004A-A2EE-5B73-9E2D-B6864C600AF9.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-FDC0004A-A2EE-5B73-9E2D-B6864C600AF9.dita Fri Jul 16 17:23:46 2010 +0100 @@ -36,7 +36,7 @@ take a Mini-DOM object tree and output an XML file.

      SMIL Parser architecture - +

      The following sections gives detailed explanation of the above elements:

      XML Mini-DOM

      The XML Mini-DOM classes are based on a subset of the DOM classes. The Mini-DOM is a subset, because it is not intended to support diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FDDDF1F0-42D8-570E-AF06-620825FA1022_d0e270583_href.png Binary file Symbian3/PDK/Source/GUID-FDDDF1F0-42D8-570E-AF06-620825FA1022_d0e270583_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FDDDF1F0-42D8-570E-AF06-620825FA1022_d0e276583_href.png Binary file Symbian3/PDK/Source/GUID-FDDDF1F0-42D8-570E-AF06-620825FA1022_d0e276583_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FE1F6768-FCF8-5670-8621-DC0DBDB0B706_d0e466468_href.png Binary file Symbian3/PDK/Source/GUID-FE1F6768-FCF8-5670-8621-DC0DBDB0B706_d0e466468_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FE1F6768-FCF8-5670-8621-DC0DBDB0B706_d0e472313_href.png Binary file Symbian3/PDK/Source/GUID-FE1F6768-FCF8-5670-8621-DC0DBDB0B706_d0e472313_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FE3825C5-BDEE-5F18-9FFD-2E794E618FEC.dita --- a/Symbian3/PDK/Source/GUID-FE3825C5-BDEE-5F18-9FFD-2E794E618FEC.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-FE3825C5-BDEE-5F18-9FFD-2E794E618FEC.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,7 +11,7 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Data Access ExampleThis example describes typical processing of the data in an RMBufChain.

      Downwards flow Example : flow going downwards -

      The following function is a simplified example of how a component in the middle of the stack could process data sent to the driver. As shown in the above diagram, the upper layer provides the data in the RMBufChain parameter.

      +

      The following function is a simplified example of how a component in the middle of the stack could process data sent to the driver. As shown in the above diagram, the upper layer provides the data in the RMBufChain parameter.

      void Send (RMBufChain &aChain) { TBuf8<KHeaderLength> aHeader; @@ -29,7 +29,7 @@ }

      Note that depending on the available space remaining in front of the data in the MBuf, the RMBufChain::Prepend() method may request the pond to add a new MBuf to the front of the chain. For more information, see Buffer layout.

      Upwards flow Example : flow going upwards -

      The following function is a simplified example of how a component in the middle of the stack could process data received by the driver. As shown in the above diagram, the underlying layer provides the data in the RMBufChain parameter.

      +

      The following function is a simplified example of how a component in the middle of the stack could process data received by the driver. As shown in the above diagram, the underlying layer provides the data in the RMBufChain parameter.

      void Process (RMBufChain &aChain) { TBuf8<KHeaderLength> aHeader; diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FE3C8D39-CE17-5AC7-AB6A-4D6664D52196_d0e228096_href.png Binary file Symbian3/PDK/Source/GUID-FE3C8D39-CE17-5AC7-AB6A-4D6664D52196_d0e228096_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FE3C8D39-CE17-5AC7-AB6A-4D6664D52196_d0e234095_href.png Binary file Symbian3/PDK/Source/GUID-FE3C8D39-CE17-5AC7-AB6A-4D6664D52196_d0e234095_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FE4794F8-2519-5AC2-BCF7-168ECA6645EA.dita --- a/Symbian3/PDK/Source/GUID-FE4794F8-2519-5AC2-BCF7-168ECA6645EA.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-FE4794F8-2519-5AC2-BCF7-168ECA6645EA.dita Fri Jul 16 17:23:46 2010 +0100 @@ -53,7 +53,7 @@ 1 shows the classes and types of the Host Settings API.

      Figure 1. Classes and types of the Host Settings API. - +

      The following table lists the main classes and types of the Host Settings API (some simple typedefs are excluded).

      diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FE4BBEB4-4E5A-5BF2-A72F-AF53BAD83518_d0e234649_href.png Binary file Symbian3/PDK/Source/GUID-FE4BBEB4-4E5A-5BF2-A72F-AF53BAD83518_d0e234649_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FE4BBEB4-4E5A-5BF2-A72F-AF53BAD83518_d0e240639_href.png Binary file Symbian3/PDK/Source/GUID-FE4BBEB4-4E5A-5BF2-A72F-AF53BAD83518_d0e240639_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FE9017F4-4197-472F-A3E7-267169A51ABD.dita --- a/Symbian3/PDK/Source/GUID-FE9017F4-4197-472F-A3E7-267169A51ABD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-FE9017F4-4197-472F-A3E7-267169A51ABD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -1,53 +1,49 @@ - - - - - -Registration -

      You need to register your applications in order to make them visible -to the application menu and to provide other information to the underlying -operating system. To register, you need to provide a registration resource -file, typically named <application_name>_reg.rss that -contains the non-localized information for your application. Examples of non-localized -information include:

      -
        -
      • UID of the application

      • -
      • name of the application executable, without an extension

        -
      • -
      • application properties, such as embeddability or whether -it is hidden

      • -
      -

      For more information on how to create a registration file for the non-localized -information for your application, see Creating -registration resource files.

      -

      You also need to provide localized information for your applications, -such as captions and icons. This is done by either including a name and path -of a localizable icon and caption resource file or the symbolic ID of a LOCALISABLE_APP_INFO data -structure in your application UI resource file. For a discussion of the available -options for where you can place this resource statement, see Localisable -icon/caption definition files.

      -

      You may define the following localized information:

      -
        -
      • application caption, which is typically displayed next to -the icon in the application menu

      • -
      • short caption used by some mobile devices when screen space -is limited

      • -
      • name of the icon file

      • -
      -

      For more information on using the LOCALISABLE_APP_INFO data -structure, see Defining -localizable registration information

      - -

      You must compile both the non-localized information registration resource -file and the localized information resource file and include the results in -your package file in order for your application to be registered in a mobile -device.

      - -
      + + + + + +Registration +

      You need to register your applications in order to make them +visible to the application menu and to provide other information to +the underlying operating system. To register, you need to provide +a registration resource file, typically named <application_name>_reg.rss that contains the non-localized information for your application. +Examples of non-localized information include:

      +
        +
      • UID of the application

      • +
      • name of the application executable, without an extension

        +
      • +
      • application properties, such as embeddability or +whether it is hidden

      • +
      +

      For more information on how to create a registration file for +the non-localized information for your application, see Creating registration resource files.

      +

      You also need to provide localized information for your applications, +such as captions and icons. This is done by either including a name +and path of a localizable icon and caption resource file or the symbolic +ID of a LOCALISABLE_APP_INFO data structure in +your application UI resource file. For information about localisable +icons, see Symbian^3 Tools Guide > Building.

      +

      You may define the following localized information:

      +
        +
      • application caption, which is typically displayed +next to the icon in the application menu

      • +
      • short caption used by some mobile devices when screen +space is limited

      • +
      • name of the icon file

      • +
      +

      For more information on using the LOCALISABLE_APP_INFO data structure, see Defining localizable registration information

      + +

      You must compile both the non-localized information registration +resource file and the localized information resource file and include +the results in your package file in order for your application to +be registered in a mobile device.

      + +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FE922294-380D-447D-AC46-A46EFAD79168.dita --- a/Symbian3/PDK/Source/GUID-FE922294-380D-447D-AC46-A46EFAD79168.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-FE922294-380D-447D-AC46-A46EFAD79168.dita Fri Jul 16 17:23:46 2010 +0100 @@ -120,6 +120,6 @@ only scroll down commands used. b) Left-to-right UI language; only scroll right commands used. c) Right-to-left UI language; only scroll down used. d) Right-to-left UI language; only scroll right used. - +
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FE94596E-B5BB-51FE-BE38-069840323915.dita --- a/Symbian3/PDK/Source/GUID-FE94596E-B5BB-51FE-BE38-069840323915.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-FE94596E-B5BB-51FE-BE38-069840323915.dita Fri Jul 16 17:23:46 2010 +0100 @@ -16,7 +16,7 @@ GSM encoding supports the GSM 7-bit default alphabet and GSM 7-bit default alphabet extension table through an escape mechanism.

      Figure 1

      Escape mechanism - +

      The GSM 7-bit default alphabet consists of 128 characters. Each character is represented by 7 bits. 10 extra characters are defined in the GSM 7-bit default extension table. These characters are represented by an @@ -43,7 +43,7 @@ be decoded back to the same Unicode letter A instead of Á.

      Figure 2

      Lossy conversion - +
      16-bit Unicode encoding

      Unicode is an international standard character set. It @@ -74,7 +74,7 @@ as locking-single.

      Figure 3

      National language encoding - +

      The single shift mechanism is useful when a message contains only a few characters outside the default GSM table. It is however inefficient when a message contains many unsupported characters, because each escaped diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FEE01F5F-1F7E-569C-950E-7793DA8F26A2_d0e426920_href.png Binary file Symbian3/PDK/Source/GUID-FEE01F5F-1F7E-569C-950E-7793DA8F26A2_d0e426920_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FEE01F5F-1F7E-569C-950E-7793DA8F26A2_d0e432765_href.png Binary file Symbian3/PDK/Source/GUID-FEE01F5F-1F7E-569C-950E-7793DA8F26A2_d0e432765_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FEFF353E-DE8A-5FBA-B696-CD01D06BE813_d0e234674_href.png Binary file Symbian3/PDK/Source/GUID-FEFF353E-DE8A-5FBA-B696-CD01D06BE813_d0e234674_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FEFF353E-DE8A-5FBA-B696-CD01D06BE813_d0e240664_href.png Binary file Symbian3/PDK/Source/GUID-FEFF353E-DE8A-5FBA-B696-CD01D06BE813_d0e240664_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FF08B8F5-9881-5BA3-ACD1-C09E40A09438.dita --- a/Symbian3/PDK/Source/GUID-FF08B8F5-9881-5BA3-ACD1-C09E40A09438.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-FF08B8F5-9881-5BA3-ACD1-C09E40A09438.dita Fri Jul 16 17:23:46 2010 +0100 @@ -19,7 +19,7 @@ collection. The following diagram shows the architecture of the Multimedia Plug-ins collection:

      Multimedia Plug-ins architecture - +
      Description

      The Multimedia Plug-ins collection provides a generic plug-in architecture for the Camera Framework, Imaging diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FF2ABA1D-1F71-5A9C-AFD5-A0CED39BFD86_d0e411208_href.png Binary file Symbian3/PDK/Source/GUID-FF2ABA1D-1F71-5A9C-AFD5-A0CED39BFD86_d0e411208_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FF2ABA1D-1F71-5A9C-AFD5-A0CED39BFD86_d0e417061_href.png Binary file Symbian3/PDK/Source/GUID-FF2ABA1D-1F71-5A9C-AFD5-A0CED39BFD86_d0e417061_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FF312AAD-E40B-5238-A31C-B34AFD892D5A.dita --- a/Symbian3/PDK/Source/GUID-FF312AAD-E40B-5238-A31C-B34AFD892D5A.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ - - - - - -Static -interface DLLs -

      A static interface DLL represents an interface which is defined to its -clients by one or more headers for use at compile time, and an import library -for use at link time.

      -

      When a executable that is a client of the DLL is loaded at run-time, the -loader notes that it requires the static interface DLL to be available. The -loader then either loads the DLL or, if it is loaded already, attaches the -new client to it.

      -

      In Symbian platform, all static interface DLLs must have a uid2 of 0x1000008d. -The particular static interface DLL is then identified by name and by uid3.

      -

      For example, if a DLL called helloview.dll is built -with a uid3 of 0x10000252, then the name used in the import -library for ARM builds of Symbian platform is helloview[10000252]. -When the loader loads the helloview.dll, it checks that -its UID is 0x10000252. If the uid3 in the -DLL does not match, then the load fails.

      -
      mmp project specification

      A static interface DLL -project file must specify the correct target type and UID:

        -
      • Specify the TARGETTYPE line -as:

        TARGETTYPE dll

        This -implicitly specifies UID1 correctly.

      • -
      • Specify the UID for -the DLL in a UID line:

        UID 0x1000008d -<UID3>

      • -
      -

      An example of the mmp project file for a -static DLL is given below:

      TARGET CreateStaticDLL.dll -TARGETTYPE dll -UID 0x1000008d 0x10004268 -SOURCEPATH . -SOURCE CreateStaticDLL.cpp -USERINCLUDE . -SYSTEMINCLUDE \Epoc32\include -LIBRARY euser.lib -EXPORTUNFROZEN
      - \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FF81C5C5-09B7-5194-928E-0BA87417B2CD.dita --- a/Symbian3/PDK/Source/GUID-FF81C5C5-09B7-5194-928E-0BA87417B2CD.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-FF81C5C5-09B7-5194-928E-0BA87417B2CD.dita Fri Jul 16 17:23:46 2010 +0100 @@ -10,6 +10,6 @@ What are Access Point Priorities?This topic explains access point priorities and how the values are inherited.

      Contention management issues are resolved using the priorities associated with the Access Points. Priorities are assigned to Access Point Layers. If an incoming GPRS connection has a higher priority than an existing GRPS connection, the existing connection is stopped and the new connection is started. If the incoming GPRS connection has a lower priority than all existing GPRS connections the incoming GPRS connection is discarded.

      The Access Point priority is stored in the CommsDat AccessPointTable. You can specify a priority for access point using the CommsData config file in “cfg” format. The priority range is 1-KMaxTUint where 1 is high priority and KMaxTUint is low priority. If a priority is not assigned to an access point the default value is KMaxTUint is given. A zero priority value is not allowed.

      Access Point Priority Inheritance Example

      Access Point Priorities can be inherited between Access Point Layers. The current Access Point Layer priority is compared to the inherited Access Point priority, the highest priority is assigned to the Point Layer. This means that the priority of an Access point layer can be overridden by an inherited priority.

      CurrentPriority = max_priority{AccessPointPriority, - inherited_priority}

      The following diagram contains three Access Point Layers. Each Access Point Layer has an associated priority.

      As a result of inheritance the following priorities are applied.

      For IP_MCPR1 the resultant priority is {3, KmaxTUint} = 3

      For IPPROTO_MCPR1 the resultant priority is {3, 5} = 3

      For PDP_MCPR1 the resultant priority is {4, 3} = 3

      Changes in Access Point Priorities at Runtime

      The following diagram outlines how priorities can change at runtime.

      In this example:

      • Two stack configurations (SNAP1 and SNAP2) are defined in the CommsDat. The configurations have different settings for the IP layer but the same IPProto and PDP layers.

      • An application is started on SNAP1. IP_CPR1 and IP_MCPR1 are created.

      • A second application is started on SNAP2. IP_CPR2 and IP_MCPR2 are created.

      • Current priorities for IPProto and PDP layer will be recalculated. On this example they do not change because priority 6 is the lowest priority in this stack.

      • If first application stops its connection and second application continue to work, IP_CPR1 is destroyed. IPPROTO_CPR1 and PDP_CPR1 priorities will be recalculated.

        IPPROTO_CPR1 priority = max_priority{5, 6} = 5

        PDP_CPR1 priority = max_priority{4, 5} = 4

      What is Contention? What is Contention + inherited_priority}

      The following diagram contains three Access Point Layers. Each Access Point Layer has an associated priority.

      As a result of inheritance the following priorities are applied.

      For IP_MCPR1 the resultant priority is {3, KmaxTUint} = 3

      For IPPROTO_MCPR1 the resultant priority is {3, 5} = 3

      For PDP_MCPR1 the resultant priority is {4, 3} = 3

      Changes in Access Point Priorities at Runtime

      The following diagram outlines how priorities can change at runtime.

      In this example:

      • Two stack configurations (SNAP1 and SNAP2) are defined in the CommsDat. The configurations have different settings for the IP layer but the same IPProto and PDP layers.

      • An application is started on SNAP1. IP_CPR1 and IP_MCPR1 are created.

      • A second application is started on SNAP2. IP_CPR2 and IP_MCPR2 are created.

      • Current priorities for IPProto and PDP layer will be recalculated. On this example they do not change because priority 6 is the lowest priority in this stack.

      • If first application stops its connection and second application continue to work, IP_CPR1 is destroyed. IPPROTO_CPR1 and PDP_CPR1 priorities will be recalculated.

        IPPROTO_CPR1 priority = max_priority{5, 6} = 5

        PDP_CPR1 priority = max_priority{4, 5} = 4

      What is Contention? What is Contention Management? Starting a Network Connection Tutorial
      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FF8D78A2-8F4D-5CAE-B3DB-E2400ABD6B5F.dita --- a/Symbian3/PDK/Source/GUID-FF8D78A2-8F4D-5CAE-B3DB-E2400ABD6B5F.dita Fri Jul 02 12:51:36 2010 +0100 +++ b/Symbian3/PDK/Source/GUID-FF8D78A2-8F4D-5CAE-B3DB-E2400ABD6B5F.dita Fri Jul 16 17:23:46 2010 +0100 @@ -11,5 +11,5 @@ PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd"> Data Source Adaptation OverviewThe Data Source Adaptation collection contains one API that allows device creators to develop Positioning Plug-ins (PSYs). It also contains a test program that is used to test PSYs.
      Purpose

      The Data Source Adaptation collection supports an API and test utility for creating and testing Positioning Plug-ins.

      The Data Source Adaptation collection contains a single component called GPS Data Source Adaptation.

      Architecture

      Figure 1 shows this collection within the context of the LBS system model.

      Figure 1. Data Source Adaptation collection in the LBS system model. -
      Components

      This collection contains only the GPS Data Source Adaptation component.

      GPS Data +
      Components

      This collection contains only the GPS Data Source Adaptation component.

      GPS Data Source Adaptation \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FFBB390B-0A5D-5ABC-A111-95B3C84818DE_d0e110291_href.png Binary file Symbian3/PDK/Source/GUID-FFBB390B-0A5D-5ABC-A111-95B3C84818DE_d0e110291_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FFBB390B-0A5D-5ABC-A111-95B3C84818DE_d0e112714_href.png Binary file Symbian3/PDK/Source/GUID-FFBB390B-0A5D-5ABC-A111-95B3C84818DE_d0e112714_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FFC6F01E-15AB-43E6-90E8-0E42DA297AE9_d0e2156_href.png Binary file Symbian3/PDK/Source/GUID-FFC6F01E-15AB-43E6-90E8-0E42DA297AE9_d0e2156_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FFC6F01E-15AB-43E6-90E8-0E42DA297AE9_d0e2166_href.png Binary file Symbian3/PDK/Source/GUID-FFC6F01E-15AB-43E6-90E8-0E42DA297AE9_d0e2166_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FFD56DA3-9301-5679-9209-A70CE63A34A2.dita --- a/Symbian3/PDK/Source/GUID-FFD56DA3-9301-5679-9209-A70CE63A34A2.dita Fri Jul 02 12:51:36 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,12 +0,0 @@ - - - - - -How to initialise LINK and LLINK RESOURCE members

      A LINK or LLINK member must be initialised with a resource-identifier. This resource identifier may be in the form of a resource name or a number.

      • To specify a resource in the same file, use the resource name in lower case.

        It is not necessary for the resource to be defined at the time the statement is processed, but an error will result if the resource is not defined in the entire file. When declared in lower case any NAME specified in the file will be added onto the resource id.

      • To specify a resource in a different file, use the resource name in upper case.

        To reference it you must #include the relevant header file containing the resource. All resource names are turned into upper case when their #define s are generated in the header file — this is how the resource compiler recognises that it must look for the resource in another file. If this resource does not exist in any #include d file then an error is generated.

      • The resource identifier may also be specified as a number: in this case it is the resource id (including NAME).

        If no such resource id exists either in the file or any #include d header files, no error is generated by the compiler. The programmer must therefore ensure that the id is a valid reference.

      See Resource file definition for information on how resource ids are generated. See also NAME statement and related statements.

      \ No newline at end of file diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FFE6BAF8-C093-53FC-8672-365BAF38E048_d0e553256_href.png Binary file Symbian3/PDK/Source/GUID-FFE6BAF8-C093-53FC-8672-365BAF38E048_d0e553256_href.png has changed diff -r 5072524fcc79 -r 80ef3a206772 Symbian3/PDK/Source/GUID-FFE6BAF8-C093-53FC-8672-365BAF38E048_d0e560712_href.png Binary file Symbian3/PDK/Source/GUID-FFE6BAF8-C093-53FC-8672-365BAF38E048_d0e560712_href.png has changed